Questions tagged «bash»

有关为Bash命令外壳编写的脚本的问题。对于具有错误/语法错误的shell脚本,请在此处发布之前,使用shellcheck程序(或在Web shellcheck服务器中的https://shellcheck.net)进行检查。有关Bash交互使用的问题更可能是Super User而不是Stack Overflow上的话题。

14
如何为每个ping结果加时间戳?
Ping默认返回以下内容: 64 bytes from 203.173.50.132: icmp_seq=0 ttl=244 time=57.746 ms 有什么办法可以添加时间戳吗? 例如, Mon 21 May 2012 15:15:37 EST | 64 bytes from 203.173.50.132: icmp_seq=0 ttl=244 time=57.746 ms 我在OS X v10.7(Lion)上,它似乎具有ping的某些BSD版本。
77 bash  osx-lion  ping  bsd 


4
bash正则表达式带有引号?
以下代码 number=1 if [[ $number =~ [0-9] ]] then echo matched fi 作品。但是,如果我尝试在正则表达式中使用引号,它将停止: number=1 if [[ $number =~ "[0-9]" ]] then echo matched fi 我也尝试"\[0-9\]"过。我想念什么? 有趣的是,bash高级脚本指南建议这应该可行。 Bash版本3.2.39。
77 regex  bash  quotes 

3
如何避免bash命令替换以删除换行符?
为了加快执行bash脚本的速度,我想使用命令替换将命令的结果保留在变量中,但是命令替换将0x0A换行符替换为空格。例如: a=`df -H` 要么 a=$( df -H ) 当我想进一步处理时$a,将换行符替换为一个空格,并且所有行现在都在一行上,这很难grep进行: echo $a 避免换行符被命令替换删除的简单技巧是什么?


11
尝试从bash错误的字符串中检索前5个字符?
我正在尝试从字符串中检索前5个字符,但是Bad substitution在字符串操作行中不断出现错误,我的teststring.sh脚本中包含以下几行: TESTSTRINGONE="MOTEST" NEWTESTSTRING=${TESTSTRINGONE:0:5} echo ${NEWTESTSTRING} 我已经遍历了很多次语法,看不到我做错了什么 谢谢
77 bash  shell 

2
使用npm运行bash脚本
我想尝试使用npm为Web应用程序运行各种构建任务。我知道我可以这样添加一个scripts字段来做到这package.json一点: "scripts": { "build": "some build command" }, 当您使用带有许多选项的更复杂的命令时,这变得笨拙。是否有可能将这些命令移至bash脚本或类似的东西?就像是: "scripts": { "build": "build.sh" }, 在文件npm run build中的哪里执行命令build.sh? 通读这篇文章似乎是这样,但是我不清楚我应该在哪里放置build.sh文件或者丢失了什么。
77 node.js  bash  shell  npm 

11
psql:找不到命令Mac
我通过http://www.postgresql.org/download/macosx/上的图形安装安装了PostgreSQL 。 我在应用程序中看到了它,在应用程序中也有psql终端。我需要psql在常规终端中为另一个正在为应用程序运行的bash脚本工作。 由于某种原因,当我跑步时 psql 在Mac终端中,我的输出是 -bash: psql: command not found 我在终端中运行以下命令: locate psql | grep /bin 和输出是 /Library/PostgreSQL/9.5/bin/psql 然后,我编辑〜/ .bash_profile并将其添加到路径中,如下所示: export PATH = /Library/PostgreSQL/9.5/bin/psql:$PATH 〜/ .bash_profile中唯一的另一件事是SDK man,它位于脚本的底部,正如它应该说的那样。我尝试将浴池设置为/Library/PostgreSQL/9.5/bin/。我也重新启动了终端。 如何使psql工作? 编辑 添加到.bashrc后,当我打开终端时返回此输出 -bash: export: `/Library/PostgreSQL/9.5/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin': not a valid identifier
77 macos  bash  postgresql  psql 

5
警告:忽略损坏的ref refs / remotes / origin / HEAD
从几天前开始,每次我tab按键以bash形式完成分支名称时,都会看到以下消息: 警告:忽略损坏的ref refs / remotes / origin / HEAD警告:忽略损坏的ref refs / remotes / origin / HEAD 例如,这是当我有一个名为feature / foo的分支并按时看到的tab: git checkout f $ git checkout fwarning: ignoring broken ref refs/remotes/origin/HEAD warning: ignoring broken ref refs/remotes/origin/HEAD eature/
77 git  bash 

3
'bash -c'是做什么的?
我遵循了以下教程:http : //davidtsadler.com/archives/2012/06/03/how-to-install-magento-on-ubuntu/ 在某个时候,它告诉我执行以下命令: sudo bash -c "cat >> /etc/apache2/sites-available/magento-store.com <<EOF <VirtualHost *:80> ServerName localhost.magento-store.com ServerAlias www.localhost.magento-store.com DocumentRoot /home/dev/public_html/magento-store.com/public LogLevel warn ErrorLog /home/dev/public_html/magento-store.com/log/error.log CustomLog /home/dev/public_html/magento-store.com/log/access.log combined </VirtualHost> EOF" 这个命令做了什么,我该如何取消呢? 我重新启动了计算机,看来它仍在运行。我看了看.bashrc和.profile,但没有在里面找到它。
77 linux  bash 

6
递归地区分目录,忽略所有二进制文件
在Fedora Constantine盒子上工作。我正在diff递归地查找两个目录以检查源更改。由于项目的设置(在我自己参与上述项目之前!sigh),目录包含源代码和二进制文件以及大型二进制数据集。虽然差异最终适用于这些目录,但如果我可以忽略二进制文件,则可能需要二十秒钟。 据我了解,DIFF没有一个“忽略二进制文件”模式,但确实有一个忽略的参数,它会忽略正则表达式中的文件。无论扩展名如何,我都不知道该写些什么来忽略二进制文件。 我正在使用以下命令,但它不会忽略二进制文件。有谁知道如何修改此命令来做到这一点? diff -rq dir1 dir2
76 bash  shell  diff  binaryfiles 


13
捕获find的输出。-print0进入bash数组
使用find . -print0似乎是获得在bash的文件列表的唯一可靠的方式因含有空格,换行,引号等文件名的可能性 但是,我很难在bash或其他命令行实用程序中使find的输出有用。我设法利用输出的唯一方法是将其通过管道传输到perl,并将perl的IFS更改为null: find . -print0 | perl -e '$/="\0"; @files=<>; print $#files;' 本示例将打印找到的文件数,避免文件名中的换行符损坏计数的危险,如发生以下情况: find . | wc -l 由于大多数命令行程序不支持以空分隔的输入,因此我认为最好的办法是find . -print0像在上面的perl片段中所做的那样,在bash数组中捕获输出,然后继续执行任务,无论如何是。 我怎样才能做到这一点? 这不起作用: find . -print0 | ( IFS=$'\0' ; array=( $( cat ) ) ; echo ${#array[@]} ) 一个更普遍的问题可能是:如何使用bash中的文件列表来做有用的事情?
76 arrays  bash  null  find  delimiter 

6
如何在exec参数中的管道中使用find命令?
我正在尝试构造一个find命令,以使用两个不同的可执行文件来处理目录中的一堆文件。不幸的是,-execfind不允许使用管道,甚至\|因为外壳程序首先解释了该字符。 具体来说,这是我要尝试执行的操作(此操作不起作用,因为管道结束了find命令): find /path/to/jpgs -type f -exec jhead -v {} | grep 123 \; -print
76 bash  shell  find 

2
“:$ {foo = value}”中冒号运算符的解释
我了解bash中冒号运算符的行为类似于null,我知道它用于参数扩展以及其他方式,但是有人可以解释一下: : ${SOMETHING='value'} 通过实验,我知道这会将环境变量设置为$SOMETHING,'value'但是为什么呢? “只是因为它确实是”是一个有效的答案,但是请向我指出它的文档(我似乎找不到),或者使用一个恰当的名称对此很有用。我希望有一个更启发性的解释。
76 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.