Linux Команды (Shell Bash, Unix, SSH, PuTTY)
Список популярных Linux команд по категориям, которые нужно знать каждому разработчику.
На Windows для управления Linux сервером, используют бесплатную программу PuTTY - она самая популярная.
Файлы/Папки
Команда | Действие |
---|---|
mc | Midnight Commander - что-то вроде Norton Commander. |
ls | Показать список файлов и каталогов. |
ls -al или ll | Показать все файлы на сервере (даже скрытые) + размер + владельца + права на фалы + дату изменения. |
cd dir | Перейти в папку "dir". |
cd | Перейти в домашний каталог. |
pwd | Показать текущую папку (путь до текущего каталога). |
mkdir dir | Создать папку "dir". |
cp файл1 файл2 | Копировать файл1 в файл2. |
cp -r папка1 папка2 | Копировать папка1 в папка2. |
cp -rp папка1 папка2 | Копировать папка1 в папка2 сохраняя данные файлов (привелегии). |
mv папка1 папка2 | Переименовать / переместить папку. |
mv файл1 файл2 | Переименовать / переместить файл. |
rm file | Удалить файл с именем file. |
rm -r dir | Удалить папку "dir". |
rm -f file | Удалить форсированно file. |
rm -rf dir | Удалить форсированно каталог dir * . |
rm -rf folder/* | Опустошить папку folder . |
touch filename | Создать файл и с именем filename . |
> filename | Очистка файла. > access.log . |
cat | (concatenate) объединяет файлы. |
cat filename | Показать контент файла filename. |
cat filename | less | Показать контент файла filename + скроллинг. |
cat filename | grep 'искомая строка' | Выведет строки файла, включающие искомую строку. |
cat > filename | Создает файл с написанным контентом (ctrl+d для завершения). |
cat >> filename | Дополнить файл. |
echo "hello" > filename | Записать hello в файл. |
echo "hello" >> filename | Дополнить файл текстом hello. |
more filename | Показать содержимое файла. |
less filename +G | Показать последние строки файла. |
head filename | Показывает первые 10 строк из файла. |
tail filename | Показывает последние 10 строк из файла. |
tail -f filename | Показывает содержимое file по мере роста, начинает с последних 10 строк. |
Пример записи текста в файл
cat > filename This is text, perhaps pasted in from some other source. Or else entered at the keyboard, doesn't matter. [Ctrl+D]
Использование оператора >>
будет добавлять данные в конце файла, а использование >
будет перезаписывать содержимое файла, если оно уже существует.
Также важно знать, что по умолчанию echo
добавляет символ новой строки в конце. Его можно подавить с помощью флага -n
:
echo -n "hello" >> filename
Занимаемое место
Команда | Действие |
---|---|
df | Покажет информацию об использовании диска. |
df -h | Тоже что df только для людей (в M, GB). |
du | Покажет информацию об использовании диска файлами и папками. |
du -sh * | Посчитать занимаемое место всех папок в указанной папке. |
du -sh * | sort -hr | Отсортировать по убыванию. |
du -sh dir | Узнать размер папки dir. |
Процессы
Команда | Действие |
---|---|
ps | Показывает текущие активные процессы |
top | Показывает все процессы |
kill процесс | Убивает процесс с id "процесс" |
killall проц | Убивает все процессы с именем проц |
bg | Показывает список фоновых задач, а также остановленных |
bg процесс | Продолжит выполнение остановленного процесса в фоне |
chmod - права доступа
Команда | Действие |
---|---|
chmod 755 файл | Задает права 755 для файла |
chmod o-r,a-w month.txt text.txt | Запретим Остальным читать и всем изменять два файла. |
find /path/to/dir -type f -exec chmod 0644 {} | Укажет права 644 на все файлы на сервере |
find /path/to/dir -type d -exec chmod 0755 {} | Укажет права 755 на все папки на сервере |
chown - владелец и группа
chown пользователь опции /путь/к/файлу
Опции:
-c
,--changes
- подробный вывод всех выполняемых изменений.-f
,--silent
,--quiet
- минимум информации, скрыть сообщения об ошибках.--dereference
- изменять права для файла к которому ведет символическая ссылка вместо самой ссылки (поведение по умолчанию).-h
,--no-dereference
- изменять права символических ссылок и не трогать файлы, к которым они ведут.--from
- изменять пользователя только для тех файлов, владельцем которых является указанный пользователь и группа.-R
, --recursive - рекурсивная обработка всех подкаталогов.-H
- если передана символическая ссылка на директорию - перейти по ней.-L
- переходить по всем символическим ссылкам на директории.-P
- не переходить по символическим ссылкам на директории (по умолчанию).
Команда | Действие |
---|---|
chown root ./dir1 | Изменим владельца папки dir1 на root. |
chown root:root ./dir2 | Изменим владельца и группу папки dir1 на root. |
chown -R root:root ./dir3 | Изменим владельца и группу папки dir1 и всех вложенных файлов/папок на root. |
chown --from=root:root www-data:www-data -cR ./ | Изменим владельца и группу на www-data только у файлов/папок, владелец и группа которых root в текущем каталоге. |
SSH
Команда | Действие |
---|---|
ssh user@host | Подключает к хосту "host" как "user" |
ssh -p port user@host | Подключает к хосту "host" на порт "port" как "user" |
ssh-copy-id user@host | Добавит ключ на "host" для пользователя "user", при этом операция входа будет происходить без логина, а через ключ |
Поиск файлов/папок/в файлах
find
Команда | Действие |
---|---|
find / -type d -name 'work*' | Ищет папку с именем начинающимся с work . |
find / -type f -name '*work.rb' | Ищет файл заканчивающийся на work.rb . |
find / -regex ".*\.\(svg\|png\)$" | Ищет все svg и png файлы по регулярке. |
find ~/ -regex ".*/Docs/Для\ работы/.*" | Ищет по вхождению пути. |
find -name '*.js' -not -path '/dir/*' | Исключить директорию. |
locate файл | Найдет все файлы с именем "файл". |
Мануал: https://www.geeksforgeeks.org/find-command-in-linux-with-examples/
ripgrep
Это отдельный пакет https://github.com/BurntSushi/ripgrep
Установка на убунту:
$ sudo apt-get install ripgrep // или так (последняя версия) // Релизы: https://github.com/BurntSushi/ripgrep/releases $ curl -LO https://github.com/BurntSushi/ripgrep/releases/download/13.0.0/ripgrep_13.0.0_amd64.deb $ sudo dpkg -i ripgrep_13.0.0_amd64.deb
Команда | Действие |
---|---|
rg -i "hello" /sys/ | ripgrep - аналог grep. Искать слово hello во всех файлах папки /sys/ (регистронезависимый поиск). |
rg -ig access.log "/api/wp" | Поиск подстроки "/api/wp" в файле access.log |
grep
grep [options] pattern [file...]
Примеры:
# Ищет "слово" в "файле". grep 'слово' file # Поиск по регулярке grep "\<[A-Za-z].*\>" file # Искать слово hello во всех файлах папки /sys/. grep -r hello /sys/ # Искать слово text во всех файлах текущей папки. ignore-case (i) line-numbers (n) grep -inIR "text"
# Case insensitive: match any line in foo.txt # that contains "bar" grep -i bar foo.txt # match any line in bar.txt that contains # either "foo" or "oof" grep -E "foo|oof" bar.txt # match anything that resembles a URL in # foo.txt and only print out the match grep -oE "https?:\/\/((\w+[_-]?)+\.?)+" foo.txt # can also be used with pipes: # match any line that contains "export" in # .bash_profile, pipe to another grep that # matches any of the first set of matches # containing "PATH" grep "export" .bash_profile | grep "PATH" # follow the tail of server.log, pipe to grep # and print out any line that contains "error" # and include 5 lines of context tail -f server.log | grep -iC 5 error # can also be used with pipes: # match any line that contains "export" in # .bash_profile, pipe to another grep that # matches any of the first set of matches # containing "PATH" grep "export" .bash_profile | grep "PATH"
Find all files containing specific text (string) on Linux.
# search pattern in all files: grep -rnw '/path/to/somewhere/' -e 'pattern' # only search through those files which have .c or .h extensions: grep --include=\*.{c,h} -rnw '/path/to/somewhere/' -e "pattern" # exclude searching all the files ending with .o extension: grep --exclude=\*.o -rnw '/path/to/somewhere/' -e "pattern" # exclude the dirs dir1/, dir2/ and all of them matching *.dst/: grep --exclude-dir={dir1,dir2,*.dst} -rnw '/path/to/search/' -e "pattern"
Опции:
# Matching options: -r, --recursive # All files recursively # follow symlinks only if they are on the command line, but # skip symlinks that are found recursively. -R, --dereference-recursive # All files recursively (follow all symlinks). -e, --regexp=PATTERN -f, --file=FILE -i, --ignore-case # Forgets about case sensitivity -v, --invert-match -w, --word-regexp # Ищем конкретное слово -x, --line-regexp -I # Skip binary files # Pattern options: -G, --basic-regexp # basic regular expression (default) -E, --extended-regexp # extended regular expression -P, --perl-regexp # perl compatible regular expression -F, --fixed-strings # list of fixed strings # Output Options: -n, --line-number # Show the line numbers of the matches -c, --count # print the count of matching lines. suppresses normal output --color[=WHEN] # applies color to the matches. WHEN is never, always, or auto -m, --max-count=NUM # stop reading after max count is reached -o, --only-matching # only print the matched part of a line -q, --quiet, --silent -s, --no-messages # suppress error messages about nonexistent or unreadable files
Мануал: https://help.ubuntu.com/community/grep
Шпаргалки: https://devhints.io/grep https://quickref.me/grep
Информация о системе (диски, файлы, размеры)
Команда | Действие |
---|---|
date | Показать время и дату |
cal | Показать календарь |
uptime | Проверить аптайм (время безотканой работы) |
w | Покажет количество пользователей, которые в данный момент используют сервер |
whoami | Покажет Ваш логин |
finger юзер | Покажет инфу о пользователе "юзер" |
uname -a | Информация про ядро |
cat /proc/cpuinfo | Информация про CPU |
cat /proc/meminfo | Информация про память |
man команда | Покажет все о команде |
free | Сколько памяти используется |
whereis программа | Найдет место расположения программы |
which программа | Определяет, что "программа" будет запущена первой |
vmstat | Покажет загрузку процессора |
ln (ссылки)
Ссылки в Linux бывают двух типов:
-
Символические
(symbolic или soft link) — это специальный файл, который является ссылкой на другой файл или каталог.Символическая ссылка не содержит в себе внутри копии самого файла, на которую она указывает. Она является всего лишь указателем на файл. Так. если вы удалить исходный файл, мягкая ссылка не будет иметь никакой ценности, поскольку она будет указывать на несуществующий файл.
Связь между символической ссылкой и файлом, на который она указывает, является «мягкой». Если удалить символическую ссылку, то файл, на который она указывает, не удаляется.
При создании символических ссылок можно указывать относительный путь до целевого файла. В таком случае ссылка считает, что относительный путь указан относительно каталога, в котором создана сама ссылка (но не относительно каталога, из которого она была создана).
Soft symlink -
Жёсткие
(hard link) - является синонимом для существующего файла. Когда вы создаете жесткую ссылку, создается дополнительный указатель на существующий файл, но не копия файла.Жесткие ссылки выглядят в файловой структуре как еще один файл.
Даже если вы удалите оригинальный файл, жесткая ссылка все равно будет содержать данные оригинального файла. Поскольку жесткая ссылка действует как зеркальная копия исходного файла.
В Linux каждый файл имеет уникальный идентификатор - индексный дескриптор (inode). Это число, которое однозначно идентифицирует файл в файловой системе. Жесткая ссылка и файл, для которой она создавалась имеют одинаковые inode. Поэтому жесткая ссылка имеет те же права доступа, владельца и время последней модификации, что и целевой файл. Различаются только имена файлов. Фактически жесткая ссылка это еще одно имя для файла.
Жесткие ссылки появились раньше, чем символические, но сейчас уже устаревают. В повседневной работе жесткие ссылки используются редко.
Hard link
Синтаксис:
ln опции исходный_файл имя_ссылки
Примеры:
«символьная» ссылка (symbolic link)
ln -s /home/pingvinus/myfile.txt mylink ls -li 792300 -rw-rw-r-- 1 kama kama 13-фев-13 13:07 myfile.txt 787622 lrwxrwxrwx 1 kama kama 13-фев-13 13:08 mylink -> /home/kama/myfile.txt # ссылка и целевой файл имеют разные inode (792300 и 787622).
«жёсткая» ссылка (hard link)
ln /home/pingvinus/myfile.txt mylink ls -li 787622 -rw-rw-r-- 2 kama kama 13-фев-13 13:19 myfile.txt 787622 -rw-rw-r-- 2 kama kama 13-фев-13 13:19 mylink # Видим что оба файла имеют одинаковый inode=787622, # так как являются фактически разными именами для одного файла # (inode которого 787622).
Подробнее: https://pingvinus.ru/note/ln
Архивы
Команда | Действие |
---|---|
tar cf myfile.tar | Запаковать "файлы" в архив myfile.tar |
tar xf myfile.tar | Распаковать myfile.tar |
tar czf myfile.tar.gz dir | Сжать с использованием Gzip (особое сжатие на сервере) |
tar xzf myfile.tar.gz | Распаковать Gzip-файл |
tar cjf myfile.tar.bz2 | Сжать с использованием Gzip |
tar xjf myfile.tar.bz2 | Распаковать Bzip2-файл |
gzip myfile | Сжать myfile и переименовать в его в myfile.gz |
gzip -d myfile.gz | Распаковать myfile.gz в myfile |
zip archive.zip filename | Сжать файл filename в архив archive.zip . |
zip –r archive.zip dirname | Сжать папку dirname в архив archive.zip . |
zip -d file.zip "assets/*" | Удалить все файлы из папки assets/* внутри zip архива file.zip |
unzip archive.zip | Распаковать архив в текущую папку |
unzip –d dirname archive.zip | Распаковать архив в папку dirname |
zip --help или unzip --help | Справка по командам и параметрам |
man zip или man unzip | Расширенная документация |
tar [options] [archive-file] [file or directory to be archived] Options: -c : Creates Archive -x : Extract the archive -f : creates archive with given filename -t : displays or lists files in archived file -u : archives and adds to an existing archive file -v : Displays Verbose Information -A : Concatenates the archive files -z : zip, tells tar command that creates tar file using gzip -j : filter archive tar file using tbzip -W : Verify a archive file -r : update or add file or directory in already existed .tar file -C dir : change current directory to dir before performing any operations
Система, Apache, MySQL и База данных
Команда | Действие |
---|---|
echo $PATH | Показать все системные пути в переменной $PATH |
apachectl restart | Перезапуск сервера Apache |
apachectl startssl | Запуск сервера Apache |
apachectl stop | Выключение сервера Apache |
/usr/local/etc/rc.d/mysql-server restart | Перезапуск MySQL |
mysqldump -u юзер_БД -p пароль_БД имя_БД > /путь/file.sql | Создать копию базы данных бд.sql |
mysql -u юзер_БД -p пароль_БД -D имя_БД < /путь/file.sql | Импортировать бд.sql в базу данных mysql на сервере |
exit | Выйти из системы |
reboot | Перезапуск сервера |
alias wpcli='php7.1 /usr/local/bin/wp' | Создает алиас wpcli для команды php7.1 /usr/local/bin/wp . Работает только на время сессии. |
alias -p | Показать все существующие алиасы. |
unalias wpcli | Удаляет алиас wpcli |
Копирование
scp (ssh)
Копирование файла с удаленного хоста на локальный хост:
$ scp username@from_host:file.txt /local/directory/
Копирование файла с локального хоста на удаленный хост:
$ scp file.txt username@to_host:/remote/directory/
Копирование каталога с удаленного хоста на локальный хост:
$ scp -r username@from_host:/remote/directory/ /local/directory/
Копирование каталога с локального хоста на удаленный хост:
$ scp -r /local/directory/ username@to_host:/remote/directory/
Копирование файла с удаленного хоста на удаленный хост:
$ scp username@from_host:/remote/directory/file.txt username@to_host:/remote/directory/
Заметки:
-
Хост
может бытьIP
илиимя домена
. После нажатия Enter будет предложено ввести пароль SSH. -
Хотя на этой странице рассматривается SCP Linux, инструкции будут работать и на Mac с помощью "Терминала". Вы также можете использовать WinSCP для выполнения этой задачи на ПК/сервере Windows.
- При копировании исходного файла в целевой файл, который уже существует, SCP заменит содержимое целевого файла. Поэтому будьте осторожны.
SCP options | |
---|---|
–r | Рекурсивное копирование целых каталогов. Обратите внимание, будет следование по символическим ссылкам, встречающиеся при обходе дерева. |
-C | Включить сжатие. Передает флаг -C в ssh для включения сжатия. |
-P | port - Указывает порт для подключения к удаленному хосту. Обратите внимание, что эта опция записывается с большой буквы 'P'. |
-p | Сохраняет mtime, atime, modes оригинального файла. |
-q | Тихий режим: отключает индикатор выполнения, а также warning'и и диагностические сообщения от ssh. |
-o | ssh_option - Может использоваться для передачи опций ssh в формате, используемом в ssh_config. |
-v | Развернутый режим. Печать отладочных сообщений о ходе выполнения. Это полезно при отладке проблем с подключением, аутентификацией и конфигурацией. |
-l | limit - Ограничивает используемую пропускную способность, указывается в Кбит/с. |
rsync
Онлайн конфигуратор команды rsyncinator.app.
rsync опции источник назначение
Синхронизация папок на локальном компьютере
rsync -azvh /home/user/documents /mnt/backup_dir/
Синхронизация с удаленным сервером
rsync -azv /home/user/documents/ root@123.123.133.133:/home/
Синхронизация файлов по ssh
rsync -avzh -e ssh root@123.123.133.133:/home/ /home/user/documents/ # Или rsync -avzh --rsh=ssh root@123.123.133.133:/home/ /home/user/documents/
Порт для ssh:
rsync -avzh -e "ssh -p 22" root@123.123.133.133:/home/ /home/user/documents/
Установка прав файлы/папки при копировании (эти права будут у файлов после копирования):
Флаг -a
включает --perms
параметр (сохранить исходные права). Допустим нам нужно, чтобы после копирования права на файлы/папки отличались от источника. Для этого мы можем использовать параметр --chmod
, в котором указать какие права якобы установлены у источника, и они будут скопированы в папку назначения.
Здесь префикс D
- directory, F
- file.
rsync -avzh --chmod=D777,F666 --rsh=ssh root@1.1.1.1:source/ destination/ # Другой вариант записи --chmod=777 --chmod=ugo=rwX
Исключение файлов
rsync --exclude 'file1.txt' source/ destination/ rsync --exclude 'file1.txt' --exclude 'dir1/' source/ destination/ rsync --exclude={file1.txt,dir1/} source/ destination/ rsync --exclude={'file1.txt','dir1/'} source/ destination/ rsync --exclude={'*.txt','dir1/'} source/ destination/ # list.txt here is a file where every exclude rule is on separate line rsync --exclude-from={'list.txt'} source/ destination/
При синхронизации каталогов (папок) через rsync ВАЖНО добавлять слэш /
в конце пути источника.
-
Если исходный путь НЕ содержит
/
на конце, rsync создаст сам каталог (вместе с содержимым) в каталоге назначения. Но обычно мы ожидаем что будет скопированно только содержимое каталога в папку назначения. Например:# неправильно rsync -av /path/to/source /path/to/destination
Эта команда создаст папку
source
(вместе с содержимым) в папке/path/to/destination
- т.е. по итогу у нас появится папка/path/to/destination/source
. Обычно это НЕ то что мы ожидаем! -
Если исходный путь содержит
/
на конце, rsync скопирует только содержимое исходной папки в папку назначения. Например:# правильно rsync -av /path/to/source/ /path/to/destination/ # тоже правильно, но вызывает вопросы rsync -av /path/to/source/ /path/to/destination
Обе эти команды сработают одинаково и скопируют содержимое
/path/to/source
в/path/to/destination
. Обычно, именно этого мы и ожидаем.
Таким образом, всегда нужно добавлять слэш в конце источника. Его можно не добавлять, когда вы хотите создать сам каталог (вместе с содержимым) в папке назначения.
Дефолтные параметры rsync:
rsync -r -l -t -p -g -o -D
Дефолтные параметры могут отличаться в разных версиях.
--no-OPTION
- Можно отключить опцию добавив префикс no-
к названию опции (в короткому или длинному названию). Например: --no-perms
, --no-W
.
Не все опции могут иметь префикс no-
, а только базовые (некоторые опции это обертки - набор базовых опций).
Еще пример: вы используете опцию -a
(--archive), но вам не нужно копировать владельца -o
(--owner). Вместо того чтобы превращать -a
в -rlptgD
, вы можете написать так -a --no-o
(или -a --no-owner
).
Порядок важен: если записать так: --no-r -a
, то -r
опция останется включенной. Нужно писать так -a --no-r
.
Опция | описание |
---|---|
-e | --rsh=COMMAND Указать оболочку для удаленного доступа, например, ssh. |
-a | --archive Режим архивирования - созраняет все metadata и permissions оригинальных файлов. |
-z | --compress Сжимать файлы перед передачей. |
-v | --verbose Выводить подробную информацию о процессе копирования. |
-h | --human-readable Выводить числа в удобочитаемом формате. |
-q | --quiet Минимум информации. |
-c | --checksum Проверка контрольных сумм для файлов. |
-u | --update Пропустить файлы, которые новее в папке назначения. |
-l | --links Копировать symlinks как symlinks. |
-L | --copy-links Превратить symlink в папку с содержимым. |
-H | --hard-links Копировать жесткие ссылки. |
-t | --times Сохранять время модификации. |
-p | --perms Сохранять права для файлов. |
-o | --owner Сохранять владельца (super-user only). |
-g | --group Сохранять группу. |
-W | --whole-file Копировать файлы целиком. |
-r | --recursive Перебирать директории рекурсивно. |
-R | --relative Относительные пути. |
-b | --backup Создание резервной копии. |
-x | --one-file-system Работать только в этой файловой системе - не пересекать границы файловой системы. |
--delete | Удалять файлы которых нет в источнике. |
--chmod=CHMOD | Пермишены файлов, которые якобы установлены на файлах источниках. |
--exclude=PATTERN | Исключить файлы по шаблону. |
--exclude-from=FILE | Считать паттерн исключения из указанного файла. |
--include=PATTERN | Включить файлы по шаблону. |
--include-from=FILE | Считать паттерн включения из указанного файла. |
--progress | Выводить прогресс передачи файла. |
--stats | Показать статистику передачи файлов. |
--version | -V Версия утилиты. |
--dry-run | -n Запустить тестово и реально ничего не делать. |
--no-perms | Не сохранять permissions оригинальных файлов (когда -p указан). |
--no-recursive | Отключить рекурсию. |
Подробнее: https://man7.org/linux/man-pages/man1/rsync.1.html
Сеть
Команда | Действие |
---|---|
ping хост | Показывает пинг до хоста |
whois dom.com | Показывает WHOIS о домене "dom.com" |
dig dom.com | Показывает на каких DNS находится домен "dom.com" |
dig -x host | Реверсивно искать host |
wget myfile | Закачивает на компьютер файл myfile |
wget -c file | Если закачка была остановлена, то эта команда может ее продолжить |
wget https://www.mysite.com/myfile.zip | Загрузит файл из интернета (по адресу https://www.mysite.com/myfile.zip) в текущую директорию на сервере |
Полезные команды
Команда | Действие |
---|---|
cd - | Вернуться в предыдущую директорию. Пример. |
pushd / popd | Сохранить и вернуться к директории. Пример. |
history | Показать историю всех команд. HISTTIMEFORMAT="%Y-%m-%d %T " в ~/.bashrc , чтобы добавить время напротив каждой команды когда она была использована. Пример. |
tail -f /path/to/file | Показать конец файла и вотчить его изменения. |
truncate -s 0 /path/to/file | Опустошить файл. |
{command} | column -t | Отобразить результат в виде колонок. |
which {command} | Например which php покажет путь до бинарного файла или ссылки на него который отвечает за команду. Пример. |
sudo !! | Повторяет последнюю команду с префиксом sudo. |
exit | Разлогиниться / выйти. |
Комбинации клавиш
Команда | Действие |
---|---|
Middle Mouse | Вставить выделение. |
Ctrl C | Прекратить текущую команду. |
Ctrl D | Выйти из системы\сменить пользователя (вместо этого можно использовать команду exit). |
Ctrl U | Удаляет строку. |
Ctrl Z | Остановка текущей команды и продолжить с fg или bg. |
Ctrl R | Поиск по истории комманд. |
Ctrl A | Перейти к началу строки. |
Ctrl ← \ Alt B | Перевести курсор в начало предыдущего слова. |
Ctrl → \ Alt L | Перемещение курсора в конец слова. |
Ctrl W | Вырезать слово перед крусором. |
Ctrl Y | Вставить ранее вырезанный текст. |
Ctrl K | Удалить все после курсора. |
Ctrl Y | Вернет текст назад. |
Ctrl U | Удалить всю строку. |
Менее полезные
Команда | Действие |
---|---|
Alt T | Поменять местами слова перед курсором. |
Ctrl T | Поменять местами символы перед курсором. |
Alt U | Перевести слово после курсора в ВЕРХНИЙ регистр. |
Ctrl D / Delete | Удалить один символ после позиции курсора.
Полезные ссылки
- Как запустить две или более команд терминала одновременно в Linux - символы
; ' && ||
Коды ошибок (общепринятый стандарт)
Команда exit
в bash принимает целые числа от 0
до 255
, в большинстве случаев достаточно 0
и 1
, однако существуют и другие зарезервированные коды выхода, которые могут использоваться для более специфических ошибок.
В Linux Documentation Project есть таблица зарезервированных кодов выхода и того, для чего они используются.
Exit Code Number | Meaning | Example | Comments |
---|---|---|---|
1 | Catchall for general errors | let "var1 = 1/0" | Miscellaneous errors, such as "divide by zero" and other impermissible operations |
2 | Misuse of shell builtins (according to Bash documentation) | empty_function() {} | Missing keyword or command, or permission problem (and diff return code on a failed binary file comparison). |
126 | Command invoked cannot execute | /dev/null | Permission problem or command is not an executable |
127 | "command not found" | illegal_command | Possible problem with $PATH or a typo |
128 | Invalid argument to exit | exit 3.14159 | exit takes only integer args in the range 0 - 255 (see first footnote) |
128+n | Fatal error signal "n" | kill -9 $PPID of script | $? returns 137 (128 + 9) |
130 | Script terminated by Control-C | Ctl-C | Control-C is fatal error signal 2, (130 = 128 + 2, see above) |
255* | Exit status out of range | exit -1 | exit takes only integer args in the range 0 - 255 |
Согласно приведенной выше таблице, коды выхода 1 - 2, 126 - 165 и 255 имеют специальные значения, поэтому их следует избегать для пользовательского выхода. Завершение скрипта с кодом exit 127, может, привести к путанице при поиске неисправностей. Во многих сценариях в качестве общего выхода при ошибке используется exit 1. Поскольку код выхода 1 означает разные ошибки, он не особенно полезен при отладке.
Была попытка систематизировать номера статусов выхода, но она предназначена для программистов на языках С и С++. Аналогичный стандарт для скриптинга, возможно, будет уместен. Автор данного документа предлагает ограничить определяемые пользователем коды выхода диапазоном 64 - 113 (в дополнение к 0 - успех), чтобы соответствовать стандарту C/C++. Это позволит ограничиться 50 допустимыми кодами и упростит поиск и устранение неисправностей.
Примечание: Выполнение команды echo $?
из командной строки после выхода из сценария дает результат, соответствующий приведенной выше таблице, только в bash или sh. Запуск C-shell или tcsh в некоторых случаях может дать другие значения.
--
Использовал при написании https://ru.hostings.info/schools/komandy-dlya-putty-ssh-unix-i-linux-serverov.html