Видели про-юзеров Linux, которые эффективно работают в терминале? Хотите так же? Не вопрос: в этой статье мы собрали некоторые из полезных команд, которые помогут вам сэкономить время и повысить продуктивность.
Использование табов для автодополнения
Когда вы начинаете что-то вводить в терминале, вы можете нажать Tab и вам будут предложены возможные варианты продолжения, которые начинаются с введённой вами строки.
Например, если вы хотите скопировать файл с именем file1.txt
, вы можете ввести только cp f
, нажать Tab и увидеть возможные варианты.
$ cp f
file1.txt file2.txt file3.txt file4.txt
$ cp f
Также Tab можно использовать для автодополнения команд.
Возвращение в последнюю рабочую директорию
Представьте ситуацию, когда вы спустились глубоко по иерархии папок, затем перешли в папку, которая находится в совершенно другом месте, а потом поняли, что вам нужно вернуться обратно. В таком случае вам всего лишь нужно ввести следующую команду:
cd -
Она вернёт вас в последнюю рабочую директорию и вам не придётся вручную вводить длинный путь.
Примечание Последняя рабочая директория хранится в переменной окружения OLDPWD
; вы можете использовать эту переменную для своих целей (попробуйте echo $OLDPWD
) или даже подложить команде cd -
другой путь (OLDPWD=/usr/bin cd -
).
Возвращение в домашнюю директорию
Это слишком очевидно. Чтобы вернуться в домашнюю директорию из любого места, вы можете использовать следующую команду:
cd ~
А вообще, можно ограничиться командой cd
и получить тот же результат. В большинстве современных дистрибутивов Linux эта команда должна сработать.
Вывести содержимое каталога
Вы, наверное, догадываетесь, какая команда нужна для отображения содержимого каталога. Всем известно, что для этого можно использовать ls -l
.
Однако не все знают, что можно обойтись командой ll
.
Конечно, всё зависит от дистрибутива, но в большинстве случаев вы сможете воспользоваться этой командой.
$ ll
total 44
-rw-r--r--. 1 root root 720 May 31 2016 bootchart.conf
-rw-r--r--. 1 root root 615 Jun 22 14:11 coredump.conf
-rw-r--r--. 1 root root 0 Apr 20 16:56 dont-synthesize-nobody
-rw-r--r--. 1 root root 1027 Jun 22 14:11 journald.conf
-rw-r--r--. 1 root root 1042 Jul 18 19:03 logind.conf
drwxr-xr-x. 2 root root 4096 Jul 18 19:05 network
-rw-r--r--. 1 root root 688 Jul 18 19:03 resolved.conf
drwxr-xr-x. 16 root root 4096 Sep 15 13:29 system
-rw-r--r--. 1 root root 1682 Jul 18 19:03 system.conf
-rw-r--r--. 1 root root 677 Jul 18 19:03 timesyncd.conf
drwxr-xr-x. 2 root root 4096 Jul 18 19:05 user
-rw-r--r--. 1 root root 1130 Jun 22 14:11 user.conf
Примечание На самом деле, ll
является не отдельной командой, а псевдонимом для ls -l
.
Запуск нескольких команд за раз
Допустим, вам нужно запустить несколько команд одну за другой. Что вы будете делать? Подождёте завершения первой команды, а затем запустите следующую?
Вместо этого вы можете использовать разделитель ;
. Таким образом можно запустить несколько команд на одной строке. Вам не нужно ждать, пока какая-то из команд завершит свою работу, чтобы запустить следующую.
command_1; command_2; command_3
Примечание При запуске команд таким образом, они выполняются не параллельно, а последовательно. Если вам нужен именно первый вариант, то используйте конструкцию (command_1 &); (command_2 &)
.
Запуск нескольких команд за раз при условии, что предыдущая команда была выполнена успешно
Как запускать несколько команд за раз вы уже знаете. А как убедиться, что команды не завершились с ошибкой?
Допустим, вы хотите собрать код и запустить его в случае успешной сборки.
В этом случае вы можете использовать разделитель &&
, который запускает следующую команду только при условии, что предыдущая успешно завершилась.
command_1 && command_2
Как пример использования &&
можно привести команду sudo apt update && sudo apt upgrade
для обновления системы через терминал на системах, основанных на Debian.
Время убивать
Есть несколько способов «убить» программу. Команда killall
сделает это по имени, а kill
требуется номер процесса. Например, killall chrome
убьёт все процессы chrome. Также можно послать любому процессу сигнал прерывания (как Ctrl+C) с помощью kill -INT <номер процесса>
.
Пора остановиться
Чтобы поставить работающую команду на паузу нажмите комбинацию Ctrl+Z, а чтобы продолжить — %
.
Простой поиск и использование предыдущих команд
Представим ситуацию, когда вы воспользовались какой-то командой пару часов назад и снова хотите её использовать, но не можете вспомнить название.
Здесь поможет обратный поиск. С его помощью можно по заданному условию найти команду в истории.
Просто нажмите комбинацию Ctrl+R и введите часть команды. Затем вам будут показаны команды из истории, которые удовлетворяют заданному условию.
Ctrl+R <условие>
По умолчанию показывается только один результат. Чтобы увидеть больше результатов, нужно повторно нажать Ctrl+R. Чтобы выйти из поиска, нажмите Ctrl+C.
Учтите, что в некоторых оболочках Bash можно использовать Page Up и Page Down с условием поиска для автодополнения команды.
Выводим консоль из зависания после Ctrl+S
Многие привыкли использовать комбинацию Ctrl+S для сохранения. Однако после её использования в терминале, он часто зависает. Чтобы вернуть его в нормальное состояние, нажмите комбинацию Ctrl+Q.
Переход к началу или концу строки
Допустим, вы вводите длинную команду и вдруг понимаете, что вам нужно что-то изменить в её начале. Чтобы попасть в начало или конец строки вы можете несколько раз нажать клавишу стрелки влево/вправо или Home/End. А можете нажать Ctrl+A или Ctrl+E.
Чтение лог-файла в реальном времени
В ситуациях, когда вам нужно анализировать логи при запущенном приложении, можно использовать команду tail
с флагом -f
.
tail -f <путь к лог-файлу>
Также можно использовать регулярные выражения в grep
, чтобы выводить только нужные строки:
tail -f <путь к лог-файлу> | grep <регулярное выражение>
Кроме того, вы можете использовать флаг -F
, чтобы tail
продолжал работу даже в случае удаления лог-файла. Таким образом, когда лог-файл снова будет создан, tail
продолжит логирование.
Если вы хотите просматривать системный лог в реальном времени, воспользуйтесь аналогичной опцией -f
команды journalctl
:
journalctl -f
Чтение сжатых логов без извлечения
Серверные логи обычно сжимаются gzip’ом для сохранения дискового пространства. Это становится проблемой для разработчика или сисадмина, который анализирует эти логи. Возможно, вам придётся скопировать архив в другое место, а затем извлечь его, так как не всегда есть права на извлечение логов.
К счастью, в таких ситуациях всегда спасут z-команды. Они являются альтернативами обычных команд, которые используются для работы с логами вроде less
, cat
, grep
.
Поэтому вы можете воспользоваться zless
, zcat
, zgrep
и т.д., даже не извлекая логи.
Использование less для чтения файлов
Команда cat
не всегда лучший выбор для отображения содержимого файла, особенно если он большой — cat
выведет сразу весь файл.
Вы можете использовать Vi, Vim или другой терминальный текстовый редактор, но если вам просто нужно прочитать файл, то команда less
подойдёт гораздо лучше.
less <путь к файлу>
В less
можно искать нужную подстроку, листать по страницам, отображать номера строк и не только. А ещё less
может читать не только текстовые документы, но ещё и архивы и другие типы файлов.
Использование аргумента предыдущей команды с помощью !$
Использование аргумента предыдущей команды может пригодиться во многих ситуациях. Например, вы создали директорию и вам нужно сразу в неё перейти.
$ ls /
bin boot cdrom dev etc home sys tmp usr var vmlinuz vmlinuz.old
$ cd !$
cd /
Ещё лучше использовать alt+.
. Множественное нажатие точки позволяет выбрать аргумент одной из нескольких предыдущих команд.
Использование предыдущей команды в текущей с помощью !!
С помощью !!
можно вызвать даже всю предыдущую команду. Это особенно полезно в тех случаях, когда оказывается, что для запуска команды нужны рут-привилегии.
Быстрое sudo !!
позволяет сэкономить немного времени.
Использование alias для исправления опечаток
Вероятно, вы уже знаете, зачем нужна команда alias
. Её можно приспособить для исправления опечаток.
Представим, что вместо grep
вы часто пишете gerp
. Если вы установите псевдоним следующим образом, то вам не придётся больше перепечатывать команду:
alias gerp=grep
К слову, для исправления опечаток не обязательно использовать псевдонимы — утилита The Fuck сама исправит предыдущую команду.
Перезагружаемся
Чтобы выключить компьютер из терминала, введите poweroff
, а для перезагрузки — reboot
.
Вставка скопированного текста в терминал
Здесь не всё однозначно, так как между дистрибутивами Linux и терминалами есть определённая разница. Но в общем случае вставить текст можно одним из следующих способов:
- Скопируйте текст и кликните правую кнопку мыши для вставки (работает в Putty и других Windows-клиентах SSH);
- Скопируйте текст и нажмите среднюю кнопку мыши (колёсико) для вставки;
- Ctrl+Shift+C для копирования и Ctrl+Shift+V для вставки;
- В некоторых эмуляторах терминала работает привычная комбинация Ctrl+V.
Завершить работающий процесс/команду
Возможно, это слишком очевидно. Если у вас запущена команда, работу которой вы хотите завершить, просто нажмите Ctrl+C и команде будет отправлен сигнал прерывания (SIGINT). А если вы хотите быстро покинуть терминал, нажмите комбинацию Ctrl+D, которая для баша и других интерактивных программ означает окончание ввода.
Команда для скриптов или команд, которым нужен интерактивный ответ
Команда yes
может пригодиться, если какой-то скрипт/команда требует взаимодействия с пользователем, которое заключается только в нажатии Y каждый раз.
yes | <команда или скрипт>
Очистить файл, не удаляя его
Если вам нужно только очистить содержимое файла, а не удалить его, вы можете сделать это следующим образом:
> имя_файла
Узнать, есть ли файл с определённым текстом
В терминале Linux можно искать разными способами. Если вам нужно узнать, есть ли файл(ы) с определённым текстом, можете воспользоваться этой командой:
grep -Pri <текст_для_поиска> <путь_к_директории>
Получаем справку для каждой команды
Почти все команды/инструменты командной строки содержат справку с указаниями по работе. Чтобы получить справку, воспользуйтесь этой командой:
<команда> --help
Кроме того, порой можно получить более подробную справку с помощью команды man <команда>
.
Получаем историю команд
Если вы хотите взглянуть на все команды, которые вы когда-либо запускали, введите history
. Если вам нужен не полный список, а только несколько последних, воспользуйтесь командой fc -l
.
Быстро запускаем команды из истории
При получении команд одним из вышеуказанных способов рядом с каждой командой находится её номер в истории. Чтобы быстро запустить команду из этого списка просто введите !<номер команды>
.
Выполняем команду в обход истории
Если вы хотите выполнить команду так, чтобы она не сохранилась в истории, просто введите пробел перед командой.
Поднимаем простой HTTP-сервер
Чтобы поднять сервер и сделать доступной текущую директорию по адресу http://localhost:8000/ введите python3 -m SimpleHTTPServer
.
Пишем длинные команды с удобством
Если зажать Ctrl, а затем нажать по очереди X и E, то откроется текстовый редактор, в котором можно будет спокойно записать длинную команду, а после выхода из него — выполнить её.
Восстанавливаем терминал
Если вы вывели в терминал сырые бинарные данные или ещё что-то, что выводить не стоило, то убрать увиденную абракадабру позволит команда reset
.
Информация о файловых системах
Чтобы получить информацию о текущих смонтированных файловых системах с удобным оформлением по столбцам, введите команду mount | column -t
.
Также вы можете воспользоваться командой findmnt
, которая отображает информацию в виде красивого дерева и сама форматирует столбцы, а также может найти нужную файловую систему:
$ findmnt
TARGET SOURCE FSTYPE OPTIONS
/ /dev/sda4 ext4 rw,relatime,seclabel
├─/sys sysfs sysfs rw,nosuid,nodev,noexec,rela
│ ├─/sys/kernel/security securityfs securit rw,nosuid,nodev,noexec,rela
│ ├─/sys/fs/cgroup tmpfs tmpfs ro,nosuid,nodev,noexec,secl
│ │ ├─/sys/fs/cgroup/unified cgroup2 cgroup2 rw,nosuid,nodev,noexec,rela
│ │ ├─/sys/fs/cgroup/pids cgroup cgroup rw,nosuid,nodev,noexec,rela
│ │ └─/sys/fs/cgroup/devices cgroup cgroup rw,nosuid,nodev,noexec,rela
│ ├─/sys/fs/pstore pstore pstore rw,nosuid,nodev,noexec,rela
│ ├─/sys/firmware/efi/efivars efivarfs efivarf rw,nosuid,nodev,noexec,rela
│ ├─/sys/kernel/config configfs configf rw,relatime
│ └─/sys/fs/fuse/connections fusectl fusectl rw,relatime
├─/proc proc proc rw,nosuid,nodev,noexec,rela
│ └─/proc/sys/fs/binfmt_misc systemd-1 autofs rw,relatime,fd=30,pgrp=1,ti
│ └─/proc/sys/fs/binfmt_misc binfmt_misc binfmt_ rw,relatime
├─/home /dev/sda6 ext4 rw,relatime,seclabel
└─/var/lib/nfs/rpc_pipefs sunrpc rpc_pip rw,relatime
Деревья процессов
Есть инструмент pstree
, который умеет рисовать красивые деревья процессов. Например:
$ pstree 1721
gnome-shell─┬─Xwayland───5*[{Xwayland}]
├─gnome-system-mo───3*[{gnome-system-mo}]
├─ibus-daemon─┬─ibus-dconf───3*[{ibus-dconf}]
│ ├─ibus-engine-sim───2*[{ibus-engine-sim}]
│ ├─ibus-extension-───3*[{ibus-extension-}]
│ └─2*[{ibus-daemon}]
├─telegram-deskto───14*[{telegram-deskto}]
└─13*[{gnome-shell}]
Экран блокировки
Чтобы заблокировать экран, используйте команду $ loginctl lock-session
.
Для разблокировки экрана введите команду $ loginctl unlock-session
. Конечно, вряд ли вы сможете использовать терминал при заблокированном экране, однако вы можете пойти обходными путями. Например, можно создать задачу для разблокировки через какое-то время.
Супершелл
Чтобы запустить шелл от имени суперпользователя, можно воспользоваться командой sudo -s
. Во многих источниках можно встретить вариант sudo su
, который тоже работает, но медленнее, так как запускает лишний процесс.
Быстро открываем файлы в программе по умолчанию
Команда xdg-open
позволяет открыть любой файл в соответствующей программе. Например, xdg-open file.txt
откроет файл в текстовом редакторе по умолчанию.
Статус системных сервисов
Чтобы посмотреть статус системных сервисов, введите команду systemctl status
или systemctl status <имя сервиса>
, если вас интересует конкретный сервис.
Быстро ищем файлы
Если вам нужно найти файл, но вы не знаете, где конкретно он находится, можно воспользоваться командой find
. Например:
$ find /usr/include -name gtk.h
/usr/include/gtk-3.0/gtk/gtk.h
Используем вывод одной команды в качестве аргумента другой
Чтобы использовать вывод одной команды в качестве аргумента другой, используйте конструкцию команда-2 $(команда-1)
. Например:
$ less $(find /usr/include -name gtk.h)
Календарь
Команда cal
может нарисовать календарь на текущий месяц (и даже выделить текущее число) или на другой промежуток:
$ cal
September 2018
Mo Tu We Th Fr Sa Su
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$ cal 2019
2019 January February March
Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su
1 2 3 4 5 6 1 2 3 1 2 3
7 8 9 10 11 12 13 4 5 6 7 8 9 10 4 5 6 7 8 9 10
14 15 16 17 18 19 20 11 12 13 14 15 16 17 11 12 13 14 15 16 17
21 22 23 24 25 26 27 18 19 20 21 22 23 24 18 19 20 21 22 23 24
28 29 30 31 25 26 27 28 25 26 27 28 29 30 31 April May June
Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su
1 2 3 4 5 6 7 1 2 3 4 5 1 2
8 9 10 11 12 13 14 6 7 8 9 10 11 12 3 4 5 6 7 8 9
15 16 17 18 19 20 21 13 14 15 16 17 18 19 10 11 12 13 14 15 16
22 23 24 25 26 27 28 20 21 22 23 24 25 26 17 18 19 20 21 22 23
29 30 27 28 29 30 31 24 25 26 27 28 29 30 July August September
Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su
1 2 3 4 5 6 7 1 2 3 4 1
8 9 10 11 12 13 14 5 6 7 8 9 10 11 2 3 4 5 6 7 8
15 16 17 18 19 20 21 12 13 14 15 16 17 18 9 10 11 12 13 14 15
22 23 24 25 26 27 28 19 20 21 22 23 24 25 16 17 18 19 20 21 22
29 30 31 26 27 28 29 30 31 23 24 25 26 27 28 29
30
October November December
Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su
1 2 3 4 5 6 1 2 3 1
7 8 9 10 11 12 13 4 5 6 7 8 9 10 2 3 4 5 6 7 8
14 15 16 17 18 19 20 11 12 13 14 15 16 17 9 10 11 12 13 14 15
21 22 23 24 25 26 27 18 19 20 21 22 23 24 16 17 18 19 20 21 22
28 29 30 31 25 26 27 28 29 30 23 24 25 26 27 28 29
30 31
Планировщик задач
Чтобы выполнить какую-то команду в нужное вам время, воспользуйтесь at
:
echo команда-для-выполнения | at время_выполнения
Учтите, что эта команда может отсутствовать на вашей системе, и вам придётся установить её самостоятельно.
Получаем свой внешний IP
Чтобы получить свой внешний IP-адрес введите curl ifconfig.me
или curl ipinfo.io/ip
. Возможно, сначала вам придётся установить curl
.
Прогноз погоды
Введите команду curl wttr.in/<нужный город>
и получите красивую таблицу с прогнозом погоды:
$ curl wttr.in/Москва
Weather report: Москва \ / Sunny
.-. 13-14 °C
― ( ) ― → 11 km/h
`-’ 10 km
/ \ 7.4 mm
┌─────────────┐
┌──────────────────────────────┬───────────────────────┤ Sun 16 Sep ├───────────────────────┬──────────────────────────────┐
│ Morning │ Noon └──────┬──────┘ Evening │ Night │
├──────────────────────────────┼──────────────────────────────┼──────────────────────────────┼──────────────────────────────┤
│ _`/"".-. Moderate or he…│ .-. Heavy rain │ .-. Light drizzle │ \ / Partly cloudy │
│ ,\_( ). 16 °C │ ( ). 15-16 °C │ ( ). 13-15 °C │ _ /"".-. 11-13 °C │
│ /(___(__) ↑ 7-12 km/h │ (___(__) ↘ 12-18 km/h │ (___(__) ↘ 19-27 km/h │ \_( ). ↘ 22-33 km/h │
│ ‚‘‚‘‚‘‚‘ 14 km │ ‚‘‚‘‚‘‚‘ 14 km │ ‘ ‘ ‘ ‘ 17 km │ /(___(__) 19 km │
│ ‚’‚’‚’‚’ 4.3 mm | 72% │ ‚’‚’‚’‚’ 6.5 mm | 71% │ ‘ ‘ ‘ ‘ 0.7 mm | 66% │ 0.5 mm | 49% │
└──────────────────────────────┴──────────────────────────────┴──────────────────────────────┴──────────────────────────────┘
┌─────────────┐
┌──────────────────────────────┬───────────────────────┤ Mon 17 Sep ├───────────────────────┬──────────────────────────────┐
│ Morning │ Noon └──────┬──────┘ Evening │ Night │
├──────────────────────────────┼──────────────────────────────┼──────────────────────────────┼──────────────────────────────┤
│ \ / Partly cloudy │ \ / Partly cloudy │ \ / Partly cloudy │ \ / Partly cloudy │
│ _ /"".-. 13-14 °C │ _ /"".-. 18 °C │ _ /"".-. 16 °C │ _ /"".-. 13-14 °C │
│ \_( ). ↘ 16-18 km/h │ \_( ). → 15-18 km/h │ \_( ). → 14-18 km/h │ \_( ). ↗ 13-19 km/h │
│ /(___(__) 20 km │ /(___(__) 20 km │ /(___(__) 20 km │ /(___(__) 20 km │
│ 0.0 mm | 0% │ 0.0 mm | 0% │ 0.0 mm | 0% │ 0.0 mm | 0% │
└──────────────────────────────┴──────────────────────────────┴──────────────────────────────┴──────────────────────────────┘
┌─────────────┐
┌──────────────────────────────┬───────────────────────┤ Tue 18 Sep ├───────────────────────┬──────────────────────────────┐
│ Morning │ Noon └──────┬──────┘ Evening │ Night │
├──────────────────────────────┼──────────────────────────────┼──────────────────────────────┼──────────────────────────────┤
│ _`/"".-. Light rain sho…│ _`/"".-. Patchy rain po…│ \ / Partly cloudy │ \ / Partly cloudy │
│ ,\_( ). 14-15 °C │ ,\_( ). 17 °C │ _ /"".-. 15 °C │ _ /"".-. 12-14 °C │
│ /(___(__) → 19-25 km/h │ /(___(__) → 21-24 km/h │ \_( ). ↘ 17-24 km/h │ \_( ). ↘ 15-21 km/h │
│ ‘ ‘ ‘ ‘ 17 km │ ‘ ‘ ‘ ‘ 16 km │ /(___(__) 20 km │ /(___(__) 20 km │
│ ‘ ‘ ‘ ‘ 0.1 mm | 23% │ ‘ ‘ ‘ ‘ 0.3 mm | 72% │ 0.1 mm | 54% │ 0.0 mm | 0% │
└──────────────────────────────┴──────────────────────────────┴──────────────────────────────┴──────────────────────────────┘
Получаем таблицу ASCII
Чтобы получить быстрый доступ к таблице ASCII просто введите man ascii
.
Простой калькулятор
Небольшие выражения можно вычислять прямо в терминале. Это можно сделать либо с помощью конструкции echo <выражение> | bc
, либо echo $((<выражение>))
. Например:
$ echo 35+42 | bc
77
$ echo $((35+42))
77
Выполняем команду в другой директории и возвращаемся обратно
Если вы хотите выполнить команду в другой директории, но при это не хотите покидать текущую, то просто оберните команду скобками. Например, (cd /tmp && ls)
. Здесь скобки запускают подшелл (subshell), внутри которого мы и выполняем cd
.
Узнаём, какие библиотеки нужны команде/библиотеке
Чтобы узнать, какие динамические библиотеки нужны программе или библиотеке и как они будут разрешены при запуске, используйте команду ldd
:
$ ldd /usr/lib/systemd/systemd
linux-vdso.so.1 (0x00007fff7e7c6000)
libsystemd-shared-239.so => /usr/lib/systemd/libsystemd-shared-239.so (0x00007f265acbd000)
librt.so.1 => /lib64/librt.so.1 (0x00007f265ac7e000)
libseccomp.so.2 => /lib64/libseccomp.so.2 (0x00007f265ac3a000)
libselinux.so.1 => /lib64/libselinux.so.1 (0x00007f265ac0e000)
...
libunistring.so.2 => /lib64/libunistring.so.2 (0x00007f265a076000)
libsepol.so.1 => /lib64/libsepol.so.1 (0x00007f2659fc1000)
libudev.so.1 => /lib64/libudev.so.1 (0x00007f2659f99000)
libm.so.6 => /lib64/libm.so.6 (0x00007f2659e15000)
Узнаём, что лежит внутри файла
Чтобы определить тип содержимого, находящегося в файле, используйте команду file
:
$ file Pictures/wayland-screenshot.png
Pictures/wayland-screenshot.png: PNG image data, 1920 x 1080, 8-bit/color RGBA, non-interlaced
$ file dev/gnome-builder/src/main.c
dev/gnome-builder/src/main.c: C source, UTF-8 Unicode text
Многократный запуск команды
Чтобы запускать команду каждые несколько секунд (по умолчанию две) и смотреть на её вывод, воспользуйтесь командой watch <команда>
.
Время на запуск команды
Чтобы узнать, сколько времени уходит на запуск команды, используйте time <команда>
.
Системные вызовы команды
Чтобы узнать, какие системные вызовы совершает программа, введите strace <команда>
.
Запоминаем набираемую команду
Если вы набираете какую-то команду и вам по какой-то причине нужно прерваться и, например, ввести другую команду, вы можете «запомнить» то, что вы ввели комбинацией Ctrl+U, а затем вставить комбинацией Ctrl+Y.
Выкачиваем сайты
Чтобы выкачать сайт используйте команду wget --random-wait -r -p -e robots=off -U mozilla <адрес сайта>
.
Проводим туннели
С помощью команды ssh -N -L 2001:localhost:80 somemachine
можно создать туннель от 80 порта на удалённой машине до 2001 на локальной.
---
du -sh * | sort -h
Отображает размер файлов в текущей директории и сортирует по размеру от малого до самого большого файла.
Можно ещё поставить ncdu - позволяет ходить по отсортированной и посчитанной структуре директорий, удалять файлы и каталоги и т.д.
Лучше поставить dfc гораздо красивше)
---
Система управления пакетами в Ubuntu полностью аналогична системе управления пакетами Debian, и использует утилиты dpkg и apt. Программы в Ubuntu, как и в Debian хранятся в пакетах вида .deb.
Терминал, консольОбычно программы в Ubuntu устанавливаются через интернет, предварительно скачивая их с репозиториев. Установка производится при помощи графической оболочки sinaptic или через консоль.
Скачанные файлы программ не удаляются после установки и хранятся в каталоге /var/cache/apt/archives. При необходимости их можно удалить командой apt-get clean или apt-get autoclean.
DPKG
dpkg -i программа Устанавливает либо обновляет пакет который был установлен ранее.
dpkg -r программа Деинсталлирует уже установленную программу но сохраняет файлы конфигурации программы.
dpkg -l Отображает список уже установленных пакетов программ.
dpkg -l | grep driver Отображает список установленных программ в названии которых есть слово «driver».
dpkg -s программа Показывает информацию по этой программе.
dpkg -P Удаляет установленную программу вместе с файлом конфигурации.
APT
apt-get install программа Установка программы. Можно устанавливать сразу несколько программ. Выглядеть это будет так: apt-get install программа программа программа программа программа программа
apt-get update Проверяет, есть ли на репозиториях обновления для установленных
программ. Список репозиториев находится в файле /etc/apt/sources.list
apt-cdrom install программа Устанавливает либо обновляет пакет с cdrom-диска
apt-get upgrade Обновляет уже установленные программы.
apt-get remove программа Деинсталлирует установленную программу.
apt-get purge программа Удаляет установленный пакет и файлы конфигурации.
apt-get autoremove Удаляет пакеты, от которых не зависят другие пакеты.
apt-get check Находит конфликтующие пакеты и поломанные зависимости в пакетах программ.
apt-get -f install Исправляет найденные поломанные зависимости.
apt-cache search программа Поиск программы в кэше.
apt-cache show программа Показывает информацию и описание пакета программы.
apt-cache showpkg программа Покажет все зависимости пакета программы.
apt-cache depends программа Отображает в виде списка зависимые пакеты программ, нужные для работы выбранной программы
Опции APT:
apt-get -h Справка
apt-get -d Скачивает программу но не устанавливает ее.
apt-get -s Команда с этой опцией ничего не делает. Просто имитирует выполнение команды (например имитация удаления программы)
apt-get -y Если программа задает вопросы эта опция отвечает Yes на все вопросы. Вопросы не выводит в консоль.
apt-get -f Продолжить действие, даже если проверка целостности пакета прошла неудачно.
apt-get -u Вдобавок ко всему покажет список обновленных пакетов.
aptitude Более удобный вариант apt. Лучше работает с зависимостями пакетов программ.
---
Установка.
- apt-get install unrar rar -установить rar архиватор
- apt-get install zip -установить zip архиватор
- apt-get install tar - установить tar архиватор
- apt-get install 7z -установить 7z архиватор
- apt-get install lzma -установить LZMA архиватор
Архивация.
- rar:
1
rar a new_arhiv.rar /Директория/которую/архивируем
- zip:
1
zip -r new_arhiv.zip /Директория/которую/архивируем
- tar:
1
tar -cvf new_arhiv.tar /Директория/которую/архивируем
- 7z:
1
p7zip -d filename.7z
*архив добавляется в тот каталог в котором находится юзер, чтобы добавить архив в нужный каталог надо воспользоваться командой cd, например: cd /home/username/backup
Разархивация.
- rar
1
unrar new_arhiv.rar
- zip
1
unzip new_arhiv.zip
- tar
1
tar -xvf arhiv.tar
- 7z
1
7z x arch.7z
- lzma
1
lzma -d filename.lzma
Пруф линки:
---
1. Общие команды
Команда arch - вывод архитектуры компьютера
Данная команда поможет узнать тип аппаратной платформы, например: i386, i586, i686 и др.
Пример использования:
$ arch
i686
Команда clear - очистка экрана
Команда clear очищает экран при работе в консоли (терминале).
Пример использования:
$ clear
Команда date
Команда date используется для вывода текущей даты. Эта команда может применяться также для установки даты, если запущена от имени администратора.
Пример использования:
$ date
# date 1609171707
Первая команда выводит дату, а вторая - устанавливает дату (при условии, что команда запущена от имени root) 16 сентября (1609) 2007 года (07) и время 17:17. Как видите, установка даты осуществляется в формате MMddhhmmYY (ММ - месяц, dd - число, hh - часы, mm - минуты, YY - год).
Команда date может вывести дату в указанном вами формате. Для изучения форматов даты введите команду man date.
Команда echo
Команда echo выводит текстовую строку, указанную в качестве аргумента, например:
$ echo "Hello world!"
Hello world!
Обычно данная команда используется в сценариях командного интерпретатора для вывода сообщений на экран.
Команда exit - выход из системы
Для завершения сеанса работы в системе (при условии, что вы работаете в консоли) нужно использовать команду exit. Если не завершить сеанс работы, кто угодно сможет работать в системе под вашим именем (понятно, что во время вашего отсутствия за компьютером).
Команда man - вывод справки
Команда man используется для получения справки о любой команде системы. Например, команда man is выведет справку об использовании команды is, которая выводит содержимое каталога. О том, как правильно использовать саму справочную систему, вам расскажет команда man man.
Команда passwd - изменение пароля
С этой командой я думаю, знаком каждый. Она обеспечивает изменение пароля пользователя, который ее запустил. Суперпользователь root имеет право изменить пароль любого пользователя:
# passwd имя_пользователя
Команда startx - запуск графического интерфейса Х.Оrg
Linux может запускаться на разных уровнях запуска. На пятом уровне запуска графический интерфейс X.Org (бывшее название: X Window) запускается автоматически (если он вообще был установлен). На третьем же уровне запуск графического интерфейса не производится. Если он вам тем не менее нужен, то его можно запустить с помощью команды startx. Никаких параметров не требуется.
Команда uptime - информация о работе системы
Команда uptime выводит статистическую информацию о работе системы: сколько времени прошло с момента последней перезагрузки (собственно, это и есть время "uptime"), сколько пользователей в данный момент подключено к системе и среднюю загрузку системы за последние 1, 5 и 15 минут.
Команда users - информация о пользователях
Команда выводит информацию о пользователях, подключенных к системе данный момент.
Команды w, who и whoami - информация о пользователях
Эти три родственные команды выводят следующую информацию:
- команда w - список пользователей, подключенных к системе: виртуальный терминал, с которого работает пользователь; время входа в систему для каждого пользователя, статистику использования системы (IDLE - время простоя, JCPU - использование процессора), выполняемые каждым пользователем задачи;
- команда who - список пользователей, подключенных к системе; время и дату входа каждого пользователя;
- команда whoami - имя пользования, который ввел команду.
Команда xf86config - настройка графической подсистемы
Текстовый конфигуратор системы X.Org (она же X Window). Использовать его нужно, только если в вашем дистрибутиве нет более удобных графических или псевдографических конфигураторов.
2. Команды для работы с текстом
Команда diff - сравнение файлов
Команда используется для сравнения двух файлов. Формат вызова программы diff:
diff параметры файл1 файл2
В выводе программы отличающиеся строки помечаются символами > и .
Команда grep - текстовый фильтр
Предположим, что у нас есть файл протокола /var/log/messages, и вы хотите вывести все сообщения, связанные с демоном pppd. Понятно, что вручную выделить все нужные сообщения будет довольно трудно. Но с помощью grep можно автоматизировать данную задачу:
cat /var/log/messages | grep ppp
Команда cat /var/log/messages передаст содержимое файла /var/log/messages на стандартный ввод команды grep, которая, в свою очередь, выделит строки, содержащие строку ррр.
СОВЕТ
Вообще-то, просматривать журналы удобнее с помощью команды tac, которая выводит строки файла в обратном порядке - ведь сообщения дописываются в конец журнала, следовательно, если выводить строки в обратном порядке, то сначала получим самые новые сообщения, а потом уже все остальные:
tac /var/log/messages | grep ppp
Команды more и less - постраничный вывод
Большой текстовый файл намного удобнее просматривать с помощью команд less или more. Программа less удобнее, чем more, если она есть в вашей системе:
tac /var/log/messages | grep ppp | less
Команды head и tail - вывод начала и хвоста файла
Команда head выводит первые десять строк файла, a tail - последние десять. Количество строк может регулироваться с помощью параметра -n.
Пример использования:
head -n 10 /var/log/messages
tail -n 15 /var/log/messages
Команда wc - подсчет слов в файле
Команда wc используется:
- для подсчета слов в текстовом файле:
wc /var/log/messages
- для подсчета количества строк (если задан параметр -1):
wc -1 /var/log/messages
- для подсчета количества символов (параметр -с):
wc -с /var/log/messages
3. Команды для работы с Интернетом
Команда ftp - стандартный FTP-клиент
Для открытия соединения с любым FTP-сервером введите команду:
ftp <имя или адрес FTP - сервера>
Можно просто ввести команду ftp, а в ответ на приглашение
ftp>
ввести команду:
open <имя или адрес ЕТР-сервера>
Но все таких удобнее использовать первый вариант, но это кому как. При подключении к серверу вы сможете ввести имя пользователя и пароль.
Подключившись к серверу, вы можете ввести команду help, чтобы просмотреть список доступных команд. Для получения справки по той или иной команде введите help <имя_команды>.
Кроме команды ftp, в Linux есть и другие текстовые FTP-клиенты, например, NcFTP (http://www.ncftp.com), lukemftp (ftp://ftp.netbsd.org/pub/NetBSD/misc/lukemftp/), lftp (http://ftp.yars.free.net/projects/Iftp/) и др. Все эти FTP-клиенты не входят в состав дистрибутивов, их нужно устанавливать самостоятельно. Но стоит ли это делать - решать вам. Ведь все они подобны стандартному клиенту ftp и обладают двумя-тремя дополнительными функциями, которые, возможно, вам и не понадобятся. Например, NcFTP умеет докачивать файлы, a lftp - загружать одновременно несколько файлов. В любом случае вы можете изучить документацию по тому или иному FTP-клиенту (ее легко найти в Интернете), а потом решить, стоит его использовать или нет.
Команда lynx - текстовый браузер
Eсли графический режим недоступен (например, на сервере), а по сети побродить хочется, командой lynx можно вызвать текстовый браузер lynx. В некоторых дистрибутивах вместо lynx используются браузеры links и elinks, но суть остается та же - просмотр страниц Интернета в текстовом режиме.
Команда mail - чтение почты и отправка сообщений
Программа mail - это простейший клиент для чтения и отправки почты. Позволяет читать только почту, принятую вашей системой. Если же нужно принять почту с других РОР3-серверов, тогда следует использовать другие почтовые клиенты, которые могут работать в консоли, например, mutt или pine. Для чтения предназначенных вам сообщений введите команду mail без параметров. Если хотите написать кому-то письмо, передайте в качестве параметра электронный адрес этого человека:
mail ivanov@firma.ru
4. Команды системного администратора
Команды free и df - информация о системных ресурсах
Команда free выводит информацию об использовании оперативной и виртуальной памяти, a df - об использовании дискового пространства.
Команда md5sum - вычисление контрольного кода MD5
Для проверки подлинности некоторых файлов, передаваемых через Интернет, используется алгоритм MD5 (точнее, контрольный код, вычисленный с использованием этого алгоритма). Разработчик программы выкладывает в Интернете пакет с этой программой и на своем сайте публикует контрольный код. Вы скачиваете пакет и вычисляете его контрольный код. Если коды отличаются, то файл при передаче был поврежден (или это другая версия пакета, которая, возможно, была подложена злоумышленником с целью ввода вражеского кода в вашу систему).
Использовать программу нужно так:
md5sum файл
Команды ssh и telnet - удаленный вход в систему
Подробное описание можете почитать на соответствующей странице руководства (man).
Команда
lspci | grep VGA - показывает какая видеокарта установлена у вас в системе (в помощь таким программам как
dmesg
cat /proc/cpuinfo
Команда для того бы узнать UUID диска:
#blkid -o value
Команда для управления подсветкой и состоянием монитора:
#vbetool
Например для того что бы потушить монитор:
#vbetool dpms off
Что бы отключить в системе поддержку ipv6 следует внести в файл /etc/modprobe.d/blacklist.conf следующие строки и перезагрузить машину:
alias net-pf-10 off
alias ipv6 off
Чтобы увидеть общую информацию о установленнгом железе следует выполнить:
dmidecode -q
---
Как начать пользоваться командной строкой
Я не знаю, ты пользуешься Линуксом или Уиндоузом (обычно туториалы рассчитаны на линуксоидов и макосников, уиндоуз не модный среди молодежи). В макоси все практически так же как и в линуксе, в windows пошли своим путем и сделали все как в DOS.
Думаю, что в данном случае тебе поможет не рыба, а удочка, так что держи пасту. Если после прочтения у тебя будут какие-то вопросы, или по-прежнему непонятно, почему команды не работают, пиши в наш уютный тред, разберемся.
Краткий мануал чайника по командной строке:
Как попасть в командную строку?
- Windows XP: Пуск — Выполнить — набрать cmd — нажать [enter]
- Windows7: Пуск — набрать cmd - наждать [enter]
- MacOS: Запустить приложение Терминал (его можно найти поиском в той фигне которая справа вверху экрана)
- Ubuntu: Запустить приложение Терминал или нажать Alt + Ctrl + F1 (ааа как вернуться назад? Ctrl + F7)
- Linux: если ты линуксоид, ты и так знаешь
Во всех операционных системах
↑,↓ — стрелки вверх и вниз в командной строке позволяют смотреть предыдущие введенные команды, чтобы 2 раза не набирать. В Windows при закрытии окошка консоли вся история теряется, в других ОС — сохраняется.
[tab] — автодополняет имена файлов и команды. Если в текущем каталоге есть файл file.txt, ты наберешь fi и нажмешь [tab] то он автодополнит имя файла (или предложит варианты, если таких файлов несколько).
[ctrl+c] — прерывает выполнение команды, например, если она долго тупит
Важно: клавиша Esc не работает в командной строке. Клавиши Ctrl + C, V, X не работают как «копировать/вырезать/вставить» (иногда для вставки можно использовать Shift + Ins). Клавиша Ctrl + Q не работает как «выход».
Линукс и мак
В линуксе и маке, [ctrl+l] очищает экран, [ctrl+k] и [ctrl+u] удаляют все перед или после курсора, [ctrl+w] удаляет слово перед курсором, [ctrl+r] делает поиск по истории команд (для отмены поиска нажми [ctrl+c], escape в командной строке не работает, для завершения поиска нажми стрелку вправо/влево), [ctrl+d] завершает работу и закрывает консоль.
Еще в линуксе и маке иногда не работают Home и End, используй [ctrl+a] чтобы перейти в начала строки и [ctrl+e], чтобы в конец. [alt + b] (back) и [alt + f] (forward) двигают курсор на 1 слово назад/вперед.
Буфер обмена
В командной строке не работает ctrl+v,c,x для вставки, копирования и вырезания текста. Иногда (зависит от настроек системы) вставить текст можно через [shift+ins], иногда правой кнопкой мыши. Скопировать текст можно, выделив мышью (в Windows надо разрешить выделение текста сначала в настройках окна и нажать Enter после выделения).
Текущий каталог
В командной строке результат выполнения команд зависит от того, в каком каталоге и на каком диске ты находишься. Какой каталог текущий, в Windows написано в подсказке, а в linux можно узнать командой pwd
(print working directory)
Чтобы перейти в другой каталог, в линуксе используют команду cd
:
cd / — перейти в корневой каталог (в линукс нет букв дисков, и корневой каталог один на всю систему)
cd /etc/apache — перейти в каталог /etc/apache
cd files — переходит в каталог files внутри текущего
cd .. — переходит в родительский кталог
cd ../.. — переходит на 2 уровня выше
cd ~ — перейти в свой домашний каталог (/home/anon например)
cd ~/test — перейти в /home/anon/test
В Windows, сначала надо перейти на нужный диск командой c:
, d:
, e:
и так далее. Потом использовать cd
или chdir
:
d: - перейти на диск d:
cd \ — перейти в корневой каталог
cd \windows\system32
cd ..
cd ..\..
Обрати внимание, windows и linux используют разные виды слешей. Обрати внимание, ..
обозначает «родительский каталог». Обрати внимание, только в линукс и мак ~
обозначает «домашний каталог» (это /home/username
или /Users/username
). .
(одна точка) обозначает текущий каталог и cd .
никуда не перейдет. /
(линукс) или \
(Windows) обозначает корневой каталог.
Очистка экрана
В linux — команда clear
или клавиша [ctrl+L], в windows — команда cls
(clear screen).
Список файлов
Посмотреть, какие файлы есть в текущем каталоге, можно командой dir
в Windows и командой ls
в линуксе (ls -a
— показывает все файлы, включая скрытые, ls -l
— показывает не только имена, но и размер, дату создания файла, права на него).
Посмотреть права на файл в Линукс можно либо командой ls -l
, либо stat file.txt
Команды и оболочка
Оболочка — это cmd.exe в Windows и bash в линукс, это та программа, которая собственно мигает курсором и выполняет твои команды. Ты набираешь команды, а она их выполняет. Команда обычно состоит из имени команды, и, иногда, дополнительных параметров, отделенных пробелом, вроде:
ls — показать список файлов в линукс
ls -l — показать файлы с подробностями
dir — показать список файлов в windows с подробностями
dir /b — показать только имена файлов, без подробностей
Подсказка
Почти у любой команды есть подсказки. Чтобы их увидеть, добавь к имени команды параметр (--help
или /?
):
В линукс: ls --help
— выведет справку по команде ls
В линукс: man bash
— выведет подробную длинную справку по команде bash (для выхода жми q, для прокрутки используй стрелки и PgUp/PgDn)
В Windows: dir /?
— выведет справку по команде dir
В Windows: help
выведет подсказку по основным командам
Виды команд
Команды бывают внутренние (это маленький список команд, встроенных в оболочку). Встроенные команды — это, например, cd
в линукс или exit
в Windows. Их мало.
Внешние команды — их большинство — это фактически программы, лежащие на диске. Оболочка ищет их не по всему диску, а только в заранее заданных папках. Список папок перечислен в специальной переменной PATH. Просмотреть эту переменную можно так:
В линуксе: echo $PATH
В windows: echo %PATH%
В linux PATH — это папки /bin, /usr/bin, /usr/local/bin, /sbin, /usr/sbin, именно в них в Линуксе хранятся почти все программы. В текущем каталоге програмы не ищутся, если это не указать явно.
В Windows PATH — это всякие системные папки вроде c:\windows и так далее + текущий каталог, в котором ты находишься. Заметь, что папки вроде c:\program files\autocad в PATH не добавлены и в Windows таким образом, из командной строки обычные программы и игры, установленные в Program Files, не запустить. Только то, что положено в системные папки.
Таким образом: если ты под линуксом, и ты набираешь команду php
, то скорее всего файл php лежит в одной из *bin папок и эта команда запустит php. Если ты под Windows установил php допустим в c:\php, и не прописал этот путь в PATH, то набрав php
, оболочка не найдет файл php.exe и ничего не запустит. И ты скажешь «что за кривой мануал, ничего не работает, ну его нафиг».
Печалька.
Что же делать? 1) добавить папку с php в PATH через мой компьютер — свойства и перезалогиниться в систему 2) писать вместо php
полный путь c:\php\php.exe
Продолжаем. Допустим, ты хочешь запустить в командной строке файл my.php , который находится в текущем каталоге:
Линукс: php my.php
Windows: c:\php\php.exe my.php
Допустим, ты хочешь запустить php-файл не из текущего каталога. Тогда надо написать путь к нему:
Линукс: php /some/dir/my.php
Windows: c:\php\php.exe d:\files\my.php
В общем, проще запускать файлы из текущег каталога, чем мучаться с путями.
Больше команд — linux
Попрактиковаться в линукс в командной строке можно на таких командах:
Создать текстовый файл: cat > file.txt [enter] ввести текст [enter][ctrl+d] — и файл создан
Просмотреть текстовый файл: cat file.txt
Просмотреть огромный текстовый файл, который не влеазает на экран: cat file.txt | less
В просмотрщике работают стрелки и q для выхода (escape не работает).
Удалить файл: rm file.txt
Скопировать файл: cp file.txt copy.txt
Переместить/переименовать файл: mv file.txt copy.txt
Скопировать в другую папку: cp file.txt /some/other/directory
Запустить команду и сохранить ее вывод в файл: ls -la > file.txt (эта команда выведет список файлов, но не на экран, а сохранит в файл. Бывает иногда полезно).
Вывести файл, но не весь, а только первые 10 строк: cat file.txt | head -10
Вывести последние 10 строк файла: cat file.txt | tail -10
Вывести только строки файла, содержащие слово «dog»: cat file.txt | grep dog
Найти файлы, в имени которых есть «dog», в каталоге /tmp: find /tmp -iname '*dog*'
Узнать текущее время: date
Создать папку: mkdir folder
Удалить папку: rm -r folder
Померять, сколько времени выполнялась команда: time [команда]
Узнать свой id пользователя: id
Показать список запущенных процессов: ps -lax
Показать что-то вроде диспетчера задач: top (для выхода q)
Запустить редактор, из которого хрен выйдешь, так как никакие привычные кнопки не работают: vi
Подробнее о работе команд можно узнать с помощью параметра --help
, дописанного после команды.
Больше команд - Windows
Попрактиковаться в комнадной строке в Windows можно так:
help — выводит список полезных команд
dir — выводит файлы в каталоге
Создать текстовый файл: copy con file.txt[enter]ввести текст[enter][ctrl+z][enter] — файл создан
Просмотреть текстовый файл: type file.txt
Просмотреть огромный текстовый файл: type file.txt | more (enter — прокрутка, q — выход)
Удалить файл: del file.txt
Скопировать файл: copy /b file.txt copy.txt
Переименовать файл: ren file.txt copy.txt
Запустить команду и сохранить вывод в файл: dir /? > file.txt
Создать текстовый файл с одной строкой текста: echo lalala lololo > file.txt
Дописать строчку в конец файла: echo boom >> file.txt
Создать папку: mkdir folder
Удалить папку: rmdir folder
Узнать текущее время: time и date (ctrl+с для выхода)
Подробнее о работе команд можно узнать с помощью параметра /?
, дописанного после команды.
Команды для работы с сетью Интернет
В линукс показать информацию о настройке сети: ifconfig
(или /sbin/ifconfig
если у тебя в PATH нет /sbin)
В Windows показать информацию о сети: ipconfig
Пропинговать (проверить связь) с сервером: ping google.com
Узнать IP по имени домена: nslookup yandex.ru
Показать список открытых с компьютера соединений: netstat
(в подсказке по команде указаны также параметры, с помощью которых, например, можно вывести какая программа установила это соединение) Проверить путь до какого-то сервера или узла сети:
- в Windows:
tracert google.com
- в linux:
traceroute google.com
(не работает? пиши/usr/sbin/traceroute
или пропиши уже себе sbin в PATH)
Больше информации
Используй ключи --help
и /?
Гугли мануал по командной строке windows/linux в интернете.
---
Когда я начинал свою аспирантуру в Университете Хельсинки, самое страшное, что я мог видеть у моих коллег - это черный экран, в котором есть только текст и мигающий курсор. Позже я узнал, что эта программа называется Terminal и является незаменимым инструментом для биоинформатиков и других специалистов, анализирующих большие массивы данных. Так как большинство генетиков и эволюционных биологов рано или поздно столкнётся с необходимостью работы в Терминале, я решил написать вводную статью о том, что такое Terminal и для чего он нужен.
Что такое Терминал?
Начнем с понимания значения слова «терминал». Терминал – это часть некой системы, обеспечивающая ее взаимодействие с внешней средой. Например, терминал является частью аэропорта, где производятся операции с пассажирами перед их отправкой в самолет или после прибытия самолета в аэропорт. То есть, терминал аэропорта – это точка входа и выхода в системе авиаперевозок, в которой персонал задает параметры для операций с пассажирами: кто, когда и куда отправляется. То же самое делает терминал в компьютере, только вместо пассажиров – данные, а вместо персонала – пользователь. Таким образом, терминал – это окно коммуникации между человеком и операционной системой.
До появления привычных нам графических интерфейсов люди пользовались текстовыми терминалами, в которые вводили команды при помощи клавиатуры, а результат вычислений выводился на экран. Однако, и по сей день терминал, точнее эмулятор терминала, есть в каждой операционной системе: в Windows – это приложение cmd.exe (Command Line или просто «Консоль»), в Linux и MacOS– программа Terminal.
Все эмуляторы выглядят примерно одинаково: это командная строка, работающая по принципу «задал вопрос, получил ответ». Зачастую это черный экран, на фоне которого отображен белый текст и мигающий курсор, который используется для навигации по строке ввода.
Зачем нужен Терминал?
Есть три причины, которые делают Терминал незаменимым инструментом для исследователей, анализирующих большие массивы данных:
- он позволяет программировать манипуляции с файлами и папками в операционной системе
- Внутри него можно запускать другие программы и программировать их взаимодействие друг с другом
- Через него осуществляется работа с серверами и суперкомпьютерами, позволяющими анализировать гигабайты данных в сотни раз быстрее, чем на персональном компьютере
Разберем каждый из этих аспектов подробнее.
Терминал, как манипулятор файлов и папкок
Большинству пользователей нет необходимости использовать Терминал благодаря графической оболочке их операционной системы. Однако, без него не обойтись, когда речь идет о манипуляциях с файлами и папками более сложными, чем: «скопировать документ из одной папки и вставить в другую». Я приведу простой пример, показывающий ограниченность использования графической оболочки операционной системы.
Допустим, мне нужно переименовать фотографию и добавить к текущему названию дату, когда эта фотография была сделана. Что может быть проще, скажите Вы: "открой свойства файла, скопируй дату создания файла, закрой окно «Свойства» и вставь дату в название файла". Так и есть, все довольно просто, вот только повторить это действие нужно для всех фотографий на моем компьютере (а их у меня более 25 тысяч). Очевидно, что если я буду делать это подобным образом, то это задание отнимет у меня несколько недель.
Решение этой же задачи в Терминале займет не более получаса даже у начинающего пользователя. Фокус в том, что в Терминале пользователь может программировать действия, делегируя компьютеру рутинную работу. В разных типах эмуляторов терминала – разные языки программирования, но вероятно самым распространенным в наши дни является язык bash (о нем скоро будет отдельная статья).
Использование Терминала для создания скриптов
Другая важная особенность эмуляторов терминала – это возможность запуска в нем других программ, чтобы автоматизировать процессы в программах и обеспечить автономное взаимодействие между ними. Если входные и выходные данные этих программ оформить в виде файлов, то Терминал сможет запускать последовательно программы. Алгоритм будет напоминать цепочку из таких действий: запустить программу А, загрузить туда входные данные (файл А), экспортировать результаты анализа в файл B, закрыть программу A, запустить программу B, загрузить туда файл B, ну и так далее…
Таким образом, миллионы файлов могут быть проанализированы автоматически и в быстрые сроки. Эта особенность делает Терминал незаменимым инструментом среди биоинформатиков, генетиков и эволюционных биологов, работающих с геномами организмов, которые в оцифрованном виде представляют из себя множество текстовых файлов оформленных в разных форматах.
Управления суперкомпьютерами и серверами через Терминал
Терминал является не только окном в операционную систему персонального компьютера, но также и в операционную систему сервера или суперкомпьютера, который может находиться в тысячах километров от Вашего текущего месторасположения. Через эмулятор терминала на суперкомпьютер можно подавать алгоритмы (bash-скрипты), выполнение которых на Вашем компьютере могло бы занять неделю. Благодаря своей мощности суперкомпьютер проведет расчёты за считанные часы. Подобный подход позволяет проводить анализ больших массивов данных в кратчайшие сроки.
Как правило, на суперкомпьютерах и серверах стоят версии операционной системы Linux. Так как различий между эмуляторами терминала на Линуксе и на Маке практически нет, в дальнейших статьях я буду писать только об эмуляторах терминала, работающих на языке программирования bash (например, программа Terminal).
Заключение
Надеюсь эта статья была полезной и помогла дать общее представление о терминалах операционных систем и их роли в жизни исследователей. Если есть вопросы, задавайте их в комментариях, буду рад ответить.
В следующей статье мы рассмотрим как открыть Terminal на Linux и на MacOS, а также настроим его под себя для последующей удобной работы.
Комментарии: 4
-
Роман
Спасибо за статью!
Вчера узнал о существовании Терминала, так как начал изучать Python. Пока понял, что они друг другу нужны, но не понял для чего. В Вашей статье узнал о том, что такое Terminal.Ответить ↓
Samoedd(Автор записи)
https://samoedd.com
Всегда пожалуйста! Если возникнут дополнительные вопросы, буду рад ответить.
Ответить ↓
-
Мустафа
— а почему терминал — называют ещё и эмулятором? Что он там ещё эмулирует?
Понятие «терминал» до конца так и не открыто, потому как терминалом могут назвать всё и всяк. В противном случае, какая тогда смысловая связь между тем, что «терминал» это то самое что «консоль» — ну, тогда может, ещё пару-тройку синонимов придумаем, и будем зубрить и доказывать, что это одно и тоже.
Вот, например: галка палка, ну чем галка не палка или наоборот.
А то и вообще, сколько там у нас языков и наречий в мире, давай-те соберем все их транскрипции по данному термину и тело в шляпе.
Один только англоязычный язык чего стоит, в переводе некоторых слов на русский и их понятии… не хватит запаса имеющихся матерных слов, чтобы возмущению был предел.
Фигня это всё. Нужно, если взялись за определение термина, объяснять более доходчиво, а не то, что это часть, какой то системы. Ну и что, что она часть, мало ли таких частей у системы есть, например порт I/O и его драйвер или окно настройки драйвера или еще какой проги, тоже терминал? — ведь вроде как конкретно к системе не относится но, тоже является звеном интерфейса.Вот тут не хватает такой жилки, как например, взять такое понятие «Корреспондирующий счет». Если откинуть слово счёт (и так понятно) то, что кроется в термине «Корреспондирующий» Может можно пробовать поискать какую то связь в понятии созвучных слов таких как: корреспондент, почтальон, корреспонденция и все что к ней относится письмо, сообщение, извещение… в общем, искать какую то взаимосвязь что ль.
В общем, тема сырая.
Как-то давно в прошлом веке (серьезно) я тоже, когда еще не было в СССР компов, приходилось искать ответы на свои вопросы, в какой то бы не было макулатуре. И вот в одной древней пожелтевшей книге, которую я тоже штудировал но, ничего толком там так и не нашел, попалось одно хорошее изречении, которое наверно и мотивировало меня на дальнейшие поиски Знаний! Как говорят: Век живи и Век учись, а :(, да ладно, не будем о грустном:))
Так вот, что я там прочитал, не помню досконально, но вроде так: «Если из тысячи книг тебе попадется та, в которой ты найдешь ответ на свой извечный вопрос — считай, тебе повезло!» А вопросов у нас по жизни, как вы всё знаете и понимаете, больше чем ответов.
---
Еще не так давно сетевой протокол TELNET был достаточно распространен, ведь с его помощью можно было удаленно подключиться к любому компьютеру. Впрочем, с развитием информационных технологий, от него пришлось отказаться, ведь этот сетевой протокол обладает одним весомым недостатком - данные между компьютерами передавались в не зашифрованном виде.
На смену использованию TELNET при создании удаленного доступа пришло подключение по SSH, как более надежное, стабильное и безопасное. Впрочем, этот сетевой протокол все еще используется: TELNET-команды прекрасно подходят для настройки специализированных устройств - роутеров или коммуникаторов. Кроме того, с их помощью можно проводить самодиагностику и отладку самой сети.
Команды TELNET для Windows и Linux
Для работы с этим сетевым протоколом на подключаемом компьютере должен стоять TELNET-клиент, а на компьютере или физическом сервере на Windows, к которому выполняется подключение, должен быть запущен TELNET-сервер или любая другая назначенная по умолчанию аналогичная программа. Кстати, этот сервер должен запускаться автоматически при выполнении каких-либо действий на порте, связанном с этим протоколом.
Для ввода команды TELNET в Windows используется командная строка, а в Unix-системах - консоль. При этом для обоих семейств операционных систем непосредственно команды слабо отличаются.
Кроме того, в современных представителях Windows-семейства TELNET не является включенной по умолчанию службой, поэтому, чтобы в том же Windows 7 команда TELNET сработала, следует включить соответствующий сетевой протокол. Для этого нужно:
- Нажать кнопку "Пуск".
- Выбрать "Панель управления" - "Программы и компоненты" - "Включение или отключение компонентов Windows".
- В появившемся окне найти строки TELNET-сервер и Клиент TELNET и поставить рядом с ними галочки.
- Нажать кнопку "ОК".
- Дождаться выполнения и сохранения всех изменений.
После этого в каталоге /Windows/System32/ должен появиться исполняемый файл TELNET.
Как уже говорилось выше, команды TELNET для Linux и Windows похожи, и разница между вводимыми в консоли и в командной строке командами состоит лишь в том, что некоторые варианты для Windows могут иметь сокращенную форму.
Сама же команда TELNET в командной строке или консоли имеет вид TELNET [-a][-e Символ][-f Файл][-l Имя][-t Тип][Узел [Порт], где: [-a] - ключ автоматической авторизации, его действие похоже на результат выполнения атрибута -l, но -а использует те логин и пароль, при помощи которых клиент ранее был авторизован.
[-e Символ] - специальный служебный символ, который используется для смены окон ввода-вывода.
[-f Файл] - название файла журнала, используемого клиентом.
[-l Имя] - логин клиента, используемое для авторизации при условии работы параметра TELNET ENVIRON.
[-t Тип] - выбор типа терминала.
[Узел [Порт] - название или IP-адрес узла, к которому нужно выполнить подключение.
Это пример команды TELNET с аргументами. Если же использовать ее без аргументов, то откроется командный режим, где можно ввести следующие команды для Windows и Unix-систем:
- open host [-port] - производит открытие соденинеия с указанной системой;
- close - инициирует закрытие соединения и открывает командный режим;
- quit - завершает и закрывает все активные TELNET-соединения, а за ним - и сеанс;
- status - при помощи этой команды можно посмотреть статус подключения;
- ? [команда] - справка по конкретной команде, а если использовать без аргумента, то предоставляет справку по всем командам в целом.
Для Windows:
- display - можно просмотреть текущие настройки клиента;
- set - настроить тип терминала для подключения, аутентификацию NTLM, символ входа и журналирование, а также включить локальное отображение;
- unset - отключить локальное эхо или включить запрос на аутентификацию во время входа.
Если какая-либо консольная TELNET-команда или же использование аналогичной команды в командной строке вызвало у вас вопросы, на которые вы не можете найти ответ самостоятельно - спросите у специалистов техподдержки компании RigWEB. Вы получите ответ в течение получаса в любое время суток, чтобы как можно быстрее возобновить работу над поставленными задачами.
---
Ubuntu. Как через консоль узнать процессор, материнскую плату, видеокарту и прочее железо?
// Июль 18, 2012 | 12456 просмотров | комментариев (0)
Это делается довольно просто с помощью утилиты hardinfo.
Ставится просто:
sudo apt-get install hardinfo
Запускается довольно просто:
hardinfo | less
А ещё утилита умеет генерировать отчёт в HTML виде:
hardinfo -f html > hardinfo.report.html
Также подобное действие можно выполнить через lshw.
sudo apt-get install lshw
Смотрим так:
lshw | less
Ею тоже можно создать отчёт в HTML виде:
lshw -html > lshw.report.html
---
Конечно, администрировать сервер -- гораздо более сложное и полезное дело, чем настраивать консоль. Но про сложные и полезные вещи уже и без меня много написано, а про консоль я что-то нигде не видел, а иногда очень хочется, чтобы что-то было цветным, и динамик не пищал как резаный...
[Алексей Мичурин]
Конечно, администрировать сервер -- гораздо более сложное и полезное дело, чем настраивать консоль. Но про сложные и полезные вещи уже и без меня много написано, а про консоль я что-то нигде не видел, а иногда очень хочется, чтобы что-то было цветным, и динамик не пищал как резаный. Вот и решил я написать этот рассказик. Здесь далеко не все возможности. Более подробно смотрите man 4 console_codes.
Управление звуком
\007 | издать звук | |
\033[10;#] | установить частоту звукового сигнала в герцах | |
\033[11;#] | установить продолжительность звукового сигнала в миллисекундах |
Допускается объединение двух последних управляющих последовательностей. Например \033[10;55]\033[11;30] может быть заменено эквивалентной последовательностью \033[10;55;11;30].
Пример:
#!/bin/sh
# скрипт устанавливает продолжительность и частоту
# звукового сигнала равными 5000Hz и 200ms, соответственно;
# и издаёт звуковой сигнал
#
echo -en "\033[10;5000;11;200]\7"
Управление цветом
\033[0m | все атрибуты по умолчанию | |
\033[1m | жирный шрифт (интенсивный цвет) | |
\033[2m | полу яркий цвет (тёмно-серый, независимо от цвета) | |
\033[4m | выделение (ярко-белый, независимо от цвета) | |
\033[5m | мигающий | |
\033[7m | реверсия (знаки приобретают цвет фона, а фон -- цвет знаков) | |
\033[22m | установить нормальную интенсивность | |
\033[24m | отменить подчеркивание | |
\033[25m | отменить мигание | |
\033[27m | отменить реверсию | |
\033[30 | чёрный цвет знаков | |
\033[31 | красный цвет знаков | |
\033[32 | зелёный цвет знаков | |
\033[33 | коричневый цвет знаков | |
\033[34 | синий цвет знаков | |
\033[35 | фиолетовый цвет знаков | |
\033[36 | цвет морской волны знаков | |
\033[37 | серый цвет знаков | |
\033[40 | чёрный цвет фона | |
\033[41 | красный цвет фона | |
\033[42 | зелёный цвет фона | |
\033[43 | коричневый цвет фона | |
\033[44 | синий цвет фона | |
\033[45 | фиолетовый цвет фона | |
\033[46 | цвет морской волны фона | |
\033[47 | серый цвет фона |
Допускается объединение этих управляющих последовательностей. Например \033[1m\033[5m\033[36m может быть заменено эквивалентной последовательностью \033[1;5;36m.
Пример:
#!/bin/sh
#
# скрипт выводит на экран сообщение с использованием цвета
#
echo -en "\33[37;1;41m CAUTION \33[0m"
Пример:
#!/bin/sh
#
# скрипт запускает копию командного интерпретатора sh
# с цветным приглашением
#
export PS1="\[\033[1;30m\][\[\033[0m\]\t\[\033[1;30m\];\
\[\033[0m\]\W\[\033[1;30m\]]\[\033[36;1m\]|\[\033[0m\] "
echo "Now runing a new copy of shell width color prompt"
echo -en "use \033[1;36mexit\033[0m command or"
echo -e "\033[1;36m^D\033[0m to return back"
sh
#
# обратите внимание на то, что управляющие последовательности
# заключены в скобки "\[" и "\]"
# Это сделано для того, чтобы shell не учитывал их при
# оценке длины строки.
# В противном случае длинные строки будут переноситься неверно.
#
Управление положением курсора
\033[#A | передвинуть курсор вверх на # строк | |
\033[#B | передвинуть курсор вниз на # строк | |
\033[#С | передвинуть курсор вправо на # столбцов | |
\033[#D | передвинуть курсор влево на # столбцов | |
\033[#E | передвинуть курсор вниз на # строк и поставить в начало строки | |
\033[#F | передвинуть курсор вверх на # строк и поставить в начало строки | |
\033[#G | переместить курсор в указанный столбец текущей строки | |
\033[#;#H | задает абсолютные координаты курсора (строка, столбец) |
Пример:
#!/bin/sh
#
# скрипт выводит на экран список устройств и на его фоне
# печатает строку " It is devices list "
#
ls -l /dev
echo -en "\033[12A\033[30G\033[1;5;31;41m It is devices list \033[0m\033[12E"
Работа с палитрой
\033]Pnrrggbb | Изменяет палитру. n -- номер цвета; rr, gg и bb -- значения RGB-компонент в шестнадцатеричной форме | |
\033]R | Восстанавливает палитру, принятую по умолчанию |
Пример:
#!/bin/sh
#
# скрипт делает фон красноватым
# такой фон удобно иметь на консоли root'a;
#
echo -en "\033]0550000"
Работа с виртуальными консолями
\033[12;#] | Сделать текущей консоль с указанным номером |
Пример:
#!/bin/sh
#
# скрипт делает текущей консоль на которой запущена
# самая прожорливая задача
#
ps aOv | tail -n1 | ( read vpid vtty vother
echo -en "\033[12;${vtty}]" )
Работа с xterm
\033]0;text\007 | Присваивает имя окну и иконке | |
\033]1;text\007 | Присваивает имя иконке | |
\033]2;text\007 | Присваивает имя окну |
Пример:
#!/bin/sh
#
# скрипт присваивает имена окну и иконке
#
echo -en "\033]2;My Window\007\033]1;My Icon\007"
---
Wmctrl
Скрестить мощь скриптов и красоту графики поможет wmctrl. С его помощью можно изменять размер и расположение окон на экране, автоматизировать смену рабочих столов или использовать информацию об открытых окнах в других скриптах.
Основное преимущество wmctrl — полная независимость от какого-либо оконного менеджера. Он взаимодействует с окнами посредством протокола EWMH/NetWM, который поддерживают большинство оконных менеджеров.
Не буду утомлять тебя рассказами о возможностях утилиты и ее флагах, а сразу покажу пример. Все знают о существовании Yakuake и Tilda, специальных эмуляторов терминала, которые можно разворачивать и сворачивать нажатием клавиши. С помощью wmctrl ты можешь наделить такими возможностями любой другой эмулятор терминала (например, Konsole из KDE).
#! /bin/bashif [ `wmctrl -xl | grep -c Konsole` != 0 ]; then
if [ -f /tmp/.Konsole.add ]; then
wmctrl -r Konsole -b add,below
rm /tmp/.Konsole.add
else
wmctrl -r Konsole -b add,above
touch /tmp/.Konsole.add
fi
else
konsole
fi
Просто повесь его на клавиатурную комбинацию. Первое нажатие запустит терминал, а все последующие будут сворачивать/разворачивать его.
Эмулятор терминала не единственное применение wmctrl в рамках представленного выше скрипта. На самом деле вместо Konsole можно подставить любую программу. А можно пойти дальше и задействовать в сценарии два окна, например браузер и мессенджер, таким образом, чтобы в определенный момент работы в интернете нажатием клавиш можно было заставить браузер подвинуться и освободить место под мессенджер и кинуть взгляд на сообщения в чате.
Чтобы этого добиться, сначала нужно определить размеры окон обоих приложений в каждом из двух требующихся состояний. Делается это с помощью команды wmctrl -lG
(перед этим растяни/сожми окна до нужных размеров):
$ wmctrl -lG
0x0500001b 0 0 55 1280 726 N/A Проект OpenNet - QupZilla
0x03000005 0 900 55 380 693 N/A Telegram (6)$ wmctrl -lG
0x0500001b 0 0 55 900 693 N/A Проект OpenNet - QupZilla
0x03000005 0 900 55 380 693 N/A Telegram (6)
Опция -G
добавляет четыре дополнительных столбца в середине вывода команды. В них отражены данные о смещении окон по осям X и Y, а также их ширина и высота соответственно. В моем случае я сначала использовал данные в точности, как их вывела команда. Но при подстановке в сценарий расположение окна QupZilla по оси Y по какой-то причине отличалось от расчетного, поэтому его пришлось немного подкорректировать вручную.
#!/bin/shif [ -f /tmp/.telega.half ]; then
wmctrl -r Telegram -e '0,900,55,380,693' -b add,below
wmctrl -r QupZilla -e '0,0,26,1280,726'
rm /tmp/.telega.half
else
wmctrl -r QupZilla -e '0,0,26,900,693'
wmctrl -r Telegram -e '0,900,55,380,693' -b remove,below
touch /tmp/.telega.half
fi
При первом запуске этот скрипт сожмет окно браузера с правой стороны и покажет в освободившемся пространстве окно мессенджера. Второй запуск закроет мессенджер и вернет окно браузера в прежнее состояние.
---
Эффективная профессиональная работа в Linux немыслима без использования командной строки. Пользователям, привыкшим работать в системах с графическим интерфейсом, работа с командной строкой может показаться неудобной: то, что можно сделать одним перетаскиванием мышью в командной строке потребует ввода с клавиатуры нескольких слов: команды с аргументами. Однако в Linux этот вид интерфейса всегда был основным, а поэтому и хорошо развитым. В командных оболочках, используемых в Linux, есть масса способов экономии усилий (нажатий на клавиши) при выполнении наиболее распространённых действий: автоматическое дополнение длинных названий команд или имён файлов, поиск и повторное выполнение команды, уже когда-то исполнявшейся раньше, подстановка списков имён файлов по некоторому шаблону и многое другое. Преимущества командной строки становятся особенно очевидны, когда требуется выполнять однотипные операции над множеством объектов. В системе с графическим интерфейсом потребуется столько перетаскиваний мышью, сколько есть объектов, в командной строке будет достаточно одной (пусть длинной и сложной) команды.
В этом разделе будут описаны основные инструменты, позволяющие при помощи командной строки решать любые задачи пользователя: от тривиальных операций с файлами и каталогами (копирование, переименование, поиск) до сложных задач, требующих массовых однотипных операций, которые возникают как в прикладной работе пользователя, при работе с большими массивами данных или текста, так и в системном администрировании. В первую очередь будут описаны инструменты, предоставляющие возможность работы с командной строкой в дистрибутиве ALT Linux 2.4 Master (командные оболочки и эмуляторы терминала), а затем основные утилиты командной строки, выполняющие важнейшие операции с файловой системой и данными.
Командные оболочки (shells)
Общая информация об оболочках
Командная оболочка (или интерпретатор команд) — это программа, задача которой состоит в том, чтобы передавать ваши команды операционной системе и прикладным программам, а их ответы — вам. По своим задачам ему соответствует command.com в MS-DOS или cmd.exe в Windows, но функционально оболочки в Linux несравненно богаче. На языке командной оболочки можно писать небольшие программы для выполнения ряда последовательных операций с файлами и содержащимися в них данными — сценарии (скрипты).
Зарегистрировавшись в системе (введя имя пользователя и пароль), вы увидите приглашение командной строки — строку, оканчивающуюся символом $ (далее этот символ будет использоваться для обозначения командной строки). В случае, если при установке был настроен запуск графического интерфейса при загрузке системы, то добраться до командной строки можно на любой виртуальной текстовой консоли (нажав Ctrl-Alt-F1 — Ctrl-Alt-F6) или при помощи любой программы эмуляции терминала, например xterm. Подробнее об эмуляторах терминала см. раздел Терминалы. В дистрибутиве ALT Linux 2.4 Master доступны следующие командные оболочки:
- bash
-
Самая распространённая оболочка под Linux. Она умеет дополнять имена команд и файлов, ведёт историю команд и предоставляет возможность их редактирования.
- pdkdh
-
Клон korn shell, хорошо известной в системах UNIX командной оболочки.
- sash
-
Особенность этой оболочки состоит в том, что она не зависит ни от каких разделяемых библиотек и включает в себя упрощённые реализации некоторых важнейших утилит, таких как ls, dd и gzip. Поэтому sash особенно полезна при восстановлении после некоторых системных сбоев или при обновлении версии важнейших разделяемых библиотек.
- tcsh
-
Улучшенная версия C shell.
- zsh
-
Новейшая из перечисленных здесь оболочек, в ней реализованы расширенные возможности автодополнения аргументов команд и множество других функций, делающих работу с оболочкой ещё более удобной и эффективной. Однако обратите внимание, что все расширения zsh по умолчанию отключены, поэтому прежде чем начать пользоваться этой командной оболочкой, необходимо прочесть документацию к ней и включить те функции, которые вам необходимы.
Оболочкой по умолчанию является bash (Bourne Again Shell). Чтобы проверить, какую оболочку вы используете, наберите команду: echo $SHELL.
Оболочки отличаются друг от друга не только возможностями, но и синтаксисом команд. Если вы — начинающий пользователь, мы рекомендуем вам использовать bash, дальнейшие примеры описывают работу именно в этой облочке.
Командная оболочка bash
Командная строка в bash составляется из имени команды, за которым могут следовать ключи (опции) — указания, модифицирующие поведение команды. Ключи начинаются с символа - или --, и зачастую состоят из одной буквы. Кроме ключей, после команды могут следовать аргументы (параметры) — названия объектов, над которыми должна быть выполнена команда (часто — имена файлов и каталогов).
Ввод команды завершается нажатием клавиши Enter, после чего команда передаётся оболочке на исполнение. В результате выполнения команды на терминале пользователя могут появиться сообщения о ходе выполнения команды или об ошибках, а появление очередного приглашения командной строки (оканчивающегося символом $) — знак того, что выполнение команды завершено и можно вводить следующую.
В bash имеется несколько приёмов, облегчающих ввод и редактирование командной строки. Например, используя клавиатуру, вы можете:
- Ctrl-A
-
перейти на начало строки, это же можно сделать, нажав клавишу Home;
- Ctrl-U
-
удалить текущую строку;
- Ctrl-C
-
Прервать выполнение текущей команды.
Вы можете использовать символ ; для того, чтобы ввести несколько команд в одну строку. bash записывает историю всех выполненных команд, поэтому несложно повторить или отредактировать одну из предыдущих команд. Для этого достаточно выбрать нужную команду из истории: клавиша вверх выводит предыдущую команду, вниз — последующую. Для того, чтобы найти конкретную команду среди уже выполненных, не пролистывая всю историю, наберите Ctrl-R и введите какое-нибудь ключевое слово, употребленное в той команде, которую вы ищете.
Команды, присутствующие в истории, отображаются в списке пронумерованными. Для того, чтобы запустить конкретную команду, наберите:
!номер команды
Если ввести !!, запустится последняя из набранных команд.
Иногда в Linux имена программ и команд слишком длинны. К счастью, bash сам может завершать имена. Нажав клавишу Tab, вы можете завершить имя команды, программы или каталога. Например, предположим, что вы хотите использовать программу декомпрессииbunzip2. Для этого наберите:
bu
Затем нажмите Tab. Если ничего не происходит — значит, существует несколько возможных вариантов завершения команды. Нажав клавишу Tab ещё раз, вы получите список имён, начинающихся с bu.
Например, в системе есть программы buildhash, builtin, bunzip2:
$ bu buildhash builtin bunzip2 $ bu
Наберите n > (bunzip — это единственное имя, третьей буквой которого является n), а затем нажмите Tab. Оболочка дополнит имя и остаётся лишь нажать Enter, чтобы запустить команду!
Заметим, что программу, вызываемую из командной строки, bash ищет в каталогах, определяемых в системной переменной PATH. По умолчанию в этот перечень каталогов не входит текущий каталог, обозначаемый ./ (точка слэш). Поэтому для запуска программы prog из текущего каталога надо дать команду ./prog.
Базовые команды
Первые задачи, которые приходится решать в любой системе: работа с данными (обычно хранящимися в файлах) и управление работающими в системе программами (процессами). Ниже перечислены команды, позволяющие выполнять наиболее важные операции по работе с файлами и процессами. Только первая из них — cd — является составляющей частью собственно командной оболочки, остальные распространяются отдельно, но всегда доступны в любой системе Linux. Все команды, приведённые ниже, могут быть запущены как в текстовой консоли, так и в графическом режиме (xterm, консоль KDE). Для получения более подробной информации по каждой из команд используйте команду man, например:
man ls
- cd
-
Позволяет сменить текущий каталог (перемещаться по файловой системе). Она работает как с абсолютными, так и с относительными путями. Предположим, что вы находитесь в своём домашнем каталоге и хотите перейти в его подкаталог tmp/. Для этого, введите относительный путь:
cd tmp/
Чтобы перейти в каталог /usr/bin, наберите (абсолютный путь):
cd /usr/bin/
Некоторые варианты использования команды:
cd ..
позволяет вам сделать текущим родительский каталог (обратите внимание на пробел между cd и ..).
cd -
позволяет вам вернуться в предыдущий каталог. Команда cd без параметров возвращает оболочку в домашний каталог.
- ls
-
ls (list) выдаёт список файлов в текущем каталоге. Две основные опции: -a — просмотр всех файлов, включая скрытые, -l — отображение более подробной информации.
- rm
-
Эта команда используется для удаления файлов. Внимание: удалив файл, вы не сможете его восстановить!. Синтаксис: rm имя_файла.
У данной программы существует ряд параметров. Самые часто используемые: -i — запрос на удаление файла, -r — рекурсивное удаление (т. е. удаление, включая подкаталоги и скрытые файлы). Пример:
rm -i ~/html/*.html
Удаляет все файлы .html, в вашем каталоге html.
- mkdir, rmdir
-
Команда mkdir позволяет вам создать каталог, тогда как rmdir удаляет каталог при условии, что он пуст. Синтаксис:
mkdir имя_каталога
rmdir имя_каталога
Команда rmdir часто заменяется командой rm -rf, которая позволяет вам удалять каталоги, даже если они не пусты.
- less
-
less позволяет вам постранично просматривать текст. Синтаксис:
less имя_файла
Бывает полезно просмотреть файл перед тем, как его редактировать; основное же применение данной команды — конечное звено цепочки программ, выводящей существенное количество текста, которое не умещается на одном экране и в противном случае слишком быстро промелькнёт. Для выхода из less нажмите q (quit).
- grep
-
Данная команда позволяет найти строку символов в файле. Обратите внимание, что grep осуществляет поиск по регулярному выражению, то есть предоставляет возможность задавать шаблон для поиска сразу целого класса слов. На языке регулярных выражений можно составлять шаблоны, описывающие6 например, такие классы строк: «четыре цифры подряд, окружённые пробелами». Очевидно, такое выражение можно использовать для поиска в тексте всех годов, записанных цифрами. Возможности поиска по регулярному выражению очень широки, за более подробными сведениями вы можете обратиться к экранной документации по grep (man grep). Синтаксис:
grep шаблон_поискафайл
- ps
-
Отображает список текущих процессов. Колонка команд указывает имя процесса, PID (идентификатор процесса) — номер процесса (используется для операций с процессом — например, отправки сигналов командой kill). Синтаксис:
ps аргументы
Аргумент u предоставляет вам больше информации, ax позволяет вам просмотреть те процессы, которые не принадлежат вам.
- kill
-
Если программа перестала отвечать или зависла, используйте данную команду, чтобы её завершить. Синтаксис:
kill PID_номер
PID_номер здесь — идентификационный номер процесса, вы можете узнать номер процесса для каждой выполняемой программы при помощи команды ps. Обычно команда kill отправляет процессу сигнал нормального завершения, однако иногда это не срабатывает и необходимо будет использовать kill -9 PID_number — в этом случае команда будет немедленно завершена системой без возможности сохранения данных (аварийное завершение). Список сигналов, которые команда kill может отправлять процессу можно получить, отдав команду kill -l.
Midnight Commander
Если вы многие годы работали в MS-DOS/Windows, то, наверное, ощущаете себя немного «не в своей тарелке». Для того, чтобы попасть в привычную среду, запустите Midnight Commander командой mc. Midnight Commander — это свободный аналог Norton Commander и его популярного ныне потомка — Far. Если вы в какой-то момент сочтёте, что Midnight Commander что-то не умеет, то это, скорее всего, неверно. Ознакомьтесь с его описанием в /usr/share/doc/mc-номер_версии или дайте команду man mc.
Пакет coreutils
Антон Бояршинов
Пакет coreutils содержит множество маленьких утилит для работы с файлами и каталогами (создание, копирование и проч.) и текстовыми строками (объединение, сортировка и проч.). Принцип работы этих утилит унаследован от операционной системы UNIX: все они не имеют графического интерфейса и вызываются из командной строки с различными аргументами, работают с данными в простом текстовом формате и используют механизм стандартного ввода/вывода, что позволяет передавать вывод одной команды прямо на вход другой для последующей обработки, не используя промежуточных файлов (т. н. конвейер).
Эффективная работа с этими утилитами заключается именно в их комбинировании, они позволяют производить массовые однотипные операции по работе с файлами и текстовыми данными одной (пусть достаточно длинной) командой, что экономит огромное количество человеческого времени. Утилиты из этого пакета часто используются при написании сценариев командной оболочки. Далее описана большая часть утилит, входящих в пакет coreutils, для каждой утилиты приведено краткое описание ее функций. Более подробное описание по каждой утилите на русском языке вы можете получить, вызвав эту утилиту с ключом --help, а наиболее полную документацию (к сожалению, только на английском языке) — отдав команду info утилита.
Операции над файлами и каталогами
Здесь рассмотрены утилиты, работающие с объектами файловой системы: файлами, каталогами, устройствами, а также с файловыми системами в целом.
- cp
-
Копирует файлы и каталоги.
- mv
-
Перемещает (переименовывает) файлы.
- rm
-
Удаляет файлы и каталоги.
- df
-
Выводит отчёт об использовании дискового пространства (свободном месте на всех дисках).
- du
-
Вычисляет место на диске, занимаемое файлами или каталогами.
- ln
-
Создаёт ссылки на файлы.
- ls
-
Выводит список файлов в каталоге, поддерживает несколько различных форматов вывода.
- mkdir
-
Создаёт каталоги.
- touch
-
Изменяет метки времени файла (последняя модификация, последний доступ), может быть использована для создания пустых файлов.
- realpath
-
Вычисляет абсолютное имя файла по относительному.
- basename
-
Удаляет из полного имени файла путь (т. е. сокращает абсолютное имя файла до относительного).
- dirname
-
Удаляет из полного имени файла имя файла (т. е. выводит полное имя каталога, в котором расположен файл).
- pwd
-
Выводит имя текущего каталога.
Пример 7.1. Выявление каталогов, занимающих много места на диске, при помощи команды du
du -b | sort -nr
Фильтры
Фильтры — это программы, которые читают данные со стандартного ввода, преобразуют их и выводят на стандартный вывод. Использование программ-фильтров позволяет организовывать конвейер: производить несколько последовательных операций над данными в одной команде. Подробнее о перенаправлении стандартного ввода/вывода и конвейере можно прочитать в документации по bash или другой командной оболочке. Многие из команд, приведённых в этом разделе, могут работать и с файлами.
- cat
-
объединяет файлы и выводит их на стандартный вывод;
- tac
-
объединяет файлы и выводит их на стандартный вывод, начиная с конца;
- sort
-
сортирует строки;
- uniq
-
удаляет дублирующиеся строки из отсортированных файлов;
- tr
-
выполняет замену определенных символов в стандартном вводе на другие определенные символы в стандартном выводе, может быть использована для транслитерации, удаления лишних символов и для более сложных подстановок;
- cut
-
систематизированные данные в текстовом формате можно обрабатывать при помощи утилиты cut, которая выводит заданную часть каждой строки файла; cut позволяет выводить только заданные поля (данные из некоторых колонок таблицы, в которой содержимое ячеек разделено стандартным символом — знаком табуляции или любым другим), а также символы, стоящие на определённом месте в строке;
- paste
-
объединяет данные из нескольких файлов в одну таблицу, в которой данные из каждого исходного файла составляют отдельную колонку;
- csplit
-
делит файл на части по шаблону;
- expand
-
преобразует знаки табуляции в пробелы;
- unexpand
-
преобразует пробелы в знаки табуляции;
- fmt
-
форматирует текст по ширине;
- fold
-
переносит слишком длинные текстовые строки на следующую строку;
- nl
-
нумерует строки файла;
- od
-
выводит файл в восьмеричном, шестнадцатеричном и других подобных формах;
- tee
-
дублирует стандартный вывод программы в файле на диске;
Пример 7.2. Получение списка адресов писавших вам людей с помощью команд cat, sort и uniq
cat *| grep ^From: |sort |uniq
Пример 7.3. Получение списка слов, встречающихся в тексте, с указанием количества употреблений
cat big.text.file | tr '[:space:][:punct:]' "\n" |sort |uniq -c |sort -n -r |less
Прочее
- head
-
выводит начальную часть файла заданного размера;
- tail
-
выводит конечную часть файла заданного размера, поскольку может выводить данные по мере их добавления в конец файла, используется для слежения за файлами журналов и проч.;
- echo
-
выводит текст аргумента на стандартный вывод;
- false
-
ничего не делает, выходит с кодом возврата 1 (ошибка), может быть использована в сценариях оболочки, если треуется неудачно завершающаяся команда;
- true
-
ничего не делает, выходит с кодом возврата 0 (удачное завершение), может быть использована в сценариях, если требуется удачно завершающаяся команда;
- yes
-
бесконечно выводит одну и ту же строку (по умолчанию — yes) пока не будет прервана.
- seq
-
выводит ряд чисел в заданном диапазоне последовательно возрастающих или убывающих на заданную величину;
- sleep
-
приостанавливает выполнение на заданное число секунд;
- usleep
-
приостанавливает выполнение на заданное число милисекунд;
- comm
-
построчно сравнивает 2 предварительно отсортированных (командой sort) файла, выводит таблицу из трёх колонок, где в первой — строки, уникальные для первого файла, во второй — уникальные для второго, в третьей — общие для обоих файлов;
- join
-
объединяет строки двух файлов по общему полю;
- paste
-
Для каждой пары входных строк с одинаковыми общими полями выводит строку на стандартный вывод. По умолчанию общее поле считается первым, поля разделяются пробельными знаками.
- split
-
разбивает файл на части заданного размера.
Вычисления
Помимо простых операций со строками (ввод/вывод и объединение) нередко требуется выполнять некоторые вычисления над имеющимися данными. Ниже перечислены утилиты, которые выполняют вычисления над числами, датами, строками.
- test
-
возвращает значения «истина» или «ложь» в зависимости от значения аргументов; команду test удобно использовать в сценариях для проверки условий;
- date
-
выводит и устанавливает системную дату, кроме того может быть использована для вычислений над датами;
- expr
-
вычисляет выражения;
- md5sum
-
подсчитывает контрольную сумму по алгоритму MD5;
- sha1sum
-
подсчитывает контрольную сумму по алгоритму SHA1;
- wc
-
подсчитывает количество строк, слов и символов в файле;
- factor
-
разлагает числа на простые множители;
Пример 7.4. Проверка наличия файла при помощи команды test
if test -e /bin/bash; then echo "bash присутствует"; else echo "bash отсутствует, странно"; fi;
Пример 7.5. Сравнение чисел при помощи команды test
if test 5 -gt 7; then echo "5 > 7"; else echo "7 > 5"; fi;
Пример 7.6. Подсчёт суммы строк во всех файлах на языке C в текущем каталоге при помощи команды wc
cat *.[ch] | wc -l
Пример 7.7. Получение вчерашней даты при помощи команды date
date -d yesterday
Ну и в завершение не будет лишним почитать полную документацию по всем утилитам, входящим в пакет coreutils:
rpm -ql coreutils | grep man | xargs -n1 basename | sed 's/.1.gz//' | xargs man
Поиск
Антон Бояршинов
Поиск информации в файловой системе можно условно разделить на поиск по атрибутам файла (понимая их расширительно, то есть включая имя, путь и т. п.) и поиск по содержимому. Для этих видов поиска как правило используются программы find и grepсоответственно. Благодаря удобным средствам межпроцессного взаимодействия, эти два вида поиска легко объединить, то есть искать нужную информацию только в файлах с нужными атрибутами.
Поиск по атрибутам
Основным средством поиcка по атрибутам файла является программа find. Обобщенный вызов find выглядит так: find путь выражение, где путь — это список каталогов, в которых надо искать, а выражение — набор выражений, описывающих критерии отбора файлов и действия, которые надо произвести над найденными файлами. По умолчанию имена найденных файлов просто выводятся на стандартный вывод, но это можно переопределить и передавать список имён найденных файлов любой команде для обработки. По умолчаниюfind ищет во всех подкаталогах каталогов, заданных в списке путей.
Выражения
Выражения, определяющие критерии поиска файлов, состоят из пар ключ — значение. Ниже перечислены некоторые из возможных параметров поиска:
- -amin, -anewer, -atime
-
Время последнего доступа к файлу. Позволяет искать файлы, которые были открыты в некоторый период времени, или наоброт, файлы, к которым никто не обращался в течение некоторого периода.
- -cmin, -cnewer, -ctime
-
Время последнего изменения статуса файла.
- -fstype
-
Тип файловой системы, на которой расположен файл.
- -gid, -group
-
Пользователь и группа, которым принадлежит файл.
- -name, -iname
-
Соответствие имени файла заданному шаблону.
- -regex, -iregex
-
Соответствие имени файла регулярному выражению.
- -path, -ipath
-
Соответствие полного имени файла (с путём) заданному шаблону.
- -perm
-
Права доступа.
- -size
-
Размер файла.
- -type
-
Тип файла.
Действия
Программа find может выполнять различные действия над найденными файлами. Наиболее важные из них:
-
Вывести имя файла на стандартный выход (действие по умолчанию);
- -delete
-
удалить файл;
- -exec
-
выполнить команду, передав ей в качестве параметра имя файла.
Об остальных можно прочитать в экранной документации по команде find, отдав команду man find.
Параметры
Параметры влияют на общее поведение find. Наиболее важные из них:
- -maxdepth
-
максимальная глубина поиска в подкаталогах;
- -mindepth
-
минимальная глубина поиска в подкаталогах;
- -xdef
-
поиск только в пределах одной файловой системы.
Об остальных можно прочитать в экранной документации по команде find.
Пример 7.8. Перекодировка имён файлов и каталогов из koi8-r в cp1251
find ./ -print | tac | sed -e 's/"/\\"/' | while read name; do mv "$name" "`dirname "$name"`/`basename "$name" | iconv -f koi8-r -t cp1251`"; done
Терминалы
Терминал в Linux — это программа, которая предоставляет пользователю возможность вести диалог с системой при помощи интерфейса командной строки. Терминалы позволяют передавать системе и получать от неё только текстовые данные. Стандартный терминал к системе Linux можно получить на любой текстовой виртуальной консоли, а для того, чтобы получить доступ к командной стоке из графической оболочки, требуются специальные программы — эмуляторы терминала. Ниже перечислены некоторые из эмуляторов терминала и подобных программ, вошедших в дистрибутив ALT Linux 2.4 Master.
- xterm
-
Программы: resize, uxterm, xterm.
Стандартный эмулятор терминала для X Window System. Этот эмулятор совместим с терминалами DEC VT102/VT220 и Tektronix 4014 и предназначен для программ, не использующих графическую среду напрямую. Если операционная система поддерживает изменение окна терминала (например, сигнал SIGWINCH в системах, произошедших от 4.3bsd), xterm может использовать сообщать программам, запущенным в нем, что размер окна изменился.
- aterm
-
Aterm — это цветной эмулятор терминала rxvt версии 2.4.8, дополненный полосами прокрутки в стиле NeXT от Альфредо Кодзима (Alfredo Kojima). Он предназначен для замены xterm в случае, если не нужна эмуляция терминала Tektronix 4014.
- console-tools
-
Программы: charset, chvt, codepage, consolechars, convkeys, deallocvt, dumpkeys, fgconsole, fix_bs_and_del, font2psf, getkeycodes, kbd_mode, loadkeys, loadunimap, mapscrn, mk_modmap, openvt, psfaddtable, psfgettable, psfstriptable, resizecons, saveunimap, screendump,setfont, setkeycodes, setleds, setmetamode, setvesablank, showcfont, showkey, splitfont, unicode_stop, vcstime, vt-is-UTF8, writevt.
Этот пакет содержит инструменты для загрузки консольных шрифтов и раскладок клавиатуры. Он также включает набор разнообразных шрифтов и описаний раскладок.
В случае, если он установлен, его инструменты используются во время загрузки/входа в систему для установления системной/персональной конфигурации консоли.
- screen
-
Утилита screen позволяет исполнять консольные программы, когда вы не можете контролировать их выполнение все время (к примеру, если вы ограничены сеансовым доступом к удалённой машине).
Например, вы можете выполнять несколько интерактивных задач на одном физическом терминале (сеанс удалённого доступа) посредством переключения между виртуальными терминалами с помощью screen, установленной на удалённой машине. Или эта программа может быть использована для запуска программ, не требующих непосредственного подключения к физическому терминалу.
Установите пакет screen, если вам могут понадобиться виртуальные терминалы.
- vlock
-
Программа vlock позволяет заблокировать ввод при работе в консоли. Vlock может блокировать текущий терминал (локальный или удалённый) или всю систему виртуальных консолей, что позволяет полностью закрыть доступ ко всем консолям. Разблокировка происходит только после успешной авторизации того пользователя, который инициировал блокировку консоли.
Работа с файлами
- binutils
-
Это коллекция утилит для работы с бинарными файлами. Она включает в себя:
-
addr2line: преобразование адресов в пару файл-строка;
-
ar: создание, изменение архивов и извлечение файлов из них;
-
nm: чтение символов из объектных файлов;
-
objcopy: копирование и трансляция объектных файлов;
-
objdump: вывод информации из объектных файлов;
-
ranlib: создание индексов для содержимого архива;
-
size: вывод размеров блоков объекта или архивного файла;
-
strings: вывод печатаемых строк из файлов;
-
strip: отбрасывание символов.
-
- diffutils
-
Набор утилит проекта GNU для сравнения файлов. Пакет diffutils включает четыре утилиты:
-
diff: сравнивает два файла и выводит различающиеся строки;
-
cmp: сравнивает файлы не построчно, а побайтово;
-
diff3: сравнивает три файла и может использоваться, когда два человека редактируют исходный файл независимо друг от друга; при этом программа может создавать файл, содержащий исправления из обоих вариантов, а также предупреждения о коллизиях;
-
sdiff: предназначен для интерактивного слияния двух файлов.
Установите diffutils, если вам нужно сравнивать текстовые файлы.
-
- patch
-
Программа patch предназначена для внесения исправлений, созданных командой diff, в исходные файлы. Команда diff используется для сравнения изменённого и исходного файлов и создания на основе полученной информации файла исправлений. Человек, нуждающийся в изменении исходного файла, может использовать для этого команду patch.
Установите программу patch, так как это общепринятый способ обновления приложений, собираемых из исходных кодов.
- file
-
Команда file используется для определения типа данных, содержащихся в файле. file различает множество типов файлов, включая бинарные файлы формата ELF, системные библиотеки, пакеты RPM и множество различных графических форматов.
- gnupg
-
Программы: gpg, gpgsplit, gpgv, lspgpot.
Инструмент для защиты обмена данными и хранилищ данных. Может использоваться для шифрования информации и создания цифровых подписей. Пакет включает в себя инструменты управления ключами. GnuPG использует криптографию с открытым ключом. Каждый пользователь имеет пару ключей, состоящую из секретного (закрытого) и публичного (открытого) ключей. Секретный ключ доступен только пользователю и не может быть передан другому лицу ни при каких обстоятельствах. Публичный ключ передаётся всем людям, с которыми пользователь будет обмениваться сообщениями.
- kgpg
-
Kgpg — простой интерфейс к мощной утилите шифрования GnuPG.
- slocate
-
Программы: locate, slocate, mklocatedb, updatedb.
Более безопасная версия программы locate. Как и locate, slocate отыскивает файлы, совпадающие с заданным шаблоном в центральной базе данных файлов (которая обычно обновляется каждую ночь). Позволяет значительно сократить время поиска файла по сравнению с find, особенно при большом количестве файлов.
- stmpclean
-
Программы: stmpclean, tmpwatch.
Утилита stmpclean удаляет старые файлы (и старые пустые каталоги) из указанного каталога. Эта программа обычно используется для очистки каталогов временных файлов (например, /tmp), где обычно накапливаются ненужные файлы.
- tree
-
Утилита tree рекурсивно отображает содержимое каталогов в виде дерева. tree базируется на портированной в UNIX из MS-DOS программе tree. Установите этот пакет, если вам нужно просматривать каталоги в таком виде.
---
В Linux существует огромное количество команд. Зачастую мы используем их для выполнения общих задач. Важно отметить, что некоторые команды «основаны на дистрибутиве» это означает, что их можно найти только в определенных дистрибутивах. В то время как другие — общие команды Unix/Linux, вы найдете во всех, если не в большинстве основных дистрибутивов.
В этой статье мы представим вам список наиболее часто используемых команд Linux с примерами для легкого обучения. Вы можете найти фактическое описание каждой команды на своём ПК, для этого вам необходимо ввести:
$ man "command-name"
Команда adduser/addgroup
Команды adduser и addgroup используются для добавления пользователя и группы в систему в соответствии с конфигурацией по умолчанию, указанной в файле /etc/adduser.conf.
$ sudo adduser sedicomm
Команда agetty
Agetty — это команда, которая управляет физическими или виртуальными терминалами и вызывается init. Как только она обнаруживает соединение, сразу открывает порт tty, запрашивает имя пользователя для входа и вызывает команду /bin/login. Agetty — это замена Linux getty:
$ agetty -L 9600 ttyS1 vt100
Команда alias
Alias - полезная встроенная командная оболочка для создания псевдонимов (ярлыков) для команд Linux. Это полезно для создания новых/пользовательских команд из существующих команд оболочки Linux (включая опции):
$ alias home='cd /home/sedicomm/public_html'
Вышеупомянутая команда создаст псевдоним, называемый home для каталога /home/sedicomm/public_html, поэтому всякий раз, когда вы вводите home в командной строке терминала, она помещает вас в каталог /home/sedicomm/public_html.
Команда anacron
Anacron — это команда Linux, используемая для периодического запуска команд с частотой, определенной в днях, неделях и месяцах.
В отличие от cron, она предполагает, что система не будет работать непрерывно, поэтому, если запланированное задание выполняется, когда система выключена, она запускается после включения устройства.
Команда apropos
Команда apropos используется для поиска и отображения краткой справочной страницы команды/программы следующим образом:
$ apropos adduser
Команда apt
Инструмент apt — относительно новый менеджер пакетов высокого уровня для систем Debian/Ubuntu:
$ sudo apt update
Команда apt-get
Apt-get — мощный и бесплатный менеджер пакетов интерфейса для систем Debian/Ubuntu. Он используется для установки новых, удаления доступных и обновления существующих пакетов программного обеспечения, а также обновления всей операционной системы.
$ sudo apt-get update
Команда aptitude
Aptitude — это мощный текстовый интерфейс для системы управления пакетами Debian GNU/Linux. Такими как apt-get и apt. Его можно использовать для установки, удаления или обновления пакетов программного обеспечения в системе.
$ sudo aptitude update
Команда arch
Arch — простая команда для отображения архитектуры машины или имени оборудования (аналогично uname -m):
$ arch
Команда arp
ARP (протокол разрешения адресов) — это протокол, который отображает IP-адреса сети с адресами аппаратного обеспечения (MAC) в сети IPv4.
Вы можете использовать его, как показано ниже, чтобы найти все «живые» хосты в сети:
$ sudo arp-scan --interface=enp2s0 --localnet
Команда at
Команда at используется для планирования задач в будущем. Это альтернатива cron и anacron, однако она запускает задачу один раз в будущем без редактирования любых файлов конфигурации:
Например, чтобы отключить систему сегодня в 23:55, запустите:
$ sudo echo "shutdown -h now" | at -m 23:55
Команда atq
Команда atq используется для просмотра заданий в командной очереди:
$ atq
Команда atrm
Команда atrm используется для удаления заданий (обозначенных их номером) из очереди команд:
$ atrm 2
Команда awk
Awk — это мощный язык программирования, созданный для обработки текста и обычно используемый в качестве инструмента для извлечения данных и создания отчетов.
$ awk '//{print}' /etc/hosts
Командная batch
Команда также используется для планирования задач в будущем, аналогично команде at.
Команда basename
Команда basename выводит имя файла, удаляя каталоги в абсолютном пути:
$ basename bin /findhosts.sh
Команда bc
Bc — простой, но мощный и произвольный язык калькулятора CLI, который можно использовать следующим образом:
$ echo 20.05 + 15.00 | bc
Команда bg
Bg — это команда, используемая для отправки процесса в фоновый режим.
$ tar -czf home.tar.gz $ bg $ jobs
Команда bzip2
Команда bzip2 используется для сжатия или распаковки файлов.
$ bzip2 -z filename #Compress $ bzip2 -d filename.bz2 #Decompress
Команда cal
Команда cal выводит календарь.
$ cal
Команда cat
Cat используется для просмотра содержимого файла или данных, представленных и отображенных в терминале.
$ cat file.txt
Команда chgrp
Команда chgrp используется для изменения правила группового владения файлом. Укажите новое имя группы в качестве первого аргумента, а имя файла — как второй аргумент:
$ chgrp sedicomm users.txt
Команда chmod
Команда chmod используется для изменения/обновления прав доступа к файлу:
$ chmod +x sysinfo.sh
Команда chown
Команда chown изменяет/обновляет права доступа пользователей и групп к файлу/каталогу:
$ chmod -R www-data:www-data /var/www/html
Команда cksum
Команда cksum используется для отображения контрольной суммы CRC и количества байт входного файла.
$ cksum README.txt
Команда clear
Команда clear позволяет очистить экран терминала, для этого просто введите её в терминал:
$ clear
Команда cmp
Cmp выполняет побайтное сравнение двух файлов:
$ cmp file1 file2
Команда comm
Команда comm используется для сравнения двух отсортированных по очереди файлов. Это возможно с помощью команды:
$ comm file1 file2
Команда cp
Команда cp используется для копирования файлов и каталогов из одного места в другое.
$ cp /home/sedicomm/file1 / home/sedicomm/personal/
Команда date
Команда date отображает/устанавливает системную дату и время следующим образом.
$ date $ date --set = "8 JUN 2017 13:00:00"
Команда dd
Команда dd используется для копирования файлов, преобразования и форматирования в соответствии с флагами, указанными в командной строке. Она может разбивать заголовки, извлекать части двоичных файлов и так далее.
В приведенном ниже примере показано создание загрузочного USB-устройства:
$ dd if=/home/sedicomm/kali-linux-1.0.4-i386.iso of=/dev/sdc1 bs=512M; sync\
Команда df
Команда df используется для демонстрации использования дискового пространства файловой системы:
$ df -h
Команда diff
Команда diff используется для сравнения двух файлов по строкам. Её также можно использовать, чтобы найти разницу между двумя каталогами в Linux:
$ diff file1 file2
Команда dir
Команда dir работает как команда ls, она перечисляет содержимое каталога.
$ dir
Команда dmidecode
Команда dmidecode — это инструмент для извлечения информации об оборудовании любой системы Linux. Он преобразовывает содержимое таблицы DMI компьютера в удобный для чтения формат.
Чтобы просмотреть информацию о системном оборудовании, вы можете ввести:
$ sudo dmidecode --type system
Команда du
Du используется для отображения дискового пространства файлов, присутствующего в каталоге, а также его подкаталогах следующим образом:
$ du /home/aaronkilik
Команда echo
Команда echo выводит текст в строку выделенную для неё:
$ echo “This is Sedicomm - Linux How Tos”
Команда eject
Команда eject используется для извлечения съемных носителей, таких как DVD или CD ROM из системы.
$ eject /dev/cdrom $ eject /mnt/cdrom/ $ eject /dev/sda
Команда env
Команда env перечисляет все текущие переменные среды и используется для их установки.
$ env
Команда exit
Команда exit используется для выхода из оболочки.
$ exit
Команда expr
Команда expr используется для вычисления выражений, как показано ниже:
$ expr 20 + 30
Команда factor
Factor используется для отображения простых коэффициентов числа.
$ factor 10
Команда Find
Find позволяет искать файлы в каталоге, а также в его подкаталогах. Она ищет файлы по таким атрибутам: разрешения, пользователи, группы, тип файла, дата, размер и т.д..
$ find /home/sedicomm/ -name trolo-lo.txt
Команда Free
Free, показывает использование системной памяти в системе, включая пространство подкачки. Используйте параметр -h для отображения вывода в удобном пользовательском формате.
$ free -h
Команда grep
Команда grep выполняет поиск заданного шаблона в файле (или файлах) и выводит результат в выходных строках, содержащих этот шаблон, следующим образом:
$ grep 'sedicomm' domain-list.txt
Команда groups
Команда groups отображает все имена групп, в которых задействован пользователь.
$ groups $ group sedicomm
Команда gzip
Gzip помогает сжать файл, меняя его расширение на «.gz«, как показано ниже:
$ gzip passwds.txt $ cat file1 file2 | gzip > foo.gz
Команда gunzip
Gunzip восстанавливает файлы, сжатые командой gzip.
$ gunzip foo.gz
Команда head
Head используется для отображения первых строк (10 строк по умолчанию) указанного файла или stdin на экран:
# ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head
Команда History
History используется для отображения ранее использованных команд или для получения информации о команде, выполняемой пользователем.
$ history
Команда hostname
Hostname используется для вывода или установки имени системного хоста в Linux.
$ hostname $ hostname NEW_HOSTNAME
Команда hostnamectl
Команда hostnamectl управляет именем системного хоста под systemd. Она используется для вывода или изменения имени системного хоста и любых связанных настроек:
$ hostnamectl $ sudo hostnamectl set-hostname NEW_HOSTNAME
Команда Hwclock
Hwclock — это инструмент для управления аппаратными часами системы.
$ sudo hwclock $ Sudo hwclock --set --date 8/06/2017
Команда hwinfo
Hwinfo используется для проверки оборудования, присутствующего в системе Linux.
$ hwinfo
Команда id
Id показывает пользовательскую и групповую информацию для текущего пользователя или указанного имени пользователя, как показано в примере ниже:
$ id sedicomm
Команда ifconfig
Команда ifconfig используется для настройки, просмотра и управления сетевыми интерфейсами Linux.
$ Ifconfig $ sudo ifconfig eth0 up $ sudo ifconfig eth0 down $ sudo ifconfig eth0 172.16.25.125
Команда ionice
Ionice используется для установки или просмотра класса планирования ввода-вывода процесса и приоритета указанного процесса.
Если она вызывается без каких-либо параметров, то будет запрашивать текущий класс планирования и приоритет ввода-вывода для текущего процесса:
$ ionice -c 3 rm /var/logs/syslog
Команда iostat
Iostat используется для отображения статистики CPU и ввода/вывода для устройств и разделов. Она создает полезные отчеты для обновления конфигураций системы, чтобы помочь сбалансировать нагрузку ввода/вывода между физическими дисками.
$ iostat
Команда ip
ip — утилита командной строки в Linux из пакета iproute2. Позволяет выполнять настройку сетевой подсистемы и является заменой таких утилит, как ifconfig, route, arp.
Эта команда назначит IP-адрес определенному интерфейсу (eth1 в этом случае).
$ sudo ip addr add 192.168.56.10 dev eth1
Команда iptables
Iptables — это брандмауэр на основе терминалов для управления входящим и исходящим трафиком через набор настраиваемых правил таблиц.
Приведенная ниже команда используется для проверки существующих правил в системе (для этого могут потребоваться привилегии root).
$ sudo iptables -L -n -v
Команда iw
Команда iw используется для управления беспроводными устройствами и их конфигурацией.
$ iw list
Команда iwlist
Команда iwlist отображает подробную беспроводную информацию с беспроводного интерфейса. Приведенная ниже команда позволяет получить подробную информацию о интерфейсе wlp1s0.
$ iwlist wlp1s0 scanning
Команда kill
Kill используется для завершения процесса с использованием его PID, посылая ему сигнал (сигнал по умолчанию для kill — TERM).
$ kill -p 2300 $ kill -SIGTERM -p 2300
Команда killall
Команда killall используется для завершения процесса с использованием его имени.
$ killall firefox
Команда kmod
Команда kmod используется для управления модулями ядра Linux. Чтобы просмотреть список всех загруженных модулей, введите:
$ kmod list
Команда Last
Команда last отображает список последних зарегистрированных пользователей.
$ last
Команда ln
Команда ln используется для создания символьной ссылки между файлами с использованием флага -s, вот таким образом.
$ ln -s /usr/bin/lscpu cpuinfo
Команда locate
Команда locate используется для поиска файла по имени. Приведенная ниже команда будет искать файл по его точному имени:
$ locate -b '\ domain-list.txt'
Команда login
Команда login используется для создания нового сеанса в системе. Вам будет предложено указать имя пользователя и пароль для входа в систему, это можно выполнить с помощью команды показанной ниже:
$ sudo login
Команда ls
Команда ls используется для отображения содержимого каталога. Она работает аналогично команде dir.
Параметр -l позволяет использовать длинный формат списка.
$ ls -l file1
Команда lshw
Команда lshw является самым простым инструментом для получения подробной информации об аппаратной конфигурации машины, вызывайте её с привилегиями суперпользователя, для получения более полной информации:
$ sudo lshw
Команда lscpu
Команда lscpu отображает информацию о архитектуре ЦП (количество процессоров, потоков, ядер, сокетов и т.д.).
$ lscpu
Команда lsof
Команда lsof отображает информацию, связанную с файлами, открытыми процессами. Файлы могут быть любого типа, включая обычные файлы, каталоги, специальные файлы, специальные файлы символов, библиотеки и потоковые/сетевые файлы.
Чтобы просмотреть файлы, открытые процессами конкретного пользователя, введите команду приведенную ниже:
$ lsof -u sedicomm
Команда lsusb
Команда lsusb показывает информацию о шинах USB как в системе так и на устройствах, подключенных к ним.
$ lsusb
Команда Man
Man используется для просмотра справочных страниц для команд и программ.
$ man du $ man df
Команда md5sum
Команда md5sum используется для вычисления и вывода дайджеста сообщения MD5 файла. Если запустить без аргументов, debsums проверяет каждый файл в вашей системе на наличие файлов md5sum:
$ sudo debsums
Команда mkdir
Команда mkdir используется для создания одного или нескольких каталогов, если они еще не существуют (их можно переопределить с помощью опции -p).
$ mkdir sedicomm-files $ mkdir -p sedicomm-files
Команда more
Команда more позволяет просматривать относительно длинные текстовые файлы на одном экране.
$ more file.txt
Команда mv
Команда mv используется для переименования файлов или каталогов. Она также перемещает файл или каталог в другое место в структуре каталогов.
$ mv test.sh sysinfo.sh
Команда nano
Nano — популярный небольшой, бесплатный и удобный текстовый редактор для Linux. Чтобы открыть файл с помощью nano, введите:
$ nano file.txt
Команда nc/netcat
Nc (или netcat) используется для выполнения любой операции, связанной с сокетами TCP, UDP или UNIX. Она может обрабатывать как IPv4, так и IPv6 для открытия TCP-соединений, отправки UDP-пакетов, прослушивания на произвольных портах TCP и UDP, выполнения сканирования портов.
Приведенная ниже команда поможет нам узнать, открыт ли 22 порт на хосте 192.168.56.5.
$ nc -zv 192.168.1.5 22
Команда netstat
Команда netstat отображает полезную информацию о сетевой подсистеме Linux (сетевые подключения, таблицы маршрутизации, статистику интерфейсов, соединения маскарадов и членства в многоадресной рассылке).
Эта команда отобразит все открытые порты в локальной системе:
$ netstat -a | more
Команда nice
Команда nice используется для показа или изменения значения nice запущенной программы. При запуске без какого-либо параметра, она выводит текущее значение nice.
Следующая команда запускает процесс «tar command», устанавливая значение «nice» равным 12.
$ nice -12 tar -czf backup.tar.bz2 /home/*
Команда nmap
Nmap — популярный и мощный инструмент для открытого сканирования и проверки безопасности. Он предназначен для быстрого сканирования больших сетей, но он также отлично работает с одиночными хостами.
Приведенная ниже команда будет проверять открытые порты на всех хостах в указанной сети.
$ nmap -sV 192.168.56.0/24
Команда nproc
Команда nproc показывает количество обрабатывающих блоков, присутствующих в текущем процессе.
$ nproc
Команда openssl
Openssl — это инструмент командной строки для использования различных криптографических операций библиотеки OpenSSL. Приведенная ниже команда создаст архив всех файлов в текущем каталоге и зашифрует содержимое архивного файла:
$ tar -czf - * | openssl enc -e -aes256 -out backup.tar.gz
Команда passwd
Команда passwd используется для создания/обновления паролей для учетных записей пользователей, а также изменения учетной записи или связанного с ней срока действия пароля. Обратите внимание, что обычные пользователи системы могут изменять пароль только своей учетной записи, а root может изменять пароль для любой учетной записи.
$ passwd sedicomm
Команда pidof
Pidof отображает идентификатор процесса запущенной программы/команды.
$ pidof init $ pidof cinnamon
Команда ping
Команда ping используется для определения отклика подключения между хостами в сети (или в Интернете):
$ ping sedicomm.com
Команда ps
Ps показывает полезную информацию об активных процессах, запущенных в системе. В приведенном ниже примере показаны запущенные процессы с максимальной загрузкой памяти и использованием ЦП.
# ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head
Команда pstree
Pstree показывает запущенные процессы, которое берут истоки либо в PID, либо в init.
$ pstree
Команда pwd
Команда pwd отображает имя текущего/рабочего каталога, как показано в примере ниже:
$ pwd
Команда reboot
Команда reboot может использоваться для остановки, выключения или перезагрузки системы следующим образом:
$ reboot
Команда rename
Команда rename используется для переименования нескольких файлов одновременно. Если у вас есть набор файлов с расширением «.html», и вы хотите поменять их расширение на «.php», это можно выполнить введя команду приведенную ниже:
$ rename '/ / .html $ / \. Php /' * .html
Команда rm
Команда rm используется для удаления файлов или каталогов, как показано в примере ниже:
$ rm file1 $ rm -rf my-files
Команда rmdir
Команда rmdir помогает удалить пустые каталоги следующим образом:
$ rmdir /backup /all
Команда scp
Команда scp позволяет безопасно копировать файлы между хостами в сети.
$ scp ~/names.txt root@192.168.56.10:/root/names.txt
Команда shutdown
Команда shutdown устанавливает время, в течение которого система будет выключена. Команда может использоваться для остановки, отключения питания или перезагрузки машины.
$ shutdown --poweroff
Команда sleep
Команда sleep используется для задержки или приостановки (в частности, выполнения команды) в течение определенного периода времени.
$ check.sh; sleep 5; sudo apt update
Команда Sort
Sort используется для сортировки строк текста в указанных файлах или из stdin, как показано ниже:
$ cat words.txt
Команда split
Split, как следует из названия, используется для разделения большого файла на мелкие части.
$ tar -cvjf backup.tar.bz2 /home/sedicomm/Documents/*
Команда ssh
Ssh (SSH client) — это команда для удаленного доступа и запуска команд на удаленном компьютере. Она предназначен для обеспечения защищенной зашифрованной связи между двумя ненадежными хостами по небезопасной сети, такой как Интернет.
$ ssh sedicomm@192.168.56.10
Команда stat
Stat используется для отображения состояния файловой системы (опция -f используется для указания файловой системы).
$ stat file1
Команда su
Команда su используется для переключения на другой идентификатор пользователя или включения пользователя root во время сеанса входа в систему. Обратите внимание, что когда su вызывается без имени пользователя, по умолчанию пользователь — root.
$ su $ su sedicomm
Команда sudo
Sudo позволяет разрешенному пользователю системы запускать команду как root пользователь, по правилам определенным политикой безопасности, такой как sudoers.
$ Sudo apt update $ Sudo useradd sedicomm $ Sudo passwd sedicomm
Команда sum
Sum используется для отображения контрольной суммы и количества блоков для каждого указанного файла в командной строке.
$ sum output file.txt
Команда tac
Команда tac объединяет и отображает файлы в обратном порядке. Она просто выводит каждый файл в терминал, сначала показывая последнюю строку.
$ tac file.txt
Команда tail
Команда tail используется для отображения последних строк (по 10 строк по умолчанию) каждого файла для стандартного вывода.
Если имеется более одного файла, перед каждым заголовком указывается имя файла. Используйте её следующим образом (укажите больше строк для отображения с использованием опции -n).
$ tail long-file $ tail -n 15 long-file
Командная talk
Команда talk используется для общения с другим пользователем системы/сети. Чтобы поговорить с пользователем используйте его имя для входа, однако, чтобы поговорить с пользователем на другом компьютере, используйте «user @ host».
$ talk person [ttyname] $ talk 'user @ host '[ttyname]
Команда tar
Команда tar — самая мощная утилита для архивирования файлов в Linux.
$ tar -czf home.tar.gz
Команда tee
Команда tee используется для чтения файлов с терминала, как показано в примере ниже.
$ echo "Testing how tee command works" | tee file1
Команда Time
Time запускает программы и суммирует использование ресурсов системы.
$ time wc /etc/hosts
Команда top
Команда top отображает все процессы в системе Linux в отношении использования памяти ЦП и обеспечивает динамическое представление текущей системы в режиме реального времени.
$ top
Команда Touch
Touch команда изменяет временные метки файла, ее также можно использовать для создания файла следующим образом.
$ touch file.txt
Команда tr
Tr — полезная утилита, используемая для перевода (изменения) или удаления символов из stdin и записи результата в stdout.
$ cat domain-list.txt | Tr [: lower:] [: upper:]
Команда uname
Команда uname отображает системную информацию, такую как операционная система, имя ядра узла хоста, версия, дата релиза и т.д.
Используйте опцию -a, чтобы отобразить всю системную информацию:
$ uname
Команда uniq
Команда uniq отображает или пропускает повторяющиеся строки терминала. Чтобы указать количество вхождений строки, используйте параметр -c.
$ cat domain-list.txt
Команда uptime
Uptime показывает, сколько времени система работает, количество зарегистрированных пользователей и среднюю загрузку системы.
$ uptime
Команда User
User показывает имена пользователей, которые вошли в настоящее время.
$ user
Команда vim/vi
Vim ( улучшенный Vi) популярный текстовый редактор для Unix-подобных операционных систем. Он может использоваться для редактирования всех видов текстовых и программных файлов.
$ vim file
Команда w
Команда w отображает время безотказной работы системы, загружает средние значения и информацию о пользователях, находящихся в данный момент на машине, и о том, что они делают (их процессы).
$ w
Команда Wall
Wall используется для отправки сообщения всем пользователям системы.
$ wall “This is Sedicomm – Linux How Tos”
Команда watch
Команда watch запускает программу повторно, пока она отображается в полноэкранном режиме. Её также можно использовать для просмотра изменений в файле/каталоге. В приведенном ниже примере показано, как просматривать содержимое каталога.
$ watch -d ls -l
Команда wc
Команда wc используется для отображения значений строк, слов и байт для каждого указанного файла в очереди.
$ wc filename
Команда wget
Команда wget — это простая утилита, используемая для загрузки файлов из Интернета неинтерактивным (может работать в фоновом режиме) способом.
$ wget -c http://ftp.gnu.org/gnu/wget/wget-1.5.3.tar.gz
Команда whatis
Команда whatis выполняет поиск и показывает краткие или однострочные описания страниц с указанными именами команд.
$ whatis wget
Команда which
Команда which отображает абсолютный путь (пути) файлов (или, возможно, ссылок), которые будут выполняться в текущей среде.
$ which who
Команда who
Команда who показывает информацию о пользователях, которые в настоящее время вошли в систему.
$ who
Команда whereis
Команда whereis помогает нам находить двоичные файлы, исходные файлы и т.д..
$ whereis cat
Команда xargs
Команда xargs — полезная утилита для чтения элементов с терминала, разделенных пробелами или иными символами (двойными или одинарными кавычками или обратной косой чертой).
В приведенном ниже примере показано, что xargs используются для копирования файла в несколько каталогов Linux.
$ echo /home/aaronkilik/test/ /home/aaronkilik/tmp | xargs -n 1 cp -v /home/aaronkilik/bin/sys_info.sh
Команда Yes
Команда yes используется для отображения строки несколько раз, пока она не будет завершена с помощью [Ctrl + C].
$ yes "This is Sedicomm - Linux HowTos"
Команда youtube-dl
Youtube-dl — это легкая команда командной строки для загрузки видео, а также для извлечения треков MP3 с сайта YouTube.com и еще некоторых сайтов.
Приведенная ниже команде перечислит доступные форматы видео для выбранной ссылки.
$ youtube-dl --list-formats https://www.youtube.com/watch?v=iR
Команда zcmp / zdiff
Zcmp и zdiff утилиты, используемые для сравнения сжатых файлов, как показано в приведенном ниже примере.
$ zcmp domain-list.txt.zip basic_passwords.txt.zip $ zdiff domain-list.txt.zip basic_passwords.txt.zip
Команда zip
Zip — простая в использовании команда, используемая для сжатия (архивирования) файлов.
$ tar cf -. | Zip | dd of =/dev/nrst0 obs=16k $ zip inarchive.zip foo.c bar.c --out outarchive.zip $ tar cf -. | zip backup -
Команда zz
Команда zz является псевдонимом инструмента командной строки fasd, который обеспечивает быстрый доступ к файлам и каталогам в Linux. Она используется для быстрого и интерактивного ввода cd в ранее доступный каталог, выбирая номер каталога из первого поля следующим образом.
$ zz
Вот и все! Как уже упоминалось ранее, в Linux существует огромное множество команд. Список команд гораздо длиннее, чем мы можем предложить, поэтому не останавливайтесь и смело изучайте что-то новое.
---
Предположим, что вы открыли терминал в Linux и запустили в нем какую-нибудь программу. Если вы закроете окно терминала, тогда программа, которую вы запустили, тоже закроется.
Чтобы закрыть терминал, но при этом оставить работать запущенную из него программу, перейдите в терминал и нажмите сочетание клавиш Ctrl+Z (это позволит вам получить доступ к командой строке). Затем наберите в терминале следующие команды:
disown -h %1 bg 1
Команда disown с ключом -h используется для того, чтобы пометить процесс с номером 1 (это наша запущенная программа) не закрываться при закрытии терминала (на нее не подействует сигнал SIGHUP), а команда bg переводит задачу в фоновый режим. Теперь вы можете спокойно закрыть терминал (кликнуть на крестик или ввести команду exit).
Есть еще один способ, при котором окно терминала закроется сразу после запуска какой-нибудь команды. Для этого нужно добавить к команде & exit. Например, следующая команда запустит редактор GEdit и тут же закроет терминал:
gedit & exit
:~$ telnet towel.blinkenlights.nl