Важнейшие переменные окружения
1 2 3 4 5 6 7 8 9 10 11 12 13 |
HOME Путь к домашнему каталогу пользователя LOGNAME Имя пользователя USER Имя пользователя MAIL Путь к почтовому ящику пользователя PATH Путь поиска исполняемых файлов PS1 Вид приглашения оболочки PWD Имя текущего каталога OLDPWD Имя предыдущего каталога SHELL Оболочка, указанная в учетной записи TERM Тип терминала LANG Тип локализации (локаль) HOSTNAME Имя хоста SHLVL Номер оболочки (при входе в сеанс — 1, для дочерней — 2 и т. д.) |
Переменная окружения PS1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
PS1 определяет вид приглашения оболочки \u устанавливает вывод имени пользователя \W устанавливает вывод имени текущего каталога \h отображает в строке приглашения Bash имя хоста простой пример: echo $PS1 [\u@\h \W]\$ Пример из debian: echo $PS1 \[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ Механизм продолжения в Bash действует не только для имен файлов и команд. Если строка начинается с одного из символов: $, ~ или @, то Bash попытается дополнить строку как: имя переменной оболочки ($); имя пользователя (~); имя хоста (@). |
Переменные окружения, общие для всех пользователей, хранятся в файле
1 |
/etc/profile |
Настройки, специфичные для конкретных пользователей, хранятся в одном из файлов домашнего каталога пользователя
1 2 3 4 |
~/.bash_profile ~/.bash_login ~/.profile ~/.bashrc |
История команд
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
~/.bash_history в переменной окружения HISTFILE можно указать другой файл history Показать какой файл для сохранения истории используется: echo $HISTFILE Ко-во сохроняемых команд в истории (строк) echo $HISTFILESIZE history - показать историю выполнненых команд команд ВНИМАНИЕ ЕСЛИ ПЕРЕД КОМАНДО ПОСТАВИТЬ ПРОБЕЛ ТО В ИСТОРИЮ ОНА НЕ БУДЕТ СОХРОНЕННА !! - выполнить последнию команду !555 - выполнить команду под номером 555 !l - история будет просмотрена с конца до тех пор, пока не будет найдена команда с подходящими первыми символами, в данном случае с буквой "l" <Ctrl>+<R> позволяет производить поиск команд в истории по любым символам в командной строке. Нажмите комбинацию клавиш <Ctrl>+<R>, и вам будет предложено ввести символы из командной строки, причем найденная команда будет отображаться до своего исполнения. |
Команда alias
1 2 3 4 5 6 7 8 9 |
Многие команды, требуемые в повседневной работе, слишком длинны и неудобны. Для ускорения набора часто повторяющихся сложных команд им можно назначить псевдонимы с помощью встроенной команды alias. Команда alias, выполненная без аргументов, выводит список всех уже определенных псевдонимов. alias Новый псевдоним также создается командой alias. alias ls='ls --color=tty' alias vi='vim' alias ls='ls --color=tty' alias vi='vim' alias ll='ls -l' |
Текстовые файлы и потоки
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
стандартный поток ввода (stdin), файловый дескриптор которого — 0 стандартный поток вывода (stdout), файловый дескриптор — 1 стандартный поток вывода ошибок (stderr), файловый дескриптор — 2 Стандартные потоки не надо специально открывать в программах, т. к. они автоматически ассоциируются с процессом при его создании. Поток ввода открыт на чтение, а потоки вывода и ошибок — на запись. Обычно по умолчанию стандартный поток ввода связан с клавиатурой, а стандартные потоки вывода и ошибок — с дисплеем. Перенаправление потоков ввода/вывода: < — оператор перенаправления стандартного потока ввода > или 1> — операторы перенаправления стандартного потока вывода 2> — оператор перенаправления стандартного потока вывода ошибок >> — для перенаправления потока вывода на добавление к файлу 2>> — для перенаправления потока вывода ошибок на добавление к файлу Эффект замещения старого содержимого файлов, возникающий при перенаправлении в них потоков вывода и ошибок, часто бывает нежелателен. Оболочка Bash позволяет исключить стирание содержимого файлов при перенаправлении в них потоков вывода или ошибок с помощью команды set –o noclobber. Однако все же есть способ даже при установленной опции noclobber переписать содержимое существующего файла с помощью операции перенаправления вывода или вывода ошибок. Для этого можно воспользоваться операторами: >| — перенаправление потока вывода с гарантированной перезаписью файла 2>| — перенаправление потока ошибок с гарантированной перезаписью файла Многие команды, работающие с текстом, позволяют использовать поток ввода вместо открытия на чтение файла. Для завершения ввода с клавиатуры следует нажать комбинацию клавиш <Ctrl>+<D> для передачи в поток ввода символа окончания потока. После этого команда, читающая стандартный поток ввода, завершит свою работу, пример: $ cat > f1 Privet <Ctrl>+<D> $ cat f1 Privet В примере команда cat > f1 получила через стандартный ввод текст Privet с клавиатуры, который был записан через стандартный поток вывода в файл f1. В сценариях оболочки часто возникает необходимость передать блок текста, находящийся непосредственно в тексте сценария, какой-либо команде этого же сценария. В таких случаях используют конструкцию here document (документ здесь) - << (два знака "меньше"). В таком случае для окончания ввода используется любой удобный символ вместо символа конца файла. Этот символ должен быть указан после << и должен быть единственным символом в строке. cat > file.txt << . Privet Medved lol . cat > file2.txt << "EOF" Vot escho primer razraz EOF |