Questions tagged «bash»

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

3
Bash中可能的错误?:foo(){echo“ $ {var [0]}”; }; var =(bar baz)foo
作业系统:Ubuntu 16.04.3 外壳:Bash 4.3.48 我知道可以像中那样临时更改变量的内容var=value command,这可能IFS= read -r var是最值得注意的情况。 而且,感谢Greg的Wiki,我也了解: # Why this foo() { echo "$var"; } var=value foo # And this does work var=value; echo "$var" # But this doesn't var=value echo "$var" 我无法理解的是: $ foo() { echo "${var[0]}"; } $ var=(bar baz) foo (bar baz) 据我所知(按照前面示例的逻辑),它应该打印bar,而不是(bar baz)。 …
22 bash  array 

1
每个bash命令后如何调用脚本
在此示例中,可以调用hey.sh每个bash命令命名的脚本吗? 例如,您键入lshit enter并运行ls,然后hey.sh运行。 然后,您键入cd .. (或任何其他命令),然后hey.sh运行cd,然后运行,依此类推。
22 bash 

2
Bash正则表达式捕获组
我正在尝试从字符串中匹配多个字母数字值(此数字可能有所不同),并将它们保存到bash捕获组数组中。但是,我只有第一场比赛: mystring1='<link rel="self" href="/unix//api/clouds/1/instances/1BBBBBB"/> dsf <link rel="self" href="/unix//api/clouds/1/instances/2AAAAAAA"/>' regex='/instances/([A-Z0-9]+)' [[ $mystring1 =~ $regex ]] echo ${BASH_REMATCH[1]} 1BBBBBB echo ${BASH_REMATCH[2]} 如您所见-它与我要查找的第一个值匹配,但与第二个值不匹配。

5
如何删除名为“>”的文件?
我正在运行一个Python脚本,该脚本发生故障并用于sudo创建名为的文件>。 我如何摆脱这个文件? 当然,当我尝试时sudo rm >,会出现错误bash: syntax error near unexpected token 'newline',因为它认为我正在尝试重定向的输出rm。 其权限为-rw-r--r--。
22 bash  quoting  filenames  rm 

1
是否为bash定义了终端颜色转义序列?
我在Bash脚本中经常使用颜色(主要是在CentOS上),但是为了使它们更方便使用,我最终将变量重新定义为颜色值: local GRAY="\[\033[1;30m\]" local LIGHT_GRAY="\[\033[0;37m\]" local CYAN="\[\033[0;36m\]" local LIGHT_CYAN="\[\033[1;36m\]" local NO_COLOUR="\[\033[0m\]" 或也可以tput: bold=`tput bold` normal=`tput sgr0` whitef=`tput setaf 7` greenf=`tput setaf 2` redb=`tput setab 1` 我已经遍历/etc/rc.d/init.d目录,但是没有找到与颜色定义有关的任何内容。 已经有这样的定义了吗?如果不是的话,我会把它们放入一个文件中/etc/rc.d/init.d说出来,并把它包含在我的脚本中,有点像/etc/rc.d/init.d/functions
22 bash  terminal  colors 

2
复制具有多个扩展名的文件
我想将具有多个扩展名的文件复制到单个目标目录。 例如,我可以使用以下命令将工作目录中的所有.txt文件复制到名为的目录中destination: cp -v *.txt destination/ 我可以使用以下命令将工作目录中的所有.png目录复制到destination: cp -v *.png destination/ 但是将它们作为单独的命令键入非常耗时(即使使用命令历史记录也是如此)。因此,有什么办法可以告诉我cp将带有模式*.txt 或模式的文件复制*.png到destination? 理想情况下,我想能够指定两个以上的模式-就像指导cp复制所有*.txt 或 *.png 或 *.jpg文件destination,例如。 我确信使用shell脚本可以实现所有这些功能- bash例如,我正在使用-但是有什么方法可以仅通过控制台更简单地完成它吗?我能以某种方式使用括号扩展吗? 我知道这是可能的所有文件复制除了匹配某些特定模式的工作目录,但由于我的工作目录含有更多的文件扩展名,我不希望比我复制这样做,那将是一个痛苦。 您对此有什么想法吗?
22 bash  shell  wildcards  cp 

3
比较Bash中的两个字符串
我的ifbash脚本中包含以下代码块: if [ ${PACKAGENAME} -eq kakadu-v6_4-00902C ]; then echo "successfully entered if block!!" fi if即使$PACKAGENAME等于,脚本执行也不会进入我的程序段kakadu-v6_4-00902C。我究竟做错了什么?

3
将变量作为字符串或整数进行比较时,有什么主要区别
出于好奇,在进行bash变量比较(其值为an integer)时,可以对照声明为an int或as的一些预定义值对其进行测试string。 示例脚本: #!/bin/bash f1() { [ "$1" == "1" ] && echo "$FUNCNAME: \"1\" compared as string" } f2() { [[ "$1" -eq 1 ]] && echo "$FUNCNAME: \"1\" compared as int" } f1 $1 f2 $1 输出: $ ./param.sh 1 f1: "1" compared as string f2: "1" …
22 bash  shell  test 


2
从bash脚本设置gnome终端背景/文本颜色
我想#002b36使用bash脚本在ubuntu 13中设置我的gnome终端的background()和前景色。 我尝试过,gconftool但无法成功。 GCONFTOOL-2(1) User Commands GCONFTOOL-2(1) NAME gconftool-2 - GNOME configuration tool 我的gnome terminal版本是 $ gnome-terminal --version GNOME Terminal 3.6.1 目前,我正在使用ubuntu终端首选项UI来实现此目的。

2
除非手动启动,否则Bash不会读取.bashrc
bash.bashrc除非我bash从终端手动运行,否则不会从交互式终端获取信息: $ bash 或手动获取: $ source ./.bashrc 或正在运行: $ st -e bash 我希望这是一些有用的输出: $ echo $TERM st-256color $ echo $SHELL /bin/sh $ readlink /bin/sh bash $ shopt login_shell login_shell off 我使用的是CRUX Linux 3.0,并且使用dwm和st。我尝试使用.bash_profile并且.profile没有成功。 有任何想法吗?
22 linux  bash  shell  bashrc 

1
叉子炸弹如何工作?
警告请勿尝试在生产机器上运行 在阅读有关该主题的Wikipedia页面时,通常会使用以下代码来了解发生的情况: :(){ :|:& };: 描述摘录 接下来的叉子炸弹在2002年被作为艺术品展出;56 其确切来源尚不清楚,但在2002年之前在Usenet上存在。通过将以下13个字符粘贴到UNIX shell(例如bash或zsh)中来执行炸弹 。它通过定义一个称为“:”的函数进行操作,该函数两次调用自身,一次在前台,一次在后台。 但是最后一点对我来说还不是很清楚。我看到了函数定义: :(){ ... } 但是还发生了什么?还做其他壳,例如ksh,csh和tcsh也遭受了能够构造类似的东西同样的命运?
22 bash  shell-script  zsh  fork 


1
重新运行多个历史记录命令
假设您刚刚运行了十几个命令。说... $ cd foo/ # history cmd #10000 (my history is very long) $ ... more commands ... $ cd ../ # history cmd #10012 我知道,!-12 && !-11 && !-10 && (and so on) && !!如果碰巧刚运行过它们(不太可能)或!10000 && !10001 && !10002 && (and so on),我可以重新运行它们,但是有没有比在每个历史记录号上加上一个“砰”号和“&”号简单的方法呢? 在bash中也许我没有意识到某种范围的东西? 例如!{10000-10012}#这样的东西,只能工作。

9
使用find移动文件时保留目录结构
我创建了以下脚本,将定义的旧文件从源目录移动到目标目录。运行良好。 #!/bin/bash echo "Enter Your Source Directory" read soure echo "Enter Your Destination Directory" read destination echo "Enter Days" read days find "$soure" -type f -mtime "-$days" -exec mv {} "$destination" \; echo "Files which were $days Days old moved from $soure to $destination" 该脚本可以很好地移动文件,它也可以移动源子目录的文件,但不会在目标目录中创建子目录。我要在其中实现此附加功能。 举个例子 /home/ketan : source directory …

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.