Questions tagged «bash»

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

2
如何使cd参数不区分大小写?
有时,在访问各种目录时,多数情况下我记得我们Linux系统下目录的名称或至少一部分名称。但是某些目录的名称以大写字母开头或大写字母中间的一个字符开头。 任何人都可以建议我如何才能让下面的参数cd命令不区分大小写,这样,如果我执行cd BackupDirectory或者cd backupdirectory它可以进入该目录名BackupDirectory。 当然,我不想为其他用户搞麻烦,因此,如果上述可行,是否可以将更改仅应用于我正在使用的会话,而不会影响其他用户? 好的,我试过了 set completion-ignore-case,但是这行不通。如果我键入cd b和Tab或Esc Esc它填充目录名而忽略大小写,则只会有所帮助。但是,我需要做的是cd backupdirectory,它只是忽略大小写并BackupDirectory自行输入。

2
为什么--text =“ $ @”仅传递第一个单词?
当我运行带有某些参数的以下脚本时arg1 arg2 arg3: #!/bin/bash zenity --entry --text="$@" zenity使用以下文本创建一个输入对话框:“ arg1”,而我期望“ arg1 arg2 arg3” 如果我使用像以下脚本这样的变量,它将显示条目文本的所有参数。 #!/bin/bash text="$@" zenity --entry --text="$text" 这些脚本之间有什么区别?为什么第一个$@仅替换为第一个参数?
9 bash  shell  quoting 

2
逐行读取文件时请求用户输入
对于班级,我需要编写一个Bash脚本,该脚本将获取输出ispell,当我尝试在while循环内请求用户输入时,它仅将文件的下一行保存为用户输入。 我该如何在while循环中请求用户输入? #!/bin/bash #Returns the misspelled words #ispell -l < file #define vars ISPELL_OUTPUT_FILE="output.tmp"; INPUT_FILE=$1 ispell -l < $INPUT_FILE > $ISPELL_OUTPUT_FILE; #echo a new line for give space between command #and the output generated echo ""; while read line; do echo "'$line' is misspelled. Press "Enter" to keep"; read -p …

2
从多个Konsole保存bash历史记录无法正常工作
我使用多个Konsole终端。而且我希望我在每个终端中键入的所有命令都保存在命令历史记录中,以便我打开的下一个konsole拥有所有命令。为了防止每个终端覆盖另一个终端的命令历史记录,我在我的计算机中进行了以下设置.bashrc # avoid duplicates and commands starting with space export HISTCONTROL=ignoredups:erasedups:ignorespace # append history entries.. shopt -s histappend #My machine reboots without warning sometimes.Hence to save commands instantaneously. export PROMPT_COMMAND="history -a" export HISTSIZE=1000 PS1="\[\e[1;34m\]\! \[\e[0m\]"$PS1 我在最后一行给出了提示符,以查看命令号。命令号 从未超过600,但是我的一些旧命令仍然从历史中消失。有很多命令是重复给出的,但是正如从所期望的那样ignoredups,它永远不会在提示符后增加命令no。然而旧的命令仍在消失,历史上的命令数量始终保持在500多一点。 .bash_history尽管忽略了该文件,但该文件仍然包含许多重复项。 PS:echo $HISTSIZE和输出$HISTFILESIZE均为=1000 更新:我在上面的条目中发现了问题.bashrc。只需调用即可history -a,PROMPT_COMMAND只需将最后一个新命令附加到.bash_history。所以ignoredups和erasedups没有作用。 有什么办法,我仍然可以写.bash_history而不用从每个终端重复吗?我不想在每个命令提示符处加载整个历史记录,history -r然后再用再次写回history -w,因为我在一个终端中发出的命令也会出现在另一个并行运行的终端中。我希望组合的命令仅出现在新终端中。 我的历史为何被修整到500的难题已解决。我注意到每次我进入这台机器时,它都会发生。.bash_profile使用以下条目创建一个即可解决此问题。 if [ -f ~/.bashrc …

5
如何计算bash中第一个字段排序的行
这是INPUT的摘录: ... #################### Bala Bela;XXXXXX12345;XXXXXX12345678;A SERVER345Z3.DOMAIN.com0 SERVER346Z3.DOMAIN.com0 SERVER347Z3.DOMAIN.com0 SERVER348Z3.DOMAIN.com0 ssh-dss ...pubkeyhere... #################### Ize Jova;XXXXXX12345;XXXXXX12345;A SERVER342Z3.DOMAIN.com0 SERVER343Z3.DOMAIN.com0 SERVER345Z3.DOMAIN.com0 ssh-rsa ...pubkeyhere... ... 这是我需要的输出片段: Bala Bela;XXXXXX12345;XXXXXX12345678;A 4 Ize Jova;XXXXXX12345;XXXXXX12345;A 3 因此,我需要从INPUT输出,以便可以看到以“ SERVER”开头的行分配给给定用户(例如:“ Bala Bela; XXXXXX12345; XXXXXX12345678; A”)。我该如何在bash中做到这一点?

2
为什么即使正确指定了$ PATH,Bash也无法找到命令?
我在文件/ etc / profile中指定命令的路径: export PATH=$PATH:/usr/app/cpn/bin 我的命令位于: $ which ydisplay /usr/app/cpn/bin/ydisplay 因此,当我执行“ echo $ PATH”输出时,如下所示: $ echo $PATH ...:/usr/app/cpn/bin 一切正常,但是当我尝试通过SSH启动命令时,出现错误: $ ssh 127.0.0.1 ydisplay $ bash: ydisplay: command not found 但是我的道路仍然存在: $ ssh 127.0.0.1 echo $PATH ...:/usr/app/cpn/bin 请向我解释为什么Bash在SSH会话期间无法找到ydisplay,以及如何正确配置SSH以避免此问题。 而且,如果我在当前用户的本地文件.bashrc中指定$ PATH,则它们都可以正常工作。但是我只想修改一个文件,而不是为每个用户指定很多文件。这就是为什么我要问。
9 linux  bash  shell  ssh  path 

2
退出时使用SSH LocalCommand
在通过SSH连接到远程计算机时,~/.ssh/config可以使用In LocalCommand命令执行本地命令。但是,退出 SSH连接后如何执行命令?似乎* .bashrc / .bash_profile *文件在连接结束或关闭时不是源文件。
9 bash  ssh  osx 

5
如何在仅具有根写许可权的文件中添加一行并继续执行脚本
我正在尝试学习bash脚本。我正在处理一个实际问题,有一次我需要在需要root写入权限的文件中添加一行。 代码如下: # some code echo "add this line to the code" >> fileName # some code 是否有可能使脚本要求输入root密码,验证密码,并在成功身份验证后修改文件?然后,脚本应返回到用户模式并继续执行命令。

1
在本地计算机上通过ssh播放声音/通知
因此,我有finch一个在我ssh进入的远程计算机上运行的命令行聊天客户端(例如pidgin)。finch具有通知声音,并且可以在发生某些事件时运行命令,使您可以将声音文件作为传递%s。例如mplayer %s 从远程计算机发出通知时,我可以运行哪种命令来播放%s本地计算机上的内容?
9 ssh  bash  audio 



3
如何拆分输出并将其存储在数组中?
这是输出: 3,aac-lc, 93.8, aaclc, 77.3, h.264, 1024.6, h.264, 1029.1, 31, 31, 0,0,0.000000,31,31,0,0,0.000000,7,0,0,0.000000,30,1280 720,10,0,0,0.000000,30,1280 720 我尝试了2种情况: 存储在阵列中 @arr=split(',',$stats); echo "statistics: $stats" 存储在变量中 echo $stats | cut -d ',' -f | read s1 echo $s1 但是,两种情况都不起作用。
9 bash 

2
Bash:在变量中使用别名
我正在编写一个bash脚本,该脚本将每个参数作为命令运行。这适用于my中的命令PATH,但不适用于别名。我可以直接在脚本中调用别名,但是不能调用已作为参数传递的别名。 问题(我认为)是别名在变量之前扩展。有没有办法从变量运行别名? 示例脚本: #!/bin/bash # File: runall shopt -s expand_aliases source ~/.aliases while (( "$#" )); do $1 shift done runall "echo test"可行,但runall "myalias"给runall: line 8: myalias: command not found
9 bash  alias 

1
两个管道到一个命令
我对以下语法有点困惑。虽然有效,但不知道为什么有效。好像有两个管道连接到diff命令。但是不是只有一个STDIN吗? 例子: diff <(echo "foobar") <(echo "barbaz") diff <(cat foo.txt) <(cat bar.txt)
9 bash  shell 

4
获取自动补全功能
我当前正在运行64位Debian Wheezy。 我在apt-get的自动完成方面遇到了一些麻烦。我已经安装了bash-completion。 如果我以root用户身份登录shell,则可以对apt-get使用自动补全功能(例如:apt-get install wicd [tab] [tab ]),它将显示与之匹配的所有软件包。但是,如果我尝试对另一个非root用户(即使使用sudo)对apt-get使用自动补全功能,则根本无法使用。我可以自动完成其他操作,例如文件名。 有什么帮助吗? 我的.bashrc和/ etc / profile中确实有以下代码 if [ -f /etc/bash_completion ]; then . /etc/bash_completion fi

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.