GNU/Linux >> Znalost Linux >  >> Linux

15 Příklady pro zvládnutí historie příkazového řádku Linuxu

Když často používáte příkazový řádek Linuxu, efektivní používání historie může být velkým zvýšením produktivity. Ve skutečnosti, jakmile si osvojíte 15 příkladů, které jsem zde uvedl, bude pro vás používání příkazového řádku zábavnější a zábavnější.

1. Zobrazte časové razítko pomocí HISTTIMEFORMAT

Když zadáte historii z příkazového řádku, obvykle se zobrazí příkaz # a příkaz. Pro účely auditu může být užitečné zobrazit časové razítko spolu s příkazem, jak je uvedeno níže.

# export HISTTIMEFORMAT='%F %T '
# history | more
1  2008-08-05 19:02:39 service network restart
2  2008-08-05 19:02:39 exit
3  2008-08-05 19:02:39 id
4  2008-08-05 19:02:39 cat /etc/redhat-release

2. Prohledejte historii pomocí Control+R

Pevně ​​věřím, že to může být vaše nejčastěji používaná funkce historie. Když jste již provedli velmi dlouhý příkaz, můžete jednoduše prohledat historii pomocí klíčového slova a znovu spustit stejný příkaz, aniž byste jej museli zadávat celý. Stiskněte Control+R a zadejte klíčové slovo . V následujícím příkladu jsem hledal červená , který zobrazil předchozí příkaz „cat /etc/redhat-release ” v historii, která obsahovala slovo červená.

# [Press Ctrl+R from the command prompt,
which will display the reverse-i-search prompt]
(reverse-i-search)`red': cat /etc/redhat-release
[Note: Press enter when you see your command,
which will execute the command from the history]
# cat /etc/redhat-release
Fedora release 9 (Sulphur)

Někdy chcete upravit příkaz z historie před jeho provedením. Pro např. můžete hledat httpd , který zobrazí service httpd stop z historie příkazů vyberte tento příkaz a změňte zastavení na spuštění a znovu jej spusťte, jak je uvedeno níže.

# [Press Ctrl+R from the command prompt,
which will display the reverse-i-search prompt]
(reverse-i-search)`httpd': service httpd stop
[Note: Press either left arrow or right arrow key when you see your
command, which will display the command for you to edit, before executing it]
# service httpd start

3. Rychle zopakujte předchozí příkaz pomocí 4 různých metod

Někdy můžete z různých důvodů zopakovat předchozí příkazy. Níže jsou uvedeny 4 různé způsoby opakování posledního provedeného příkazu.

  1. Použijte šipku nahoru zobrazíte předchozí příkaz a stisknutím klávesy Enter jej provedete.
  2. Zadejte !! a z příkazového řádku stiskněte enter
  3. Zadejte !-1 a z příkazového řádku stiskněte enter.
  4. Stiskněte Ctrl+P zobrazí předchozí příkaz, stisknutím klávesy Enter jej provedete

4. Proveďte konkrétní příkaz z historie

V následujícím příkladu Pokud chcete zopakovat příkaz #4, můžete provést !4 jak je uvedeno níže.

# history | more
1  service network restart
2  exit
3  id
4  cat /etc/redhat-release

# !4
cat /etc/redhat-release
Fedora release 9 (Sulphur)

5. Proveďte předchozí příkaz, který začíná konkrétním slovem

Napište ! následovaných několika počátečními písmeny příkazu, který chcete znovu spustit. V následujícím příkladu zadáním !ps a enter byl proveden předchozí příkaz začínající na ps, což je ‚ps aux | grep yp’.

# !ps
ps aux | grep yp
root     16947  0.0  0.1  36516  1264 ?        Sl   13:10   0:00 ypbind
root     17503  0.0  0.0   4124   740 pts/0    S+   19:19   0:00 grep yp

6. Ovládejte celkový počet řádků v historii pomocí HISTSIZE

Připojte následující dva řádky k .bash_profile a znovu se přihlaste do shellu bash, abyste viděli změnu. V tomto příkladu bude v historii bash uloženo pouze 450 příkazů.

# vi ~/.bash_profile
HISTSIZE=450
HISTFILESIZE=450

7. Změňte název souboru historie pomocí HISTFILE

Ve výchozím nastavení se historie ukládá do ~/.bash_history soubor. Přidejte následující řádek do .bash_profile a znovu se přihlaste do bash shellu, abyste uložili příkaz history do souboru .commandline_warrior namísto souboru .bash_history. Ještě jsem nenašel praktické využití. Vidím, že se to používá, když chcete sledovat příkazy prováděné z různých terminálů pomocí různých názvů souboru historie.

# vi ~/.bash_profile
HISTFILE=/root/.commandline_warrior

Pokud máte dobrý důvod změnit název souboru historie, podělte se o něj se mnou, protože mě zajímá, jak tuto funkci používáte.

8. Odstraňte nepřetržitý opakovaný záznam z historie pomocí HISTCONTROL

V následujícím příkladu bylo pwd zadáno třikrát, když děláte historii, můžete vidět všechny 3 jeho souvislé výskyty. Chcete-li odstranit duplicity, nastavte HISTCONTROL na ignoredups, jak je uvedeno níže.

# pwd
# pwd
# pwd
# history | tail -4
44  pwd
45  pwd
46  pwd [Note that there are three pwd commands in history, after
executing pwd 3 times as shown above]
47  history | tail -4

# export HISTCONTROL=ignoredups
# pwd
# pwd
# pwd
# history | tail -3
56  export HISTCONTROL=ignoredups
57  pwd [Note that there is only one pwd command in the history, even after
executing pwd 3 times as shown above]
58  history | tail -4

9. Vymažte duplikáty v celé historii pomocí HISTCONTROL

Výše uvedené ignoredups odstraní duplikáty pouze v případě, že se jedná o po sobě jdoucí příkazy. Chcete-li odstranit duplikáty v celé historii, nastavte HISTCONTROL na erasedups, jak je uvedeno níže.

# export HISTCONTROL=erasedups
# pwd
# service httpd stop
# history | tail -3
38  pwd
39  service httpd stop
40  history | tail -3

# ls -ltr
# service httpd stop
# history | tail -6
35  export HISTCONTROL=erasedups
36  pwd
37  history | tail -3
38  ls -ltr
39  service httpd stop
[Note that the previous service httpd stop after pwd got erased]
40  history | tail -6

10. Vynutit historii, aby si nepamatovala konkrétní příkaz pomocí HISTCONTROL

Když spustíte příkaz, můžete historii přikázat, aby příkaz ignorovala, a to nastavením HISTCONTROL na ignorespace A zadáním mezery před příkaz, jak je znázorněno níže. Vidím spoustu mladších systémových administrátorů, kteří jsou z toho nadšení, protože dokážou skrýt příkaz z historie. Je dobré pochopit, jak funguje ignorespace. Ale jako osvědčený postup před historií nic záměrně neschovávejte.

# export HISTCONTROL=ignorespace
# ls -ltr
# pwd
#  service httpd stop [Note that there is a space at the beginning of service,
to ignore this command from history]
# history | tail -3
67  ls -ltr
68  pwd
69  history | tail -3

11. Vymažte veškerou předchozí historii pomocí volby -c

Někdy možná budete chtít vymazat veškerou předchozí historii, ale chcete, aby se historie pohybovala dopředu.

# history -c

12. Nahraďte slova z příkazů historie

Když prohledáváte historii, možná budete chtít provést jiný příkaz, ale použít stejný parametr z příkazu, který jste právě hledali.

V níže uvedeném příkladu !!:$ vedle příkazu vi získá argument z předchozího příkazu do aktuálního příkazu.

# ls anaconda-ks.cfg
anaconda-ks.cfg
# vi !!:$
vi anaconda-ks.cfg

V níže uvedeném příkladu !^ vedle příkazu vi získá první argument z předchozího příkazu (tj. příkaz cp) do aktuálního příkazu (tj. příkaz vi).

# cp anaconda-ks.cfg anaconda-ks.cfg.bak
anaconda-ks.cfg
# vi  !^
vi anaconda-ks.cfg

13. Nahraďte konkrétní argument konkrétním příkazem.

V níže uvedeném příkladu !cp:2 hledá předchozí příkaz v historii, který začíná cp a přebírá druhý argument cp a nahradí jej příkazem ls -l, jak je ukázáno níže.

# cp ~/longname.txt /really/a/very/long/path/long-filename.txt
# ls -l !cp:2
ls -l /really/a/very/long/path/long-filename.txt

V níže uvedeném příkladu !cp:$ hledá předchozí příkaz v historii, který začíná cp a přebírá poslední argument (v tomto případě je to také druhý argument, jak je ukázáno výše) cp a nahradí jej příkazem ls -l, jak je ukázáno níže.

# ls -l !cp:$
ls -l /really/a/very/long/path/long-filename.txt

14. Zakázat používání historie pomocí HISTSIZE

Pokud chcete zakázat historii dohromady a nechcete, aby si bash shell pamatoval zadané příkazy, nastavte HISTSIZE na 0, jak je uvedeno níže.

# export HISTSIZE=0
# history
# [Note that history did not display anything]

15. Ignorujte konkrétní příkazy z historie pomocí HISTIGNORE

Někdy možná nebudete chtít zahlcovat svou historii základními příkazy, jako je pwd a ls. Pomocí HISTIGNORE zadejte všechny příkazy, které chcete z historie ignorovat. Vezměte prosím na vědomí, že přidání ls do HISTIGNORE ignoruje pouze ls a ne ls -l. Musíte tedy zadat přesný příkaz, který chcete v historii ignorovat.

# export HISTIGNORE="pwd:ls:ls -ltr:"
# pwd
# ls
# ls -ltr
# service httpd stop

# history | tail -3
79  export HISTIGNORE="pwd:ls:ls -ltr:"
80  service httpd stop
81  history
[Note that history did not record pwd, ls and ls -ltr]

Doporučená četba

Bash 101 Hacks, od Rameshe Natarajan . Většinu času trávím v prostředí Linuxu. Takže jsem přirozeně velkým fanouškem Bash příkazového řádku a skriptování v shellu. Před 15 lety, když jsem pracoval na různých variantách *nix, jsem psal hodně kódu na C shellu a Korn shellu. Později, když jsem začal pracovat na Linuxu jako správce systému, jsem téměř automatizoval všechny možné úkoly pomocí skriptování v prostředí Bash. Na základě mých zkušeností s Bash jsem napsal e-knihu Bash 101 Hacks, která obsahuje 101 praktických příkladů jak pro příkazový řádek Bash, tak pro skriptování shellu. Pokud přemýšlíte o zvládnutí Bash, udělejte si laskavost a přečtěte si tuto knihu, která vám pomůže převzít kontrolu nad příkazovým řádkem Bash a skriptováním shellu.

Úžasné články o Linuxu

Následuje několik úžasných 15 příkladů články, které by vám mohly pomoci.

  • Příkaz Unix LS:15 praktických příkladů
  • Ovládněte Grep! – 15 praktických příkladů příkazů Grep
  • Linux Crontab:15 úžasných příkladů úloh Cron
  • Mami, našel jsem to! — 15 praktických příkladů hledání příkazů pro Linux

Linux
  1. Příklady příkazů rm v Linuxu

  2. Příklady příkazů ps v Linuxu

  3. w Příklady příkazů v Linuxu

  1. Jak vymazat historii příkazového řádku BASH v Linuxu

  2. Příkaz historie Linuxu

  3. sa Příklady příkazů v Linuxu

  1. Příklady příkazů ac v Linuxu

  2. Příklady příkazů df v Linuxu

  3. du příklady příkazů v Linuxu