Сколько людей, столько и мнений (Теренций).

15 Примеров освоения истории командной строки в Linux

7 мин для чтения
FavoriteLoadingДобавить в избранное
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (2 оценок, среднее: 5,00 из 5)
Загрузка...
20 марта 2017
15 Примеров освоения истории командной строки в Linux
При использовании командной строки Linux часто, эффективно используя историю может быть важным стимулом производительности. На самом деле, как только вы освоите 15 примеров, которые мы предоставили здесь, вы найдете применение командной строки более приятным и увлекательным.

1. Отображение временной метки с помощью HISTTIMEFORMAT

Как правило, когда вы вводите историю из командной строки, он выводит команду # и команду. Для аудита целей, это может быть полезно для отображения timepstamp вместе с командой, как показано ниже.

# export HISTTIMEFORMAT='%F %T '
# history | more
1  2017-03-19 11:14:15 service network restart
2  2017-03-19 11:14:15 exit
3  2017-03-19 11:14:15 id
4  2017-03-19 11:14:15 cat /etc/redhat-release

2. Выберите историю с помощью Control + R

Мы твердо верим, что это может быть наиболее часто используемая функция истории. Когда вы уже выполнили очень длинную команду, вы можете просто посмотреть историю поиска, используя ключевое слово и повторно выполнить ту же команду, без необходимости полностью вводить ее снова. Нажмите Control + R и введите ключевое слово. В следующем примере, мы искали red, которая отображалась в предыдущей команде “cat /etc/redhat-release” в истории, которая содержала слово red.

# [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)

 

Иногда вы хотите отредактировать команду из истории перед ее выполнением. Для примера, вы можете искать httpd, которая будет отображать service httpd stop из истории команд, выберите эту команду и измените остановку на запуск и заново запустить ее снова, как показано ниже.

# [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. Повторить предыдущую команду быстро, используя 4 различных метода

Когда-нибудь вы можете в конечном итоге повторять предыдущие команды по разным причинам. Ниже приведены 4 различных способа повторить последнюю выполненную команду.

  1. Используйте стрелку вверх, чтобы просмотреть предыдущую команду и нажмите клавишу ВВОД, чтобы выполнить ее.
  2. Введите !! и нажмите ввод из командной строки
  3. Введите !-1 и нажмите ввод из командной строки.
  4. Нажмите Ctrl + P, она отобразит предыдущую команду, нажмите клавишу ENTER, чтобы выполнить ее.

4. Выполнить специальную команду из истории

В следующем примере, если вы хотите повторить команду #4, вы можете сделать так: !4, как показано ниже.

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

# !4
cat /etc/redhat-release
Fedora release 23

5. Выполните предыдущую команду, которая начинается с конкретного слова

Тип ! за которым следуют несколько букв команды, которые вы хотели бы повторно выполнить. В следующем примере, набрав !ps и клавишу ввода, выполнив предыдущую команду, начиная с ‘ps aux | grep yp’.

# !ps
ps aux | grep yp
root     16127  0.0  0.1  36236  1264 ?        Sl   13:10   0:00 ypbind
root     17563  0.0  0.0   4454   740 pts/0    S+   19:19   0:00 grep yp

6. Контроль общего количество строк в истории с использованием HISTSIZE

Добавьте следующие две строки в .bash_profile и войти снова к оболочку Bash, чтобы увидеть изменения. В этом примере только 450 команд будет сохранены в истории Bash.

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

7. Измените имя файла с помощью истории HISTFILE

По умолчанию, история хранится в файле ~/.bash_history. Добавьте следующую строку в файл .bash_profile и повторный вход в оболочку Bash, чтобы сохранить команду в файле истории .commandline_destroyer вместо файла .bash_history. Мы до сих пор выясняем практическое применение для этого. Мы можем видеть это, чтобы привыкнуть, если вы хотите отслеживать команды, выполняемые из различных терминалов, используя другое имя файла хронологии.

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

 

Если у вас есть хороший повод изменить имя файла истории, пожалуйста, поделитесь с нами, так как нам интересно узнать, как вы используете эту функцию.

8. Устранить непрерывную повторную запись из истории с помощью HISTCONTROL

В следующем примере pwd было напечатано три раза, когда вы делаете историю, вы можете увидеть все 3 непрерывные вхождения его. Для устранения дубликатов, установите HISTCONTROL к ignoredups, как показано ниже.

# 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. Сотрите дубликаты через всю историю, используя HISTCONTROL

В ignoredups показанные выше, удаляет дубликаты, только если они являются последовательными командами. Для устранения дубликатов через всю историю, установите HISTCONTROL к erasedups, как показано ниже.

# 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. Не в силах вспомнить конкретную команду, используя HISTCONTROL

При выполнении команды, вы можете указать историю игнорированных команд, установив HISTCONTROL в ignorespace и введите пробел перед командой, как показано ниже. Я вижу много начинающих сисадминов волнуются по этому поводу, так как они могут скрыть команду из истории. Это хорошо, чтобы понять, как работает ignorespace. Но, как лучшая практика, не скрывают целенаправленно ничего из истории.

# 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. Очистить все предыдущие истории с помощью опции -c

Когда-нибудь вы можете очистить всю предыдущую историю, но хотите сохранить историю.

# history -c

12. Подмена слова из истории команд

При поиске через историю, вы можете выполнить другую команду, но использовать один и тот же параметр из команды, которую вы только что искали.

В приведенном ниже примере !!: $ рядом с командой vi получает аргумент из предыдущей команды к текущей команде.

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

 

В приведенном ниже примере !^ рядом с командой vi получаем первый аргумент предыдущей команды (т.е. команды cp) к текущей команде (т.е. команде vi).

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

13. Подставьте конкретный аргумент для конкретной команды.

В приведенном ниже примере, !cp:2 выполняет поиск предыдущей команды в истории, которая начинается с cp и принимает второй аргумент cp и его заменяет на -l команды ls, как показано ниже.

# 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

 

В приведенном ниже примере, !cp:$ ищет предыдущую команду в истории, которая начинается с cp и принимает последний аргумент (в данном случае, который также является вторым аргументом, как показано выше) cp и заменяет его в команде Ls -l, как показано ниже.

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

14. Отключить использование истории с использованием HISTSIZE

Если вы хотите отключить историю все вместе и не хотите, чтобы оболочка Bash запоминала команды, которые вы набрали, установите HISTSIZE в 0, как показано ниже.

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

15. Игнорировать конкретные команды из истории с использованием HISTIGNORE

Иногда вы не можете загромождать свою историю с базовыми командами, такими как pwd и ls. Используйте HISTIGNORE, чтобы указать все команды, которые вы хотите игнорировать из истории. Обратите внимание, что добавление ls к HISTIGNORE игнорирует только ls а не LS -l. Таким образом, вы должны предоставить точную команду, которую вы хотели бы игнорировать из истории.

# 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]

15 Примеров освоения истории командной строки в Linux

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Просмотров: 198

Если статья понравилась, то поделитесь ей в социальных сетях:

Добавить комментарий

Войти с помощью: 

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам:

Заполните форму и наш менеджер перезвонит Вам в самое ближайшее время!

badge
Обратный звонок 1
Отправить
galka

Спасибо! Ваша заявка принята

close
galka

Спасибо! Ваша заявка принята

close