GNU/Linux
Ракушка
Поиск…
Вступление
В ответ на приглашение оболочка выполняет программу. Когда вы даете команду, оболочка ищет программу, а затем выполняет ее. Например, когда вы даете команду ls, оболочка ищет утилиту / программу с именем ls, а затем запускает ее в оболочке. Аргументы и параметры, которые вы предоставляете с помощью утилит, могут повлиять на результат, который вы получаете. Оболочка также известна как интерфейс командной строки или интерфейс командной строки.
Изменение оболочки по умолчанию
Большинство современных дистрибутивов будут поставляться с BASH ( B ourne A gain SH ell), предварительно установленным и настроенным как оболочка по умолчанию.
Команда (фактически исполняемый двоичный код, ELF), которая отвечает за изменение оболочек в Linux, - chsh
( ch ange sh ell).
Сначала мы можем проверить, какие оболочки уже установлены и настроены на нашей машине, используя команду chsh -l
, которая выведет результат, подобный этому:
[user@localhost ~]$ chsh -l
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/usr/bin/fish
В некоторых дистрибутивах Linux chsh -l
недействителен. В этом случае список всех доступных оболочек можно найти в файле / etc / shells. Вы можете показать содержимое файла с помощью cat
:
[user@localhost ~]$ cat /etc/shells
# /etc/shells: valid login shells
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/usr/bin/fish
Теперь мы можем выбрать нашу новую оболочку по умолчанию, например, fish
, и настроить ее с помощью chsh -s
,
[user@localhost ~]$ chsh -s /usr/bin/fish
Changing shell for user.
Password:
Shell changed.
Теперь все, что осталось сделать, это преформировать цикл входа в систему и воспользоваться нашей новой оболочкой по умолчанию.
Если вы хотите изменить оболочку по умолчанию для другого пользователя, и у вас есть права администратора на компьютере, вы сможете это сделать, используя chsh
как root
. Поэтому, предполагая, что мы хотим изменить user_2
умолчанию для user_2
, мы будем использовать ту же команду, что и раньше, но с добавлением имени пользователя другого пользователя, chsh -s /usr/bin/fish user_2
.
Чтобы проверить, что такое текущая оболочка по умолчанию, мы можем просмотреть переменную окружения $SHELL
, которая указывает на путь к нашей оболочке по умолчанию, поэтому после нашего изменения мы ожидаем получить такой же результат,
~ echo $SHELL
/usr/bin/fish
chsh
:
-s shell
Устанавливает оболочку в качестве оболочки входа.
-l
, --list-shells
Распечатайте список оболочек, перечисленных в / etc / shells, и выйдите.
-h
, --help
Распечатайте сообщение об использовании и выйдите из него.
-v
, --version
Распечатайте информацию о версии и выйдите из нее.
Основные утилиты Shell
Настройка командной строки
Командная строка по умолчанию может быть изменена, чтобы выглядеть по-другому и коротким. Если текущая директория длинная, командная строка становится слишком большой. Использование PS1
становится полезным в этих случаях. Короткая и настраиваемая команда довольно и элегантная. В приведенной ниже таблице PS1
используется с несколькими аргументами для отображения различных форм приглашений оболочки. Командная bruce@gotham ~ $
умолчанию выглядит примерно так: user@host ~ $
в моем случае выглядит так: bruce@gotham ~ $
. Он может изменяться в соответствии с приведенной ниже таблицей:
команда | Полезность |
---|---|
PS1 = '\ w $' | ~ $ shell как имя каталога. В этом случае корневой каталог - Root. |
PS1 = '\ h $' | подсказка gotham $ shell как имя хоста |
PS1 = '\ u $' | bruce $ shell как пользователь |
PS1 = '\ t $' | 22:37:31 $ shell prompt в формате 24 часа |
PS1 = '@ $' | 10:37 PM запрос командной строки в 12-часовом формате времени |
PS1 = '! $ ' | 732 отобразит номер истории команды вместо приглашения оболочки |
PS1 = 'чувак' | dude $ будет показывать подсказку оболочки так, как вам нравится |
Некоторые основные команды оболочки
команда | Полезность |
---|---|
Ctrl-k | вырезать / убить |
Ctrl-y | дергать / паста |
Ctrl-a | будет курсор на начало строки |
Ctrl-e | будет курсор до конца строки |
Ctrl-d | удалит символ после / в курсоре |
Ctrl-l | очистит экран / терминал |
Ctrl-u | очистит все между подсказкой и курсором |
Ctrl-_ | отменит последнее, введенное в командной строке |
Ctrl-c | будет прерывать / останавливать работу / процесс, выполняющийся на переднем плане |
Ctrl-r | обратный поиск в истории |
~/.bash_history | хранит последние 500 команд / событий, используемых в оболочке |
history | покажет историю команд |
history | grep <key-word> | покажет все команды в истории, имеющие ключевое слово <ключевое слово> (полезно в случаях, когда вы помните часть команды, использованной в прошлом) |
Создайте свой собственный псевдоним команды
Если вы устали от использования длинных команд в bash, вы можете создать свой собственный псевдоним команды.
Лучший способ сделать это - изменить (или создать, если он не существует) файл с именем .bash_aliases в вашей домашней папке. Общий синтаксис:
alias command_alias='actual_command'
где actual_command
- это команда, которую вы переименовываете, а command_alias
- новое имя, которое вы ему дали. Например
alias install='sudo apt-get -y install'
сопоставляет новую команду alias install
с фактической командой sudo apt-get -y install
. Это означает, что когда вы используете установку в терминале, это интерпретируется bash как sudo apt-get -y install .
Найдите файл в вашей системе
Используя bash, вы можете легко найти файл с помощью команды locate
. Например, скажем, что вы ищете файл mykey.pem:
locate mykey.pem
Иногда файлы имеют странные имена, например, у вас может быть файл random7897_mykey_0fidw.pem
. Предположим, вы ищете этот файл, но вы помните только части mykey и pem. Вы можете комбинировать команду locate
с grep
используя такой канал:
locate pem | grep mykey
Который принесет все результаты, которые содержат обе эти части.
Обратите внимание, что не все системы имеют установленную утилиту locate
, и многие из них не включили ее. locate
выполняется быстро и эффективно, поскольку он периодически сканирует вашу систему и кэширует имена и местоположения для каждого файла на ней, но если этот сбор данных не включен, он ничего не может вам сказать. Вы можете использовать updatedb
для ручного запуска сканирования файловой системы, чтобы обновить кэшированную информацию о файлах в вашей файловой системе.
Если вы не имеете рабочий locate
, вы можете упасть обратно на find
утилиты:
find / -name mykey.pem -print
примерно эквивалентна locate mykey.pem
но при каждом запуске файла для проверки locate mykey.pem
требуется сканирование вашей файловой системы, а не на использование кэшированных данных. Это, очевидно, медленнее и менее эффективно, но больше в режиме реального времени. Утилита find
может делать гораздо больше, чем поиск файлов, но полное описание ее возможностей выходит за рамки этого примера.