Cenário simples: estou procurando um wsdl
arquivo perdido no meio de um projeto.
$ find -name '*.wsdl'
./some/very/very/long/way/to/some/lost/directory/filename.wsdl
Agora que sei onde está, quero fazer algo com este arquivo, digamos editá-lo. Em vez de copiar / colar o caminho atrás do meu comando, é possível usar o caminho retornado find
anteriormente? Assim como é possível acessar o último argumento digitado !$
ou o último comando com !!
.
Eu li que era possível com $?
, mas isso só me retorna um erro:0: command not found
$ echo $?
0: command not found
Respostas:
Execute o comando na substituição de comando:
A saída está agora armazenada na
output
variável que você pode usar quantas vezes quiser.fonte
$?
não contém os caminhos.return
na pergunta. Sua resposta está absolutamente correta para a pergunta acima.$?
contém o status de saída do último comandoNão há variável bash especial para isso.
$?
contém o código de saída do último comando (0 = sucesso,> 0 = código de erro)Você pode usar a saída de
find
com o-exec
sinalizador, assim:O
{}
é substituído pelo nome do arquivo encontrado porfind
. Isso executaria o comando para cada arquivo encontrado. Se você deseja executar um comando com todos os arquivos encontrados como argumentos, use um+
no final como este:Isso abriria uma instância do emacs com todos os arquivos .wsdl encontrados abertos nela.
Uma solução mais geral é armazenar a saída em uma variável:
Isso funciona com todos os comandos, não apenas com a localização. Embora você também possa usar
xargs
:fonte
$?
retornar o código de saída de outro comando? por exemplo, ping 1.1.1.1 -w 10; retornar $?$?
contém o código de saída do comando anterior, seja o que for. Então a resposta é sim.Aqui está um truque rápido que deve fazer o que você deseja com o mínimo de pressionamentos de tecla, se você não se importa que o último comando seja executado duas vezes.
Use backtick, ala:
`!!`
por exemplo
* editar: vejo que a pergunta "possivelmente enganada" acima também contém essa resposta. ainda é relevante diretamente para este, deixando-o, mas desculpe-me pelo engano.
fonte
git br | grep
no meu caso)!!
é muito mais fácil do que pressionar a tecla para cima? E então você ainda pode ver seu comando. Se executar o comando novamente é aceitável, acho que apenas pressionando-se é tão fácil (e um pouco mais compreensível e transparente),