是否有任何快捷方式可以执行上一个命令的输出,例如执行该locate
命令找到的任何内容?
例如,如果我运行此locate
命令并得到此输出...
root@kali:~/scripts# locate nasm_shell
/usr/share/metasploit-framework/tools/nasm_shell.rb
有没有办法nasm_shell.rb
用快捷方式执行该命令?只是懒得复制和粘贴完整的命令路径。
答案1
$(locate nasm_shell)
或者
`locate nasm_shell`
您可以使用反引号``
或$()
在子 shell 中执行命令,例如:
user@host$ which df
/bin/df
user@host$ `which df`
Filesystem 1K-blocks Used Available Use% Mounted on
...
/dev/sda1 498532 199535 268738 43% /boot
/dev/mapper/vg-home 412718256 232104076 159626276 60% /home
如果输出不止一行,则需要使用grep
或其他工具来选择正确的输出:
例如,以下内容包含我想要的输出,要查找mkdir
user@host$ locate mkdir
/bin/mkdir
/opt/project-neon5/include/KF5/KIOCore/kio/mkdirjob.h
/usr/lib/klibc/bin/mkdir
/usr/lib/mc/fish/mkdir
/usr/share/aclocal-1.14/mkdirp.m4
/usr/share/man/man1/gvfs-mkdir.1.gz
/usr/share/man/man1/mkdir.1.gz
/usr/share/man/man2/mkdir.2.gz
/usr/share/man/man2/mkdirat.2.gz
/usr/share/zsh/functions/Completion/Unix/_mkdir
/var/lib/gems/1.9.1/doc/bundler-1.3.5/ri/Bundler/mkdir_p-c.ri
我只希望mkdir
它存在于 中/bin
。使用 grep 选择正确的输出,然后向子 shell 的输出添加一个参数:
user@host$ $(locate mkdir | grep "^\/bin") test-directory && ls -ld test-directory
drwxrwxr-x 2 user user 4096 Nov 15 21:18 test-directory
注意使用替代语法$()