Questions tagged «bash»

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

1
重新映射bash vi键?
我使用Dvorak和vi,因此当我在Bash中了解vi模式时,我感到非常兴奋。但是,如果我可以将移动键重新映射为我在vi中使用的键,那就更好了(我交换了一些键,直到移动键回到Dvorak的主行中为止)。 我怎样才能做到这一点?



2
.inputrc TAB行为异常
今天我很忙,这是另一个问题: 当我把它们放进去时.inputrc,它们为什么都做同样的事情呢? TAB: menu-complete Shift-TAB: menu-complete-reverse 也就是说,他们都按照最后一个说的去做。
11 bash  readline 

5
索引和修改Bash参数数组$ @
是否可以引用中的索引$@?我在GrayCat的wiki中的任何地方都找不到像下面这样的引用,而Advanced Scripting Guide和其他脚本则在修改它之前将其分配给其他变量。 $ echo ${@[0]} -bash: ${@[0]}: bad substitution 目标是DRY:第一个参数用于一件事情,其余参数用于其他事情,我想避免重复代码以标准化,$@数组或为此创建单独的函数(尽管在此情况下)指出这可能是最简单的出路)。 澄清:目的是修改可变长度 的值,$@以使代码更易于调试。尽管我什至喜欢像这样的怪异路径,但当前的版本还是有点过于hacky $'--$`\! *@ \a\b\e\E\f\r\t\v\\\"\' \n' 更新:看来这是不可能的。该代码现在同时使用代码和数据重复,但是至少可以使用: path_common() { # Get the deepest common path. local common_path="$(echo -n "${1:-}x" | tr -s '/')" common_path="${common_path%x}" shift # $1 is obviously part of $1 local path while [ -n "${1+defined}" ] …
11 bash  parameter 

4
Bash脚本通过测试命令返回状态来检测版本控制系统
我正在开发一个bash脚本,该脚本要用于几种类型的VCS。我正在考虑通过运行典型的info命令并检查返回码,成功或错误来测试目录是否是系统的存储库。用伪代码: if a svn command succeded; Then run svn commands elif a darcs command succeded; Then run darcs commands elif a mercurial command succeded; then run hg commands else something else fi 我可以运行一个命令,例如, darcs show repo并用于$?获取其返回代码。 我的问题是:是否有一种巧妙的方法可以在一行中运行并返回返回码号?例如 if [ 0 -eq `darcs show repo`$? ]; 还是我必须定义一个功能? 附加要求是应同时打印stderr和stdout。

3
无法为此处文档创建临时文件:权限被拒绝
[注意:这个类似的Q与相同的bash错误消息有关。它被标记为其他Q的副本。但是由于我发现了这个错误的不同来源,因此我将在下面回答我自己的问题。] 以前工作的bash脚本行 while ... do ... done <<< "$foo" 一天开始产生此错误消息: 无法为此处文档创建临时文件:权限被拒绝

3
tmux不着色PS1提示
我最近决定更改PS1变量,以适应​​一些漂亮的日晒颜色,以使我的终端观看愉悦。当不在tmux会话中时,一切都很好!彩虹,小马,独角兽和明显的提示!凉! 问题出在tmux之内。我已经验证了PS1的值是我期望的值,并且与tmux未运行时的值相同,即\[\033]0;\w\007\]\[\[\]\]\u\[\]@\[\[\]\]\h\[\]:\[\]\W\[\]$ \[\]。 我的.bash_profile中的所有别名等也都按预期运行。tmux还在显示颜色而不会发生意外,echo -ne "\033[1;33m hi"正如预期的那样gls --color。 我的.bash_profile中当前相关的行是export PS1="\[\033]0;\w\007\]\[\[\]\]\u\[\]@\[\[\]\]\h\[\]:\[\]\W\[\]$ \[\]",尽管最初我是在.bash_prompt文件中寻找一个脚本来处理一些条件的,等等。我试图恢复到较简单的版本。 执行bash将导致提示变色,但是必须在每个窗格中完成。export PS1=[that long string I've already posted]将不会。 我的.tmux.conf如下: set-option -g default-command "reattach-to-user-namespace -l /usr/local/bin/bash" set -g default-terminal "xterm-256color" set-window-option -g automatic-rename on bind '"' split-window -c "#{pane_current_path}" bind % split-window -h -c "#{pane_current_path}" bind c new-window -c "#{pane_current_path}" .bash_profile的相关部分: …
11 bash  osx  tmux  prompt 

1
GNU Makefile中的进程替换
在bash提示下,可以使用伪文件执行diff: diff <(echo test) <(echo test) 将其原样添加到Makefile中失败: all: diff <(echo test) <(echo test) 错误(提示:/ bin / sh指向此系统上的/ bin / bash): /bin/sh: -c: line 0: syntax error near unexpected token `(' /bin/sh: -c: line 0: `diff <(echo test) <(echo test)' 这是什么意思,有没有办法在不使用临时文件的情况下仍然比较两个输出?

3
stat:文件的修改时间戳
我stat -f %m .bashrc用来获取我的.bashrc在osx上的修改时间。但是,当我在ubuntu上运行相同的命令时,它会吐出错误: stat: cannot read file system information for %m': No such file or directory 是否有兼容的方法来实现这一目标?

2
采购.bashrc之后,使用ssh在交互式shell中运行命令
我想ssh进入远程Ubuntu计算机,获取我的源文件.bashrc并运行取决于该计算机设置的参数的命令.bashrc。交互式外壳中的所有内容在命令完成后不会关闭。 我到目前为止尝试的是 ssh user@remote_computer -t 'bash -l -c "my_alias;bash"' 要不就 ssh user@remote_computer -t "my_alias;bash" 这适用于常规命令(例如ls,例如),但是当我尝试运行中定义的别名时,.bashrc出现错误: bash: my_alias: command not found 但是,当我再次手动编写并运行它时,它就可以工作了! 那么,如何.bashrc在调用命令之前确保的来源?
11 bash  shell  ssh  alias 

1
使用“邮件”从命令行读取电子邮件
我知道我们可以mail在终端中使用命令mail以交互方式开始使用该程序。 但是,我想mail非交互式地使用命令阅读电子邮件。 有没有这样的命令 $ mail -optionToReadMail -mailNumber 1; 哪个将在stdout中显示电子邮件的内容?
11 bash  scripting  mailx 

3
比较bash中两个文件的头
我可以diff filea fileb看到文件之间的区别。我也head -1 filea可以看到filea或fileb的第一行。如何合并这些命令以显示filea第一行和fileb第一行之间的区别?
11 bash  shell  diff  head 



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.