Jak mogę przypomnieć sobie argument poprzedniego polecenia bash?

Czy istnieje sposób w Bash, aby przywołać argument poprzedniego polecenia?

Zwykle robię vi file.c po którym następuje gcc file.c.

Czy istnieje sposób w Bash, aby przywołać argument poprzedniego polecenia?

Author: user2314737, 2010-07-30

7 answers

Możesz użyć $_ LUB !$, aby przywołać ostatni argument poprzedniego polecenia.

Również Alt + . może być użyte do przywołania ostatniego argumentu z poprzednich poleceń.

 402
Author: codaddict,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-07-30 12:17:59

Jeśli poprzednie polecenie miało dwa argumenty, jak to

ls a.txt b.txt

A chciałeś pierwszego, możesz wpisać

!:1

Daje

a.txt

Lub jeśli chcesz oba, możesz wpisać

!:1-2

Daje

a.txt b.txt

Możesz rozszerzyć to na dowolną liczbę argumentów, np.:

!:10-12
 124
Author: Robert Gowland,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-07-30 13:10:33

W wierszu poleceń możesz nacisnąć esc-. lub alt+.

Przechodzi przez poprzednie argumenty, których użyłeś.

 54
Author: Antonio Mano,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-19 17:31:22

!!:n Gdzie n jest pozycją opartą na 0 żądanego argumentu.

Na przykład:

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

echo !!:2
# "two"

Prefiks ! jest używany do uzyskiwania dostępu do poprzednich poleceń.

Inne przydatne polecenia:

  • !$ - ostatni argument z poprzedniego polecenia
  • !^ - pierwszy argument (po programie / wbudowanym / skrypcie) z poprzedniego polecenia
  • !! - poprzednie polecenie (często wymawiane "bang bang")
  • !n - numer polecenia n od history
  • !pattern - najnowsze dopasowanie komend pattern
  • !!:s/find/replace - ostatnie polecenie, zastąp find przez replace

Więcej informacji o historii poleceń

 45
Author: John Syrinek,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-15 18:59:18

Jeśli znasz liczbę podaną w historii dla danego polecenia, możesz przyjąć dowolny argument w tym poleceniu, używając następujących terminów.

Użyj następującego, aby pobrać drugi argument z trzeciego polecenia w historii,

!3:2

Użyj następującej, aby pobrać trzeci argument z piątego ostatniego polecenia w historii,

!-5:3

Używając znaku minus, prosisz go o przejście od ostatniego polecenia historii.

 22
Author: Madisz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-23 17:51:06

Tak, możesz użyć !$, aby przywołać ostatni argument poprzedniego polecenia.

 14
Author: Justin Ethier,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-07-30 12:18:47

!* uruchamia nowe polecenie ze wszystkimi poprzednimi argumentami.

ls /tmp
cd !*
#you are now in /tmp
 6
Author: Noah,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-16 18:40:24