πŸ‡§πŸ‡Ά Как ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ Bash Π±Π΅Π· Π½ΠΎΠΌΠ΅Ρ€ΠΎΠ² строк

by itisgood
Как Π²Ρ‹ ΡƒΠΆΠ΅ Π·Π½Π°Π΅Ρ‚Π΅, Ρ„Π°ΠΉΠ» истории Bash (~/.bash_history) Ρ…Ρ€Π°Π½ΠΈΡ‚ записи ΠΎΠ±ΠΎ всСх ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ выполняли Π² Π’Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅.
ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ history, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ список Π½Π΅Π΄Π°Π²Π½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄ Π² нашСм Π’Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅.
Когда Π²Ρ‹ смотритС Π² ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Π»ΠΈ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρƒ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π΅ΡΡ‚ΡŒ прСфикс Π½ΠΎΠΌΠ΅Ρ€Π° (Π½ΠΎΠΌΠ΅Ρ€ строки).
Π­Ρ‚ΠΎΡ‚ Π½ΠΎΠΌΠ΅Ρ€ прСфикса ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Π²Π°ΠΌ Π½Π°ΠΉΡ‚ΠΈ ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΡƒΡŽ запись ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈΠ· истории.
Но Π·Π½Π°Π΅Ρ‚Π΅ Π»ΠΈ Π²Ρ‹, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ эти числа Π² Π²Ρ‹Π²ΠΎΠ΄Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ history?
Π’ этом ΠΊΡ€Π°Ρ‚ΠΊΠΎΠΌ руководствС описаны всС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ способы отобраТСния истории Bash Π±Π΅Π· Π½ΠΎΠΌΠ΅Ρ€ΠΎΠ² строк Π² Linux.

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ Bash Π±Π΅Π· Π½ΠΎΠΌΠ΅Ρ€ΠΎΠ² строк

Когда Π²Ρ‹ запуститС ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ history, Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ Π²Ρ‹Π²ΠΎΠ΄, ΠΏΠΎΡ…ΠΎΠΆΠΈΠΉ Π½Π° ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π½ΠΈΠΆΠ΅.

history

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, каТдая запись Π² истории ΠΈΠΌΠ΅Π΅Ρ‚ прСфикс Π½ΠΎΠΌΠ΅Ρ€Π°.

Если Π²Ρ‹ Π½Π΅ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ Π½ΠΎΠΌΠ΅Ρ€Π° строк, Π²ΠΎΡ‚ нСсколько способов ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это.

Бпособ 1 – ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ содСрТимоС Ρ„Π°ΠΉΠ»Π° ~/.bash_history

Π­Ρ‚ΠΎ самый простой способ отобраТСния истории Bash Π±Π΅Π· Π½ΠΎΠΌΠ΅Ρ€ΠΎΠ² строк.

$ cat ~/.bash_history

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π²Ρ‹Π²ΠΎΠ΄Π°:

Бпособ 2 – ИспользованиС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ history

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΡ†ΠΈΡŽ записи ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ history, Ρ‡Ρ‚ΠΎΠ±Ρ‹ вывСсти ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ Π±Π΅Π· чисСл, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅.

$ history -w /dev/stdout

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π²Ρ‹Π²ΠΎΠ΄Π°:

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄ Π² тСкстовый Ρ„Π°ΠΉΠ», скаТСм history.txt, просто запуститС:

$ history -w history.txt

ΠœΠ΅Ρ‚ΠΎΠ΄ 3 – ИспользованиС ΠΊΠΎΠΌΠ°Π½Π΄ cut ΠΈ history

 

Один ΠΈΠ· Ρ‚Π°ΠΊΠΈΡ… способов – ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ cut ΠΈ history, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅.

$ history | cut -c 8-

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π²Ρ‹Π²ΠΎΠ΄Π°:

Π”Π°Π²Π°ΠΉΡ‚Π΅ Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΡƒΡŽ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ΠΈ посмотрим, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ каТдая Ρ‡Π°ΡΡ‚ΡŒ.

  • history: ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ вашСй ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ.
  • | : Π‘ΠΈΠΌΠ²ΠΎΠ» pipe ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ»ΠΈ нСсколькими ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ. Он отправляСт Π²Ρ‹Π²ΠΎΠ΄ ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² качСствС Π²Π²ΠΎΠ΄Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. Π’ΠΎ Π΅ΡΡ‚ΡŒ каТдая ΠΊΠΎΠΌΠ°Π½Π΄Π° Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ Π²Ρ‹Π²ΠΎΠ΄ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹.
  • cut: ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Ρ€Π°Π·Π΄Π΅Π»Ρ‹ ΠΈΠ· ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строки Ρ„Π°ΠΉΠ»ΠΎΠ²
  • Β -c: Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ символы
  • 8-: (N-) ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π²Ρ‹Π²ΠΎΠ΄Π° с N-Π³ΠΎ Π±Π°ΠΉΡ‚Π°, символа ΠΈΠ»ΠΈ поля Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° строки. Π’ этом случаС (8-) ΠΎΠ½ ΠΎΠ±Ρ€Π΅Π·Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ 7 символов ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строки Π²Ρ‹Π²ΠΎΠ΄Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ истории ΠΈ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ„Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ΠΈΠ· 8-Π³ΠΎ символа.

ΠœΠ΅Ρ‚ΠΎΠ΄ 4 – ИспользованиС ΠΊΠΎΠΌΠ°Π½Π΄ fc ΠΈ sed

ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ fc ΠΈ sed для отобраТСния истории ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ Π±Π΅Π· Π½ΠΎΠΌΠ΅Ρ€ΠΎΠ² строк.

$ fc -l -n 1 | sed 's/^\s*//'

ΠœΠ΅Ρ‚ΠΎΠ΄ 5 – ИспользованиС hisotry ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ awk

Π”Ρ€ΡƒΠ³ΠΎΠΉ способ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ Π½ΠΎΠΌΠ΅Ρ€ΠΎΠ² строк – ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Β«awkΒ», ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅.

$ history|awk '{$1="";print substr($0,2)}'

Π― Π½Π΅ знаю Ρ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° использования Π² этих цСлях.

На Π½Π° Ρ‚ΠΎΡ‚ случай, Ссли Π²Ρ‹ ΠΊΠΎΠ³Π΄Π°-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΎΠΊΠ°ΠΆΠ΅Ρ‚Π΅ΡΡŒ Π² ситуации, ΠΊΠΎΠ³Π΄Π° Π²Π°ΠΌ Π½Π°Π΄ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ своСй ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ Π±Π΅Π· прСфиксных Π½ΠΎΠΌΠ΅Ρ€ΠΎΠ², эти ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚.

 

You may also like

Leave a Comment