Articles of bash

如何重复调用rsync,直到文件成功传输

我试图从远程服务器同步文件是不可靠的,这意味着连接往往会“随机”失败 rsync:连接意外closures Rsync是用–partial调用的,所以我希望能够在一个循环中调用rsync,直到文件被完全传输。 似乎没有一个标志告诉rsync重试。 什么是脚本的最好方法? 一个bash for循环?

Will Ansible会阻止在shell脚本中执行'rm -rf /'

这是基于这个骗局问题 。 所描述的问题是有一个bash脚本包含的东西的影响: rm -rf {pattern1}/{pattern2} …如果两个模式都包含一个或多个空元素,则将扩展到rm -rf /至less一个实例,假定原始命令正确转录,并且OP正在进行扩展而不是参数扩展 。 他在OP 对这个恶作剧的解释中说: 这个命令是无害的,但似乎几乎没有人注意到。 Ansible工具防止这些错误,但似乎没有人知道,否则他们会知道我所描述的事情是不可能发生的。 所以假设你有一个通过扩展或参数扩展发出rm -rf /命令的shell脚本,使用Ansible将阻止这个命令被执行是真的,如果是的话,它是如何做的? 只要你使用Ansible来执行rm -rf / root权限真的是“无害”的呢?

我怎样才能确定什么是占用这么多的空间?

我正在使用df -h打印出人类可读的磁盘使用情况。 我想弄清楚什么是占用这么多的空间。 例如,有没有办法pipe这个命令,以便打印出大于1GB大小的文件? 其他想法? 谢谢

BASH脚本,用于单一命令的www-data

我正在自动创buildSubversion版本库和相关网站,正如我在这篇博文中所描述的。 我遇到的问题正好在我su到www-data用户运行以下命令的部分: svnadmin create /svn/repository 在脚本的开始处有一个检查,确保它以root或sudo身份运行,并且一个命令之后的所有内容都需要以root用户身份运行。 有没有一种很好的方式来运行一个命令作为万维网数据,然后切换回到根完成?

如何使用Bash删除所有隐藏的文件和目录?

明显的解决scheme产生1: bash$ rm -rf .* rm: cannot remove directory `.' rm: cannot remove directory `..' bash$ echo $? 1 一个可能的解决scheme将跳过“。” 和“..”目录,但只会删除名称长于3个字符的文件: bash$ rm -f .??*

写入后台进程的标准input

我在一个Ubuntu 10.04盒子,并通过SSH在后台(myserver&)启动了一个服务器。 它运行良好,但我需要一种方法来获取服务器的标准input,作为控制服务器的唯一方法是通过这种方法。 有没有办法得到一个已经运行的进程的标准input,所以我可以写信给它(希望阅读它的标准输出)? 显然,如果我现在要这样做的话,我会先用FIFOredirect到stdin,但不幸的是现在有点晚了。 有任何想法吗?

bash脚本中的多选菜单

我是一个bash新手,但我想创build一个脚本,我想让用户从选项列表中select多个选项。 基本上我想要的是类似于下面的例子: #!/bin/bash OPTIONS="Hello Quit" select opt in $OPTIONS; do if [ "$opt" = "Quit" ]; then echo done exit elif [ "$opt" = "Hello" ]; then echo Hello World else clear echo bad option fi done (来自http://www.faqs.org/docs/Linux-HOWTO/Bash-Prog-Intro-HOWTO.html#ss9.1 ) 但是,我的脚本将有更多的select,我想要允许select多个。 所以像这样的东西: 1)选项1 2)选项2 3)选项3 4)选项4 5)完成 对他们select的人进行反馈也是很好的,例如在他们已经select的旁边加上符号。 例如,如果您select“1”,我想页面清除并重新打印: 1) Option 1 + 2) Option 2 […]

什么命令在bash中打印string为“big ascii text art”?

我正在寻找一个程序,把一个ASCIIstring变成类似下面的“ascii艺术”: .-“^`\ /`^” – 。 “。 ___ \ / ___`。 / / .—。 .—。\ \ | //' – 。 ___________________________ .-'\\ | | ; | \ / ————————– // | | \ || | \ _)红帽(_ / | || / \ | \。 \; | 企业Linux || ; /。 / | / '\ _ \ […]

ulimit -n和/ proc / sys / fs / file-max如何不同?

我注意到,在一个新的CentOS镜像上,我刚从EC2启动ulimit默认是1024打开文件,但/ proc / sys / fs / file-max设置为761,408,我想知道这两个限制是如何工作的一起。 我猜测,ulimit -n是每个用户的文件描述符的数量限制,而/ proc / sys / fs / file-max是系统范围的? 如果是这样的话,说我已经login了两次,作为同一个用户 – 每个login的用户有1024个打开文件的限制,或者它是在每个login用户之间1024个组合打开文件的限制,在用户? 如果您的系统没有打开过多的文件,那么是否会将您的最大文件描述符设置为很高的性能?

强制SSH使用特定的shell

有没有办法强制SSH在远程端使用特定的shell,而不pipe用户的默认shell是什么? 我试过的解决scheme类似于: ssh host.domain.com /bin/bash -c 'complicated, multi-line command' 但不幸的是,远程端的默认shell负责parsing“复杂的,多行的命令”部分,而且我很难逃脱它,以便为Bash和C shell用户使用。