Eu posso ver o último comando no terminal pressionando up arrow
como no exemplo a seguir:
Eu digitei cd /
:
Makss-Mac:~ maks$ cd /
... pressionado enter
, comando cd /
executado e agora posso pressionar up arrow
e ver o comando cd /
novamente:
Makss-Mac:/ maks$ cd /
Quero não apenas ver o último comando, mas copiá-lo para a área de transferência.
Talvez exista um atalho que não apenas mostre o último comando no terminal (como o up arrow
faz), mas ao mesmo tempo copie-o para a área de transferência.
Ou talvez haja um atalho para selecionar todos da linha de terminal atual. E assim, poderei copiar o último comando (depois de pressionar up arrow
) pressionando super+c
. Claro que posso selecioná-lo com o mouse. Mas quando os comandos são 10 vezes mais longos do cd /
que podem consumir muito tempo, especialmente se você fizer isso a cada 30 segundos.
Ou talvez haja uma maneira de escrever um plugin para o Terminal
fonte
Respostas:
Coloque isso no seu
~/.bashrc
~/.bash_profile
ou onde você quiser:Após abrir uma nova janela (ou em execução
source ~/.bash_profile
), você poderá executarcopyLastCmd
e ter o comando na área de transferência.Para explicar o que está acontecendo: você está basicamente usando o "comando de correção" (
fc
) para obter o último comando, remova os espaços em branco à esquerda e à direita para obter uma formatação melhorawk
e copie-o na área de trabalho do Mac compbcopy
.EDITAR:
Agora que sabemos que você deseja copiar para colar em outra guia do terminal, há outra opção: adicione estas linhas ao seu
~/.bashrc
~/.bash_profile
ou onde você quiser:Então, depois de abrir algumas novas guias (vamos chamá-las de "guia A" e "guia B"):
EDIÇÃO 2: Substituí o uso de
sed
porawk
na resposta original acima, para cuidar dos espaços em branco à esquerda e à direita.fonte
awk
:alias copyLastCmd='fc -ln -1 | sed '1s/^[[:space:]]*//' | awk 1 ORS="" | pbcopy '
fc -ln -1 | awk '{$1=$1}1'
removerá os espaços em branco à direita e à esquerda.alias copyLastCmd="fc -ln -1 | awk '{\$1=\$1}1' | pbcopy"
. ainda tem o meu upvoteAqui está outra opinião com base na resposta de @Asmus. Para fazer o alias dele funcionar no meu script bash, eu tive que usar um pouco de citação, pois aspas simples não funcionam em um alias de aspas simples sem algumas citações adicionais:
O
'\''
basicamente fechar a cotação atual, em seguida, adicione uma cotação escapou, e em seguida, abra a citação real novamente.A versão acima copiará o último comando para sua área de transferência e, depois de colado, ele será executado imediatamente, pois terá uma nova linha no final.
Para se livrar da nova linha no final, para que você possa editar o comando antes de executá-lo, faça o seguinte:
O
ORS=''
(sem as aspas) retira o caractere de nova linha à direita, para que você possa editar o texto colado antes de executá-lo.fonte
Isso usará a expansão do histórico para pegar o último comando e repeti-lo. Você pode canalizar para
pbcopy
salvar o último comando na sua área de transferência.Se você deseja um comando do seu histórico que não seja o último , execute:
E referencie o número de comando desejado como:
fonte
Eu vim aqui com a mesma resposta exata de Sam Berry, mas não funciona para mim (OSX 10.14.6).
Conseguiu fazê-lo com aspas em torno de
!!
:echo "!!" | pbcopy
fonte
Você pode configurar seu histórico para ignorar comandos que começam com um espaço:
E, em seguida, execute o seguinte comando para atribuir o último comando à área de transferência (verifique se você tem um espaço no início):
Você provavelmente desejaria salvar o comando como um alias para facilitar a lembrança.
fonte