Ярлик для виконання виводу останньої команди в Linux


2

Чи є ярлик для виконання виводу попередньої команди, наприклад, виконання того, що знайдеться locateкомандою?

Наприклад, якщо я запускаю цю locateкоманду і отримую цей вихід ...

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

Чи є якийсь спосіб виконати цю nasm_shell.rbкоманду за допомогою ярлика? Просто ледачі і намагаються уникати копіювання та вставлення повного командного шляху.

Відповіді:


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

Зверніть увагу на використання альтернативного синтаксису $()


+1 Приємне використання grep "^\/bin"через трубу ( |).
JakeGould

Дякую - подумав, я висвітлю всі випадки використання та узагальнив відповідь на деякі ...
glallen

0

Це має працювати, використовуючи eval, а також locateпоєднуючись із $()цим:

eval $(locate nasm_shell)

Але ризик використання цього припущення скажемо, що у вас є кілька файлів з іменем nasm_shellу системі. Тоді ця команда не зможе, оскільки вона спробує спробувати запустити повний вихід locateкоманди. Але якщо ви на 100% позитивні, те, що ви шукаєте, знаходиться в одному файлі / сценарії, як nasm_shell.rb, то це було б добре.


1
evalЧи не є необхідним, подоболочка досить з Баш / Zsh і т.д. eval, в основному для побудови команд , які потребують конкатенацію рядків stackoverflow.com/questions/11065077 / ...
glallen
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.