Questions tagged «bash»

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

5
有没有办法用bash读取数组的最后一个元素?
如果我有一个包含5个元素的数组,例如: [a][b][c][d][e] 使用echo ${myarray[4]}我可以看到它的含义。 但是,如果我不知道给定数组中元素的数量怎么办?有没有办法读取未知长度数组的最后一个元素?即第一个元素从右到左读取任何数组? 我想知道如何用bash做到这一点。
68 bash  array 

3
如何通过SSH利用Shellshock?
显然,可以通过SSH通过网络利用Shellshock Bash利用CVE-2014-6271。我可以想象该漏洞利用将如何通过Apache / CGI起作用,但是我无法想象它将如何通过SSH起作用? 有人可以提供一个示例,说明如何利用SSH,并对系统造成什么危害? 澄清说明 在AFAIU中,只有经过身份验证的用户才能通过SSH利用此漏洞。对于无论如何都可以合法访问系统的人,此漏洞利用有什么用?我的意思是,此漏洞利用没有特权升级(他不能成为root用户),因此,他仅通过SSH合法登录后就无法做其他事情。
68 bash  ssh  shellshock 

6
为什么在bash中在命令前设置变量合法?
我刚刚遇到了几个答案,例如解析使用构造的带分隔符的文本文件...: while IFS=, read xx yy zz;do echo $xx $yy $zz done < input_file 在命令IFS前设置变量的位置read。 我一直在阅读bash参考,但无法弄清楚为什么这是合法的。 我试过了 $ x="once upon" y="a time" echo $x $y 从bash命令提示符中获取,但没有回音。有人可以指出指向引用中定义IFS变量的语法的位置吗?这是特例还是我可以做一些其他变量的事情?

3
〜/ .profile,〜/ .bashrc,〜/ .bash_profile,〜/ .gnomerc,/ etc / bash_bashrc,/ etc / screenrc…有什么区别?
回答关于SO和askubuntu的问题,以及翻阅(和阅读)的标头,$HOME并/etc/指出了许多可用于设置环境变量的文件,包括: ~/.profile ~/.bashrc ~/.bash_profile ~/.gnomerc ~/.Rprofile /etc/bash_bashrc /etc/profile /etc/screenrc 我收集/etc/所有用户的工作文件,而其中的文件$HOME是特定于用户的。我还收集了.profile在登录.bashrc时加载的内容,而在/bin/bash执行时加载的内容。我也了解不同的程序具有不同的设置文件(例如.RprofileR)。但我希望您能澄清一下: 是*rc和*profile文件本质上的区别? 此类文件的范围是什么(例如,Linux通常使用哪些文件) 是否有层次结构(例如,.bashrc覆盖中设置的变量.settings) 此类文件有什么好的参考?对于这些文件中的选项? 关联问题 “如何在emacs-ess的R中访问bash环境变量?” “从键盘快捷方式启动应用程序与从终端启动应用程序之间有区别吗?”

4
watch命令别名扩展
如果运行watch包含别名的命令,它将不会扩展别名。我已经尝试过使用单引号和双引号,实际上给了以下别名: # alias ll alias ll='ls -l --color=tty' 以下命令将失败 # watch ll sh: ll: command not found 在这种情况下,命令行扩展不应该工作吗?
67 bash  alias 

1
我如何使用bash强制yum安装而不提示用户?
我正在写一个bash脚本来安装php5.4,我想针对测试VM自动化它。我拥有的rpm命令是: rpm -Uvh http://mirror.webtatic.com/yum/el5/latest.rpm yum install php54w 现在,在此运行的中间,将提示用户输入[Y / N]是否下载依赖项。所以我要么需要: 模拟用户输入的[Y];要么 传递命令yum不要问并假设[Y] bash脚本的最佳方法是什么?如何完成以上两项?
66 bash  yum  rpm 

9
搜索带有我刚刚输入的前缀的上一个命令
我们可以使用向上和向下箭头在命令历史记录中导航。 在某些IDE(例如Matlab)中,如果我们输入一些内容然后按箭头键,则仅在以输入内容开头的历史记录命令之间滚动。那真的很方便,但是在Shell终端中,这是行不通的。 有什么方法可以在Shell终端中获得类似的功能?还有其他提高终端使用效率的技巧吗?

8
尝试添加GPG公钥时密钥服务器超时
我正在尝试添加公共密钥以使用CPG安装程序。但是我对此很陌生,但是我发现的每个命令都给了我同样的错误: gpg --keyserver keyserver.ubuntu.com --recv-keys 94558F59 gpg: requesting key 94558F59 from hkp server keyserver.ubuntu.com gpg: keyserver timed out gpg: keyserver receive failed: keyserver error 我似乎怎么可能在某种形式的封锁背后,这使得无法建立与密钥服务器的连接。我调查了许多OP问题,并尝试了所有可以找到的命令,但没有任何效果。有人以前有这个问题吗?
66 bash  ubuntu  gpg 

4
在bash中,是否可以在for循环的循环控制中使用整数变量?
我有以下bash脚本: #!/bin/bash upperlim=10 for i in {0..10} do echo $i done for i in {0..$upperlim} do echo $i done 第一个for循环(在循环控制中没有变量upperlim)可以正常工作,但是第二个for循环(在循环控制中具有变量upperlim)不能正常工作。有什么方法可以修改第二个for循环以使其起作用?谢谢你的时间。
65 bash  shell  shell-script  for 

7
如何从cat输出中读取第一行和最后一行?
我有文本文件。任务-从文件之后获取第一行和最后一行 $ cat file | grep -E "1|2|3|4" | commandtoprint $ cat file 1 2 3 4 5 需要没有cat输出(仅1和5)的此功能。 ~$ cat file | tee >(head -n 1) >(wc -l) 1 2 3 4 5 5 1 也许awk和更短的解决方案存在...
64 bash  shell  sed  awk  grep 

8
解决“ MV:参数列表过长”?
我的文件夹中有超过一百万个文件需要排序,但是我却无能为力,因为一直mv输出此消息 -bash: /bin/mv: Argument list too long 我正在使用此命令移动无扩展名的文件: mv -- !(*.jpg|*.png|*.bmp) targetdir/
64 bash  shell  arguments  mv 

3
如何检查文件是否是目录的符号链接?
我可以检查文件是否存在,是否是带有-L的符号链接 for file in *; do if [[ -L "$file" ]]; then echo "$file is a symlink"; else echo "$file is not a symlink"; fi done 如果它是带有-d的目录: for file in *; do if [[ -d "$file" ]]; then echo "$file is a directory"; else echo "$file is a regular file"; …
64 bash  shell  test 

7
Shell脚本失败:语法错误:“(”意外
我一直在研究一个脚本,该脚本可以自动为Raspberry Pi开发设置开发环境(有关工作的逐步详细信息,请参见此处)。该脚本已在该文章中链接,但为方便起见,您也可以在此处找到它。现在,当运行此脚本时,将安装并正确设置环境,但是由于sudo的默认超时值,您必须多次输入sudo密码。因此,我开始进行实验,删除所有sudo行,然后在命令行通过sudo运行整个脚本,如下所示: kemra102@ubuntuvm:~$ sudo ./pi_dev_env_install.sh 这可以按预期工作,并且可以完成大部分工作: ./pi_dev_env_install: 68: ./pi_dev_env_install.sh: Syntax error: "(" unexpected 现在,当不使用sudo运行整个脚本时,此行以前可以正常工作。以sudo运行的这条线没有什么可以阻止它工作,据我所知,有人有任何想法吗?

2
符号链接递归-是什么使其“重置”?
我编写了一个bash脚本,以查看当我继续跟踪指向同一目录的符号链接时会发生什么。我期望它可以创建一个非常长的工作目录,或者崩溃。但是结果让我感到惊讶... mkdir a cd a ln -s ./. a for i in `seq 1 1000` do cd a pwd done 一些输出是 ${HOME}/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a ${HOME}/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a ${HOME}/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a ${HOME}/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a ${HOME}/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a ${HOME}/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a ${HOME}/a ${HOME}/a/a ${HOME}/a/a/a ${HOME}/a/a/a/a ${HOME}/a/a/a/a/a ${HOME}/a/a/a/a/a/a ${HOME}/a/a/a/a/a/a/a ${HOME}/a/a/a/a/a/a/a/a 这是怎么回事
64 bash  symlink 

4
有什么方法可以防止将命令添加到您的历史记录中?
有什么方法可以防止将命令添加到您的历史记录中?我有一个命令要保留在历史记录文件中,并且当我搜索存储在内存中的历史记录时,我真的不在乎将其保存在该文件中,尽管这没什么大问题。有什么方法可以防止这种情况,还是我只需要返回并编辑历史文件。 更新:我没有意识到这可能是特定于外壳的。我的壳是zsh。欢迎您回答其他外壳程序,以便人们知道如何在其外壳程序中执行此操作。

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.