Skip to content

Latest commit

 

History

History
 
 

Shell

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 

Shell

Unix - UNiplexed Information and Computing System

Терминал - программа, которая запускает командную оболочку внутри себя.
Речь пойдёт про оболочку shell

Работа с терминалом

О работе с командами

У программ бывают принимаемые опции и аргументы. Опции начинаются с - или --
Аргументы и опции отделяются от команды символом пробела и между собой разделяются пробелами.
Хорошим тоном считается писать опиции перед аргументами.
Если значение содержит пробелы, то это значение нужно обернуть в двойные " или одинарные кавычки '
Ещё пробел можно экранировать символом \
Большинство опций имеют два названия (короткое для консоли и длинное для скриптов). Например -v и --version
ls -a -l равносильно ls -al
; -- Разделитель команд, соответствует переносу строки.
&& и || -- имеют такой же смысл как в языке C, только истиной является код завершения 0
| -- Pipeline. Конвейер для подачи вывода программы слева на вход программе справа.
Например cat <source> | grep Dog | uniq | sort
Вывод команды можно использовать фрагментом другой команды, если обернуть её в обратные кавычки `
$? -- код возврата предыдущей выполненной команды.
!! -- выполнить предыдущую команду.

История команд хранится в обычном файле .bash_history
Стрелками up/down можно перемещаться по недавним командам.

Чтение документации

Открыть режим чтения документации можно командой man [раздел] <имя команды>
Документация разбита на несколько разделов:

  • 1 -- команды оболочки
  • 1p -- команды оболочки, функциональность которых соответствует стандарту POSIX
  • 2 -- системные вызовы ядра операционной системы
  • 3 -- функции стандартной библиотеки языка C
  • 3p -- Си-функции POSIX API
  • 4 -- описания модулей ядра и системных устройств
  • 5 -- описания форматов конфигурационных файлов
  • 6 -- описания программ для X11
  • 7 -- различные руководства, не попадающие под какую-либо классификацию
  • 8 -- руководства по администрированию
  • n -- руководства Tcl.

Документация открывается в пейджере less, вот основы работы с ним:

  • q -- выход
  • h -- help
  • f -- вперёд
  • b -- назад
  • /<строка> + Enter -- поиск строки
    • переход по совпадениям с помощью n и N

Необязательные опции в документации обозначаются в квадратных скобках []
| в документации это исключающее или. Например a|b означает, что можно написать либо только a, либо только b

Принятые обозначения клавиатурных сочетаний

  • C-Буква -- одновременное нажатие Ctrl и буквенной клавиши
  • M-Буква -- одновременное нажатие Alt и буквенной клавиши
  • C-Буква1 Буква2 -- сначала одновременное нажатие Ctrl и Буква1, затем отпустить Ctrl и нажать Буква2
  • C-Буква1 C-Буква2 -- нажать Ctrl, затем нажать и отпустить Буква1, не отпуская Ctrl нажать и отпустить Буква2

Полезные клавиатурные сочетания

  • C-d -- сигнал завершения ввода
  • C-c -- сигнал завершения процесса
  • C-s -- приостановить процесс
  • C-q -- продолжить выполнение процесса
  • C-l -- аналог команды clear
  • C-a -- поместить курсор в начало строки
  • C-e -- поместить курсор в конец строки
  • C-u -- удалить всё от начала строки до курсора
  • C-k -- удалить всё от курсора до конца строки
  • C-w -- удалить одно слово
  • C-y -- вставить удалённый текст
  • C-p -- показать предшествующую в истории команду
  • C-n -- показать следующую в истории команду
  • C-r -- рекурсивный поиск по истории

Файловая система

Все файлы и каталоги находятся внутри корневого каталога /
Текущий каталог обозначается как .
Каталог на уровень выше как ..
Можно сказать, что всё есть файл. Регистр важен. Понятие "расширение файла" отсутствует, но для удобства использования существуют суффиксы имени.
Например, файловому архиву в формате tar, сжатому компрессором lzma, часто дают суффикс .tar.lzma
Скрытый файл обозначается точкой перед именем .mySecrets
Переименование файла равносильно перемещению.

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

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

Файловые дескрипторы

Каждый из потоков по факту тоже является файлом. Вот они по номерам:

  1. STDIN
  2. STDOUT
  3. STDERR

Перенаправление потоков:

> перезаписывает старый или создаёт новый файл
>> добавляет в конец файла
< передача файла на вход программе слева
>/dev/null игнорирование вывода
&>отправляет в файл оба потока (STDIN и STDOUT)
2>file STDERR перенаправляется в файл
2>&1 STDERR перенаправляется в STDOUT

Можно отправлять потоки в разные файлы .prog 1>out.txt 2>err.txt
Или объединить их в один .prog >combined_out.txt 2>&1

Команды

// TODO
cat
cd
chmod
chown
clear
cp
curl
cut
df
diff
echo
find
grep
head
hexdump
hostname
iconv
jobs
ls
mkdir
mv
objdump
od
pwd
readelf
rm
rmdir
sort
ssh
sudo
sudo apt autoremove
sudo apt get
sudo apt ugrade
sudo apt update
sudo su
tac
tail
tldr
touch
uniq
valgrind
wc
wget
which
whoami