Questions tagged «bash»

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

1
如何找到Shellshock Bash漏洞?
由于此错误影响了这么多平台,因此我们可能会从发现此漏洞的过程中学到一些东西:是εὕρηκα(eureka)时刻还是安全检查的结果? 既然我们知道Stéphane发现了Shellshock错误,而且其他人也可能知道该过程,那么我们会对他如何找到该错误的故事感兴趣。


5
有没有办法告诉sudo将我的用户名设置为创建文件的所有者而不是root?
如果我执行sudo cp /etc/foo.txt ~/foo.txt,则会以root拥有者的身份创建新文件。 现在,除了使用最后两个命令(ls阐明用例),我看不到其他解决方法: belmin@server1$ ls /etc/foo.txt > -rw------- 1 root root 3848 Mar 6 20:35 /etc/foo.txt > belmin@server1$ sudo cp /etc/foo.txt ~/foo.txt belmin@server1$ sudo chown belmin: $_ 我更喜欢: 只需一个sudo命令即可完成。 无需指定我当前的用户(也许使用变量?)。
19 bash  files  sudo 

4
如何使用eval为bash中的变量分配空格值
我想使用将值动态分配给变量eval。以下虚拟示例有效: var_name="fruit" var_value="orange" eval $(echo $var_name=$var_value) echo $fruit orange 但是,当变量值包含空格时eval,即使$var_value放在双引号之间,也会返回错误: var_name="fruit" var_value="blue orange" eval $(echo $var_name="$var_value") bash: orange : command not found 有什么办法可以避免这种情况?
19 bash  shell  quoting 

3
禁用Bash中某些包含大量文件的目录的制表符完成功能?
我正在处理大量文件,这些文件保存在目录中。每次我进入该目录并无意中按Tab两次时,显示匹配模式的文件花费的时间太长(可能超过一分钟),而我对此行为感到非常恼火。 例如,我的目录结构是: my-project/ ├── docs/ ├── data/ <---- contains around 200k files. └── analyser/ 由于我仍然喜欢补全,因此是否只能在data/目录中禁用此功能?例如设置5秒钟的超时时间,还是在特定目录中自动关闭完成功能的脚本?

3
readarray(或管道)问题
我坚持使用奇怪的readarray命令行为。 的man bash状态: readarray Read lines from the standard input into the indexed array variable array 但是这些脚本不起作用(数组为空): unset arr; (echo a; echo b; echo c) | readarray arr; echo ${#arr[@]} unset arr; cat /etc/passwd | readarray arr; echo ${#arr[@]} 这些工作: unset arr; readarray arr < /etc/passwd ; echo ${#arr[@]} unset …
19 bash  pipe 


9
测试是否设置了多个变量
我想确保在脚本的某个点上,在访问source配置文件后,设置了几个变量,如果没有设置,将停止执行,以告知用户缺少的变量。我试过了 for var in $one $two $three ; do ... 但是,例如$two,如果未设置,则永远不会为执行该循环$two。我接下来尝试的是 for var in one two three ; do if [ -n ${!var} ] ; then echo "$var is set to ${!var}" else echo "$var is not set" fi done 但是,如果没有设置两个,我仍然会得到“两个设置为”而不是“两个未设置”。 如何确保设置了所有必需的变量? 更新/解决方案:我知道“设置”和“设置,但为空”之间存在区别。我现在使用(感谢/programming//a/16753536/3456281和此问题的答案)以下内容: if [ -n "${!var:-}" ] ; then …

5
管道分配变量
为了简单起见,我想这样做: echo cart | assign spo; echo $spo 输出:购物车 是否assign存在这样的应用程序? 我知道使用替代的所有方法。
19 bash  variable 


3
rsync递归地忽略某些文件,其余文件除外,忽略.svn /目录
我rsync用来将某些文件从共享复制到另一个。 递归地,我需要: 删除目的地中从原点删除的文件 仅同步.php和.js文件 排除所有其他文件类型 不要删除.svn/目标目录 如果我使用这个: rsync -zavC --delete --include='*.php' --include='*.js' --exclude="*" \ /origin /destination 然后rsync不是递归的,因为exclude="*"排除所有文件,但也排除文件夹。 如果添加,--include="*/"则.svn/目录将被删除(也将包含在内)。 我该如何解决这种令人难以置信的难题? uname -a: Linux tux 3.9.2-1-ARCH#1 SMP PREEMPT星期六2013年5月11日20:31:08 CEST x86_64 GNU / Linux rsync 版: rsync 3.0.9-6

4
当let或expr的值为0时,bash -e退出
我有一个设置-e的bash脚本,因此该脚本将在任何退出状态!= 0时退出。 我试图做一些分配给变量的基本Shell算术运算,有时表达式等于0,这会使let或expr命令的退出状态为“ 1”。 这是一个例子: #!/bin/bash -ex echo "Test 1" Z=`expr 1 - 1` || true echo "Z will print" let "A=4 - 4" echo "A WILL NEVER PRINT $A" Y=`expr 1 - 1` echo "Y WILL NEVER PRINT $Y" X=$(expr 2 - 2) echo "X WILL NEVER PRINT $X" …

8
避免在没有Bash命令的情况下忙于等待bash
我知道我可以在条件变为现实的情况下通过执行以下操作: while true; do test_condition && break sleep 1 done 但是它在每次迭代(休眠)时都会创建1个子流程。我可以这样做来避免它们: while true; do test_condition && break done 但是它占用大量CPU(繁忙等待)。为了避免子流程和繁忙的等待,我想出了以下解决方案,但是我发现它很丑陋: my_tmp_dir=$(mktemp -d --tmpdir=/tmp) # Create a unique tmp dir for the fifo. mkfifo $my_tmp_dir/fifo # Create an empty fifo for sleep by read. exec 3<> $my_tmp_dir/fifo # Open the fifo for …

2
Bash对于新用户而言无法完全发挥作用
我刚刚使用useradd -d /home/users/john -m john(使用Ubuntu 11.04)在系统上创建了一个新用户。这个工作正常,但是当我更改john为时,我的bash不能完全正常运行。也就是说,它没有自动完成功能,我不能使用它们的箭头键(例如UP来获取最后一个命令),并且仅显示而不显示我的当前目录$。我加载了一个,.bashrc但这似乎被完全忽略了。是什么原因造成的? PD:该用户已经在系统上工作,如果可能的话,我不希望将其删除并再次添加。
19 bash  users  useradd 

3
禁用bash选项卡完成
是否可以在按Tab时禁用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.