Is there a way to get a command from history without executing it?
Talvez eu esteja perdendo o ponto da pergunta, pois duvido que eu seja a única pessoa que saiba sobre :p
. Significa "imprimir". Se você digitar !100:p
, o shell irá imprimir (isto é, exibir) o comando # 100 sem executá-lo.
Se você não souber sobre os operadores :
no histórico, deverá aprender.
Como a “ilustração numérica” aponta ,
:n
recupera a palavra n de um comando.
Você também pode usar :n-m
para obter um intervalo;
e existem padrões interessantes.
Por exemplo, :-
(deixando n e m em branco) obtém todas as palavras, exceto a última. :$
te dá a última palavra. :h
é “cabeça”, então se você digitar
ls -ld /asdfg/qwerty/foo/bar
então
!:- !$:h
se transforma em
ls –ld /asdfg/qwerty/foo
Ah, sim, !$
é a abreviação de !:$
. :s
é substituto, como em :s/old/new/
.
Isso é o mesmo que ^old^new^
, exceto para coisas como
-
:s
pode ser usado em qualquer comando (como em !100:s/...
); ^^
funciona apenas no comando mais recente.
-
:s
pode ser usado em palavras individuais ou em intervalos de palavras. Por exemplo,
!:- !$:s/d/D/
obtém
ls -ld /asDfg/qwerty/foo/bar
(em vez de ls -lD ...
).
-
:s
pode ser aplicado globalmente. A sintaxe não é intuitiva, mas, quando :s/old/new/
substitui a primeira ocorrência, :gs/old/new/
substitui todas as ocorrências.
Além disso, depois de obter um comando do histórico sem executá-lo
(por exemplo, com !100:p
), possivelmente com modificações (como mostrado acima),
Torna-se o comando mais recente na sua lista de histórico.
Agora você pode pressionar ↑ (cursor para cima) e editá-lo.