Небольшие приёмы bash, которые заметно ускоряют работу в терминале Linux.
Не помните название команды
Команда apropos ищет по описаниям справочных страниц. Помогает, когда знаете, что нужно сделать, но не помните, какой утилитой:
apropos "disk usage"
Исправить предыдущую команду
Символ ^ заменяет текст в последней команде и сразу выполняет её:
systemctl restart nginx
^restart^status # выполнится systemctl status nginx
История команд
history # вся история
!45 # выполнить команду номер 45
!45:p # только показать команду номер 45
!-5 # выполнить пятую с конца
!more:p # показать последнюю команду, начинающуюся с more
Подставить аргументы предыдущей команды:
mkdir date
cd !* # выполнится cd date
Переходы между каталогами
cd ~ # в домашний каталог (или просто cd)
cd - # в каталог, где были до этого
cd .. # на уровень выше
Фоновые задачи
cp file1 file2 & # запустить в фоне
nohup cp file1 file2 & # в фоне и продолжить работу после закрытия терминала
jobs -l # список фоновых задач
fg %1 # вернуть задачу 1 на передний план
bg %1 # продолжить остановленную (Ctrl+Z) задачу 1 в фоне
Несколько команд в одной строке
mkdir mydir; cd mydir # вторая выполнится в любом случае
mkdir mydir && cd mydir # вторая выполнится, только если первая прошла успешно
mkdir mydir || cd mydir # вторая выполнится, только если первая завершилась ошибкой
Права доступа цифрами
Каждое право имеет вес: чтение (r) — 4, запись (w) — 2, выполнение (x) — 1. Цифра — их сумма для владельца, группы и остальных. Например, chmod 750 даёт владельцу всё, группе чтение и выполнение, остальным ничего.
rwx = 7 (4+2+1)
rw- = 6 (4+2+0)
r-x = 5 (4+0+1)
r-- = 4 (4+0+0)
-wx = 3 (0+2+1)
-w- = 2 (0+2+0)
--x = 1 (0+0+1)
--- = 0
Склеить строки файла
Заменяет переводы строк на вертикальную черту и выводит всё одной строкой:
cat files | tr '\n' '|'
Напоследок
Утилита cowsay выводит текст от лица коровы. Пользы никакой, но настроение поднимает:
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||