Atalho para executar a saída do último comando no Linux

2

Existe algum atalho para executar a saída do comando anterior, como executar o que for encontrado pelo comando locate ?

Por exemplo, se eu executar este comando locate e obter essa saída ...

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

Existe alguma maneira de executar o comando nasm_shell.rb com um atalho? Apenas sendo preguiçoso e tentando evitar copiar e colar o caminho completo do comando.

    
por Kevin 16.11.2014 / 02:48

2 respostas

3
$(locate nasm_shell)

ou

'locate nasm_shell'

Você pode usar backticks '' ou $() para executar o comando em um subshell, por exemplo:

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

Se houver mais de uma linha de saída, você precisará usar grep ou alguma outra ferramenta para selecionar a saída correta:

Por exemplo, o seguinte tem mais do que a saída que eu quero, para encontrar 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

Eu só quero mkdir que vive em /bin . Usando grep para selecionar a saída correta, então adicionando um argumento à saída da subshell:

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

Observe o uso da sintaxe alternativa $()

    
por 16.11.2014 / 03:21
0

Isso deve funcionar usando eval , bem como locate juntamente com $() assim:

eval $(locate nasm_shell)

Mas o risco de usar isso é dizer que você tem vários arquivos com o nome nasm_shell no sistema. Então, esse comando falharia, pois tentaria executar a saída completa do comando locate . Mas se você é 100% positivo, o que você está procurando é em um arquivo / script como nasm_shell.rb , então isso seria ótimo.

    
por 16.11.2014 / 03:23

Tags