Questions tagged «bash»

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

2
如何使用-作为别名?
当我使用openSUSE 11.3时,它已经设置了几个别名。我经常使用的两个是+for pushd .和-for popd。现在在Debian上,我不知道如何创建第二个。alias -=popd尝试读取-=别名的命令选项。我尝试在其周围加上引号(单引号和双引号),并在其前面加上反斜杠,但我一直在收到错误消息。有什么建议么? 谢谢
11 bash  alias 

4
对每个命令强制使用“添加”别名
是否可以向其中的每个命令强行添加定时别名(因为缺少更好的用短语表达的方式)bash? 例如,我希望有一个特定的用户,每当运行命令时,该用户总是用date之前和之后或包裹time。 这可能吗?如果可以,怎么办?
11 bash  monitoring  alias  date  time 

2
为什么按名称删除文件既缓慢又异常快?
假步:我在下面提到的“快速”方法并不比慢速方法快60倍。它快了30倍。我将错误归咎于小时数(凌晨3点不是我思考的最佳时间:)。 更新:我添加了测试时间的摘要(如下)。 速度因素似乎涉及两个问题: 选择使用的命令(时间比较如下所示) 目录中大量文件的性质...似乎“大是坏”。随着数字的增加,事情变得不成比例地变慢。 所有测试均已处理了100万个文件。 (真实时间,用户时间和sys时间在测试脚本中) 可以在paste.ubuntu.com上找到测试脚本。 # # 1 million files # =============== # # |time |new dir |Files added in ASCENDING order # +---- +------- +------------------------------------------------- # real 01m 33s Add files only (ASCENDING order) ...just for ref. # real 02m 04s Add files, and make 'rm' …
11 bash  filesystems  ext4 

6
重击:在提示中显示退出状态:
GREEN="\e[1;32m" RED="\e[1;31m" NONE="\e[m" get_exit_status(){ es=$? if [ $es -eq 0 ] then echo -e "${GREEN}${es}${NONE}" else echo -e "${RED}${es}${NONE}" fi } get_path(){ #dummy function echo "PATH" } PROMPT_COMMAND='exitStatus=$(get_exit_status)' 以下内容为我提供了正确的exitStatus,但未扩展颜色变量: PS1='${RED}\h $(get_path) ${exitStatus}${NONE} ' 但是,下面的一种给我颜色,但是退出状态不会更新: PS1="${RED}\h $(get_path) ${exitStatus}${NONE} " 什么是正确的方法?如何解决此问题,使exitStatus和color都能正常工作?
11 bash  prompt 

2
压缩文件时不包括目录
我有一个bash脚本,它执行以下操作: zip -0 ../backup/backup.zip \ -r ./* \ -x \*CVS\* \ -x *Thumbs.db* \ 它要备份的目录是一个SVN归档文件(以前是CVS)。我一直无法获得排除.svn及其内容的信息。排除.svn(递归遍历整个树)的最干净方法是什么?
11 bash  scripting  zip 

2
在输入末尾添加一个空行
我有一些命令可以在末尾没有换行的情况下产生输出 Myprompt$ somecmd dksfjdl dsfjdlkfj dsfjdkfj dfjdkfjMyprompt$ 目前,我克服了这个问题,somecmd | sed 's/$/\n/' | tr -s '\n' 是否有更好的方法来做到这一点?


2
如何正确摆脱bash中的感叹号?
今天,我在尝试对Twitter的密码生成器进行编码时被捕。 import string as s,random;print ''.join(random.sample(s.letters+s.digits+s.punctuation,9)) 90个字符。由于有很多可用空间,因此我决定提高标准并使之也可执行。 echo -e "#!/usr/bin/python\nimport string as s,random;print ''.join(random.sample(s.letters+s.digits+s.punctuation,9))">pg;chmod +x pg;./pg 139个字符。不错,除了在惊叹号上明显的b子声。 badp@delta:~$ echo -e "#!/usr/bin/python\nimport string as s,random;print ''.join(random.sample(s.letters+s.digits+s.punctuation,9))">pg;chmod +x pg;./pg bash: !/usr/bin/python\nimport: event not found 讨厌的感叹号。“让我们逃脱吧,”我想!我毕竟有一个备用角色。 echo -e "#\!/usr/bin/python\nimport string as s,random;print ''.join(random.sample(s.letters+s.digits+s.punctuation,9))">pg;chmod +x pg;./pg 明显... badp@delta:~$ echo -e "#\!/usr/bin/python\nimport string as s,random;print …

8
您最喜欢的Shell脚本GUI / CLI编辑器是什么,为什么?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引文回答。 2年前关闭。 我目前正在使用vim编辑bash脚本,但是我确实需要设置和/或安装插件。欢迎插件建议。无论哪种方式,我都想看看该工作有哪些编辑器/ IDE。
11 bash  editors 

2
为什么pwd不接受--physical之类的长选项?
当我显示pwd命令手册时,它说--physical支持长选项 $ man pwd PWD(1) User Commands PWD(1) NAME pwd - print name of current/working directory SYNOPSIS pwd [OPTION]... DESCRIPTION Print the full filename of the current working directory. -L, --logical use PWD from environment, even if it contains symlinks -P, --physical avoid all symlinks 但是,当我键入以下内容时,它将失败 $ pwd --physical -bash: …
11 bash  rhel  pwd 

1
将括号{}用作命令及其选项的参数的用法
例子 我最近发现了一些示例,这些示例使用成对的封闭括号{}作为命令甚至其选项的参数,而在括号之间没有任何东西: cat foo | xargs -I{} echo {} find . -size 0 -exec rm -i {} \; 没有文件 我的问题是我无法在GNU Bash手册中找到描述上述情况{}下用法的文档。 我不认为这是参数扩展,因为在参数扩展中必须在括起来的花括号之前加一个美元符号,例如${}。 它也不是大括号扩展名,因为它采用的形式{x..y[..incr]},其中x和y不是可选的。 它也不能作为命令分组,因为{}它用作参数。 问题 {}一般而言,一对封闭的括号作为接受它的任何命令的参数甚至意味着什么? 在哪里可以找到描述{}as参数用法的文档?
11 bash  shell 

2
posix shell:打印环境变量名称列表(无值)
以与多种实现兼容的posix兼容方式,如何打印当前定义的环境变量列表而不包含它们的值? 在某些实现(mksh,freebsd / bin / sh)上,只需单独使用即可export: $ export FOO2 FOO 但是对于其他一些实现(bash,zsh,破折号),export也会显示该值。例如,使用bash: $ export export FOO2='as df\ asdk=fja:\ asd=fa\ asdf' export FOO='sjfkasjfd kjasdf:\ asdkj=fkajdsf:\ :askjfkajsf=asdfkj:\ safdkj' $ printenv | sed -n l FOO2=as\tdf\$ asdk=fja:\$ asd=fa\$ asdf$ FOO=sjfkasjfd kjasdf:\$ asdkj=fkajdsf:\$ \t:askjfkajsf=asdfkj:\$ safdkj$ 其他选项(例如,env或printenv没有选项)仅显示不带值的变量名,至少在我尝试过的linux和freebsd平台上不行。 管道到awk / sed / etc。或使用参数扩展技术(例如${foo%%=*})修剪列表是可以接受的,但是它必须使用可能跨越行且值中带有=空格的值(请参见上面的示例)。 特定于特定Shell实现的答案很有趣,但是我主要是在寻找在各个实现之间都兼容的东西。

3
Shell脚本:使用内部选项创建变量
我有一个带有以下参数的rsync命令: rsync -avz --{partial,stats,delete,exclude=".*"} 我想将该参数放在变量中以在脚本中重用。像这样: #!/bin/bash VAR=rsync -avz --{partial,stats,delete,exclude=".*"} $VAR /dir1 /dir2 我尝试使用引号,单引号,方括号,但未成功。

2
如何使ctrl + c / not /中断while循环?
鉴于此循环: while sleep 10s ; do something-that-runs-forever done 当我按Ctrl + C时,整个while循环都会中断。我想做的是中断“某事”过程,让10秒钟过去,然后重新启动“某事”。 如何使ctrl + c仅影响“某物”,而不影响while循环? 编辑:“中断”如SIGINT。杀。中止 终止。不像“暂停”中那样“中断”。
11 bash 


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.