在 bash 脚本中执行 Linux 命令并将输出写入控制台并保留断行
Execute Linux command in bash script and write output to console with preservation of break lines
我想要一个 bash 函数来执行给定的命令,将其输出打印到控制台并在脚本执行完成时通知我。该函数看起来像这样:
n() {
echo $($a)
notify-send "Exexution of '$@' has finished."
}
当我 运行 n ls
我希望 ls
的输出与从控制台执行的输出相同。但是它将 ls
的输出放在一行上。
$ n ls -la
drwxr-xr-x 30 orangetux orangetux 4096 Jan 18 12:41 bundle drwxr-xr-x 2 orangetux orangetux 4096 Jan 9 22:23 colors
而不是:
$ ls
drwxr-xr-x 30 orangetux orangetux 4096 Jan 18 12:41 bundle
drwxr-xr-x 2 orangetux orangetux 4096 Jan 9 22:23 colors
如何像 ls
一样打印 n ls
的输出?
编辑
删除了关于突出显示的注释。
您可以只使用:
n() { "$@"; echo "Execution of '$@' has finished."; }
即不要使用 echo $(...)
,因为 shell 不带引号会去除空格。
你也可以这样做:
echo "$($@)"
我想要一个 bash 函数来执行给定的命令,将其输出打印到控制台并在脚本执行完成时通知我。该函数看起来像这样:
n() {
echo $($a)
notify-send "Exexution of '$@' has finished."
}
当我 运行 n ls
我希望 ls
的输出与从控制台执行的输出相同。但是它将 ls
的输出放在一行上。
$ n ls -la
drwxr-xr-x 30 orangetux orangetux 4096 Jan 18 12:41 bundle drwxr-xr-x 2 orangetux orangetux 4096 Jan 9 22:23 colors
而不是:
$ ls
drwxr-xr-x 30 orangetux orangetux 4096 Jan 18 12:41 bundle
drwxr-xr-x 2 orangetux orangetux 4096 Jan 9 22:23 colors
如何像 ls
一样打印 n ls
的输出?
编辑
删除了关于突出显示的注释。
您可以只使用:
n() { "$@"; echo "Execution of '$@' has finished."; }
即不要使用 echo $(...)
,因为 shell 不带引号会去除空格。
你也可以这样做:
echo "$($@)"