我想要一个执行给定命令的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
如何打印n ls
的输出ls
?
修改
删除了有关突出显示的说明。
答案 0 :(得分:2)
你可以使用:
n() { "$@"; echo "Execution of '$@' has finished."; }
即。不要使用echo $(...)
因为空格被shell剥离而没有引号。
你也可以这样做:
echo "$($@)"