Questions tagged «bash»

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

2
bash和zsh中&& vs&的优先级
回答这个问题,我发现行为之间一个非常有趣的(和微妙的)差别bash和zsh: 在bash: romano@RRyS:~$ pwd /home/romano romano@RRyS:~$ alias x="cd /bin && ./echo A >/dev/null &" romano@RRyS:~$ x [1] 16611 romano@RRyS:~$ pwd /home/romano 如您所见,别名的执行x是在子外壳中进行的,因此当前目录不会更改。 不在zsh: [romano:~] % pwd /home/romano [romano:~] % alias x="cd /bin && ./echo A >/dev/null &" [romano:~] % x [1] 16744 [1] + 16744 done ./echo A >/dev/null 1& …
9 bash  shell  zsh 

2
回声测试 stty -echo-> stty:标准输入:设备的不适当的ioctl
我在玩一个perl脚本,该脚本需要用户输入以下内容: system( qw( stty -echo ) ); $? == 0 or die "Error unable to disable character printing.\n"; print "$prompt: "; my $input = <STDIN>; 我以为我可以使用echo响应,但是似乎与stty -echo命令冲突并产生以下错误: stty: standard input: Inappropriate ioctl for device 在不更改perl脚本的情况下,可以在bash中完成传递输入的操作吗?是什么原因引起的问题?
9 bash  perl  stty 


2
为什么在环境变量中定义功能的能力本身不是安全风险?
据我了解,通常认为让任何人提供将存储在环境变量中的信息都是安全的。shellshock漏洞在这里是一个问题,因为这意味着当新的bash实例启动并且您显然不希望任何人在您的服务器上运行他们喜欢的任何代码时,将在环境变量中的函数定义末尾执行代码。尽管函数定义本身显然没有安全风险,但允许使用,因为必须明确调用它们才能执行代码。 我的问题是,为什么恶意用户不能简单地定义一个函数,将其恶意代码作为通用命令包含在其中ls,然后希望脚本(或正在运行的任何东西)在某个时候使用该命令? 我想到的一个例子: $ export ls='() { echo "doing bad things..."; }' $ bash -c ls doing bad things...

4
将作业放在后台而不冻结
说你这样开始工作 foo 然后希望将其放在背景中。键入Ctrl+ Z,然后bg执行技巧,但会foo在Ctrl+ Z和之间冻结bg。如何在不先冻结foo的情况下将其放置在后台?
9 bash 

2
有什么方法可以撤消bash历史记录的修改?
通过按下,我可以浏览以前输入的命令。不过,我注意到,如果我修改其中之一,则会更改历史记录。例如,如果我键入: echo a echo b echo c [up][up][backspace]d[ctrl+c] 历史现在显示,第二个命令echo d不是echo b。如何保持echo b历史第一? 例如,假设我运行了一个很长的命令,其中包含很多选项。然后我想再次运行它,但有一个小的更改,因此我回顾了历史以查找并进行更改,但是随后意识到实际上我不需要重新运行它,只是想到了另一个选择代替。然后,我想回去提醒自己我执行的命令是什么-但是,等等,历史记录现在显示了错误的内容! 这种情况很少出现,但是当我发现它确实很烦人时。有什么方法可以自动保存原始历史记录?

3
在Bash中动态修剪stdout线宽
最近,我一直在试验该ps命令,有时长路径会绕到下一行(或两行)并使其难以阅读。我想将ps输出传递到另一个程序中,以将输出限制x为字符数。 这是我到目前为止所拥有的,但是它并不正确: ps aux | cut -c1-$(stty size | cut -d' ' -f2) $(stty size | cut -d' ' -f2)计算结果为167,但似乎不是有效的输入cut。 有没有一种方法可以使这种语法在bash中工作?
9 bash  shell  stdout  cut 

1
bash shell不警告您算术溢出等原因是什么?
bashShell 的算术评估功能设置了限制。该手册简要介绍了Shell算术的这一方面,但指出: 评估以固定宽度的整数完成,不检查溢出,尽管陷阱会被除以0并标记为错误。运算符及其优先级,关联性和值与C语言相同。 它所指的是哪个固定宽度整数,实际上是关于所使用的数据类型(以及为何超出此范围的详细信息),但是极限值是以/usr/include/limits.h这种方式表示的: # if __WORDSIZE == 64 # define ULONG_MAX 18446744073709551615UL # ifdef __USE_ISOC99 # define LLONG_MAX 9223372036854775807LL # define ULLONG_MAX 18446744073709551615ULL 一旦知道了,就可以像下面这样确认事实: # getconf -a | grep 'long' LONG_BIT 64 ULONG_MAX 18446744073709551615 这是一个64位整数,在算术评估的上下文中直接在shell中转换: # echo $(((2**63)-1)); echo $((2**63)); echo $(((2**63)+1)); echo $((2**64)) 9223372036854775807 //the practical usable limit …


2
如果进程在一段时间内保持安静,则将其杀死
我有一个实用程序,它有一个安静的习惯,那就是安静下来并呆在那里,我已经知道它要花多长时间来完成这项工作,所以我timeout经常在与之抗争,但是有时它在那之前就做了。timeout如果停止将输出定向到stdout,是否有类似的工具可以终止该进程?
9 linux  bash  shell  stdout  timeout 

2
在bash脚本中运行时,“历史记录”停止工作
我正在编写一个简单的脚本来grep我的bash历史记录以查找特定的字符串。在命令行上,我可以执行以下操作,效果很好: history | grep git 但是,当我使用与上述相同的命令创建bash脚本时,突然不history返回任何内容: #!/bin/bash history | grep git 当我删除第一行时#!/bin/bash,我的脚本再次起作用。这是怎么回事 如何history在bash脚本中使用?

1
ls -l --group-directories-first(也作用于符号链接)
ls选项--group-directories-first导致目录在顶部列出,这使输出的内容更加ls简洁: ls -l --group-directories-first 但是,它不作用于symlinks,实际上symlinks是目录。有可能使用 ls -l -L --group-directories-first 它将在顶部列出这两种目录,但不会区分正确的目录和符号链接的目录,这再次令人困惑。 可以ls在顶部显示符号链接目录,同时仍使其与常规目录区分开吗? 编辑: 我正在使用bash。
9 bash  zsh  directory  ls  symlink 

1
着色bash_completion
当我键入grep然后按TAB两次时,bash_completion将列出当前目录中的文件和目录。当我输入首字母时,它也会完成文件名。这非常好,唯一的问题是,当目录包含许多文件和子目录时,它可能会非常混乱且杂乱无章。 如果bash_completion至少可以类似地对目录上色,这将非常有帮助ls -lA。 这可能吗? 编辑: 这是我的示例bash_completion配置文件如下所示: if [[ ${cur} == -* ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) return 0 else _filedir fi
9 bash  colors 

3
在shell配置脚本中,如何解释BSD上的coreutils与GNU之间的差异?
到本月为止,我的shell配置非常简单(主要是a .bashrc或.bash_profile主要带有一些别名),但是我一直在对其进行重构,以便根据我是否使用zsh和bash来获得不同的行为。他们首先获取一个通用的shell配置文件,该文件应适用于任何情况,然后专门针对所使用的特定shell(我对此进行符号链接)。 今天ls停止工作时,我感到很惊讶。原来,在重构期间.bashrc,有一个别名 alias ls='ls --color=always' 这ls在OSX的Terminal上用bash 破坏了东西。一旦我看到BSD ls喜欢-G彩色,但是GNU(或Ubuntu上的任何东西)喜欢--color,很明显,很多选择是不同的。 我的问题是,解决BSD和GNU coreutils之间的选项差异的最佳方法是什么?我是否应该在if块中测试一个env变量,以查看正在使用的操作系统并应用正确的行为?还是为每个操作系统制作单独的配置文件更有意义? 尽管对这些问题的回答可能是主观的,但似乎BSD和GNU coreutils之间差异范围的缩小和解决这些问题以使通用配置可在大多数* nix上使用的策略将是相当客观的。
9 bash  bashrc  bsd  gnu 

4
如何检查文件的组权限
我想从bash脚本检查文件的组权限。具体来说,我需要检查文件是否具有组可写位。 而已。就那么简单。然而: 我还需要此便携式产品。 test -w <file 不会告诉我它是否可以组写。 的输出ls -ld对人类来说很不错,但是对脚本却不太确定。从技术上讲,我可以解析输出drwxrwxr-x以提取组位,但这似乎很脆弱。 statOS X和其他系统之间的接口完全不兼容。 find <file> -perm ... 不可能是答案吗?
9 bash  permissions  ls  stat 

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.