Что такое командная оболочка (shell) в linux?

Пользователь и система

Используя bash, вы можете легко получить любую необходимую вам техническую информацию о пользователях и системе.
Если вы хотите идентифицировать, под каким пользователем авторизованы в данный момент, вам нужно ввести в командную строку следующую команду:

whoami

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

who

или

w

В отличие от whoami, эти команды показывает более подробную информацию: кроме имени пользователя вы также узнаете о том, какая используется терминальная линия, время начала сеанса, IP-адрес и некоторые другие данные.

Что касается данных о системе, то с ними можно ознакомиться, используя команду uname. Сама по себе эта команда даст вам не так много информации – только название системы. Однако если вы будете использовать ключи, то сможете узнать гораздо больше.

Ключи – это специальные аргументы, которые пишутся через пробел после команды и начинаются с одного или двух дефисов. Они определяют параметры, которые будут применены к команде. Как правило, узнать о доступных ключах вы можете, написав команду и —help (либо -help): к примеру,

uname --help

У команды uname вы можете задать ключ -a (или —all), и тогда на экран будет выведена вся информация об операционной системе:

uname -a

Если вас интересуют конкретно данные о ядре, то наберите следующую команду:

uname -rv

В этом случае вы узнаете о релизе и версии ядра операционной системы.
Получить информацию обо всех процессах можно при помощи этой команды:

ps -a

А команда pstree выведет информацию в виде дерева процессов.

Узнать сетевое имя машины вы можете с помощью команды hostname.

Подготовка прошивки к запуску

При создании прошивок всегда возникает задача восстановления состояния системы при старте и его сохранении при выключении. Под состоянием подразумеваются конфигурационные файлы, дампы базы данных, настройки интерфейсов и тд.

Systemd запускает процессу в одном таргете параллельно. Есть зависимости, которые позволяют определить последовательность запуска скриптов.

Как это работает у меня в проекте ( https://habr.com/ru/post/477008/ https://github.com/skif-web/monitor)

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

Как видно, я поставил зависимости, что бы сначала отработал мой скрипт, а только потом поднималась сеть и стартовала СУБД.

И второй сервис(подготовка zabbix)

Здесь немного сложнее.Запуск так же в multi-user.target, но ПОСЛЕ запуска СУБД postgresql и моего setting_restore. Но ПЕРЕД запуском служб zabbix.

Сервис с таймером для logrotate

Systemd может заменить CRON. Серьезно. Причем точность не до минуты, а до секунды(а вдруг понадобится).А можно создать монотонный таймер, вызываемый по таймауту от события.
Именно монотонный таймер, считающий время от запуска машины, я и создал.
Для этого потребуется 2 файла
logrotateTimer.service — собственно описание сервиса:

Всё просто — описание команда запуска.
Второй файл logrotateTimer.timer — вот он и задает работу таймеров:

Что здесь есть:

  • описание таймера
  • Время первого запуска, начиная от загрузки систем
  • период дальнейших запусков
  • Зависимость от службы таймеров.Фактически, это строка и делает таймер

Переменная окружения $ SHELL

Переменная окружения содержит имя вашей текущей оболочки. Мы можем проверить, какой из них установлен с :

echo $SHELL

Давайте начнем ракушка:

fish

Теперь давайте еще раз проверим, что переменная окружения говорит:

echo $SHELL

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

Когда мы запускаем Оболочка, мы получаем приветственное приветственное сообщение и командная строка меняется. Что может быть удивительным, так это среда по-прежнему держит путь к исполняемый файл, , Это нормально — это нормально.

Когда вы запускаете новую оболочку (или любую другую программу), она наследует среду родительской оболочки. Так что оболочка наследует глобальные и экспортированные переменные среды из ракушка. Потому что значение в переменная окружения не была изменена, она имеет то же значение в оболочка, что он сделал в ракушка.

Были запущены как и любая другая программа. Мы также можем использовать выйти из ракушка. Он закрывается, как и любая другая программа, и мы возвращаемся к ракушка.

Это здорово для того, чтобы опробовать новые оболочки, посмотреть, что они могут сделать, и ладят ли вы с ними. Вы можете исследовать, прежде чем совершить прыжок, и принять его в качестве оболочки для перехода.

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

Что такое man?

Команда man позволяет получить доступ к общей базе справки по команде, функции или программе. Обычно для просмотра справки программе надо передать название команды или другого объекта в системе. Синтаксис у неё такой:

$ man раздел название_страницы

Обычно название страницы совпадает с именем команды или названием программы. Вся справка разделена на несколько разделов. По умолчанию страницы справки выводятся из всех разделов, но вы можете выводить страницы справки из определённого раздела. Для этого достаточно передать номер раздела команде. Вот список основных разделов:

  • 1 — команды оболочки или программы;
  • 2 — системные вызовы;
  • 3 — функции библиотек;
  • 4 — файлы из каталога /dev;
  • 5 — форматы файлов;
  • 6 — игры;
  • 7 — разное;
  • 8 — команды администрирования системы;
  • 9 — процедуры ядра.

Давайте рассмотрим несколько примеров. Для того чтобы посмотреть справку по команде man достаточно выполнить такую команду:

Для команды ls справка вызывается так:

Каждая страница справки разделена на несколько секций. Вы можете видеть их на снимках экрана выше. Это:

  • NAME — имя программы или команды, а также краткое её описание;
  • SYNOPSIS — синтаксис команды и порядок передачи в неё опций;
  • DESCRIPTION — более подробное описание команды;
  • CONFIGURATION — настройки программы;
  • OPTIONS — опции команды;
  • EXAMPLE — примеры использования;
  • AUTHORS — авторы программы.

Конечно существуют и другие разделы, но эти самые основные. Если информации про утилиту мало, то некоторые разделы могут быть объединены вместе, а некоторых может и вовсе не быть.

Для просмотра информации и управлением страницей справки используются такие горячие клавиши:

  • стрелка вверх/вниз — прокрутка информации вверх или вниз;
  • e или j — переместиться на одну строку вверх;
  • y или h — переместиться на одну строку вниз;
  • z — переместиться на одно окно вниз;
  • w — переместиться на одно окно вверх;
  • d — переместиться на пол окна вниз;
  • u — переместиться на пол окна вверх;
  • — поиск вхождений указанных после символов вперед;
  • ? — то же самое, что и предыдущее, только поиск назад;
  • n — в режиме поиска отображение следующего вхождения;
  • N — в режиме поиска отображение предыдущего вхождения.

С перемещением по странице, скорее всего, всё понятно. Для того чтобы искать какое-либо слово на странице нажмите клавишу и начните набирать слово, которое надо искать. Оно будет отображаться внизу окна:

Затем нажмите Enter и программа подсветит все вхождения этого слова в текст. Для поиска следующего вхождения нажимайте n:

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

При запуске утилиты можно использовать несколько опций, давайте рассмотрим эти опции. Их не так уж много и самые интересные из них только несколько. Опция -f позволяет посмотреть краткое описание справочной страницы. Например:

С помощью опции -k можно выполнять поиск по кратким описаниям справочных страниц. Например, давайте найдём все страницы, в описаниях которых есть слово printf:

Опция -K позволяет выполнять поиск по самим справочным страницам. Поиск выполняется методом перебора, поэтому занимает некоторое время:

Команда будет открывать найденные страницы по очереди. Для выхода нажмите Ctrl+C. Опция -L позволяет вручную задать язык, на котором будет отображена страница. Например для вывода информации про man на английском выполните:

А чтобы отобразить man на русском Linux надо передать этой опции значение ru_RU:

Однако для того чтобы это работало нужно чтобы в системе были установлены пакеты локализации для русского языка.

Какие задачи разумно решать шеллом?

  • интерактивная работа в терминале:
    • выполнение компиляции, запуск заданий через make;
    • сравнение текстовых файлов;
    • быстрый ad-hoc анализ данных (количество уникальных ip в логе, распределение записей по часам/минутам и т.п.);
    • разовые массовые действия (прибить много процессов; если работаете с системой контроля версий — ревертнуть или зарезолвить кучу файлов);
    • диагностика происходящего в системе (семафоры, локи, процессы, дескрипторы, место на диске и т.п.);
  • скриптование:
    • установочные скрипты, для выполнения которых нельзя рассчитывать на наличие других интерпретаторов — это не для новичков;
    • функции для кастомизации интерактивного шелла (влияющие на приглашение, меняющие каталог, устанавливающие переменные окружения) — тоже не совсем для новичков;
    • одноразовые скрипты типа массового перекодирования файлов;
    • makefile-ы.

Команды Linux, для работы с файлами

Эти команды используются для обработки файлов и каталогов.

33. ls

Очень простая, но мощная команда, используемая для отображения файлов и каталогов. По умолчанию команда ls отобразит содержимое текущего каталога.

34. pwd

Linux pwd — это команда для показывает имя текущего рабочего каталога. Когда мы теряемся в каталогах, мы всегда можем показать, где мы находимся.

Пример ример ниже:

35. mkdir

В Linux мы можем использовать команду mkdir для создания каталога.

По умолчанию, запустив mkdir без какой-либо опции, он создаст каталог в текущем каталоге.

36. cat

Мы используем команду cat в основном для просмотра содержимого, объединения и перенаправления выходных файлов. Самый простой способ использовать cat— это просто ввести » имя_файла cat’.

В следующих примерах команды cat отобразится имя дистрибутива Linux и версия, которая в настоящее время установлена на сервере.

37. rm

Когда файл больше не нужен, мы можем удалить его, чтобы сэкономить место. В системе Linux мы можем использовать для этого команду rm.

38. cp

Команда Cp используется в Linux для создания копий файлов и каталогов.

Следующая команда скопирует файл ‘myfile.txt» из текущего каталога в «/home/linkedin/office«.

39. mv

Когда вы хотите переместить файлы из одного места в другое и не хотите их дублировать, требуется использовать команду mv. Подробнее можно прочитать ЗДЕСЬ.

40.cd

Команда Cd используется для изменения текущего рабочего каталога пользователя в Linux и других Unix-подобных операционных системах.

41. Ln

Символическая ссылка или программная ссылка — это особый тип файла, который содержит ссылку, указывающую на другой файл или каталог. Команда ln используется для создания символических ссылок.

Команда Ln использует следующий синтаксис:

42. touch

Команда Touch используется в Linux для изменения времени доступа к файлам и их модификации. Мы можем использовать команду touch для создания пустого файла.

44. head

Команда head используется для печати первых нескольких строк текстового файла. По умолчанию команда head выводит первые 10 строк каждого файла.

45. tail

Как вы, возможно, знаете, команда cat используется для отображения всего содержимого файла с помощью стандартного ввода. Но в некоторых случаях нам приходится отображать часть файла. По умолчанию команда tail отображает последние десять строк.

46. gpg

GPG — это инструмент, используемый в Linux для безопасной связи. Он использует комбинацию двух ключей (криптография с симметричным ключом и открытым ключом) для шифрования файлов.

50. uniq

Uniq — это инструмент командной строки, используемый для создания отчетов и фильтрации повторяющихся строк из файла.

53. tee

Команда Linux tee используется для связывания и перенаправления задач, вы можете перенаправить вывод и/или ошибки в файл, и он не будет отображаться в терминале.

54. tr

Команда tr (translate) используется в Linux в основном для перевода и удаления символов. Его можно использовать для преобразования прописных букв в строчные, сжатия повторяющихся символов и удаления символов.

1. ls

Самое первое что вам понадобиться после открытия терминала на сервере — это сориентироваться в файловой системе. Для того чтобы посмотреть содержимое папки можно использовать команду ls. Если передать ей параметр -l, то она выведет все файлы и папки в столбик. По умолчанию отображается содержимое текущей папки:

Но вы можете передать путь к нужной папке:

Можно сказать, что это аналог команды dir и Windows. Но вам не обязательно всегда использовать ls, чтобы посмотреть какие файлы есть в папке. Когда вы набираете путь к файлу или папке, то можете нажать Tab и командная оболочка выведет все возможные варианты пути:

Подробнее про команду ls читайте здесь.

Запуск программ Linux в графическом интерфейсе

Кроме того, вы можете запустить программу из файлового менеджера, двойным кликом мышью, но тогда для нее обязательно должен быть установлен флаг исполняемости.

Точно так же работает запуск скриптов в графическом интерфейсе. Вы можете найти все ярлыки из меню в каталоге /usr/share/applications/. Любую программу можно запустить двойным щелчком отсюда. Но давайте посмотрим что находится внутри ярлыка, для этого откройте его в текстовом редакторе:

Кроме всего прочего, в строке Exec указана команда, которая выполняет запуск программы linux, когда вы делаете двойной клик на ярлыке. Вы можете взять один из существующих ярлыков и сделать на его основе свой. Здесь указано просто имя программы

Но важно заметить, что лучше указывать полный путь в таких местах, как ярлыки, скрипты, cron и так далее это уменьшит количество ошибок, поскольку вы не можете знать проверяет ли система в этом случае PATH или ищет программу только в текущем каталоге. Теперь вы знаете все о том как запустить программу на linux

Использование памяти

Раздел «память» показывает информацию об использовании памяти системой. Строки, помеченные «Mem» и «Swap», показывают информацию об оперативной памяти и пространстве подкачки соответственно. Проще говоря, пространство подкачки является частью жесткого диска, который используется как ОЗУ. Когда использование ОЗУ становится почти полным, нечасто используемые области ОЗУ записываются в пространство подкачки и готовы для последующего извлечения при необходимости. Однако из-за медленного доступа к дискам слишком сильная зависимость от подкачки может снизить производительность системы.

Как и следовало ожидать, значения «total», «free» и «used» имеют свои обычные значения. Значение «util mem» — это объем памяти, который может быть выделен процессам без дополнительной замены.

Ядро Linux также пытается сократить время доступа к диску различными способами. Он поддерживает «дисковый кэш» в ОЗУ, где хранятся часто используемые области диска. Кроме того, записи на диск сохраняются в «дисковый буфер», и ядро ​​в конечном итоге записывает их на диск. Общая потребляемая ими память является значением «buff / cache». Это может звучать плохо, но на самом деле это не так — память, используемая кешем, будет выделяться процессам при необходимости.

Резюмируем

Краткая сводная таблица для 6 вышерассмотренных командных оболочек:

Командная оболочка Путь Приглашение (обычный пользователь) Приглашение (root)
sh (Bourne Shell) /bin/sh и /sbin/sh $ #
bash (Bourne-Again Shell) /bin/bash имя_пользователя@имя_хоста:~$ имя_пользователя@имя_хоста:~#
ksh (Korn Shell) /bin/ksh $ #
csh (C Shell) /bin/csh % #
tcsh (TENEX C Shell) /bin/tcsh имя_хоста:~> #
zsh (Z Shell) /bin/zsh % #

Примечание: Помимо представленных выше оболочек, есть еще и такие оболочки, как:

   mksh — оболочка, основной упор в которой сделан на написание скриптов;

   dash — более легковесная в сравнении с bash оболочка, но из-за этого обладающая ограниченной функциональностью;

   fish — «новая» оболочка, написанная в 2005 году, отличительной чертой которой является упор на комфорт использования и упрощение командного языка;

   и другие.

Как узнать какая оболочка у меня установлена?

Если вы только начинаете свое знакомство с Linux и не меняли оболочку, то наиболее вероятно, что в вашей системе используется bash. Самый простой способ узнать, какая оболочка используется в данный момент — это обратиться к переменной окружения :

Кроме того, можно задействовать команду , возвращающую информацию о процессе с заданным идентификатором. В нашем случае, идентификатором оболочки являются символы :

Не трудно заметить, что в настоящее время используется оболочка bash. Для просмотра всех доступных оболочек в вашей системе, необходимо обратиться к содержимому файла etc/shells:

Команды Linux для управления процессами

25. kill / xkill / pkill / killall

Служат для завершения процессов. Но они принимают различные параметры для идентификации процессов. Kill нужен PID процесса, xkill — достаточно кликнуть по окну, чтобы закрыть его, killall и pkill принимают имя процесса. Используйте ту, которая удобна в определенной ситуации.

26. ps / pgrep

Как уже говорилось, чтобы уничтожить процесс, нужен его идентификатор. Один из способов получить его, это утилита ps, которая печатает информацию о запущенных процессах. По умолчанию вывод очень длинный, поэтому используйте опцию -e, чтобы увидеть информацию об определённом процессе. Это только снимок состояния на момент вызова, и информация не будет обновляться. Команда ps с ключом aux выводит полную информацию о процессах. Pgrep работает следующим образом: вы задаете имя процесса, а утилита показывает его идентификатор. Подробнее о команде ps описано тут.

27. top / htop

Обе команды похожи, обе отображают процессы и могут быть использованы как консольные системные мониторы. Я рекомендую установить htop, если в вашем дистрибутиве он не поставляется по умолчанию, так как это улучшенная версия top. Вы сможете не только просматривать, но и контролировать процессы через его интерактивный интерфейс.

28. time

Время выполнения процесса. Это секундомер для выполнения программы. Полезно, если вам интересно, насколько сильно ваша реализация алгоритма отстает от стандартной. Но, несмотря на такое название, она не сообщит вам текущее время, используйте для этого команду date.

Содержимое файлов

Если вы хотите посмотреть содержимое файла, то можете обратиться к команде cat — в ответ на команду вы увидите все, что содержится в файле. Если данных слишком много, используйте конвейер и команду more — она позволит просматривать содержимое постранично:

cat file1 | more

Если вам нужно не только посмотреть содержимое файла, но и отредактировать его, тогда нужно использовать одну из утилит: nano либо vim. Это текстовые редакторы, при помощи которых вы можете открыть файл, изменить и сохранить его. Несмотря на кажущееся сходство, эти утилиты имеют ряд отличий; большинство пользователей сходится во мнении, что nano представляет собой более простой редактор, в то время как vim обладает большими возможностями.

С русскоязычной документацией nano вы можете ознакомиться по этой ссылке: http://help.ubuntu.ru/wiki/nano

А документация vim доступна в этом разделе: http://help.ubuntu.ru/wiki/vim

Как работают скрипты

В Linux почти не используется расширение файла для опережения его типа на системном уровне. Это могут делать файловые менеджеры и то не всегда. Вместо этого, используются сигнатуры начала файла и специальные флаги. Система считает исполняемыми только те файлы, которым присвоен атрибут исполняемости.

Теперь о том, как работают скрипты. Это обычные файлы, которые содержат текст. Но если для них установлен атрибут исполняемости, то для их открытия используется специальная программа — интерпретатор, например, оболочка bash. А уже интерпретатор читает последовательно строку за строкой и выполняет все команды, которые содержатся в файле. У нас есть несколько способов выполнить запуск скрипта linux. Мы можем запустить его как любую другую программу через терминал или же запустить оболочку и сообщить ей какой файл нужно выполнять. В этом случае не нужно даже флага исполняемости.

Оператор точка с запятой (;)

Оператор точка с запятой выполняет несколько команд одновременно последовательно, как упоминалось, и обеспечивает вывод без зависимости от успеха и отказа других команд, таких как && и OR (||).

Посмотрите пример ниже:

$ ping -c 5 localhost ; ifconfig ens33 ; df -h
PING localhost (127.0.0.1) 56(84) bytes of data.
64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.063 ms
64 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=64 time=0.091 ms
64 bytes from localhost (127.0.0.1): icmp_seq=3 ttl=64 time=0.085 ms
64 bytes from localhost (127.0.0.1): icmp_seq=4 ttl=64 time=0.086 ms
64 bytes from localhost (127.0.0.1): icmp_seq=5 ttl=64 time=0.086 ms

--- localhost ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4091ms
rtt min/avg/max/mdev = 0.063/0.082/0.091/0.011 ms
ens33     Link encap:Ethernet  HWaddr 00:0c:29:ff:cd:2e  
          inet addr:192.168.43.185  Bcast:192.168.43.255  Mask:255.255.255.0
          inet6 addr: 2405:204:f017:75dd:65af:f027:85c2:88eb/64 Scope:Global
          inet6 addr: 2405:204:f017:75dd:f076:72b8:fd36:757f/64 Scope:Global
          inet6 addr: fe80::b396:d285:b5b3:81c3/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:146608 errors:0 dropped:0 overruns:0 frame:0
          TX packets:78275 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:188124508 (188.1 MB)  TX bytes:6912561 (6.9 MB)

Filesystem      Size  Used Avail Use% Mounted on
udev            966M     0  966M   0% /dev
tmpfs           199M   12M  187M   6% /run
/dev/sda1        18G  5.3G   12G  32% /
tmpfs           992M  212K  992M   1% /dev/shm
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           992M     0  992M   0% /sys/fs/cgroup
tmpfs           199M   60K  199M   1% /run/user/1000

6. Амперсанд Оператор (&)

Оператор Амперсанда – это своего рода оператор, который выполняет заданные команды в фоновом режиме.

Вы можете использовать этот оператор для одновременного выполнения нескольких команд.

$ ping -c 50 localhost &

Вы также можете выполнять несколько команд с помощью оператора Ampersand. См. Команду ниже.

$ ping -c 5 localhost & df -h &
 25962
 25963

$ PING localhost (127.0.0.1) 56(84) bytes of data.
64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.052 ms

Filesystem      Size  Used Avail Use% Mounted on
udev            966M     0  966M   0% /dev
tmpfs           199M   12M  187M   6% /run
/dev/sda1        18G  5.3G   12G  32% /
tmpfs           992M  212K  992M   1% /dev/shm
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           992M     0  992M   0% /sys/fs/cgroup
tmpfs           199M   56K  199M   1% /run/user/1000

64 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=64 time=0.091 ms
64 bytes from localhost (127.0.0.1): icmp_seq=3 ttl=64 time=0.070 ms
64 bytes from localhost (127.0.0.1): icmp_seq=4 ttl=64 time=0.091 ms
64 bytes from localhost (127.0.0.1): icmp_seq=5 ttl=64 time=0.117 ms

--- localhost ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4072ms
rtt min/avg/max/mdev = 0.052/0.084/0.117/0.022 ms

Автозапуск через cron

Если вам с какой-то периодичностью нужно запускать скрипт или команду, вы можете воспользоваться cron-ом:

— открыть терминал для написания задания cron

И добавьте туда нужное вам задание, например:

— запускать скрипт каждую минуту.

Можно написать скрипт watch-dog, который по заданию будет проверять, например, статус какого-либо сервиса и, если он не работает, запускать его. На нескольких своих проектах я использую подобную схему.

Чтобы вывести список всех заданий в крон, нужно выполнить команду:

* * * * * /root/test.sh

Допустимые значения для времени запуска заданий cron по порядку:

  • Минуты от 0 до 59
  • Часы от 0 до 59
  • День месяца от 1 до 31
  • Месяц от 1 до 12
  • День недели от 0 до 7 (0 или 7 это воскресение)

В нашем задании скрипт запускается каждую минуту, поэтому там стоят «*».

Так же вы можете разместить нужный вам скрипт в директориях cron:

  • /cron.daily – выполнение скрипта ежедневно
  • /cron.hourly – выполнение скрипта ежечасно
  • /cron.monthly — выполнение скрипта ежемесячно
  • /cron.weekly — выполнение скрипта еженедельно

Скрипты в указанных директория будут запускаться согласно автоматически подготовленного расписания.

История команд Linux

Большинство задач, связанных с историей команд, мы будем выполнять либо с помощью команды history, либо с помощью оболочки. В истории хранится последняя 1000 команд, которые вы выполняли. Чтобы посмотреть всю историю для этого терминала просто запустите команду history без параметров:

Для дополнительных действий с историей вам могут понадобиться опции. Команда history linux имеет очень простой синтаксис:

$ history опции файл

В качестве файла можно указать файл истории. По умолчанию история для текущего пользователя хранится в файле ~/.history, но вы можете задать, например, файл другого пользователя. А теперь рассмотрим опции:

  • -c — очистить историю;
  • -d — удалить определенную строку из истории;
  • -a — добавить новую команду в историю;
  • -n — скопировать команды из файла истории в текущий список;
  • -w — перезаписать содержимое одного файла истории в другой, заменяя повторяющиеся вхождения.

Наиболее полезной для нас из всего этого будет опция -c, которая позволяет очистить историю команд linux:

Так вы можете посмотреть только последние 10 команд:

А с помощью опции -d удалить ненужное, например, удалить команду под номером 1007:

Если вы хотите выполнить поиск по истории bash, можно использовать фильтр grep. Например, найдем все команды zypper:

На самом деле работать с историей еще более просто с помощью оболочки, возможно, вы уже используете многие ее функции, но о некоторых точно не знаете. Рассмотрим их:

Чтобы показать предыдущую команду просто нажмите стрелку вверх, так можно просмотреть список раньше выполненных команд.

Вы можете выполнить последнюю команду просто набрав «!!». Также можно выполнить одну из предыдущих команд указав ее номер «!-2»

Чтобы выполнить поиск по истории прямо во время ввода нажмите Ctrl+R и начните вводить начало команды.

Если вы знаете, что нужная команда была последней, которая начиналась на определенные символы, например, l, то вы можете ее выполнить, дописав «!l»:

Если нужная команда последняя содержала определенное слово, например, tmp, то вы можете ее найти, использовав «!?tmp»:

Если вы не хотите, чтобы выполняемая команда сохранилась в истории просто поставьте перед ней пробел.

Таким образом, вы можете очень быстро отыскать нужную команду, если помните как она была написана. История команд bash хранит очень много команд и этого вполне достаточно для комфортной работы.

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Ваша ОС
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: