Questions tagged «shell»

术语“外壳”是指通常与Unix和Linux操作系统相关联的一类基于文本的交互式命令解释器。对于有关shell脚本的问题,请使用更具体的标签,例如'bash','powershell'或'ksh'。没有特定标签的情况下,应该假定使用便携式(符合POSIX的)解决方案,尽管最好另外使用“ posix”或“ sh”。

13
命令获取STDOUT的第n行
是否有任何bash命令可以让您获得STDOUT的第n行? 也就是说,某些东西 $ ls -l -rw-r--r--@ 1 root wheel my.txt -rw-r--r--@ 1 root wheel files.txt -rw-r--r--@ 1 root wheel here.txt 并做类似的事情 $ ls -l | magic-command 2 -rw-r--r--@ 1 root wheel files.txt 我意识到在编写要重用的脚本时这是一种不好的做法,但是在日常使用shell时,能够以这种方式过滤我的STDOUT对我很有用。 我也意识到这将是半平凡的命令(缓冲区STDOUT,返回特定行),但是我想知道是否存在一些标准的 shell命令来执行此操作,而无需我将脚本放到适当的位置。
210 bash  shell  sed  stdout 


6
如何在Makefile目标中使用Bash语法?
我经常发现Bash语法非常有用,例如像中的流程替换diff <(sort file1) <(sort file2)。 是否可以在Makefile中使用这样的Bash命令?我在想这样的事情: file-differences: diff <(sort file1) <(sort file2) > $@ 在我的GNU Make 3.80中,这将产生错误,因为它使用shell而不是bash执行命令。
208 bash  shell  makefile 

10
查找:-exec缺少参数
今天我得到了一个命令的帮助,但是它似乎没有用。这是命令: find /home/me/download/ -type f -name "*.rm" -exec ffmpeg -i {} -sameq {}.mp3 && rm {}\; 外壳返回 find: missing argument to `-exec' 我基本上想做的是递归地遍历一个目录(如果它还有其他目录),然后对.rm文件类型运行ffmpeg命令,然后将它们转换为.mp3文件类型。完成此操作后,删除.rm刚刚转换的文件。 我对此表示感谢。
206 bash  shell  find  arguments  exec 

5
在Bash中将定界字符串读入数组
我有一个包含以空格分隔的字符串的变量: line="1 1.50 string" 我想用空格作为分隔符来拆分该字符串,并将结果存储在数组中,以便执行以下操作: echo ${arr[0]} echo ${arr[1]} echo ${arr[2]} 输出 1 1.50 string 我在某个地方找到了行不通的解决方案: arr=$(echo ${line}) 如果在此之后运行上面的echo语句,则会得到: 1 1.50 string [empty line] [empty line] 我也试过 IFS=" " arr=$(echo ${line}) 具有相同的结果。有人可以帮忙吗?
206 arrays  string  bash  shell 

7
使用Bash时需要转义哪些字符?
在Bash中是否有需要转义的字符的完整列表?可以仅通过进行检查sed吗? 特别是,我正在检查是否%需要逃脱。我试过了 echo "h%h" | sed 's/%/i/g' 并且工作得很好,没有逃脱%。这是否意味着%不需要逃脱?这是检查必要性的好方法吗? 更笼统:它们是shell和一起逃脱的相同字符bash吗?

5
如何在脚本本身内重定向整个Shell脚本的输出?
是否可以将Bourne Shell脚本的所有输出重定向到某个位置,但是脚本本身内部包含Shell命令? 重定向单个命令的输出很容易,但是我想要更多这样的东西: #!/bin/sh if [ ! -t 0 ]; then # redirect all of my output to a file here fi # rest of script... 含义:如果脚本是非交互式运行的(例如cron),则将所有内容保存到文件中。如果从外壳以交互方式运行,则使输出照常进入stdout。 我想对通常由FreeBSD定期实用程序运行的脚本执行此操作。这是日常运行的一部分,通常我不希望每天都在电子邮件中看到它,因此我没有发送它。但是,如果此特定脚本中的某些内容失败了,那对我来说很重要,我希望能够捕获并通过电子邮件发送这部分日常工作的输出。 更新:Joshua的答案是即时的,但我也想在整个脚本中保存和还原stdout和stderr,这是这样完成的: # save stdout and stderr to file descriptors 3 and 4, then redirect them to "foo" exec 3>&1 4>&2 >foo 2>&1 …
205 shell 

3
Ubuntu说“ bash:./program权限被拒绝”
关闭。此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗?更新问题,使其成为Stack Overflow 的主题。 6年前关闭。 改善这个问题 我在计算机1和计算机2上运行Ubuntu。在计算机1上编译了C ++程序,可以使用终端从终端执行它./program_name。运行正常。 但是,当我尝试在计算机2上执行此操作时,它说: bash: ./program_name: permission denied 有什么问题,我该怎么办?
205 bash  shell  sh 





9
如何在鱼壳中定义别名?
我想在鱼中定义一些别名。显然应该可以在 ~/.config/fish/functions 但是当我重新启动外壳程序时,它们不会自动加载。有任何想法吗?
204 linux  shell  fish 


12
如何从bash / shell脚本评估HTTP响应代码?
我有一种感觉,我想念的是显而易见的东西,但是没有成功man [curl|wget]或使用google(“ http”这样一个不好的搜索词)。我正在寻找对频繁出现故障的Web服务器之一的快速修复,返回状态代码500和错误消息。一旦发生这种情况,需要重新启动它。 由于根本原因似乎很难找到,因此我们旨在快速修复,希望这将足以弥合时间,直到我们真正修复它为止(该服务不需要高可用性) 建议的解决方案是创建一个每5分钟运行一次的cron作业,并检查http:// localhost:8080 /。如果返回状态代码500,则将重新启动Web服务器。服务器将在一分钟内重新启动,因此无需检查是否已在运行重新启动。 该服务器是ubuntu 8.04最小安装版本,仅安装了足以运行其当前所需软件包的软件包。在bash中没有执行任务的硬性要求,但是我希望它可以在最小的环境中运行而无需安装更多的解释器。 (我对脚本非常熟悉,因此将http状态代码分配给环境变量的命令/选项就足够了-这就是我一直在寻找并且找不到的东西。)
203 http  bash  shell  http-headers 

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.