2010-07-30 9 views

risposta

350

È possibile utilizzare $_ o !$ per richiamare l'ultimo argomento del comando precedente.

Anche Alt + . può essere utilizzato per richiamare l'ultimo argomento di uno qualsiasi dei comandi precedenti.

+75

Inoltre, se si desidera che un argomento arbitrario, è possibile utilizzare '!! : 1', '!!: 2', ecc. (' !!: 0' è il comando precedente stesso.) Vedi http://www.gnu.org/software/bash/manual/bashref.html#History- Interazione – janmoesen

+17

Simile a '! $', Si usa '! ^' Per il primo argomento. – Will

+2

ahh ... * nix ... sei una cosa di bellezza ... ogni giorno ti amo di più – jx12345

14

Sì, è possibile utilizzare !$ per richiamare l'ultimo argomento del comando precedente.

111

Se il comando precedente aveva due argomenti, come questo

ls a.txt b.txt 

e si voleva che il primo, è possibile digitare

!:1 

dando

a.txt 

Oppure, se si voleva entrambi, è possibile digitare

!:1-2 

dando

a.txt b.txt 

è possibile estendere questo a qualsiasi numero di argomenti, ad esempio:

!:10-12 
+0

'!: 1-2' non funziona per me – RNA

+0

@RNA, ho appena provato di nuovo per assicurarmi di non includere un errore di battitura, potresti fornire un po 'più di dettagli (ad esempio, la riga di comando di ubuntu, cygwin per windows ? messaggio di errore? linea precedente?) –

+0

Sto usando GNU bash, versione 3.2.51 (1) -release (x86_64-apple-darwin13) Copyright (C) 2007 Free Software Foundation, Inc. Il messaggio di errore è '-bash :: 1-2: identificatore di parole non valide – RNA

49

Nella riga di comando è possibile premere ESC - . o alt + .

Passa in rassegna gli argomenti precedenti utilizzati.

20

Se si conosce il numero fornito nella cronologia per un comando particolare, è possibile prendere in considerazione qualsiasi argomento in tale comando utilizzando i seguenti termini.

Usa a seguito di prendere il secondo argomento del terzo comando nella storia,

!3:2

Usa a seguito di prendere il terzo argomento dal quinto ultimo comando nella storia,

!-5:3

Utilizzando un segno meno, chiedete di attraversare dall'ultimo comando della cronologia.

29

!!:n dove n è la posizione dell'argomento basata su 0 che si desidera.

Ad esempio:

echo 'one' 'two' 
# "one two" 

echo !!:2 
# "two" 

Il prefisso ! viene utilizzato per accedere ai comandi precedenti.

Altri comandi utili:

  • !$ - ultimo argomento da precedente comando
  • !^ - primo argomento (dopo il/built-in/script del programma) dal comando precedente
  • !! - comando precedente (spesso pronunciato "bang bang")
  • !n - numero comando n da history
  • !pattern - comando più recente corrispondenza pattern
  • !!:s/find/replace - ultimo comando, sostituire find con replace

More info on command history

+1

Invece di '!!: s/find/replace', puoi anche'^trovare^replace'. –

+0

Very niiiice !!! – smarber

3

* viene eseguito un nuovo comando con tutti gli argomenti precedenti!.

ls /tmp 
cd !* 
#you are now in /tmp 
Problemi correlati