Questions tagged «bash»

有关为Bash命令外壳编写的脚本的问题。对于具有错误/语法错误的shell脚本,请在此处发布之前,使用shellcheck程序(或在Web shellcheck服务器中的https://shellcheck.net)进行检查。有关Bash交互使用的问题更可能是Super User而不是Stack Overflow上的话题。

22
在bash中使命令超时而没有不必要的延迟
命令行命令的此答案可在一定时间后自动杀死命令 提出了一种1行方法来使bash命令行中的长时间运行的命令超时: ( /path/to/slow command with options ) & sleep 5 ; kill $! 但是给定的“长时间运行”命令有可能在超时之前完成。(我们称其为“通常长时间运行,但有时又快”的命令,或以tlrbsf为乐。) 因此,这种漂亮的1线方法存在两个问题。首先,此sleep条件不是有条件的,因此会为序列完成设置所需的时间下限。当tlrbsf命令在2秒内完成时,请考虑30s或2m甚至5m的睡眠时间,这是非常不希望的。其次,kill是无条件的,因此此序列将尝试杀死一个未运行的进程并对其进行抱怨。 所以... 有没有办法使通常运行时间长但有时又快的命令(“ tlrbsf”)超时, 有一个bash实现(另一个问题已经有Perl和C答案) 将在以下两者中的较早者终止:tlrbsf程序终止或超时 不会杀死不存在/无法运行的进程(或者(可选):不会抱怨严重的失败) 不必是1班轮 可以在Cygwin或Linux下运行 ...并且为了获得奖励积分,在前台运行tlrbsf命令,在后台运行任何“睡眠”或额外的进程,以便可以重定向tlrbsf命令的stdin / stdout / stderr ,就像之前那样直接运行? 如果是这样,请分享您的代码。如果没有,请解释原因。 我花了一段时间尝试破解前面提到的例子,但是我达到了bash技能的极限。

11
如何在Bash中获取带有标志的参数
我知道我可以在bash中轻松获得像这样的定位参数: $0 要么 $1 我希望能够使用这样的标志选项来指定每个参数的用途: mysql -u user -h host 通过标志而不是通过位置获取-u param价值和-h param价值的最佳方法是什么?
282 bash  shell 



23
如何使用bash命令创建CPU峰值
我想在Linux机器上创建接近100%的负载。它是四核系统,我希望所有核都全速运行。理想情况下,CPU负载将持续指定的时间,然后停止。我希望bash有一些技巧。我在想某种无限循环。
280 linux  bash  load  cpu 

3
登录mac时运行脚本[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使其成为Stack Overflow 的主题。 7年前关闭。 改善这个问题 我想知道在我登录计算机上的帐户时是否有人可以帮助我运行.sh文件。我正在运行Mac OS X 10.6.7。 我有一个要登录到计算机时要运行的文件“ Example.sh”。我已经登录后运行它没有问题,但是我希望它可以自动运行。 人们说要将其添加到登录外壳文件中,但我不知道它在哪里。请帮忙。

5
用另一个字符替换字符串中的某些字符
我有一个像AxxBCyyyDEFzzLMN这样的字符串,我想用_替换所有出现的x,y和z。 我该如何实现? 我知道这echo "$string" | tr 'x' '_' | tr 'y' '_'会行得通,但我想一口气做到这一点,而无需使用管道。
279 string  bash 

6
Tar目录,但不要在存档中存储完整的绝对路径
在备份Shell脚本的一部分中,我具有以下命令: tar -cjf site1.bz2 /var/www/site1/ 当我列出档案的内容时,我得到: tar -tf site1.bz2 var/www/site1/style.css var/www/site1/index.html var/www/site1/page2.html var/www/site1/page3.html var/www/site1/images/img1.png var/www/site1/images/img2.png var/www/site1/subdir/index.html 但是我想/var/www/site1从档案中的目录和文件名中删除该部分,以简化提取过程并避免无用的常量目录结构。永远不会知道,以防万一我将备份的网站提取到Web数据未存储在的地方/var/www。 对于上面的示例,我想拥有: tar -tf site1.bz2 style.css index.html page2.html page3.html images/img1.png images/img2.png subdir/index.html 因此,当我提取文件时,文件将被提取到当前目录中,而后我无需再移动提取的文件,从而可以保留子目录结构。 关于tar和在网络上stackoverflow以及其他位置进行备份的问题已经很多,但是大多数问题都要求删除整个子目录结构(拼合),或者只是在名称中添加或删除开头的/(我不不知道提取时它到底发生了什么变化),但仅此而已。 阅读了一些在这里和那里找到的解决方案以及手册后,我尝试了: tar -cjf site1.bz2 -C . /var/www/site1/ tar -cjf site1.bz2 -C / /var/www/site1/ tar -cjf site1.bz2 -C /var/www/site1/ /var/www/site1/ tar …
277 linux  bash  backup  tar 

15
在带有'source'的Dockerfile中使用RUN指令不起作用
我有一个Dockerfile,我正在将其安装在一起以安装香草python环境(我将在其中安装应用程序,但稍后再安装)。 FROM ubuntu:12.04 # required to build certain python libraries RUN apt-get install python-dev -y # install pip - canonical installation instructions from pip-installer.org # http://www.pip-installer.org/en/latest/installing.html ADD https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py /tmp/ez_setup.py ADD https://raw.github.com/pypa/pip/master/contrib/get-pip.py /tmp/get-pip.py RUN python /tmp/ez_setup.py RUN python /tmp/get-pip.py RUN pip install --upgrade pip # install and configure virtualenv RUN pip …
274 bash  shell  docker 

24
在终端中使用mysql抑制警告消息,但密码以bash脚本编写
当我尝试从终端在MySQL上运行以下命令时: mysql -u $user -p$password -e "statement" 执行工作按预期方式进行,但始终会发出警告: 警告:在命令行界面上使用密码可能不安全。 但是,我必须使用$password存储我的密码的环境变量()来执行上述语句,因为我想从Terminal内部在bash脚本中迭代地运行命令,并且我绝对不喜欢等待提示出现的想法并迫使我在一个脚本中输入50或100次密码。所以这是我的问题: 抑制警告是否可行?该命令可以按照我所说的那样正常工作,但是当我循环并运行50或100次命令时,窗口会变得非常混乱。 我应该听从警告消息并且不要在脚本中写密码吗?如果是这种情况,那么每次提示提示我输入密码时,我都必须输入密码吗? 跑步man mysql无济于事,只说 --show-warnings 导致在每个语句之后显示警告。此选项适用于交互式和批处理模式。 如果没有丢失任何内容,也没有提及如何关闭功能。 我在OS X 10.9.1 Mavericks上,并使用自制软件中的MySQL 5.6。
273 mysql  bash  shell 

17
如何检查bash脚本中是否以root身份运行
我正在编写一个需要root级权限的脚本,因此我想这样做,以便如果该脚本不是以root身份运行的,它只会显示“请以root身份运行”。然后退出。 这是我要寻找的一些伪代码: if (whoami != root) then echo "Please run as root" else (do stuff) fi exit 我怎样才能最好(干净,安全)地做到这一点?谢谢! 嗯,只是为了澄清一下:(执行任务)部分将涉及运行本身需要root的命令。因此,以普通用户身份运行它只会出现一个错误。这只是为了干净地运行需要root命令的脚本,而不在脚本内部使用sudo,我只是在寻找一些语法糖。
273 bash  shell  root 

15
如何在Bash中将时间戳转换为日期?
我需要将Unix时间戳转换为日期的shell命令或脚本。输入可以来自第一个参数或来自stdin,允许以下使用模式: ts2date 1267619929 和 echo 1267619929 | ts2date 这两个命令都应输出“ 2010年3月3日星期三13:38:49”。



18
如何使用bash脚本替换文件名中的空格
谁能推荐一种安全的解决方案,从给定的根目录开始用文件名和目录名中的下划线递归替换空格?例如: $ tree . |-- a dir | `-- file with spaces.txt `-- b dir |-- another file with spaces.txt `-- yet another file with spaces.pdf 变成: $ tree . |-- a_dir | `-- file_with_spaces.txt `-- b_dir |-- another_file_with_spaces.txt `-- yet_another_file_with_spaces.pdf

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.