мета-данные страницы
  •  

Это старая версия документа!


Глава 2: Основные команды и иерархия каталогов

2.1 Оболочка Bourne Shell (bash): /bin/sh

Оболочка (shell) — одна из самых важных частей системы Unix. Это программа, выполняющая команды, которые пользователи передает в терминал. Эти команды могут быть другими программами или встроенными функциями оболочки. Оболочка - это еще и среда программирования. Программисты Unix часто разбивают типичные задачи на более мелкие компоненты и применяют оболочку для управления ими.

Существует множество различных оболочек Unix (bash, zsh, fish…), но все они - производные от оболочки Bourne shell (/bin/sh), стандартной оболочки, разработанной в компании Bell Labs для ранних версий Unix. Любая система Unix требует ту или иную версию Bourne shell для корректной работы.

Система Linux использует расширенную версию оболочки Bourne под названием bash, или Bourne-again. Оболочка bash — это оболочка по умолчанию в большинстве дистрибутивов Linux, и каталог /bin/sh обычно указывает (через линк) на bash в системе Linux.

2.3. Основные команды

ls

Перечисляет содержимое каталога.

ls -l  # подробный список

cp

Копирует файлы.

cp file1 file2

mv

Переименовывает или перемещает файлы.

mv file1 file2

touch

Создает файл или обновляет его временную метку.

touch file

rm

Удаляет файл (без возможности восстановления).

rm file

echo

Выводит аргументы в стандартный вывод.

echo Hello again.

2.4. Перемещение по каталогам

Пути в linux начинаются с / - корневого каталога (root directory).

. - означает текущий каталог.

.. означает родительский для текущего каталога каталог.

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

cd

Изменяет текущий рабочий каталог. Без аргумента возвращает в домашний каталог. cd dir # перейти в каталог cd # в домашний каталог

mkdir

Создает новый каталог.

mkdir dir

rmdir

Удаляет пустой каталог.

rmdir dir
rm -r dir  # удалить каталог со содержимым (осторожно!)

Wildcards (шаблоны поиска)

Символы расширения имен файлов:

* - любое количество символов

? - ровно один символ

Заключить в одинарные кавычки для буквального вывода

echo *       # все файлы
echo at*     # начинаются на 'at'
echo *at     # заканчиваются на 'at'
echo b?at    # boat, brat и т.д.
echo '*'     # выведет звездочку

2.5. Команды среднего уровня

grep

Выводит строки, соответствующие выражению. Поддерживает регулярные выражения.

grep root /etc/passwd        # поиск 'root'
grep -i pattern file            # без учета регистра
grep -v pattern file            # инвертированный поиск
grep root /etc/*                # поиск в нескольких файлах

less

Просмотр больших файлов постранично. Пробел — вперед, b — назад, q — выход. Поиск: /word (вперед), ?word (назад), n — следующее совпадение.

less /usr/share/dict/words
grep ie /usr/share/dict/words | less

pwd

Выводит текущий рабочий каталог.

pwd
pwd -P  # истинный путь (без symlinks)

diff

Показывает различия между двумя файлами.

diff file1 file2
diff -u file1 file2  # унифицированный формат

file

Определяет тип файла.

file file

find и locate

find — поиск в реальном времени. locate — поиск по индексу (быстрее).

find dir -name file -print  # с кавычками для шаблонов: find dir -name '*pattern*'
locate file

head и tail

Просмотр начала/конца файла (по умолчанию 10 строк).

head /etc/passwd       # первые 10 строк
tail /etc/passwd       # последние 10 строк
head -5 /etc/passwd    # первые 5 строк
tail +5 /etc/passwd    # со строки 5

sort

Сортировка строк в алфавитно-цифровом порядке. -n для числовой сортировки.

sort file
sort -n file  # числовой порядок*

passwd

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

passwd

chsh

Изменяет оболочку пользователя (zsh, ksh, tcsh и т.д.).

chsh

2.7 Файлы с точками (дот-файлы)

Скрытые файлы, начинающиеся с точки (.). Не отображаются без параметра -a. Примеры: .bashrc, .login, .ssh.

ls -a          # показать дот-файлы
ls             # скрыты дот-файлы
.??*           # шаблон для дот-файлов (без . и ..)

2.8. Переменные окружения и оболочки

Переменные оболочки

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

STUFF=blah      # присвоение (без пробелов!)
echo $STUFF     # обращение к переменной

Переменные окружения

Передаются всем дочерним процессам. Создаются командой export.

STUFF=blah
export STUFF    # переменная окружения

2.9 PATH

Специальная переменная окружения - список каталогов для поиска команд (разделены двоеточием).

echo $PATH                          # показать PATH
PATH=dir:$PATH                      # добавить в начало
PATH=$PATH:dir                      # добавить в конец