Questions tagged «shell»

Shell是Unix的命令行界面。您可以交互地在外壳程序中键入命令,也可以编写脚本来自动执行任务。使用此标记可解决适用于/ bin / sh和大多数兼容shell(ash,bash,ksh,zsh等)的问题。对于有错误的Shell脚本,请在此处发布之前在http://shellcheck.net中对其进行检查。

2
在命令行中如何解释括号?
在阅读有关如何设置的内容时grub,我遇到了一篇文章,声称我需要使用以下两种语法之一, echo \(hd0,0\) >> /boot/grub/grub.conf 要么 echo '(hd0,0)' >> /boot/grub/grub.conf 因为在命令行中,括号以特殊方式解释。括号有什么特别之处?他们如何解释?
45 bash  shell  quoting 

5
mv:仅在目标不存在时移动文件
我可以使用mv file1 file2的一种方式,它只能移动file1到file2,如果file2不存在? 我试过了 yes n | mv -i file1 file2 (这可以mv询问是否应该重写file2并自动回答“否”),但是除了滥用-i它之外,它也不会给我带来很好的错误代码(如果移动了,则总是141而不是0;如果不移动则是其他东西)
44 shell  files  mv 

7
test或[或[[在bash外壳之间和其他外壳之间都更容易移植吗?
我知道我能做 $ [ -w /home/durrantm ] && echo "writable" writable 要么 $ test -w /home/durrantm && echo "writable" writable 要么 $ [[ -w /home/durrantm ]] && echo "writable" writable 我喜欢使用第三种语法。它们在所有方面以及所有消极和极端情况下是否等效?在可移植性方面是否存在任何差异,例如在Ubuntu和OS X上的bash或较旧/较新的bash版本(例如4.0之前/之后)之间,它们是否都以相同的方式扩展表达式?



10
在vi模式下使我的zsh提示显示模式
我使用bindkey -v(对于bash-ers,set -o vi我认为也可以在zsh中使用)或vi(m)模式。但令我感到困惑的是,我没有任何视觉提示可以告诉我是处于插入模式还是命令模式。有谁知道我如何使我的提示显示模式?
44 shell  prompt  zsh 


1
查找无扩展名的文件
假设我有: foo.txt bar baz.ooo 如果我使用的ls -1 !(*.*)话,我只会得到bar输出。太好了,现在我希望获得与find相同的结果-有些find -regex可以完成任务。 注意: find -name !(*.*)不是答案,因为!(*.*)它仍然是Bash的问题,我无法使用。
43 bash  shell  find  wildcards 

4
以易于理解的方式显示PATH
我想以更易于理解的方式显示PATH环境变量。 $ echo $PATH /Users/arturo/.rvm/gems/ruby-1.9.3-p392/bin:/Users/arturo/.rvm/gems/ruby-1.9.3-p392@global/bin:/Users/arturo/.rvm/rubies/ruby-1.9.3-p392/bin:/Users/arturo/.rvm/bin:/usr/local/git/bin:/Users/arturo/.gvm/groovy/current/bin:/Users/arturo/.gvm/grails/current/bin:/Users/arturo/.gvm/griffon/current/bin:/Users/arturo/.gvm/gradle/current/bin:/Users/arturo/.gvm/lazybones/current/bin:/Users/arturo/.gvm/vertx/current/bin:/Users/arturo/.gvm/bin:/Users/arturo/.gvm/ext:/usr/local/git/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/git/bin 我在想这样的事情: $ echo $PATH | some cut and awk magic /Users/arturo/.rvm/gems/ruby-1.9.3-p392/bin /Users/arturo/.rvm/gems/ruby-1.9.3-p392@global/bin /Users/arturo/.rvm/rubies/ruby-1.9.3-p392/bin /Users/arturo/.rvm/bin ...

3
$ {1 +“ $ @”}在shell脚本中是什么意思,它与“ $ @”有什么区别?
在Perl文档中,perlrun(1)建议使用双语shell / Perl标头启动Perl脚本: #!/bin/sh #! -*-perl-*- eval 'exec perl -x -wS $0 ${1+"$@"}' if 0; 什么${1+"$@"}意思 我尝试使用"$@"代替(使用Bash作为/ bin / sh),它似乎同样有效。 编辑 以下两个答案说应该是${1:+"$@"}。我知道${parameter:+word}bash(1)中记录了(“使用替代值”)语法。但是,我不敢相信,因为 无论${1+"$@"}和"$@"工作得很好,即使在没有参数。如果我创建simple.sh为 #!/bin/sh eval 'exec /usr/bin/perl -x -S -- $0 "$@"' if 0; #!perl use Data::Dumper; print Dumper(\@ARGV); 和question.sh为 #!/bin/sh eval 'exec /usr/bin/perl -x -S -- $0 ${1+"$@"}' if …
43 bash  shell  perl 

4
如何在此处文档中打印“ $”
如何在bash的here-doc中回显“ $”? 例如,我想在远程服务器上有一个包含内容的文件,例如$ABC=home_dir。 $ ssh hostname sudo -s <<EOF echo "$ABC=home_dir" > file EOF 但这将被视为变量。如何打印文字$?
43 bash  shell  quoting 

7
为什么[AZ]匹配bash中的小写字母?
在我所知道的所有shell中,都rm [A-Z]*删除了以大写字母开头的所有文件,但是使用bash删除了以字母开头的所有文件。 由于在使用bash-3和bash-4的Linux和Solaris上存在此问题,因此它不能是由libc中的错误模式匹配器或配置错误的语言环境定义引起的错误。 是这种奇怪而危险的行为,还是仅仅是多年来未修复的错误?
42 bash  shell  wildcards  locale 

2
cat <> file`如何工作?
cat &lt; file将文件的内容打印到stdout。 cat &gt; file读取标准输入,直到检测到Ctrl+ D并将输入文本写入文件。 cat &lt;&gt; file,至少在我的Bash版本中,愉快地打印文件的内容(无错误),但不修改文件,也不更新修改时间戳。 Bash标准如何证明&gt;在第三条陈述中似乎被忽略的理由?更重要的是,它在做什么?



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.