Mac os история команд

Обновлено: 07.07.2024

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

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

Небольшое введение

Начнем с вопроса, что такое Терминал? Прежде всего, это приложение, внутри которого выполняется командный интерпретатор. Его еще часто называют интерфейсом командной строки. Он интерпретирует команды специального языка скриптов.

Языки скриптов бывают разные, но есть наиболее распространенный набор таких языков, а соответственно и их интерпретаторов.

В OS X, по умолчанию используется командный интерпретатор bash . Это улучшенный вариант интерпретатора Bourne shell, который обычно называют просто shell . И он тоже присутствует в нашей системе в виде файла /bin/sh . Правда не используется.

В настоящее время bash – фактически стандарт де-факто в большинстве Unix-подобных систем.

Так же достаточно популярен интерпретатор zsh , который в свою очередь является улучшенным bash (и он тоже есть в нашей системе), но стандартом де-факто он не стал. Возможно пока. Существует и еще целый ряд командных интерпретаторов, не получивших такого большого распространения как bash .

Командная строка

Когда вы запускаете программу Терминал, то видите в ее окне командную строку, которая в моей системе выглядит так:


Язык скриптов bash

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

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

Приведу пример. Вы хотите посмотреть содержимое текущего каталога (при запуске Терминала, по умолчанию это будет ваш домашний каталог). Для этого в системе есть программа, находящаяся в файле ls . Ее запуск в командном интерпретаторе заключается во вводе имени файла этой программы и нажатием клавиши Enter:


Небольшое, но важное пояснение

Посмотреть содержимое переменной PATH вы можете командой:

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

Ну а теперь перейдем собственно к советам.

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

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

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


Как видно на картинке, имеется шесть команд, название которых начинается с disk , а потому интерпретатор предлагает уточнить следующую букву. В нашем случае нужно ввести букву u , для того, чтобы интерпретатор смог понять, что нам нужна именно команда diskutil , поскольку это единственная команда, начинающаяся с букв disku и затем нажать клавишу Tab. Команда будет дописана полностью.

Попробуйте ввести только буквы di и нажать два раза клавишу Tab. Команд, начинающихся на эти две буквы, будет еще больше. А вот если бы в системе была только одна команда, начинающаяся с букв di , то после первого же нажатия клавиши Tab, она была бы дописана полностью, поскольку интерпретатору не приходилось бы выбирать из разных вариантов.

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

Пример. Предположим мы хотим посмотреть содержимое вашего каталога Загрузки при помощи команды ls .

И сразу небольшое отступление.

На самом деле, каталога с названием Загрузки , в вашем домашнем каталоге нет. Это программа Finder, так показывает вам название каталога Downloads . То есть фактически переводит на русский язык слово Downloads . Сделано это для удобства пользователей.

Вы можете убедиться в этом, взглянув на второй сверху снимок экрана, где мы командой ls выводили содержимое домашнего каталога. Как видите, там нет каталога с названием Загрузки , но есть каталог Downloads . Точно так же вы там не увидите каталогов с названиями Библиотеки , Документы , Изображения , Музыка , Общие , Сайты и Фильмы , которые показывает вам программа Finder как перевод с английского на русский названий каталогов: Library , Documents , Pictures , Music , Public , Sites и Movies соответственно.

Итак, вернемся к просмотру содержимого каталога Загрузки (а на самом деле Downloads ) командой ls . Нам нужно ввести название каталога в качестве параметра к этой команде. Набираем ls Dow и нажимаем клавишу Tab, получаем команду ls Downloads , в результате выполнения которой и получим содержимое каталога Загрузки ( Downloads ).

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

Совет 2 – история команд

Это еще один механизм, облегчающий работу в командной строке. Дело в том, что интерпретатор bash запоминает все команды, которые вы выполняли. Он сохраняет всю историю команд в скрытом файле вашего домашнего каталога с названием .bash_history . Увидеть этот файл можно при помощи команды ls с ключом -la , т.е. ls -la . Попробуйте.

Надеюсь, это небольшое введение в основы мира командной строки, не слишком вас утомило. 🙂

Какой ярлык используется для поиска в истории команд в терминале macOS?

Как долго история доступна для поиска? Где это хранится?

ОТВЕТЫ

Ответ 1

Как насчет использования Ctrl + R для поиска в утилите Terminal в Mac для поиска в истории команд,

Хорошо для того, чтобы контролировать, как долго сохранялся history , который зависит от нескольких переменных среды shell , HISTFILESIZE , который представляет собой не что иное, как количество строк истории, которые вы хотите сохранить. Установите для него огромное значение в .bash_profile , чтобы он вступил в силу

Ответ 2

Используйте Ctrl + R для поиска команды из истории в терминале.

Введите любую подстроку команды, которую вы хотите искать, например. Grep

Он вернет последнюю команду, соответствующую вашему вводу. Если это не та команда, которую вы искали, продолжайте нажимать Ctrl + R для следующего совпадения, пока не найдете свою команду.

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

Если вы хотите выйти без выполнения какой-либо команды, нажмите Ctrl + G

PS: Этот ответ такой же, как предложенный Inian, просто предоставляя более подробную информацию для удобства использования.

Ответ 3

История команд хранится в вашей домашней папке в скрытом файле .bash_history. Чтобы просмотреть его содержимое в nano, используйте следующую команду в терминале:

Или откройте текстовый редактор (по умолчанию TextEdit):

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

Ответ 4

Перенос ответа на SO из этого ответа на Unix и Linux Stack Exchange:

Нажатие ctrl + R откроет историю поиска назад. Теперь начните вводить вашу команду, это даст первое совпадение. Нажав ctrl + R снова (и снова), вы можете просмотреть историю.

Если вы хотите быть очень ленивым, вы можете связать клавиши со стрелками вверх/вниз для выполнения этого поиска, у меня в .inputrc есть следующее, чтобы связать клавиши со стрелками вверх/вниз с history-search-backward и history-search-forward :

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

Чтобы сделать это в .bashrc а не .inputrc , вы можете использовать:

Ответ 5

Используйте эту команду -

Это работает как на MacOS, так и на Linux.

Ответ 6

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

В macOS терминал, соответственно, называется Терминалом, и он использует оболочку Z (Zsh) в качестве оболочки входа по умолчанию. Используя Терминал, вы можете легко перемещаться по системным каталогам, копировать / перемещать файлы, получать системную информацию, безопасно удаленно входить в другие системы и эффективно автоматизировать задачи / действия на вашем Mac.

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

Основные команды терминала macOS

Для выполнения команд в любой операционной системе требуется терминал. macOS уже поставляется с одним из них, и вы можете найти его в Приложения> Утилиты.

Кроме того, вы также можете добавить его в свою док-станцию ​​для быстрого доступа. Для этого запустите Терминал, щелкните правой кнопкой мыши его значок в доке и выберите Параметры > Хранить в доке.

Теперь, когда на вашем Mac запущен Терминал, все, что вам нужно сделать, это ввести команду терминала и нажать «Return», чтобы выполнить ее.

Для вашего удобства мы разделили команды на несколько категорий, чтобы им было легче следовать:

1. Основные команды терминала

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

я. человек

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

предоставит вам всю необходимую информацию о команде cd (сменить каталог).

II. Чисто

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

iii. судо

Например, если вы хотите выключить Mac через Терминал, вам нужно запустить:

и введите свой пароль пользователя для выполнения команды.

iv. история

Команда history пригодится, когда вы хотите узнать все команды, которые вы выполняли в прошлом. Например, если вы отключили / включили какую-либо службу на своем Mac, но точно не помните ее имя или команду, которую вы использовали, вы можете использовать эту команду, чтобы узнать службу и отменить свое действие.

2. Навигация по каталогам

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

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

Для подробной разбивки:

Чтобы просмотреть все содержимое каталога, включая скрытые файлы и каталоги:

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

Чтобы перейти в домашний каталог:

Если вы хотите перейти в конкретный каталог:

Чтобы перейти в родительский каталог:

Если вы хотите вернуться в предыдущий рабочий каталог:

Наконец, когда вам нужно перейти в корневой каталог, запустите:

3. Управление каталогом

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

Чтобы создать каталог, запустите:

Если вы хотите создать сразу несколько каталогов:

mkdir directory_name_1 directory_name_2 directory_name_3

Если вы хотите удалить / удалить каталог, запустите:

Если вы хотите удалить непустой каталог, вы можете использовать параметр -R (рекурсивный), чтобы удалить каталог вместе со всем его содержимым:

rm -R directory_name

4. Управление файлами

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

Чтобы создать файл:

Если вы хотите создать и отредактировать файл, запустите:

который откроет файл в текстовом редакторе Nano. В качестве альтернативы, если вы предпочитаете использовать какой-либо другой текстовый редактор, замените nano на имя этого редактора в приведенной выше команде.

Чтобы просмотреть тип файла на вашем Mac:

Если вы хотите скопировать файл из текущего каталога в другой каталог, запустите:

cp file_name directory_name

Если необходимо скопировать файл в тот же каталог, но с другим именем:

cp file_name new_file_name

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

mv file_name directory_name

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

mv current_file_name new_file_name

Если вы хотите удалить / удалить файл, запустите:

5. Установка программ

macOS поставляется с предустановленным менеджером пакетов Homebrew, который позволяет устанавливать программы на Mac с помощью Терминала. В некотором смысле это намного более простой способ установки приложений на ваш компьютер, в отличие от традиционного способа, при котором вам нужно будет выполнить ряд шагов.

Чтобы обновить репозиторий Homebrew, запустите:
brew update

Если вы хотите обновить все установленные пакеты в вашей системе:
brew upgrade

Когда вам нужно установить приложение на основе графического интерфейса, нам придется использовать Cask:
brew install --cask program_name

Например:
brew install --cask vlc

Если это программа без графического интерфейса:
brew install program_name

Обратите внимание, что не все пакеты / программы могут быть установлены сразу: вам может потребоваться добавить их исходный репозиторий, чтобы получить их перед запуском команды установки.

Наконец, если вы хотите удалить программу, используйте:
brew uninstall program_name

6. Управление сетью

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

Если вы хотите просмотреть IP-адрес и MAC-адрес вашего устройства, запустите:

Чтобы узнать IP-адрес и MAC-адрес всех устройств, подключенных к вашей сети:

Если вам нужна информация о входящих и исходящих подключениях к вашему Mac, используйте:

Чтобы найти все запущенные процессы на вашем Mac, у которых есть активное подключение к Интернету:

Чтобы получить дополнительную информацию о домене, используйте:

Если вы хотите определить путь (и переходы), пройденный пакетами от вашего устройства до их адреса назначения, запустите:

7. Управление процессами

Если вы когда-либо открывали приложение Activity Monitor на своем Mac, вы бы видели все активные процессы, запущенные в вашей системе. Эти процессы могут быть системными приложениями, сторонними приложениями или другими фоновыми службами, необходимыми операционной системе.

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

Нажмите q или же Ctrl + C остановиться.

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

ps -ax | grep program_name

ps -ax | grep Safari

Здесь вы можете увидеть имя приложения в столбце CMD. Обычно указывается абсолютный путь к программе / приложению.

Узнав больше о процессе, если вы обнаружите необходимость его прервать, запустите:

sudo killall program_name

Поскольку мы запускаем команду kill / killall с sudo, вам нужно будет ввести свой пароль пользователя после ввода команды для ее выполнения.

8. Управление разрешениями

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

Установить разрешения в Терминале довольно просто, если вы разберетесь с его синтаксисом. Однако, прежде чем перейти к нему, первое, что вам нужно сделать, это определить права доступа к файлу, который вы хотите изменить. Для этого наберите:

ls -al file_name

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

Собирая эти символы вместе, вы можете установить разрешения для файла / каталога. Вот как могут быть сформированы разрешения:

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

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

Чтобы настроить разрешения на чтение, запись и выполнение для всех трех классов доступа, запустите:

chmod ugo+rwx file_name

В числовом представлении вам нужно будет использовать:

chmod 777 file_name

Чтобы сделать то же самое для всех текстовых файлов в каталоге:

chmod ugo+rwx *txt

Когда необходимо предоставить всем пользовательским классам одно и то же разрешение:

chmod a+rwx file_name

Если вы хотите установить разрешения таким образом, чтобы класс пользователя получал все три доступа, в то время как группа получала доступ для чтения и записи, а другие пользователи получали доступ только для чтения, вам необходимо использовать следующую команду:

chmod ugo+rwxrw-r-- file_name

В числовом представлении:

chmod 764 file_name

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

chmod go-wx file_name

chmod 744 file_name

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

Эффективное использование Mac с помощью команд терминала

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

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

Favorite

В закладки

5 простых и полезных команд для начала работы с «Терминалом» в OS X

Это вводная статья серии научит вас пяти самым простым командам, которые помогут вам понять основы работы с «Терминалом», быстро получить первые практические результаты, войти во вкус и заинтересоваться работой с командной строкой.

Приложение «Терминал» находится в папке Программы -> Утилиты. Чтобы пробовать примеры из статьи, необходимо запустить его.

1. Узнаем, когда компьютер был перезагружен последний раз

uptime

Начнем наши эксперименты с командной строкой со следующей команды. Обратите внимание, что перед основным текстом стоит знак доллара (так принято во всех справочных материалах по теме). Это — приглашение командной строки. Набирать его не нужно. Оно по умолчанию присутвует сразу после имени активного пользователя.
[code]
$ uptime
[/code]

После ее выполнения нам станут известны:

  • Текущее время (на картинке 1:24).
  • Сколько дней и часов прошло с момента последней перезагрузки системы (на картинке up 10 days, 21:49).
  • Средняя загрузка системы за последнюю минуту (на картинке 1,83).
  • Cредняя загрузка системы за последнии пять минут (на картинке 2,27).
  • Cредняя загрузка системы за последнии пятнадцать минут (на картинке 2,21).

О других способах узнать о компьютере больше с помощью командной строки и о том, что такое load average, будет рассказано во второй статье серии «Собираем информацию о Mac с помощью Терминала».

2. Загружаем файлы из интернета

download_img

Чтобы результаты выполнения предыдущих команд не отвлекали вас, нажмите Command + N (появится пустое окно «Терминала»). Попробуем загрузить файл из интернета без использования браузера. Набираем:

У утилиты curl есть несколько десятков параметров. C ее помощью можно делать многое. К примеру, загружать файлы на сервер по FTP. О других возможностях утилиты curl и других инструментах для работы с сетью в командной строке читайте в третьем материале серии «Автоматизируем работу в интернете с помощью Терминала».

3. Объединяем несколько файлов в один

os_x_cat


Не приходилось ли вам когда-нибудь копировать текст из нескольких файлов в один (к примеру, для реферата)? Этот процесс можно автоматизировать с помощью утилиты cat. Через пробел указываем относительны пути к файлам, которые хотим объединить, а после знака > имя файла, созданного в результате работы утилиты:

[code]
$ cat file1.txt file2.txt>file3.txt
[/code]

Утилита cat появилась еще в первой версии операционной системы UNIX в 1971 году. О других полезных утилитах с полувековой историей будет четвертая статья «Лучшее, что унаследовал Терминал OS X от UNIX».

4. Конвертируем текстовые файлы из одного формата в другой

textutil


Чтобы это сделать, надо запустить утилиту textutil с параметром convert, указав желаемый формат и название/путь к файлу:
[code]
$ textutil convert docx file3.txt
[/code]

Textutil умеет конвертировать html, txt, doc, docx, pdf, odt, rtf и т.п. Другим возможностям «Терминала» для автоматизации работы с текстами будет посвящен пятый материал цикла.

5. Перемещаемся по каталогам

terminal_change_dir

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

[code]
$ cd cards
[/code]

Шестая статья серии будет о служебных командах, которые самостоятельно не несут практической ценности, но их необходимо знать для работы с инструментами, описанных в первых пяти материалах.

Применяем команды сразу для нескольких файлов

bash_all

Если вам нужно конвертировать один файл, то не совсем удобно использовать для этого командную строку. Другое дело, если надо конвертировать несколько десятков или сотен файлов. Чтобы это сделать, необходимо написать простейший цикл на Shell скрипт. Вот пример кода, который отбирает все txt-файлы в активной папке и конвертирует их в docx, помечая новые файлы префиксом «_new»:

[code]
for i in *.txt; do textutil -convert docx "$i" -output new_"$i"; done
[/code]

Аналогичный прием был использован в посте Автоматизируем редактирование изображений в OS X, в котором было рассказано об основах работы с утилитой ImageMagick.

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

Favorite

В закладки


Оболочка bash — это стандартная терминальная среда, включенная в большинство дистрибутивов Linux, включенная в macOS и доступная для установки в Windows 10 . Он запоминает введенные вами команды и сохраняет их в файле истории. Вы, вероятно, знаете некоторые основы истории bash, но она намного мощнее, чем вы думаете.

Горячие клавиши

Для просмотра истории Bash вы можете использовать несколько полезных сочетаний клавиш в Bash . Нажмите эти ярлыки и команды, которые вы использовали ранее, появятся в приглашении.

  • Стрелка вверх или Ctrl + P : перейти к предыдущей команде в вашей истории. Нажмите клавишу несколько раз, чтобы перейти назад к командам, которые вы использовали.
  • Стрелка вниз или Ctrl + N : перейти к следующей команде в вашей истории. Нажмите клавишу несколько раз, чтобы перейти к командам, которые вы использовали.
  • Alt + R : отменить любые изменения в команде, которую вы извлекли из своей истории, если вы редактировали ее в текущей строке.

Bash также имеет специальный режим «отзыва», который вы можете использовать для поиска команд, которые вы ранее выполняли, вместо того, чтобы прокручивать их одну за другой.

  • Ctrl + R : вызвать последнюю команду, соответствующую указанным вами символам. Нажмите этот ярлык и начните вводить команду для поиска в истории Bash.
  • Ctrl + O : Запустите найденную команду с помощью Ctrl + R.
  • Ctrl + G : выйти из режима поиска в истории без выполнения команды.


Просмотр вашей истории Bash

Вы можете распечатать всю историю bash на экране, выполнив одну команду:

Вы увидите список всех команд в истории Bash, а также номер слева от каждой из них. Команда с «1» рядом с ней является самой старой командой в вашей истории bash, в то время как команда с наибольшим номером является самой последней.


С выходом вы можете делать все что угодно. Например, вы можете передать его в команду grep для поиска в истории команд.


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


Запустить команды из вашей истории

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

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

Например, допустим, вы хотели запустить 12-ю команду из своей истории bash. Это команда с «12» слева от нее, когда вы запускаете команду history . Вы набрали бы следующую команду.


Для повторного запуска последней выполненной команды введите следующее. Это действует так же, как нажатие стрелки вверх один раз для просмотра предыдущей команды, а затем нажатие клавиши Enter.

Вы также можете обратиться к команде на определенное количество строк назад. Например !-2 будет выполнять вторую команду, которую вы запустили. !! означает то же самое, что и !-1 ,


Это расширение работает в любом месте на линии. Вы можете добавить все что угодно до или после !! или любое другое выражение в этом разделе. Например, вы можете ввести следующую команду, чтобы повторно запустить последнюю команду, которую вы выполняли через sudo , предоставив ей привилегии root. Это особенно полезно, если вы забыли добавить sudo перед запуском команды.


Чтобы найти команду в своей истории и запустить ее, введите следующее. Это запустит последнюю команду, которая соответствует указанному вами тексту:

Итак, если вы недавно запустили команду, которая началась с ping , вы можете запустить следующую команду, чтобы найти ее. Это будет искать в вашей истории в обратном направлении, найти самую последнюю команду, которая начинается с « pi », и сразу же запустить ее:


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


Повторное использование аргументов из вашей истории

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

Например, допустим, вы запустили команду touch /home/chris/some_long_file_name_you_dont_want_to_type_again . Теперь вы хотите запустить команду nano /home/chris/some_long_file_name_you_dont_want_to_type_again . Вместо того, чтобы печатать все это с нуля, вы можете запустить:

!$ Заставит bash автоматически заполнить последний аргумент из вашей предыдущей команды.


Итак, если вы запустили ping google.com -c 4 а затем запустили ping !^ , Bash расширит это до « ping google.com" .


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

Итак, если вы запустите ping !* , Bash автоматически заполнит все аргументы, которые вы использовали в предыдущей команде.


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

Например, мы запускали команду sudo hostname ubuntu ранее. Если мы запустим следующую команду, bash будет искать в истории в обратном направлении, чтобы найти последнюю команду, начинающуюся с букв, которые мы вводим, и заполнить указанный аргумент. Поэтому, если мы запустим echo !su:2 , bash выполнит поиск, чтобы найти последнюю команду, начинающуюся с « su », и заполнит ее второй аргумент, который называется « ubuntu ».

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


Повторите предыдущую команду и измените ее

Bash также позволяет вам повторно выполнить предыдущую команду и указать что-то, что должно быть изменено. Это может быть полезно для исправления опечатки в команде. Например, следующая команда перезапустит предыдущую команду, заменив в ней текст « abc » текстом « xyz ».


Где хранится ваша история и как ее очистить

Оболочка bash хранит историю команд, которые вы выполняли в файле истории вашей учетной записи пользователя по умолчанию в

/ .bash_history. Например, если ваше имя пользователя — bob, вы найдете этот файл в /home/bob/.bash_history.

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

Чтобы очистить историю bash, вы можете запустить следующую команду. Это удаляет содержимое файла .bash_history вашей учетной записи:


По умолчанию Bash запоминает только ограниченное количество команд, предотвращая слишком большой рост файла истории. Количество записей истории, запоминаемых bash, контролируется переменной HISTSIZE . По умолчанию обычно 500 или 1000 записей. Вы можете запустить следующую команду, чтобы просмотреть размер истории bash в вашей системе.

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

В текущем сеансе bash не будет хранить никаких записей истории, если вы не запустите такую ​​команду, как HISTSIZE=1000 чтобы вернуть ей определенное количество записей.

Как игнорировать пробелы и дубликаты

Bash позволяет игнорировать записи истории, начинающиеся с пробела, если для переменной ignorespace. HISTCONTROL значение ignorespace.

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

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

Чтобы использовать функции ignorespace и ignoredups , установите для переменной ignoreboth. значение ignoreboth.

Обратите внимание, что установленные вами переменные bash будут сохраняться только в текущем сеансе. Вам нужно будет добавить их в файл .bashrc вашей учетной записи, чтобы эти значения автоматически устанавливались при каждом запуске bash, если вы предпочитаете это.

Оболочка Bash представляет собой сложный инструмент с гораздо большим количеством опций, чем эти. Обратитесь к разделам Bash History Builtins и History Expansion в официальном руководстве по bash, чтобы получить более подробную информацию и другие дополнительные приемы, которые вы можете использовать.

Читайте также: