2

Есть ли какой-либо ярлык для выполнения вывода предыдущей команды, например, для выполнения всего, что найдено командой locate ?

Например, если я запускаю эту команду locate и получаю этот вывод ...

root@kali:~/scripts# locate nasm_shell
/usr/share/metasploit-framework/tools/nasm_shell.rb

Есть ли способ выполнить эту команду nasm_shell.rb с помощью ярлыка? Просто быть ленивым и пытаться избежать копирования и вставки полного пути к команде.

2 ответа2

3
$(locate nasm_shell)

или же

`locate nasm_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, чтобы выбрать правильный вывод, затем добавив аргумент к выводу подоболочки:

user@host$ $(locate mkdir | grep "^\/bin") test-directory && ls -ld test-directory
drwxrwxr-x 2 user user 4096 Nov 15 21:18 test-directory

Обратите внимание на использование альтернативного синтаксиса $()

0

Это должно работать с использованием eval а также locate сочетании с $() следующим образом:

eval $(locate nasm_shell)

Но риск, связанный с использованием этого, скажем, у вас есть несколько файлов с именем nasm_shell в системе. Затем эта команда не будет выполнена, поскольку она попытается выполнить полный вывод команды locate . Но если вы на 100% уверены , что вы ищете в одном файле / скрипте, например, nasm_shell.rb , то это будет хорошо.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .