Tag: 贝壳

在bash中noop 的用例是什么?

我在bash(:)searchnoop,但没能find任何好的信息。 这个操作符的确切目的或用例是什么? 我试图跟随,这对我来说是这样工作的: [mandy@root]$ a=11 [mandy@root]$ b=20 [mandy@root]$ c=30 [mandy@root]$ echo $a; : echo $b ; echo $c 10 30 请让我知道,这个运营商的实时使用案例或任何强制使用它的地方。

通过bash / shell脚本打开和写入文本文件

如何在Linux中通过shell脚本自动将数据写入文本文件? 我能打开文件。 但是,我不知道如何写入数据。

用于pipe道heredoc的多行语法; 这是便携式?

我熟悉这个语法: cmd1 << EOF | cmd2 text EOF 但是刚发现bash允许我写: cmd1 << EOF | text EOF cmd2 (heredoc被用作cmd2的input)。 这似乎是一个非常奇怪的语法。 它是否便携?

如何grep包含一些二进制数据的文本文件?

grep返回 二进制文件test.log匹配 例如 echo "line1 re \x00\r\nline2\r\nline3 re\r\n" > test.log # in zsh echo -e "line1 re \x00\r\nline2\r\nline3 re\r\n" > test.log # in bash grep re test.log 我希望结果会显示line1和line3(共两行)。 是否可以使用tr将不可打印的数据转换为可读的数据,让grep再次工作?

如何检查命令是否存在于shell脚本中?

我正在写我的第一个shell脚本。 在我的脚本中,我想检查某个命令是否存在,如果没有,请安装可执行文件。 我将如何检查这个命令是否存在? if #check that foobar command doesnt exist then #now install foobar fi

pipe道命令输出到tee,但也保存命令的退出代码

我有一个shell脚本,其中我包装一个命令(mvn干净安装),将输出redirect到日志文件。 #!/bin/bash … mvn clean install $@ | tee $logfile echo $? # Does not show the return code of mvn clean install 现在,如果mvn clean install失败并出现错误,我希望我的包装shell脚本也失败并出现该错误。 但是因为我把所有的输出pipe道都连接起来了,所以当我访问$?时,我无法访问mvn clean install的返回码$? 之后,它总是0(因为发球成功)。 我试图让命令写错误输出到一个单独的文件,然后检查,但错误输出mvn总是空的(好像只写入标准输出)。 我怎样才能保持mvn clean install的返回码,但仍然输出到一个日志文件?

如何在脚本本身中redirect整个shell脚本的输出?

是否有可能将Bourne shell脚本的所有输出redirect到某处,但在脚本本身内部使用shell命令? redirect单个命令的输出很容易,但是我想要更类似这样的东西: #!/bin/sh if [ ! -t 0 ]; then # redirect all of my output to a file here fi # rest of script… 含义:如果脚本以非交互方式运行(例如,cron),则将所有内容的输出保存到文件中。 如果从shell交互式运行,让输出像往常一样转到标准输出。 我想对通常由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 # … […]

在Shell脚本中阻止注释

有没有简单的方法来注释一个shell脚本中的代码块?

如何将命令行parameter passing给shell别名?

如何将命令行parameter passing给别名? 这是一个示例: 别名mkcd ='mkdir $ 1; cd $ 1;' 但是在这种情况下,$ xx在创build时间的别名时被转换,而不是在运行时。 不过,我已经创build了一个解决方法,使用一个shell函数(在googlesearch一下之后),如下所示: 函数mkcd(){ mkdir $ 1 cd $ 1 } 只是想知道是否有办法使别名接受CL参数。 顺便说一句 – 我使用'bash'作为我的默认shell。

在shell脚本中:执行echo shell命令

在shell脚本中,我如何回显所有调用的shell命令并展开任何variables名称? 例如,给出以下行: ls $DIRNAME 我想要脚本运行该命令并显示以下内容 ls /full/path/to/some/dir 目的是保存所有调用的shell命令及其参数的日志。 也许有更好的方法来产生这样一个日志?