Questions tagged «bash»

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


3
“陷阱……INT TERM EXIT”真的必要吗?
对于许多例子trap使用trap ... INT TERM EXIT的清理任务。但是是否真的有必要列出所有三个sigspec? 该手册说: 如果SIGNAL_SPEC为EXIT(0),则从外壳退出时将执行ARG。 我认为无论脚本正常完成还是由于收到SIGINT或脚本而结束,该脚本都适用SIGTERM。实验还证实了我的信念: $ cat ./trap-exit #!/bin/bash trap 'echo TRAP' EXIT sleep 3 $ ./trap-exit & sleep 1; kill -INT %1 [1] 759 TRAP [1]+ Interrupt ./trap-exit $ ./trap-exit & sleep 1; kill -TERM %1 [1] 773 TRAP [1]+ Terminated ./trap-exit 那为什么这么多例子列出了全部INT TERM EXIT呢?还是我错过了某件事,是否有鞋底EXIT会错过的情况?
63 bash  shell  signals  trap 

6
杀死所有后台工作
是否有比以下方式更紧凑的形式来杀死后台作业: for i in {1..5}; do kill %$i; done 另外,{1..5}中显然有一个硬编码的幻数,我如何在不做以下操作的情况下使N为正确的数字而使其成为“ N”? $(jobs | wc -l) 我实际上在PS1中使用\ j来获取托管作业的数量,这等效吗?
63 bash 


5
无法缩进Heredoc以匹配嵌套的缩进
如果有一个“第一世界问题”来编写脚本,就是这样。 我要更新的脚本中包含以下代码: if [ $diffLines -eq 1 ]; then dateLastChanged=$(stat --format '%y' /.bbdata | awk '{print $1" "$2}' | sed 's/\.[0-9]*//g') mailx -r "Systems and Operations <sysadmin@[redacted].edu>" -s "Warning Stale BB Data" jadavis6@[redacted].edu <<EOI Last Change: $dateLastChanged This is an automated warning of stale data for the UNC-G Blackboard Snapshot …


6
zsh中有哪些功能,bash中缺少哪些功能,反之亦然?
作为Linux用户,我一直只使用bash,因为它是我使用的每个发行版的默认设置。使用其他Unix系统(例如BSD)的人们似乎更频繁地使用其他shell。为了学习更多,我决定尝试zsh。 作为bash用户: 我会错过哪些功能? 我应该注意什么?
62 bash  zsh 

3
为什么bashrc检查当前shell是否是交互式的?
在我的拱安装,/etc/bash.bashrc以及/etc/skel/.bashrc包含这些行: # If not running interactively, don't do anything [[ $- != *i* ]] && return 在Debian上,/etc/bash.bashrc具有: # If not running interactively, don't do anything [ -z "$PS1" ] && return 和/etc/skel/.bashrc: # If not running interactively, don't do anything case $- in *i*) ;; *) return;; esac man bash但是,根据,非交互式shell甚至不会读取以下文件: …
62 bash  bashrc 

5
SSH和SCP的自动完成服务器名称
我在中配置了一些服务器~/.ssh/config,例如alpha和beta。我怎么可能配置猛砸这样的命令ssh al<tab>,并scp file.tgz al<tab>自动完成配置的服务器的名称? 我不想每次添加服务器时都将服务器添加到另一个文件(即Bash阵列)中,因为我们会定期添加和删除服务器,并且列表很大。
61 bash  ssh  autocomplete  scp 

11
有没有办法使“ MV”无声地失败?
mv foo* ~/bar/如果没有匹配的文件,类似这样的命令将在stderr中生成此消息foo*。 mv: cannot stat `foo*': No such file or directory 但是,在这种情况下,我使用的脚本是完全可以的,我想从日志中忽略该消息。 mv即使什么都没有动静,有什么好办法告诉自己保持安静?
61 bash  mv 

9
如何测量程序执行时间并将其存储在变量中
为了找出Bash(v4 +)脚本中的某些操作需要花费多长时间,我想time“单独” 解析命令的输出,并(最终)将其捕获到Bash变量(let VARNAME=...)中。 现在,我正在使用time -f '%e' ...(或者command time -f '%e' ...由于内置的​​Bash而已),但是由于我已经重定向了已执行命令的输出,因此我对如何捕获time命令的输出一无所知。基本上这里的问题是到输出分离的time从执行的命令(或多个)的输出。 我想要的功能是计算从开始命令到完成之间以秒为单位(整数)的时间。它不一定是time命令或相应的内置命令。 编辑:给定以下两个有用的答案,我想添加两个说明。 我不想抛弃已执行命令的输出,但是最终以stdout还是stderr结束并不重要。 我更喜欢直接方法而不是间接方法(即直接捕获输出而不是将其存储在中间文件中)。 date到目前为止使用的解决方案接近我想要的。


7
如何删除.bash_history中的重复项并保留顺序?
我非常喜欢使用control+r递归搜索命令历史记录。我发现了一些喜欢使用的不错的选择: # ignore duplicate commands, ignore commands starting with a space export HISTCONTROL=erasedups:ignorespace # keep the last 5000 entries export HISTSIZE=5000 # append to the history instead of overwriting (good for multiple connections) shopt -s histappend 对我来说,唯一的问题是erasedups仅擦除连续的重复项-因此使用以下命令字符串: ls cd ~ ls 该ls命令实际上将被记录两次。我考虑过定期运行cron: cat .bash_history | sort | uniq > temp.txt …

3
了解“ IFS =读-r行”
我显然明白,可以为内部字段分隔符变量添加值。例如: $ IFS=blah $ echo "$IFS" blah $ 我也知道这read -r line会将数据从保存stdin到名为的变量line: $ read -r line <<< blah $ echo "$line" blah $ 但是,命令如何分配变量值?它是否首先存储数据from stdin到变量line,然后给出lineto的值IFS?

3
在“滚动”到上一个命令后使用BASH ...如何在此历史记录中继续前进到下一个?
抱歉,这个标题不是我设计过的最优雅的标题。 但是我想很多人会对此感到疑惑,我的问题可能是愚蠢的……我只能说我还没有找到。 当我说“向上滚动”时,我的意思是使用键盘上的“向上箭头”键,它显然会从最新命令开始沿历史记录向上滚动。 因此,您找到了一个命令,也许有30个命令回退了……然后运行它。然后您想运行最初在它之后的命令...是否有一种简便的方法来执行此操作?或者那些精通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.