Questions tagged «bash»

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

12
为什么要在函数中编写整个bash脚本?
在工作中,我经常编写bash脚本。我的主管建议将整个脚本分解为功能,类似于以下示例: #!/bin/bash # Configure variables declare_variables() { noun=geese count=three } # Announce something i_am_foo() { echo "I am foo" sleep 0.5 echo "hear me roar!" } # Tell a joke walk_into_bar() { echo "So these ${count} ${noun} walk into a bar..." } # Emulate a pendulum clock for a bit …


6
如何回响一声巨响!
我试图echo通过将内容放入文件而不是使用编辑器打开脚本来创建脚本 echo -e "#!/bin/bash \n /usr/bin/command args" > .scripts/command 的输出: bash:!/ bin / bash:找不到事件 我已经分离出这种奇怪的行为的爆炸。 $ echo ! ! $ echo "!" bash: !: event not found $ echo \#! #! $ echo \#!/bin/bash bash: !/bin/bash: event not found 为什么爆炸会引起这种情况? bash指的这些“事件”是什么? 如何解决此问题,然后在屏幕或文件中打印“#!/ bin / bash”?

3
是的如何快速写入文件?
让我举个例子吧: $ timeout 1 yes "GNU" > file1 $ wc -l file1 11504640 file1 $ for ((sec0=`date +%S`;sec<=$(($sec0+5));sec=`date +%S`)); do echo "GNU" >> file2; done $ wc -l file2 1953 file2 在这里您可以看到该命令在一秒钟内yes写入了11504640行,而我只能1953使用bash for和在5秒内写入行echo。 正如评论中所建议的那样,有多种技巧可以使其更高效,但没有一个能与之匹敌的速度yes: $ ( while :; do echo "GNU" >> file3; done) & pid=$! ; sleep 1 ; …
58 bash  coreutils  write  yes 

1
单个命令即可登录SSH并运行程序?
有没有一种方法可以构造单个命令以通过SSH登录到远程服务器并在远程登录Shell上运行程序? 在OpenSSH手册中,其内容为:“如果指定了命令,那么它将在远程主机而不是登录shell上执行。” 因此,例如,ssh user@server mail将登录到远程服务器,显示邮箱状态,然后将您返回到本地外壳程序。显示邮件状态后,是否可以保留在远程外壳程序上? 此外,ssh user@server [command]如果命令是程序,例如vim或mutt ,则似乎不起作用。有没有一种方法可以登录到远程Shell并在运行过程中停留在远程Shell中并在退出程序之后运行程序,仅最终通过特定logout命令退出(就像在普通SSH会话中一样)? 我最终希望能够将这样的命令作为别名放入本地.bashrc中,以便可以在需要时快速运行。一个示例是通过SSH登录到远程服务器,然后在远程服务器上打开mutt以读取或发送电子邮件。
58 bash  shell  ssh  openssh 

3
“ rm被散列”是什么意思?
我正在浏览http://mywiki.wooledge.org/BashGuide/CommandsAndArguments并遇到以下问题: $ type rm rm is hashed (/bin/rm) $ type cd cd is a shell builtin 不久之前,该指南列出了Bash可以理解的各种命令:别名,函数,内建函数,关键字和可执行文件。但是没有提到“散列”。那么,在这种情况下,“散列”是什么意思?
58 bash  shell  command 

5
只需输入目录名称即可cd?
我或者20年前在某个地方有这个,或者我梦到了。 基本上: 如果blobblob我得到 blobblob: command not found 很公平。 我想要这样,以便当我的shell遇到这些错误时-找不到命令-它会检查是否存在具有该名称的目录('blobblob'),如果存在,则cd指向该目录。 我确定有某些原因不这样做或谨慎进行。 我只是认为这会很整洁,我想尝试通过找到某个地方(例如这里!)来尝试一下。 我不知道该如何暗示可能要进行的shell编程。

4
通过符号链接执行时获取当前脚本的路径
我有一个实用程序,该实用程序由几个目录以及一些bash脚本和支持文件组成,这些文件可能会部署到多台计算机上,并且可能位于每台计算机的不同目录中。脚本需要能够引用相对于它们自己的路径,因此我需要能够获取到当前正在执行的文件的路径。 我知道dirname $0当直接调用我的脚本时,这种用法非常有效。不幸的是,人们希望能够从完全不同的目录创建指向这些脚本的符号链接,并且仍然具有相对的路径逻辑功能。 总体干线结构的示例如下: / |-usr/local/lib | |-foo | | |-bin | | | |-script.sh | | |-res | | | |-resource_file.txt |-home/mike/bin | |-link_to_script (symlink to /usr/local/lib/foo/bin/script.sh) 我怎样才能可靠地引用/usr/local/lib/foo/res/resource_file.txt来自script.sh它是否被调用/usr/local/lib/foo/bin/script.sh或~mike/bin/link_to_script?

3
在单行bash循环中使用&(与号)
我一直在成功使用此命令,该命令会更改配置文件中的变量,然后在循环内执行Python脚本: for((i=114;i<=255;i+=1)); do echo $i > numbers.txt;python DoMyScript.py; done 由于每个程序DoMyScript.py本身都需要30秒钟才能终止,因此我想将它们放回后台,同时可以生成下一个程序。 我尝试通过添加以下与号来尝试熟悉的内容: for((i=114;i<=255;i+=1)); do echo $i > numbers.txt;python DoMyScript.py &; done 但是,这导致以下错误: -bash:意外令牌';'附近的语法错误


3
grep里面少吗?
我目前正在筛选许多不熟悉的日志,以查找一些问题。我看的第一个文件是Events.log,我得到至少三个页面,less这些页面似乎在不同时间显示同一事件-一个看起来相当良性的事件。我想过滤掉此事件,目前我退出less并做类似的事情 grep -v "event text" Events.log | less 现在,这带来了许多其他常见的,无趣的事件,我也想过滤掉这些事件。有什么我可以grep -v 里面的方法less吗?不必做 egrep -v "event text|something else|the other thing|foo|bar" Events.log | less 当查看任何类型的日志文件时,它是一项有用的功能-如果less不是该工具,那么我是否具有其他追求的品质?只是一个less内置样式的查看器grep。
58 bash  grep  logs  less 

4
仅列出n级深的子目录
Festival将语音包数据存储在以下示例目录结构中: /usr/share/festival/voices/<language>/<voicepack name> 在所有潜在的众多子目录中,最简单的单行ls打印(最好使用)打印出来的是什么?<voicepack name><language>
58 bash  ls 


6
使用jq提取CSV格式的值和格式
我有以下JSON文件: { "data": [ { "displayName": "First Name", "rank": 1, "value": "VALUE" }, { "displayName": "Last Name", "rank": 2, "value": "VALUE" }, { "displayName": "Position", "rank": 3, "value": "VALUE" }, { "displayName": "Company Name", "rank": 4, "value": "VALUE" }, { "displayName": "Country", "rank": 5, "value": "VALUE" }, ] } 我想使用以下格式的CSV文件: …
57 bash  python  csv  json  jq 

7
将历史记录命令放到命令行而不执行
我使用!n,其中(n)是执行历史记录文件中的行的行号,该文件我要在我通过history |找到的命令提示符下执行。 但是有一个我希望手动修改的命令行历史记录事件。如何在未实际执行的情况下将历史事件内容插入命令行,以便进行修改然后按回车键? 最好,

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.