Questions tagged «bash»

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

2
在bash中启动可执行文件的顺序
如果我test在bash中执行命令,test(评估条件表达式)内置实用程序将启动: $ type test test is a shell builtin $ type -a test test is a shell builtin test is /usr/local/bin/test test is /usr/bin/test $ 但是,从type -a test上面的输出中可以看到,test/ usr / local / bin目录中有另一个,/ usr / bin目录中又有一个。可执行文件如何排序,即始终首选内置命令,然后其余命令取决于$ PATH变量中的目录顺序?另外,是否可以更改可执行文件的启动顺序,例如,如果键入test,则启动/ usr / bin / test而不是bash-builtin test?

1
如何在bash脚本中自动回答y?
我想通过bash脚本卸载某些程序。运行命令后,终端问我是否确定要卸载它。所以我需要回答y。我想自动执行,并y在延迟10秒后回答。 我做了这个例子,但是没有用- #!/usr/bin /opt/MNG/MNGVIEWHP/fe/uninstall sleep 10 echo "y" 任何的想法?Centos的7.2
14 bash 

3
bash中的Ctrl-Backspace和Ctrl-Delete
戴上Debian 8.3 stty werase '^H' 或在Arch Linux 2/2016上 stty werase '^?' 在.bashrc(例如)使得Ctrl- Backspace删除终端的最后一个字。不过这不是相同的行为在现代GUI应用程序(如火狐):删除最后一个空白 -分隔字,而不是最后一个字由空格分隔或字符,如. : , ; " ' & / ( )。 是否有可能使Ctrl- Backspace的行为在终端类似现代的GUI应用程序?另外,有什么方法可以Ctrl- Delete删除光标前的单词吗?

4
递归地将文件添加到所有子目录
如何以递归方式将文件以及所有子目录添加(或触摸)到当前目录中? 例如, 我想打开这个目录树: . ├── 1 │ ├── A │ └── B ├── 2 │ └── A └── 3 ├── A └── B └── I 9 directories, 0 files 进入 . ├── 1 │ ├── A │ │ └── file │ ├── B │ │ └── file │ └── file …

3
直接输出到管道和标准输出
我想知道是否可以通过管道将命令的输出定向到标准输出。因此,例如,fortune打印一个幸运饼干并将其复制到剪贴板: $ fortune | tee >(?stdout?) | pbcopy "...Unix, MS-DOS, and Windows NT (also known as the Good, the Bad, and the Ugly)." (By Matt Welsh)
14 bash  pipe  stdout  tee 

5
通过增加文件名中的数字来重命名文件
我有一个包含编号的图像文件的目录,如下所示: 01.png 02.png 03.png 03.svg 04.png 05.png 06.jpg 07.png 08.png 09.png 09.svg 10.png 有时,文件的多个版本可能具有不同的格式(例如上述和文件的png和svg版本),但数字是连续的。通常,每个目录中有40-80个此类文件。这些数字与这些图像在原稿(Word文档中的顺序,但并不重要)中出现的顺序相对应。没有其他方法可以确定图像的顺序。0309 如果将新图像添加到手稿中,则需要使用正确的编号将图像的副本放置在此目录中。因此,如果新图像是手稿中的第五张,我需要将目录中的文件重命名为此,以便为其腾出空间: 01.png 02.png 03.png 03.svg 04.png 06.png 07.jpg 08.png 09.png 10.png 10.svg 11.png 从命令行,从脚本或宏重新编号以一定编号开始的所有文件的最直接方法是什么?我有一个使用bash的标准Fedora Linux安装。
14 linux  bash  rename 

3
Bash:通过管道将“查找”输出到“ readarray”
我正在尝试使用来搜索文件find,并将这些文件放入Bash数组中,以便可以对它们执行其他操作(例如ls,grep它们)。但是我不知道为什么readarray在将find输出通过管道传输时不读取输出。 假设我在当前目录中有两个文件,file1.txt并且file2.txt。因此find输出如下: $ find . -name "file*" ./file1.txt ./file2.txt 因此,我想将其传送到一个数组,该数组的两个元素是字符串"./file1.txt"和"./file2.txt"(显然没有引号)。 我已经尝试过了,其中包括: $ declare -a FILES $ find . -name "file*" | readarray FILES $ echo "${FILES[@]}"; echo "${#FILES[@]}" 0 从echo输出中可以看到,我的数组为空。 那我到底在做什么错?为什么readarray不将find的输出作为标准输入读取并将这些字符串放入数组?
14 bash  find 

2
为什么需要<或>使用/ dev / tcp
尝试致电时/dev/tcp/www.google.com/80,输入 /dev/tcp/www.google.com/80 巴什说no such file or directory。在线查看其他人的代码时,他们使用以下语法: 3&lt;&gt;/dev/tcp/www.google.com/80 我注意到这也有效: &lt;/dev/tcp/www.google.com/80 为什么要使用bash调用某些内容,需要使用这些符号?

4
如果我开始过多的后台工作会怎样?
我需要使用Expect脚本在700个网络设备上进行一些工作。我可以按顺序完成它,但是到目前为止,运行时间约为24小时。这主要是由于建立连接所花费的时间以及这些设备(旧设备)的输出延迟。我可以建立两个连接并使它们并行运行,但是我可以推多远呢? 我不认为我可以一次完成所有700个操作,但肯定会有一些限制。我的VM可以管理的telnet连接数量。 如果我确实尝试过像这样的循环来启动其中的700个: for node in `ls ~/sagLogs/`; do foo &amp; done 用 CPU 12个CPU x Intel(R)Xeon(R)CPU E5649 @ 2.53GHz 内存47.94 GB 我的问题是: 所有700个实例能否同时运行? 在服务器达到极限之前,我能走多远? 当达到该限制时,它会只是等待下一次迭代开始foo还是盒子崩溃? 不幸的是,我在公司生产环境中运行,所以我不能完全尝试看看会发生什么。

1
名为“ test”的可执行文件位于$ PATH中,但不会运行
我在$ HOME / bin中有一个文件(在您询问之前,是的,它在我的路径中)test,我已经确认可以在使用文件的完整路径运行该文件时执行该文件。但是,如果不这样运行,就会遇到一个非常奇怪的问题。当我只test在终端中运行时,它什么也不做,并立即返回。我知道,由于以下几个原因,这不是查找文件的问题: 没有错误信息。通常,如果找不到或无法执行该文件,则会显示一条消息,提示您。 运行which test仍会返回正确的文件路径。 可能是所有方法中最怪异的-运行脚本时,脚本工作正常strace。我尝试使用strace看看是否可以弄清楚发生了什么,但是当我使用进行运行时strace,它按预期运行了0个问题。

2
shell中$ @的数据结构是什么?
我们通常$@用来表示除$ 0以外的所有参数。但是,我不知道数据结构$@是什么。 为什么$*在包含双引号时它的行为方式不同,有人可以给我解释级别的解释吗? 可以在for循环中对其进行迭代,因此它似乎是数组。但是,它也可以使用simple完全回显echo $@,如果它是一个数组,则仅显示第一个元素。由于外壳的限制,我无法编写更多的实验代码来执行它。 这篇文章之间的区别:这篇文章展示了$@与$*。但是我想知道的数据类型$@。像Python一样,Shell是一种解释语言,应根据一系列基本类型表示数据。换句话说,我想知道$ @如何存储在计算机内存中。 它是字符串,多行字符串还是数组? 如果它是唯一数据类型,是否可以将自定义变量定义为这种类型的实例?
13 bash  shell 

3
bash [[]]命令中的自动变量扩展
在中取消引用变量时bash,必须使用$符号。不过,似乎以下各项工作正常: x=5 [[ x -gt 2 ]] 有人可以解释吗? 编辑:(更多信息) 我的意思是[[]]命令如何以及为什么取消引用不带$号的变量x。是的,如果x = 1,则该语句的计算结果为false(返回状态1)


4
是否可以使用Shell脚本打印变量内容的内容?(间接引用)
假设我已经声明了以下变量: $ var='$test' $ test="my string" 如果打印其内容,则会看到以下内容: $ echo $var $test $ echo $test my string 我想找到一种方法来打印的内容$var(即的内容$test)。因此,我尝试执行以下操作: $ echo $(echo $var) $test 但是这里的结果是$test,不是"my string"。。。是否可以使用bash打印变量内容的内容?

1
如何阻止Bash解释八进制代码而不是整数?
我正在写一个Horoscope RSS脚本,作为Unix / Linux项目的介绍,但遇到一个问题,我的教授在下课后仍然无法解决。由于我无法弄清楚如何使用实际日期作为检查对象,因此我认为我将通过使用户输入为MMDD格式的标准数字来尝试基本算术。据他介绍,脚本似乎正在以八进制代码而不是整数形式读取输入。这是脚本示例: elif [ "$olddate" -gt 1121 ] &amp;&amp; [ "$olddate" -lt 1131 ] || [ "$olddate" -gt 1200 ] &amp;&amp; [ "$olddate" -lt 1222 ] then echo "You are Sagittarius" exit elif [ "$olddate" -gt 1221 ] &amp;&amp; [ "$olddate" -lt 1232 ] || [ "$olddate" -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.