Questions tagged «bash»

与其他Bourne / POSIX shell相对,GNU的Bourne Again SHell特有的问题。对于一般关于Unix shell的问题,请改用/ shell标记。

7
我应该使用哪个shell-tcsh vs bash?[关闭]
我已经使用tcsh了很长时间了。但是,每当我搜索某些内容时,我常常会发现指定的方法是bash特定的。甚至Shell脚本的语法对于这两者来说都是不同的。 从我在Internet上搜索和学习的经验来看,bash似乎是最常用的shell。甚至这个网站上标记bash的问题数量也比标记的问题数量多(当前多五倍)tcsh。 因此,我想知道是否应该切换到bash。你怎么看? 我为什么要坚持tcsh或为什么要继续前进bash?
30 linux  shell  bash  fedora  tcsh 

5
检查$ REPLY是否在数字范围内
我正在使用Bash编写Linux的外壳脚本,以将任何视频文件转换为MP4。为此,我使用avconvwith libvorbis进行音频。 在我的脚本中,我对用户有一个问题: read -p "- Audio Quality [scale from -2 to 10] ? " if [ -n "$REPLY" ] ; then ABITRATE="-aq $REPLY" fi 我的“ ABITRATE”字符串进入最终的avconv命令行。 但我想让用户有机会用Kb(千比特)的值来回答这个问题,并将其转换为libvorbis使用的标度。“从-2到10的比例”是这样的: Quality Kbit/s Normalization ----------------------------- -2 ~32 y -1 ~48 y 0 ~64 y 1 ~80 y 2 ~96 y 3 ~112 y …

5
防止grep在不匹配的情况下退出
该脚本不回显“ after”: #!/bin/bash -e echo "before" echo "anything" | grep e # it would if I searched for 'y' instead echo "after" exit 如果我删除了-eshebang行上的选项,也可以,但是我希望保留它,以便在出现错误时脚本停止。我不认为grep发现没有匹配项是错误。如何防止它过分退出?

2
#:3在shell命令中是什么意思
ack的安装指南建议使用以下命令安装ack脚本: curl http://beyondgrep.com/ack-2.14-single-file > ~/bin/ack && chmod 0755 !#:3 我认为!#:3最后的是某种反向引用,但这意味着什么?zsh中是否有等效项?Google并没有帮助。

8
我的脚本有问题吗?还是Bash比Python慢​​得多?
我通过运行10亿次循环来测试Bash和Python的速度。 $ cat python.py #!/bin/python # python v3.5 i=0; while i<=1000000000: i=i+1; 重击代码: $ cat bash2.sh #!/bin/bash # bash v4.3 i=0 while [[ $i -le 1000000000 ]] do let i++ done 使用该time命令,我发现Python代码仅需48秒即可完成,而Bash代码则需要1个小时以上才能杀死脚本。 为什么会这样呢?我希望Bash会更快。我的脚本有问题吗?或者Bash的运行速度真的慢得多吗?
29 bash  python3 

1
为什么某些命令无法使用BASH进程替换?
有时,流程替换将无法按预期进行。这是一个例子: 输入: gcc <(echo 'int main(){return 0;}') 输出: /dev/fd/63: file not recognized: Illegal seek collect2: error: ld returned 1 exit status 输入: 但是,当与其他命令一起使用时,它可以按预期工作: grep main <(echo 'int main(){return 0;}') 输出: int main(){return 0;} 我注意到其他命令也发生了类似的故障(即,期望来自进程替换的文件的命令无法使用/dev/fd/63或类似)。这次故障gcc只是最近一次。我是否应该确定一些通用规则来确定何时进程替换将以这种方式失败并且不应该使用? 我正在Ubuntu 12.04上使用此BASH版本(我也在arch和debian中也看到过): GNU bash,版本4.3.11(1)-release(i686-pc-linux-gnu)

3
我如何看到在某些bash实例中正在执行的确切命令行?
我有一个运行时间很长的bash实例(在screen会话中),该实例在一个循环内执行一组复杂的命令(每个循环执行管道,重定向等)。 长命令行是在终端内部编写的-不在任何脚本中。现在,我知道bash进程ID,并且我具有root用户访问权限-如何查看在其中执行的确切命令行bash? 例 bash$ echo $$ 1234 bash$ while true ; do \ someThing | somethingElse 2>/foo/bar | \ yetAnother ; sleep 600 ; done 在另一个Shell实例中,我想查看在PID 1234中执行的命令行: bash$ echo $$ 5678 bash$ su - sh# cd /proc/1234 sh# # Do something here that will display the string \ 'while true …


6
管道传输到外壳中的多个文件
我有一个应用程序,该应用程序会产生大量不希望存储到磁盘上的数据。该应用程序主要输出我不希望使用的数据,但是输出的一组有用信息必须拆分为单独的文件。例如,给出以下输出: JUNK JUNK JUNK JUNK A 1 JUNK B 5 C 1 JUNK 我可以这样运行应用程序三遍: ./app | grep A > A.out ./app | grep B > B.out ./app | grep C > C.out 这可以让我得到想要的东西,但是会花费太长时间。我也不想将所有输出转储到单个文件中并通过它进行解析。 有什么方法可以将上面显示的三个操作组合在一起,使我只需要运行一次应用程序,仍然可以获得三个单独的输出文件?
29 bash  shell  grep  pipe 

7
命令执行后如何保持Bash运行?
我想运行这样的事情: bash -c "some_program with its arguments" 但是要让交互式的bash在some_program结束后继续运行。 我敢肯定,-c这不是一个好方法man bash: 交互式shell是一个启动时启动的,没有非选项参数,也没有-c选项 那么该怎么做呢? 这里描述了主要目标 注意 我需要some_program不时终止 我不想把它放在后台 我想继续bash做其他事情 我希望能够再次运行该程序
29 bash 

1
bash case语句可以级联吗?
我正在尝试做这样的事情: case $level in 3) echo "Level Three" 2) echo "Level Two" 1) echo "Level one" ;; esac 如果$ level = 3,它将输出 Level Three Level Two Level One 而如果$ level = 1,则仅输出 Level One 但是当我尝试它时,syntax error near unexpected token ')'由于没有包含,我得到了错误;;。 我知道的所有其他语言都允许这样做,有没有办法在bash中做到这一点?某种关键字的含义是“现在继续进行下一种情况,就好像它匹配了”?


4
如何将最后一个命令保存到文件?
当我使用bash shell运行分析时,我经常想将已经使用好的命令保存到同一目录下的文件中(称为“ LOGBOOK”),以便检查我确实得到了那些结果。到目前为止,这意味着我要么从终端复制。粘贴命令,要么按“向上”将命令修改为echo"my command" >> LOGBOOK或其他类似的滑稽动作。 我前history几天发现有一个工具,但是我找不到一种使用它来获取先前执行的命令的方法,因此我可以执行getlast >> LOGBOOK。 有没有一个很好的简单方法来做到这一点。或者,其他人如何处理保存命令以获取其结果呢?


3
bash多行命令,在连续字符后带有注释
考虑 echo \ # this is a comment foo 这给出: $ sh foo.sh # this is a comment foo.sh: line 2: foo: command not found 在网上搜索后,我在姐妹网站Stack Overflow上找到了DigitalRoss的解决方案。所以一个人可以做 echo `: this is a comment` \ foo 或者 echo $(: this is a comment) \ foo 但是,DigitalRoss没有解释这些解决方案为何起作用。我希望得到一个解释。他回答说: 以前有一个shell goto命令,它会分支到:此处指定的标签。该goto走了,但你仍然可以使用的 : whatever语法... :是一种解析的评论了。 …
29 bash  shell 

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.