Questions tagged «bash»

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

3
bash的条件表达式中-a和-e有什么区别?
来自man bash: CONDITIONAL EXPRESSIONS [...] -a file True if file exists. [...] -e file True if file exists. 那么[ -a $FILE ]和之间有什么区别[ -e $FILE ](如果有)? 如果没有真正的区别,为什么存在两个用于相同目的的标志?
12 bash  shell  test 

1
如何停止bash shell PS1颜色在命令结束时停止?
我有一个自定义的PS1颜色,其中实际的shell命令使用不同的颜色,只是为了快速查看输入的命令并将其与命令输出本身分开。 假设PS1中的颜色针对命令提示符设置为“蓝色”,而我的外壳中的默认颜色为白色。 我输入命令,例如ls,(ls -l涂成蓝色) 它生成的输出,第一行仍然是蓝色 所有剩余的行都是白色的 我想要的是命令后的所有输出均为“ white”。 另一个例子: 我输入命令“ cat”,颜色为蓝色 输出到来,整个输出为蓝色 我希望输出为“白色”,同时保持我键入“蓝色”的命令提示符 在某些命令上很好,在其他命令上,相同的颜色溢出到输出的第一行,然后插入默认颜色,而在其他一些命令上,整个输出(例如cat)具有相同的颜色。 有没有一种方法可以只将我键入的命令保留为一种颜色,其余的保留为默认颜色? 我在OSX上。 编辑#1 这是@derobert在评论中链接到的屏幕快照,该屏幕快照显示了我在寻找什么。
12 bash  prompt 

5
如何在收到404后停止“ wget”?
如果您将括号扩展用于wget,则可以轻松获取按顺序编号的图像: $ wget 'http://www.iqandreas.com/sample-images/100-100-color/'{90..110}'.jpg' 它获取编号为第10个文件90.jpg来99.jpg就好了,但是100.jpg,向前返回404:找不到文件错误(我只有在服务器上存储100张图像)。如果您使用较大的范围,这些不存在的文件将更多地成为“问题”,例如{00..200},使用100个不存在的文件,它会增加脚本的执行时间,甚至可能会给您带来轻微的负担(或至少使人烦恼)服务器。 wget收到第一个404错误后,有什么方法可以停止吗?(或者,最好是连续两个,以防由于其他原因导致范围内文件丢失)。答案不需要使用大括号扩展;循环也很好。

2
为什么BASH打印“ bash:cd:写入错误:成功”?
我今天注意到了几次。如果我键入cd ../Directory要更改到另一个目录,它将显示“ bash:cd:写入错误:成功”。我无法确定其他哪些先前命令可能与此相关。 typeset -f 什么都不打印。 alias 什么都不打印。 type -a cd 打印“ cd是内置的shell”。 echo $CDPATH 打印一个空行。 $BASH_VERSION 打印“ bash:4.2.37(1)-发行版:找不到命令”。 我只注意到了2-3次。在两种情况下,初始目录和目标目录相同。我以其他方式多次更改了目录,但始终没有遇到错误。 是什么原因造成的?
12 bash 

5
使用$?在if语句中
function foo { (cd $FOOBAR; <some command> if [$? -ne 0] then echo "Nope!" else echo "OK!" fi ) } 我正在尝试编写类似上面的函数,并将其放在我的.bashrc文件中。在获取文件并运行后,我得到: 总时间:51秒-重 击:[1:找不到命令 ! 有人可以帮助我了解我做错了什么吗?
12 bash  scripting 

8
通过运行单行命令使用telnet测试远程TCP端口
我有许多Linux机器,它们的命令和磁盘空间非常有限。但是它上面有telnet命令。 我通过编程方式远程连接到每个探针,并通过SSH发出一行linux命令。 我需要运行一个命令来使用telnet连接到特定计算机,然后立即断开连接。 我可以做所有的事情,但是断开部分是可以的。Telnet打开某种类型的控制台或终端,我无法找出单行命令来运行telnet命令,然后立即断开连接。 如果这样做,我可以轻松地分析文本输出以获取错误消息,因为它们无法在指定的端口上连接到计算机,而这正是我要寻找的。 那么,如何运行单行命令以使用telnet连接到计算机并随后断开连接?
12 bash  telnet 

1
.profile和.bash_profile有什么区别?为什么我的系统上没有.profile文件?
因此,我刚接触Linux,最近在我的上网本上安装了Fedora 19。我想对Linux和CLI有了更深入的了解,所以我现在正在阅读Learn Linux:The Hard Way。 在练习3中,作者给出以下命令: ls -al 猫.profile 我尝试遵循这些指示,但无济于事。从ls -al可以看到,我的用户名目录中没有.profile文件。从我了解到的.bash_profile和.profile文件实际上是相同的。我从研究中得出的唯一区别是,.bash_profile首先被检查。 我不明白的是,为什么在Linux中有多个文件用于同一功能,为什么作者使用.profile而不是.bash_profile(如果我正确理解,系统首先找到.bash_profile时将不会读取.profile)为什么我的系统上没有.profile文件?
12 bash  profile 

4
如何在没有Tab键的情况下触发自动完成功能?
我正在使用iPhone和名为ServerAuditior的应用程序将其切换到计算机上。它没有Tab键。查看截图。 没有Tab键如何触发自动完成功能?我不想为cd-ing输入很多字符。 我在此应用程序中有箭头键。我可以左右滑动以使用箭头键。如果在命令结束时眨眼时我可以将其绑定到前进箭头键,那将是惊人的

5
bash中的glob设置是什么,以控制*是否与点文件匹配
最近,当我做类似的事情时,我感到惊讶 mv ./* ../somedirectory ,发现类似的文件.gitignore没有被移动。 我在OS X上的zsh中完成了大部分工作,这一惊喜使我在CentOS上大受打击。我在OS X上尝试了bash并发现了相同的行为:*与点文件不匹配。这对我来说似乎是非常不可取的,但是显然这是bash的默认设置。(我记得它可能也是zsh的默认值,但是几年前我可能已经在.zshrc中更改了它,却忘记了它的工作方式有所不同。) 我如何配置bash使其表现出预期的效果:对于*匹配所有文件,而不忽略点文件。 万一这还不清楚,这里是如何重现它 cd /tmp mkdir {t,d}est touch test/{.,}{1,2,3,4,5,6,7} ls -hal test mv test/* dest ls -hal test # notice dot files are still there ls -hal dest # notice only some files were mv'ed
12 bash  wildcards 

4
cp vs. cat复制文件
cp a b和cat a > b,有什么区别? 在Linux内核的源代码树(arch/x86/boot/install.sh)的x86安装脚本中,两者都被使用: cat $2 > $4/vmlinuz cp $3 $4/System.map 如果一种格式优于另一种格式,为什么不保持相同的格式呢?

3
如何通过“ tab complete”显示管道显示的命令列表?
在bash中使用命令时,我喜欢double选项卡选项以显示可用命令。一些命令比其他命令具有更多可能的匹配项: 选项卡补全的屏幕快照http://img13.imageshack.us/img13/5541/picturemhy.jpg 有没有办法将double选项卡的输出通过管道传递到somwehere,例如grep?我找到了相关的帖子,但是我仍然不确定如何实现将其通过管道传递到grep。

3
陷阱命令中的信号0是什么?
我正在遵循本指南,了解如何使用ssh-agent设置无密码SSH身份验证。 为了启动ssh-agent,作者建议使用以下代码.bash_profile: SSHAGENT=/usr/bin/ssh-agent SSHAGENTARGS="-s" if [ -z "$SSH_AUTH_SOCK" -a -x "$SSHAGENT" ]; then eval `$SSHAGENT $SSHAGENTARGS` trap "kill $SSH_AGENT_PID" 0 fi 我不明白为什么它会捕获信号0。根据man 7信号,没有这样的信号。 这仅仅是错别字或错误,还是真的有成就?
12 bash  signals  trap 

3
bash使用哪种正则表达式引擎类型?
我使用RegEx Buddy对正则表达式进行原型设计和调试。RegEx Buddy允许我在多种不同的正则表达式引擎类型(.NET,Java,Perl,GNU BRE,GNU ERE,POSIX,BRE,POSIX ERE等)之间进行选择。 bash使用什么正则表达式引擎(例如in if和casestatement)?我正在运行Centos 5.5 32位和bash 3.2.25(1): [kevin@mon01 scratch]$ bash --version GNU bash, version 3.2.25(1)-release (i686-redhat-linux-gnu) Copyright (C) 2005 Free Software Foundation, Inc. 我猜是GNU BRE还是GNU ERE?


3
通过SSH进行远程循环
我在脚本中有以下内容 for server in ${servers[@]}; do echo ${server} ssh user@${server} "for i in /tmp/foo* ; do echo ${i}; done" done 但这是行不通的。奇怪的是,我看到$ I的返回行数量。因此,如果我有十个文件,我会看到十个空行。
12 bash  ssh  quoting 

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.