命令替换
命令替换允许我们使用命令的输出作为扩展:
[我@linuxbox ~]$ 回声 $(ls)
桌面文档 ls-output.txt 音乐图片 公共模板 视频
[我@linuxbox ~]$ 回声 $(ls)
桌面文档 ls-output.txt 音乐图片 公共模板 视频
我的最爱之一是这样的:
[我@linuxbox ~]$ ls -l $(哪个cp)
-rwxr-xr-x 1 根根 71516 2007-12-05 08:58 /bin/cp
[我@linuxbox ~]$ ls -l $(哪个cp)
-rwxr-xr-x 1 根根 71516 2007-12-05 08:58 /bin/cp
这里我们传递了结果 哪个cp 作为对 ls 命令,从而获得 cp 程序而不必知道其完整路径名。 我们不仅限于简单的命令。 可以使用整个管道(仅部分输出
显示):
[我@linuxbox ~]$ 文件 $(ls -d /usr/bin/* | grep zip)
/usr/bin/bunzip2: 到‘bzip2’的符号链接
/usr/bin/bzip2:ELF 32 位 LSB 可执行文件,Intel 80386,版本 1 (SYSV),动态链接(使用共享库),用于 GNU/Linux 2.6.9,已剥离
/usr/bin/bzip2recover:ELF 32 位 LSB 可执行文件,Intel 80386,版本 1 (SYSV),动态链接(使用共享库),用于 GNU/Linux 2.6.9,已剥离
/usr/bin/funzip:ELF 32 位 LSB 可执行文件,Intel 80386,版本 1 (SYSV),动态链接(使用共享库),用于 GNU/Linux 2.6.9,已剥离
/usr/bin/gpg-zip:Bourne shell 脚本文本可执行文件
/usr/bin/gunzip:符号链接到`../../bin/gunzip'
/usr/bin/gzip: 符号链接到`../../bin/gzip'
/usr/bin/mzip: 到‘mtools’的符号链接
[我@linuxbox ~]$ 文件 $(ls -d /usr/bin/* | grep zip)
/usr/bin/bunzip2: 到‘bzip2’的符号链接
/usr/bin/bzip2:ELF 32 位 LSB 可执行文件,Intel 80386,版本 1 (SYSV),动态链接(使用共享库),用于 GNU/Linux 2.6.9,已剥离
/usr/bin/bzip2recover:ELF 32 位 LSB 可执行文件,Intel 80386,版本 1 (SYSV),动态链接(使用共享库),用于 GNU/Linux 2.6.9,已剥离
/usr/bin/funzip:ELF 32 位 LSB 可执行文件,Intel 80386,版本 1 (SYSV),动态链接(使用共享库),用于 GNU/Linux 2.6.9,已剥离
/usr/bin/gpg-zip:Bourne shell 脚本文本可执行文件
/usr/bin/gunzip:符号链接到`../../bin/gunzip'
/usr/bin/gzip: 符号链接到`../../bin/gzip'
/usr/bin/mzip: 到‘mtools’的符号链接
在这个例子中,管道的结果成为了 文件 命令。
在较旧的 shell 程序中还有另一种命令替换语法,在 打坏。 它用 反引号 而不是美元符号和括号:
[我@linuxbox ~]$ ls -l`哪个cp`
-rwxr-xr-x 1 根根 71516 2007-12-05 08:58 /bin/cp
[我@linuxbox ~]$ ls -l`哪个cp`
-rwxr-xr-x 1 根根 71516 2007-12-05 08:58 /bin/cp