Questions tagged «bash»

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

2
如何避免字符串中bash变量后面的空格?
我有一个颜色变量。我用它通过在字符串内部求值来为字符串设置颜色。但是,我需要在名称后添加空格(以便名称不包含文本的一部分)。有时候看起来很糟。 如何避免使用(打印)该空间? 示例(假设Red=1和NC=2): echo -e "$Red Note: blabla$NC". 输出: 1 Note: blabla2. 预期产量: 1Note: blabla2.

1
为什么这个ffmpeg命令在bash而不是zsh中起作用?
今天我下班回家(在Ubuntu盒子上运行bash),并尝试使用心爱的zsh在本地arch盒子上运行一些代码,命令是否失败? 下面的命令与个人信息和IP明显改变 ffmpeg -i rtsp://user:pass@my.webserver.org:5554/my-media/media.amp?videocodec=h264 -threads 3 -vcodec copy -f segment -segment_time 2 outfiles/cam_out%04d.mp4 它在bash中运行完美,但是在zsh中运行时出现错误 zsh: no matches found: rtsp://user:pass@my.webserver.org:5554/my-media/media.amp?videocodec=h264 为什么我心爱的zsh出卖了我?
17 bash  zsh  quoting  url 

3
{1,2,3}与{1..3}之间的差异
有序列之间的差异{1,2,3}和{1..3}? 例如,如果我有一些文件 file.1 file.2 file.3 我想和cat他们在一起使用安全cat file.{1..3} > file吗? 我所知道的是,这cat file.*>file可能会引起问题,因为Shell有时会以随机方式扩展文件(我认为这取决于inode,对吗?)
17 bash 

6
使用系统命令而不是内置的Bash而不指定完整路径
我使用Bash作为我的交互式外壳,我想知道是否有一种简单的方法可以使Bash在共享相同名称的情况下运行系统命令而不是外壳内置命令。 例如,使用系统kill(from util-linux)打印指定进程的进程ID(pid),而不发送信号: $ /bin/kill -p httpd 2617 ... 在不指定系统命令的完整路径的情况下,将使用Bash内置函数代替系统命令。该kill内建不具备-p这样的命令失败选项: $ kill -p httpd bash: kill: p: invalid signal specification 我尝试了使bash使用外部`time`命令而不是内置的shell列出的答案,但是它们中的大多数只能使用,因为time实际上是一个shell 关键字 –而不是内置的shell。 除了暂时禁用内置的Bash之外enable -n kill,到目前为止,我所看到的最佳解决方案是使用: $(which kill) -p httpd 是否有其他更简单的方式(较少的输入操作)来执行外部命令而不是内置的Shell? 请注意,这kill只是一个示例,我想要一个通用的解决方案,类似于使用command内置前缀防止运行与外部命令同名的函数的方式。在大多数情况下,我通常更喜欢使用内置版本,因为它节省了创建新进程的时间,并且有时内置功能具有外部命令所没有的功能。

3
如何在后台运行无限循环
在继续执行脚本的同时,如何在后台运行无限循环? 示例“脚本”: while true; do something_in_the_background; done do_something_while_the_loop_goes_on_in_the_background for 1 2 3; do somethingelse; done exit 0 &不久后,这(注意)似乎使整个系统崩溃: while true; do something_in_the_background & done do_something_while_the_loop_goes_on_in_the_background for 1 2 3; do somethingelse; done exit 0
17 bash 

4
如何将一个程序的标准输入作为arg传递给另一个程序?
假设存在一个有两个参数的程序;输入文件和输出文件。 如果我不想将此输出文件保存到磁盘上,而是直接将其传递给stdin另一个程序怎么办?有没有办法做到这一点? 我在Linux上遇到的许多命令都提供了一个选项来传递“-”作为输出文件参数,这与我上面指定的功能相同。这是因为stdin无法将程序的作为参数传递吗?如果是,我们该怎么做? 我如何使用此图像的示例是: pdftotext "C BY BRIAN W KERNIGHAN & DENNIS M RITCHIE.pdf" stdin(echo) 我正在使用的外壳是bash。

1
如果给定不完整的目录名称,cd自动选择是否是标准行为?
我有三个文件夹ProjectA,分别为ProjectB和ProjectC。当我tab-complete cd到cd Project并按Enter,它选择ProjectC。我发现其他类似情况也是如此。它默认为按字典顺序排列的最后一个(但这也可能是最近更改/添加的)。 这是预期的默认行为cd,还是我在这里意外设置了某些内容? 我正在使用bash 4.3运行OSX 10.10.3。

4
管道旁的空间
我见过的history | grep blah和history |grep blah; 并且history|grep blah也可以使用,尽管似乎没有人使用过它。 空间中是否有任何意义(例如,到/来自不同命令的管道要求使用不同的空间),还是总是武断的?
17 bash  shell  pipe 

3
运行sh脚本:尽管具有可执行位和root权限,但«权限被拒绝»
我在VirtualBox中安装了Debian (用于各种通常会破坏系统的实验),并尝试启动VirtualBox guest虚拟机附加脚本。我以root用户身份登录并尝试启动autorun.sh,但是得到了“权限被拒绝”。ls -l显示该脚本具有可执行权限。 抱歉,我无法复制输出-VirtualBox在没有插件的情况下绝对没有用,因为共享目录或共享剪贴板都不起作用。但是请您确定,我手动复制了权利: #ls -l ./autorun.sh -r-xr-xr-x 1 root root 6966 Mar 26 13:56 ./autorun.sh 起初我以为脚本可能执行了导致错误的操作。我尝试用替换/bin/sh为#/pathtorealsh/sh -xv,但没有输出-似乎脚本甚至无法执行。 我什至不知道是什么原因造成的。

2
如何找回丢失的别名?
我对.bash_aliases文件执行了echo命令,并删除了除测试别名以外的所有别名。但是,我仍然有一个打开的会话,其中已加载了别名(到tcl中?)。我可以从本次会议中找回他们吗?

2
如何获取以sudo执行bash脚本的用户名?
我想创建一个必须使用sudo执行的bash脚本,但应考虑执行它的非sudo用户的名称。因此,如果用户bob运行,sudo ./myscript.sh我想myscript.sh知道bob是执行它的那个人。 让我们看看里面myscript.sh: USER=$(whoami) # Do something that takes into account the username. 我怎么知道产生该过程的用户名?更具体地讲,我应该怎么用的,而不是whoami来获得bob,而不是root?

4
运行Shell脚本时提示用户以root用户身份登录
我遇到的问题是,当我输入命令时, su - root 在我的shell脚本文件的开头,它会提示用户输入密码,然后它不与外壳脚本的其余部分继续。然后,我必须通过终端手动定位并运行Shell脚本。我希望脚本确保用户以root用户身份登录,然后继续执行其余的Shell脚本。 换句话说,我想以任何用户身份运行脚本,但是一旦脚本开始执行,用户必须更改为root用户,然后以root用户身份继续其余脚本,直到完成。能做到吗?

2
“ -v”和“ -x”参数对bash意味着什么?
我看过几个带有以下shebang的shell脚本: #!/bin/bash -x -v 但是,man bash并不能说明什么,这些论点-x和-v主张,如果他们是属于bash所有。 那么这些-x和-v(以及其他可能的论点)是什么意思?
17 bash  shebang 

2
用$()替换反引号不起作用
我有一些尝试更新的旧脚本。一些代码浓缩为: export X=`(echo "abc"; echo "def")` echo $X 给出预期的输出: abc def 现在互联网告诉我反引号是$()我需要使用的,但是当我尝试时: export X=$((echo "abc"; echo "def")) X 没有设置,我得到错误: bash: echo "abc"; echo "def": syntax error: invalid arithmetic operator (error token is ""abc"; echo "def"") 我究竟做错了什么?
17 bash 

3
为什么小于号不能代替bash中的cat?
我听说过“猫的无用使用”并找到了一些建议,但是以下内容在我的bash shell中什么都没有输出。 < filename 使用cat的效果与预期的一样。 cat filename 我正在使用Fedora Core 18和GNU bash,版本4.2.45(1)。 编辑:在管道前使用它也不起作用。 < filename | grep pattern 而使用cat的效果可预期。 cat filename | grep pattern EDIT2:澄清一下,我知道我可以使用它 grep pattern < filename 但我在这里阅读了/programming/11710552/useless-use-of-cat,我也可以在命令前使用它。但是,它不能在命令前运行。

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.