Основные команды Linux: почти полное руководство с примерами
Почти любое действие в ОС Linux можно выполнить командой из терминала. В статье разбираемся в базовых командах и их функциях.
Если вы когда-нибудь сталкивались с ОС Linux, вы наверняка слышали слово «терминал». Новички обычно воспринимают терминал как что-то страшное и зловещее. Но не все так страшно.
Введение в терминал Linux
Моя бабушка называет любой терминал «терминатором», что добавляет антуража. На самом деле терминал (bash) — это всего лишь командная строка с гораздо более широким набором функций, если сравнивать с Windows. Почти любое действие можно выполнить командой из терминала, но далеко не любое действие можно выполнить через окружения пользователя.
В этом и заключается преимущество терминала Linux — по сути из него можно полностью управлять системой, без необходимости окружения пользователя (графического интерфейса). На самом деле нередко серверы так и работают — черный экран, командная строка и все функции под рукой. В статье команды будут сгруппированы по функциям, а не по частоте использования, это связано с удобством восприятия и понимания.
Статья рассчитана на новичков и написана таким же новичком, в этом нет ничего зазорного — все когда-то начинали с нуля. Любое сообщество существует только до тех пор, пока есть приток новых участников.
Список команд в данной статье не является полным списком команд Linux. Во-первых, команд слишком много, чтобы перечислять их все, во-вторых, новичкам они не нужны, а профессионалы уже помнят их наизусть. Однако, не стоит расстраиваться, если у вас не получается запомнить команды — запоминание приходит с практикой. Чем чаще вы пользуетесь теми или иными командами, тем скорее вы их запомните.
Облачные базы данных в Selectel
Доверьте нашим специалистам развертывание и поддержку баз данных в облаке.
Основные команды Linux
Если вы проигнорировали введение, напомним, что команды в статье сгруппированы по исполняемой ими функции. Что может быть более необходимым для новичка, чем функция справки?
Команды для получения справки
man — manual, получение справки
Самая первая команда Linux для начинающих — manual — для получения полной справочной информации по другой команде. Некоторые пользователи настаивают, что искать в интернете информацию по команде проще и эффективнее. Однако, информация в интернете не всегда является верной, статья в интернете может быть устаревшей, не релевантной для вашей версии ОС и т.д. Использовать man всегда хорошая идея.
Чтобы получить справку по команде, введите перед ней man. Например, man man выдаст руководство по команде man. Также можно вывести мануал терминала Linux (man bash):
BASH(1) General Commands Manual BASH(1) NAME bash - GNU Bourne-Again SHell SYNOPSIS bash [options] [command_string | file] COPYRIGHT Bash is Copyright (C) 1989-2018 by the Free Software Foundation, Inc. DESCRIPTION Bash is an sh-compatible command language interpreter that executes commands read from the standard input or from a file. Bash also incorporates useful features from the Korn and C shells (ksh and csh). Bash is intended to be a conformant implementation of the Shell and Utilities portion of the IEEE POSIX specification (IEEE Standard 1003.1). Bash can be configured to be POSIX-confor‐ mant by default. OPTIONS All of the single-character shell options documented in the description of the set builtin command, including -o, can be used as options when the shell is invoked. In addition, bash interprets the following options when it is invoked: -c If the -c option is present, then commands are read from the first non-option argu‐ ment command_string. If there are arguments after the command_string, the first ar‐ gument is assigned to $0 and any remaining arguments are assigned to the positional
help — когда не работает man
Не у каждой команды имеется свое полноценное руководство и не всегда оно требуется. В таких случаях помогает help, которая выводит краткую справку.
history: history [-c] [-d смещение] [n] или history -anrw [файл] или history -ps аргумент [аргумент. ] Display or manipulate the history list. Display the history list with line numbers, prefixing each modified entry with a `*'. An argument of N lists only the last N entries. Options: -c clear the history list by deleting all of the entries -d offset delete the history entry at position OFFSET. Negative offsets count back from the end of the history list -a append history lines from this session to the history file -n read all history lines not already read from the history file and append them to the history list -r read the history file and append the contents to the history list -w write the current history to the history file -p perform history expansion on each ARG and display the result without storing it in the history list -s append the ARGs to the history list as a single entry If FILENAME is given, it is used as the history file. Otherwise, if HISTFILE has a value, that is used, else ~/.bash_history. If the HISTTIMEFORMAT variable is set and not null, its value is used as a format string for strftime(3) to print the time stamp associated
Похожий вариант — вывод справки через специальные ключи — -h или —help.
Tab — автозавершение команды
Командная строка Linux может предложить вам доступные варианты завершения команды. Например, если вы хотите узнать, куда можно перейти из текущей папки, наберите cd, затем дважды нажмите Tab. Если хотите узнать, какие папки начинаются с символа точки, введите cd . и завершите двойным нажатием Tab. Работает с любой командой, но только в современных оболочках — bash и zsh.
debtop@DebTop:~$ cd .aptitude/ .gnupg/ .mozilla/ Видео/ Изображения/ Рабочий стол/ .cache/ .kde/ .pki/ Документы/ Музыка/ Шаблоны/ .config/ .local/ snap/ Загрузки/ Общедоступные/ debtop@DebTop:~$ cd . ./ .aptitude/ .config/ .kde/ .mozilla/ ../ .cache/ .gnupg/ .local/ .pki/
cat /etc/*-release — какой дистрибутив установлен на моей машине
Если вы задумывались об установке Linux или уже использовали эту ОС, вы должны были знать, что существует несколько дистрибутивов. В зависимости от дистрибутива команды могут отличаться, поэтому полезно иметь возможность узнать, какой именно дистрибутив на этой машине. Это можно сделать и через информацию о системе, из графического интерфейса окружения пользователя, но наша статья о терминале. Команда cat /etc/*-release (без пробелов) покажет вам основную информацию о дистрибутиве — имя, версия, и т.д. Аналогами в данном случае будут являться lsb_release -a, которая выведет почти ту же информацию, а lsb_release -i напишет ID дистрибутива.
debtop@DebTop:~$ cat /etc/*-release PRETTY_NAME="Debian GNU/Linux 10 (buster)" NAME="Debian GNU/Linux" VERSION_ID="10" VERSION="10 (buster)" VERSION_CODENAME=buster ID=debian HOME_URL="https://www.debian.org/" SUPPORT_URL="https://www.debian.org/support" BUG_REPORT_URL="https://bugs.debian.org/" debtop@DebTop:~$ lsb_release -a No LSB modules are available. Distributor ID: Debian Description: Debian GNU/Linux 10 (buster) Release: 10 Codename: buster debtop@DebTop:~$ lsb_release -i Distributor ID: Debian
whoami — какой пользователь сейчас используется
Терминал Linux позволяет работать от имени любого пользователя, но не всегда удается удержать в памяти текущего пользователя. Чтобы вспомнить текущего пользователя, существует простая команда whoami.
debtop@DebTop:~$ whoami desktop
whatis — что за программа?
Команда Linux терминала whatis дает краткое описание любой установленной программы.
debtop@DebTop:~$ whatis nano nano (1) - Nano's ANOther editor, an enhanced free Pico clone debtop@DebTop:~$ whatis apt apt (8) - command-line interface debtop@DebTop:~$ whatis krita krita: ничего подходящего не найдено.
Очевидно, что, если программа не установлена, то получить ее описание не получится.
whereis — полный путь к программе
Допустим, вы нашли нужную программу, но хотите попасть в ее директорию. Узнать директорию программы поможет whereis, показывающая полный путь к исполняемому файлу программы.
debtop@DebTop:~$ whereis bash bash: /usr/bin/bash /etc/bash.bashrc /usr/share/man/man1/bash.1.gz
Команды управления сетью
hostname, ifconfig — управление сетью
Эти команды покажут DNS-домен и IP-адрес вашего компьютера.
debtop@DebTop:~$ hostname DebTop debtop@DebTop:~$ hostname -i 127.0.1.1 debtop@DebTop:~$ ifconfig bash: ifconfig: команда не найдена
В некоторых версиях дистрибутивов Linux поддерживается команда ifconfig, которая также выводит текущий IP, но она работает не всегда. Взамен устаревшей ifconfig современные дистрибутивы отзываются на ip a[ddress], которая выведет на экран настройки сети и позволяет их редактировать. Команда является частью пакета утилит для настройки параметров сетевых устройств — iproute2. Команды из набора iproute2 пригодятся системным администраторам или тем, кто хочет создать доменную сеть дома.
debtop@DebTop:~$ ip a 1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: enp4s0: mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1 000 link/ether b4:b5:2f:7f:fe:eb brd ff:ff:ff:ff:ff:ff 3: wlo1: mtu 1500 qdisc mq state UP group default qlen 1000 link/ether a4:17:31:2a:bc:59 brd ff:ff:ff:ff:ff:ff inet 192.168.1.195/24 brd 192.168.1.255 scope global dynamic noprefixroute wlo1 valid_lft 85273sec preferred_lft 85273sec inet6 fe80::3f0f:a837:e4c0:e52d/64 scope link noprefixroute valid_lft forever preferred_lft forever debtop@DebTop:~$ ip Usage: ip [ OPTIONS ] OBJECT < COMMAND | help >ip [ -force ] -batch filename where OBJECT := < link | address | addrlabel | route | rule | neigh | ntable | tunnel | tuntap | maddress | mroute | mrule | monitor | xfrm | netns | l2tp | fou | macsec | tcp_metrics | token | netconf | ila | vrf | sr >OPTIONS := < -V[ersion] | -s[tatistics] | -d[etails] | -r[esolve] | -h[uman-readable] | -iec | -j[son] | -p[retty] | -f[amily] < inet | inet6 | ipx | dnet | mpls | bridge | link >| -4 | -6 | -I | -D | -M | -B | -0 | -l[oops] < maximum-addr-flush-attempts >| -br[ief] | -o[neline] | -t[imestamp] | -ts[hort] | -b[atch] [filename] | -rc[vbuf] [size] | -n[etns] name | -a[ll] | -c[olor]>
ping — диагностика неисправностей сети
Ping используют для поиска неисправностей, тестирования и диагностики сетевых соединений. Команда отправляет сообщение на указанный IP адрес и ждет ответ. Когда пакет адресат получает пакет, он отправляет ответ. Таким образом можно определить задержку сообщений или потерю пакетов.
Достаточно ввести, например, ping google.com, компьютер сам определит IP адрес домена и продолжит выполняться, пока ее не отменить сочетанием Ctrl+C.
Команды для управления файлами и директориями
Теперь, когда мы выяснили, где находится терминал, мы можем перейти в его директорию. Однако, этого делать не стоит, иначе можно что-нибудь сломать. Давайте попробуем поработать с директорией песочницы.
mkdir — создание директории
Для начала песочницу необходимо создать. Сделать это очень просто, находясь в домашней директории пользователя введем в bash:
mkdir playpen
Отлично, и что дальше? Точно ли директория создалась?
ls — list, отобразить директории и файлы
Чтобы убедиться в наличии директории нужно набрать ls, после выполнения команда покажет все каталоги и файлы.
debtop@DebTop:~$ mkdir playpen debtop@DebTop:~$ ls playpen Видео Загрузки Музыка 'Рабочий стол' snap Документы Изображения Общедоступные Шаблоны
cd — change directory, сменить директорию
Теперь перейдем в созданную директорию. Для навигации в терминале Linux нужно ввести cd имя_директории. В нашем случае cd playpen.
debtop@DebTop:~$ cd playpen debtop@DebTop:~/playpen$
Если работа в данной директории закончена и необходимо подняться на уровень вверх из текущей директории, используйте «cd пробел .. (две точки)»:
cd ..
А если вы работаете одновременно в двух директориях и периодически перемещаетесь из одной в другую, не нужно постоянно держать в голове, какой же была предыдущая. Достаточно использовать быстрый переход к предыдущей директории «cd пробел — (дефис)»:
cd —
debtop@DebTop:~/playpen/dir00$ cd /usr/lib/x86_64-linux-gnu/audacious debtop@DebTop:/usr/lib/x86_64-linux-gnu/audacious$ cd - /home/debtop/playpen/dir00 debtop@DebTop:~/playpen/dir00$ cd - /usr/lib/x86_64-linux-gnu/audacious debtop@DebTop:/usr/lib/x86_64-linux-gnu/audacious$ cd - /home/debtop/playpen/dir00 debtop@DebTop:~/playpen/dir00$ cd ..
pwd — где я сейчас?
Обратите внимание, как только мы сменили директорию, поменялся и префикс до символа $, так терминал показывает нам, где мы находимся в данный момент. Конечно, терминал не станет отображать полный путь, если он слишком длинный, поэтому не стоит всегда полагаться на префикс. Быстро понять текущую рабочую директорию поможет команда pwd. Расшифровка этой команды простая — три английских слова — Print Working Directory. На самом деле расшифровка команд Linux всегда простая, они все произошли от английских слов, но были сокращены для лучшего запоминания.
Обратно к песочнице. Пока что директория (также каталог, папка) пуста и не содержит ни одного файла. Давайте создадим в ней 43 директории, в каждой по 43 файла. Можно создавать вручную, каждый раз прописывая имя, а можно поступить проще:
mkdir dir
Синтаксис команды простой: mkdir создает директорию, dir задает начальное имя для каждой новой директории, числа в фигурных скобках указывают переменную часть имени создаваемых папок. То есть, команда mkdir test_folder_ создала бы нам 5 папок с начальным именем test_folder_0.
Давайте проверим, создались ли наши тестовые папки — ls.
debtop@DebTop:~/playpen$ ls dir00 dir03 dir06 dir09 dir12 dir15 dir18 dir21 dir24 dir27 dir30 dir33 dir36 dir39 dir42 dir01 dir04 dir07 dir10 dir13 dir16 dir19 dir22 dir25 dir28 dir31 dir34 dir37 dir40 dir02 dir05 dir08 dir11 dir14 dir17 dir20 dir23 dir26 dir29 dir32 dir35 dir38 dir41
Как создать файл?
Замечательно, теперь создадим по 43 файла в каждой. Для создания файла существует более 10 разных способов, самый простой:
> имя_файла
На самом деле >, как и обратный знак < не совсем являются командами, это символы перенаправления или связи. Однако, если перед именем несуществующего файла поставить знак >вместе с указанием расширения файла, в текущей директории появится пустой файл.
Но нам требуется поместить по 42 файла в 42 директории, а терминал Linux откажется воспринимать команду со знаком перенаправления, поэтому используем команду touch. Эта команда позволяет задать время последнего изменения файла или создать новые файлы:
touch dir/text.txt
debtop@DebTop:~/playpen$ touch dir/text.txt debtop@DebTop:~/playpen$ ls dir00 text00.txt text06.txt text12.txt text18.txt text24.txt text30.txt text36.txt text42.txt text01.txt text07.txt text13.txt text19.txt text25.txt text31.txt text37.txt text02.txt text08.txt text14.txt text20.txt text26.txt text32.txt text38.txt text03.txt text09.txt text15.txt text21.txt text27.txt text33.txt text39.txt text04.txt text10.txt text16.txt text22.txt text28.txt text34.txt text40.txt text05.txt text11.txt text17.txt text23.txt text29.txt text35.txt text41.txt
rm — remove, удаление
Чтобы удалить какой-либо файл, достаточно ввести команду rm с именем файла:
rm text00.txt
Можно удалить несколько:
Если попытаться удалить целый каталог по аналогии, то ничего не получится. Все потому, что для удаления каталога нужна другая команда: rmdir:
rmdir delete_me
Команда rmdir тоже не всесильна, она не позволит удалить каталог, в котором есть что-то еще — файл или другой каталог (даже пустой).
Для удаления каталога с содержимым можно использовать команду rm с опцией рекурсивного удаления -r. Обратите внимание на картинку ниже, все описанные переходы по директориям, упомянутые в описании команды cd действуют и для rm. Поэтому, при нахождении в подкаталоге dir01, команда будет выглядеть вот так:
rm -r ../dir03
debtop@DebTop:~/playpen/dir01$ rm text00.txt debtop@DebTop:~/playpen/dir01$ rm text.txt debtop@DebTop:~/playpen/dir01$ mkdir delete_me debtop@DebTop:~/playpen/dir01$ ls delete_me text16.txt text20.txt text24.txt text28.txt text32.txt text36.txt text40.txt text13.txt text17.txt text21.txt text25.txt text29.txt text33.txt text37.txt text41.txt text14.txt text18.txt text22.txt text26.txt text30.txt text34.txt text38.txt text42.txt text15.txt text19.txt text23.txt text27.txt text31.txt text35.txt text39.txt debtop@DebTop:~/playpen/dir01$ rm delete_me rm: невозможно удалить 'delete_me': Это каталог debtop@DebTop:~/playpen/dir01$ rmdir delete_me debtop@DebTop:~/playpen/dir01$ ls text13.txt text17.txt text21.txt text25.txt text29.txt text33.txt text37.txt text41.txt text14.txt text18.txt text22.txt text26.txt text30.txt text34.txt text38.txt text42.txt text15.txt text19.txt text23.txt text27.txt text31.txt text35.txt text39.txt text16.txt text20.txt text24.txt text28.txt text32.txt text36.txt text40.txt debtop@DebTop:~/playpen/dir01$ rmdir ../dir03 rmdir: не удалось удалить '../dir03': Каталог не пуст debtop@DebTop:~/playpen/dir01$ rm -r ../dir03 debtop@DebTop:~/playpen/dir01$ ls .. dir00 dir04 dir07 dir10 dir13 dir16 dir19 dir22 dir25 dir28 dir31 dir34 dir37 dir40 dir01 dir05 dir08 dir11 dir14 dir17 dir20 dir23 dir26 dir29 dir32 dir35 dir38 dir41 dir02 dir06 dir09 dir12 dir15 dir18 dir21 dir24 dir27 dir30 dir33 dir36 dir39 dir42
cp — copy, копирование
Кроме создания и удаления файлов и директорий терминал позволяет их копирование.
Снова перейдем в директорию dir02 и скопируем файл text00.txt в директорию dir01:
cp text00.txt /home/debtop/playpen/dir01
Поскольку text00.txt находится в текущей директории, до него можно не писать полный путь. Такое указание пути называется относительным. Путь до dir01 мы указали полностью, от домашней директории, такой путь называется абсолютный. Можно было указать просто ../dir01, тогда это был бы снова относительный путь.
Если попробовать повторить копирование теперь, когда в dir01 опять появился файл text00.txt, внешне не произойдет ничего, но на самом деле файл будет заменен на файл с тем же именем без каких-либо вопросов.
debtop@DebTop:~/playpen/dir01$ cd ../dir02 debtop@DebTop:~/playpen/dir02$ cp text00.txt home/debtop/playpen/dir01 cp: невозможно создать обычный файл 'home/debtop/playpen/dir01': Нет такого файла или каталога debtop@DebTop:~/playpen/dir02$ cp text00.txt /home/debtop/playpen/dir01 debtop@DebTop:~/playpen/dir02$ ls ../dir01 text00.txt text16.txt text20.txt text24.txt text28.txt text32.txt text36.txt text40.txt text13.txt text17.txt text21.txt text25.txt text29.txt text33.txt text37.txt text41.txt text14.txt text18.txt text22.txt text26.txt text30.txt text34.txt text38.txt text42.txt text15.txt text19.txt text23.txt text27.txt text31.txt text35.txt text39.txt
Каталоги копируются по тому же принципу, только нужно не забывать про добавление опции рекурсивного копирования:
cp -r dir00 dir03
debtop@DebTop:~/playpen$ ls dir00 dir04 dir07 dir10 dir13 dir16 dir19 dir22 dir25 dir28 dir31 dir34 dir37 dir40 dir01 dir05 dir08 dir11 dir14 dir17 dir20 dir23 dir26 dir29 dir32 dir35 dir38 dir41 dir02 dir06 dir09 dir12 dir15 dir18 dir21 dir24 dir27 dir30 dir33 dir36 dir39 dir42 debtop@DebTop:~/playpen$ cp dir00 dir03 cp: не указан -r; пропускается каталог 'dir00' debtop@DebTop:~/playpen$ cp -r dir00 dir03 debtop@DebTop:~/playpen$ cp -r dir00 dir03/ debtop@DebTop:~/playpen$ cd dir03 debtop@DebTop:~/playpen/dir03$ ls dir00 text05.txt text11.txt text17.txt text23.txt text29.txt text35.txt text41.txt text00.txt text06.txt text12.txt text18.txt text24.txt text30.txt text36.txt text42.txt text01.txt text07.txt text13.txt text19.txt text25.txt text31.txt text37.txt text02.txt text08.txt text14.txt text20.txt text26.txt text32.txt text38.txt text03.txt text09.txt text15.txt text21.txt text27.txt text33.txt text39.txt text04.txt text10.txt text16.txt text22.txt text28.txt text34.txt text40.txt
Если при копировании каталога или файла в качестве адреса копирования указать имя несуществующей директории (или файла), то система автоматически воспримет это как команду создать файл или каталог с таким именем.
Когда вы хотите скопировать не всю директорию целиком, а только ее содержимое, укажите слэш после места назначения, а после него поставьте звездочку (*):
cp -r dir00/* dir03/dir
Принцип действия команд rm и cp очень простой и очевидный, но не стоит забывать, что новичку многое кажется сложнее, чем есть на самом деле.
mv, move — перемещение
Третья команда для управления файлами — mv — перемещает файлы и директории.
Принцип действия полностью аналогичен предыдущим двум командам:
mv что_перемещаем куда_перемещаем
debtop@DebTop:~/playpen$ mv dir16 dir19/dir debtop@DebTop:~/playpen$ ls dir19 dir text05.txt text11.txt text17.txt text23.txt text29.txt text35.txt text41.txt text00.txt text06.txt text12.txt text18.txt text24.txt text30.txt text36.txt text42.txt text01.txt text07.txt text13.txt text19.txt text25.txt text31.txt text37.txt text02.txt text08.txt text14.txt text20.txt text26.txt text32.txt text38.txt text03.txt text09.txt text15.txt text21.txt text27.txt text33.txt text39.txt text04.txt text10.txt text16.txt text22.txt text28.txt text34.txt text40.txt
При перемещении каталогов мы перемещаем их целиком так, что они перестают существовать в исходном местоположении. То есть, каталог dir16 из предыдущего примера больше не существует в каталоге ~/playpen. Но это не всегда удобно, бывает необходимо переместить не сам каталог, а только содержимое — все файлы, каталоги и файлы, вложенные в них. Для этого используется опция —v[erbose], покажем на примере. Переместим все содержимое папки dir19 в папку dir17 командой mv, оставив папку dir19 пустой:
mv -v dir19/* dir17/
debtop@DebTop:~/playpen$ ls dir00 dir04 dir08 dir12 dir17 dir21 dir25 dir29 dir33 dir37 dir41 dir01 dir05 dir09 dir13 dir18 dir22 dir26 dir30 dir34 dir38 dir42 dir02 dir06 dir10 dir14 dir19 dir23 dir27 dir31 dir35 dir39 dir03 dir07 dir11 dir15 dir20 dir24 dir28 dir32 dir36 dir40 debtop@DebTop:~/playpen$ man mv debtop@DebTop:~/playpen$ ls dir19 dir text05.txt text11.txt text17.txt text23.txt text29.txt text35.txt text41.txt text00.txt text06.txt text12.txt text18.txt text24.txt text30.txt text36.txt text42.txt text01.txt text07.txt text13.txt text19.txt text25.txt text31.txt text37.txt text02.txt text08.txt text14.txt text20.txt text26.txt text32.txt text38.txt text03.txt text09.txt text15.txt text21.txt text27.txt text33.txt text39.txt text04.txt text10.txt text16.txt text22.txt text28.txt text34.txt text40.txt debtop@DebTop:~/playpen$ mv -v dir19/* dir17/ переименован 'dir19/dir' -> 'dir17/dir' переименован 'dir19/text00.txt' -> 'dir17/text00.txt' переименован 'dir19/text01.txt' -> 'dir17/text01.txt' переименован 'dir19/text02.txt' -> 'dir17/text02.txt' переименован 'dir19/text03.txt' -> 'dir17/text03.txt' переименован 'dir19/text40.txt' -> 'dir17/text40.txt' переименован 'dir19/text41.txt' -> 'dir17/text41.txt' переименован 'dir19/text42.txt' -> 'dir17/text42.txt' debtop@DebTop:~/playpen$ ls dir00 dir04 dir08 dir12 dir17 dir21 dir25 dir29 dir33 dir37 dir41 dir01 dir05 dir09 dir13 dir18 dir22 dir26 dir30 dir34 dir38 dir42 dir02 dir06 dir10 dir14 dir19 dir23 dir27 dir31 dir35 dir39 dir03 dir07 dir11 dir15 dir20 dir24 dir28 dir32 dir36 dir40 debtop@DebTop:~/playpen$ ls dir19 debtop@DebTop:~/playpen$ ls dir17 dir text05.txt text11.txt text17.txt text23.txt text29.txt text35.txt text41.txt text00.txt text06.txt text12.txt text18.txt text24.txt text30.txt text36.txt text42.txt text01.txt text07.txt text13.txt text19.txt text25.txt text31.txt text37.txt text02.txt text08.txt text14.txt text20.txt text26.txt text32.txt text38.txt text03.txt text09.txt text15.txt text21.txt text27.txt text33.txt text39.txt text04.txt text10.txt text16.txt text22.txt text28.txt text34.txt text40.txt
Глубина вложенности
Можно пойти дальше — создать папку с большой вложенностью dir18 и переместить только файлы первого уровня в папку dir19:
find dir18/ -maxdepth 1 -type f -print0 | xargs -0 mv -t dir19
Эта сложная команда найдет (find) все файлы (-type f) с глубиной вложенности 1 (-maxdepth 1) внутри dir18 и переместит их в dir19 как обычные файлы (mv -t). Часть «xargs -0» служит в роли команды, связующей две других и позволяет им работать вместе. С глубиной вложенности -maxdepth можно экспериментировать, задавать ей разные значения (1, 2, 3 и т.д.) получая новый результат каждый раз.
Команды для архивирования
Важный аспект работы с файлами — возможность создавать архивы. В Linuxе это реализовано с помощью утилит терминала. Рассмотрим несколько базовых команд архивирования:
- gzip — создать архив. Работает следующим образом: gzip файл.расширение. Можно сразу несколько, например, gzip text12.txt text13.txt.
debtop@DebTop:~/playpen$ cd dir00 debtop@DebTop:~/playpen/dir00$ gzip text14.txt debtop@DebTop:~/playpen/dir00$ ls text00.txt text07.txt text14.txt.gz text21.txt text28.txt text35.txt text42.txt text01.txt text08.txt text15.txt text22.txt text29.txt text36.txt text02.txt text09.txt text16.txt text23.txt text30.txt text37.txt text03.txt text10.txt text17.txt text24.txt text31.txt text38.txt text04.txt text11.txt text18.txt text25.txt text32.txt text39.txt text05.txt text12.txt text19.txt text26.txt text33.txt text40.txt text06.txt text13.txt text20.txt text27.txt text34.txt text41.txt
- gunzip — распаковать архив — gunzip файл.расширение.gz.
debtop@DebTop:~/playpen/dir00$ ls text00.txt text07.txt text14.txt.gz text21.txt text28.txt text35.txt text42.txt text01.txt text08.txt text15.txt text22.txt text29.txt text36.txt text02.txt text09.txt text16.txt text23.txt text30.txt text37.txt text03.txt text10.txt text17.txt text24.txt text31.txt text38.txt text04.txt text11.txt text18.txt text25.txt text32.txt text39.txt text05.txt text12.txt text19.txt text26.txt text33.txt text40.txt text06.txt text13.txt text20.txt text27.txt text34.txt text41.txt debtop@DebTop:~/playpen/dir00$ gunzip text14.txt.gz debtop@DebTop:~/playpen/dir00$ ls text00.txt text06.txt text12.txt text18.txt text24.txt text30.txt text36.txt text42.txt text01.txt text07.txt text13.txt text19.txt text25.txt text31.txt text37.txt text02.txt text08.txt text14.txt text20.txt text26.txt text32.txt text38.txt text03.txt text09.txt text15.txt text21.txt text27.txt text33.txt text39.txt text04.txt text10.txt text16.txt text22.txt text28.txt text34.txt text40.txt text05.txt text11.txt text17.txt text23.txt text29.txt text35.txt text41.txt
- zip — более привычный формат архива. Чтобы передать файл на другую операционную систему, и чтобы адресат мог его распаковать лучше использовать утилиту zip.
Утилита zip терминала Linux позволяет упаковать сразу несколько файлов в один архив (gzip также позволяет поместить несколько файлов в архив, но с ней сложнее разобраться) с помощью рекурсивной опции -r. Текст команды Linux:
zip -r texts.zip text12.txt text13.txt
В данном случае texts.zip будет названием архива, а text12.txt и text13.txt — файлы, которые нужно поместить в архив.
debtop@DebTop:~/playpen/dir00$ zip -r texts.zip text12.txt text13.txt adding: text12.txt (stored 0%) adding: text13.txt (stored 0%) debtop@DebTop:~/playpen/dir00$ ls text00.txt text06.txt text12.txt text18.txt text24.txt text30.txt text36.txt text42.txt text01.txt text07.txt text13.txt text19.txt text25.txt text31.txt text37.txt texts.zip text02.txt text08.txt text14.txt text20.txt text26.txt text32.txt text38.txt text03.txt text09.txt text15.txt text21.txt text27.txt text33.txt text39.txt text04.txt text10.txt text16.txt text22.txt text28.txt text34.txt text40.txt text05.txt text11.txt text17.txt text23.txt text29.txt text35.txt text41.txt
- tar — создание резервных копий. Утилита tar создает архивы с расширением .tar, утилиту обычно используют для резервного копирования так как она не сжимает файлы, а только собирает в архив. Чтобы создать архив .tar, выполните команду с опциями —cvf. Например:
tar -cvf newark.tar text07.txt ../dir22
Создаст архив с именем newark.tar, в который будут помещены файл text.07.txt и все файлы из каталога dir22, располагающегося внутри родительского каталога.
Для просмотра содержимого .tar архива используются опции -tvf:
tar -tvf newark.tar
debtop@DebTop:~/playpen/dir00$ tar -cvf newark.tar text07.txt ../dir22 text07.txt tar: Удаляется начальный `../' из имен объектов ../dir22/ ../dir22/text04.txt tar: Удаляются начальные `../' из целей жестких ссылок ../dir22/text07.txt ../dir22/text40.txt ../dir22/text08.txt ../dir22/text32.txt ../dir22/text28.txt ../dir22/text26.txt ../dir22/text11.txt ../dir22/text25.txt debtop@DebTop:~/playpen/dir00$ tar -tvf newark.tar -rw-r--r-- debtop/debtop 0 2020-11-25 13:44 text07.txt drwxr-xr-x debtop/debtop 0 2020-11-25 13:44 dir22/ -rw-r--r-- debtop/debtop 0 2020-11-25 13:44 dir22/text04.txt -rw-r--r-- debtop/debtop 0 2020-11-25 13:44 dir22/text07.txt -rw-r--r-- debtop/debtop 0 2020-11-25 13:44 dir22/text40.txt -rw-r--r-- debtop/debtop 0 2020-11-25 13:44 dir22/text08.txt -rw-r--r-- debtop/debtop 0 2020-11-25 13:44 dir22/text32.txt -rw-r--r-- debtop/debtop 0 2020-11-25 13:44 dir22/text28.txt -rw-r--r-- debtop/debtop 0 2020-11-25 13:44 dir22/text26.txt -rw-r--r-- debtop/debtop 0 2020-11-25 13:44 dir22/text11.txt -rw-r--r-- debtop/debtop 0 2020-11-25 13:44 dir22/text25.txt
Опции для распаковки .tar архива -xvf:
tar -xvf newark.tar
-rw-r--r-- debtop/debtop 0 2020-11-25 13:44 dir22/text27.txt -rw-r--r-- debtop/debtop 0 2020-11-25 13:44 dir22/text39.txt hrw-r--r-- debtop/debtop 0 2020-11-25 13:44 text07.txt ссылка на text07.txt debtop@DebTop:~/playpen/dir00$ ls arch.tar text05.txt text11.txt text17.txt text23.txt newark.tar text35.txt text41.txt dir00 text06.txt text12.txt text18.txt text24.txt scrolls.tar text36.txt text42.txt text01.txt text07.txt text13.txt text19.txt text25.txt text31.txt text37.txt text02.txt text08.txt text14.txt text20.txt text26.txt text32.txt text38.txt text03.txt text09.txt text15.txt text21.txt text27.txt text33.txt text39.txt text04.txt text10.txt text16.txt text22.txt text28.txt text34.txt text40.txt texts.zip
После выполнения в текущий каталог будут скопированы все файлы из архива, но архив не будет удален. Удалить его можно, выполнив rm.
Команды для работы с текстом
Nano, Vim — редактирование текстовых файлов
Как посмотреть содержимое файла в Linux терминале? Через утилиты терминала Linux часто требуется открыть или отредактировать текстовые файлы. Для этого перейдем в директорию dir42 и откроем text42.txt с помощью Nano — простого текстового редактора.
nano text42.txt
Запишем текст в файле, затем сохраним его сочетанием Ctrl+O (^ в терминале Linux всегда значит Ctrl) и выйдем сочетанием Ctrl+X. Nano позволяет редактировать файлы прямо из окна терминала, обладает базовым, но не очень богатым набором функций. Кроме Nano есть еще более продвинутый Vim, который открывает гораздо большие возможности редактирования файлов. Только Vim не всегда установлен в систему и из него сложнее выйти, потому что он не отображает подсказки. Для выхода из Vim используйте :q, для выхода без сохранения изменений — :q! и :w для сохранения всех изменений. Обязательно сначала использовать двоеточие, так как оно активирует командный режим.
grep — поиск
Чтобы найти текст в файле используйте grep, эта команда выведет соответствующие запросу строки текста. Можно искать словом, строкой или регулярным выражением, а вывод может быть файлом или папкой, совпадающим или наоборот — несовпадающим. Полезно использовать grep при поиске по большим логам.
Кроме непосредственно grep есть варианты pgrep, fgrep, egrep, которые выполняют ту же функцию, но для других целей. Часто grep используют в сочетании с другими командами, чтобы упростить работу с большими объемами данных, ниже мы еще увидим примеры такого использования.
head, tail — начало и конец текста
Команды head и tail используются для вывода первых и последних строк текста в одном или нескольких документах.
head/tail опции файл
По умолчанию команды выводят 10 строк текста, но количество можно изменить с помощью опции -n. Специально для эксперимента мы создали большой текстовый файл, из которого хотим получить ровно 1 первую или последнюю большую строку:
head -n 1 text00.txt
tail -n 1 text00.txt
debtop@DebTop:~/playpen/dir00$ head -n 1 text00.txt Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla ut lacus ut justo blandit mattis . Sed magna elit, pharetra ac nulla eu, vulputate elementum ex. Donec porta sapien at dui males uada, quis pretium neque volutpat. Aliquam a tincidunt mi. Nunc posuere vehicula velit, sed int erdum lorem ullamcorper at. Aliquam finibus ultrices metus pharetra elementum. Aliquam erat vol utpat. In sit amet sapien commodo dolor feugiat sodales at vitae turpis. Donec ullamcorper dolo r quis lacus tempor, ac aliquet sem consectetur. Duis nec dignissim ligula. Sed gravida sed arc u quis commodo. Aliquam vestibulum nunc sed viverra imperdiet. Suspendisse accumsan sollicitudi n ex, interdum facilisis eros efficitur non. debtop@DebTop:~/playpen/dir00$ tail -n 1 text00.txt Aenean non ullamcorper diam. Ut iaculis vehicula libero sit amet elementum. Nullam ipsum metus, molestie vehicula dui in, tempus finibus nisl. In hac habitasse platea dictumst. In vehicula v elit nec massa porttitor finibus. Nulla libero justo, egestas vitae fringilla ut, gravida eu ri sus. Ut eget risus erat. Aenean interdum pretium semper. Aliquam vehicula dolor non augue lacin ia sodales. Morbi molestie massa sed enim placerat, id euismod odio condimentum. Nunc aliquet l acinia lacus, quis mattis tortor viverra sed. Vestibulum ullamcorper aliquet nibh, nec lacinia nunc tincidunt fringilla. Mauris sollicitudin nec lectus eget mollis. Aliquam eu accumsan nulla.
С помощью опции -c можно запросить уже не строки, а байты.
Например, команды для получения 100 байт текста:
head -с 100 text00.txt
debtop@DebTop:~/playpen/dir00$ tail -c 100 text00.txt ia nunc tincidunt fringilla. Mauris sollicitudin nec lectus eget mollis. Aliquam eu accumsan nulla. debtop@DebTop:~/playpen/dir00$ head -c 100 text00.txt Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla ut lacus ut justo blandit mattis. Sed
tail -с 100 text00.txt
Другие опции можно посмотреть через man head.
HEAD(1) User Commands HEAD(1) NAME head - output the first part of files SYNOPSIS head [OPTION]. [FILE]. DESCRIPTION Print the first 10 lines of each FILE to standard output. With more than one FILE, precede each with a header giving the file name. With no FILE, or when FILE is -, read standard input. Mandatory arguments to long options are mandatory for short options too. -c, --bytes=[-]NUM print the first NUM bytes of each file; with the leading '-', print all but the last NUM bytes of each file -n, --lines=[-]NUM print the first NUM lines instead of the first 10; with the leading '-', print all but the last NUM lines of each file -q, --quiet, --silent never print headers giving file names -v, --verbose
Команды для управления процессами
Операционная система Linux не имеет встроенного графического диспетчера задач в отличие от Windows, вместо этого всеми процессами можно управлять из терминала. Говорят, что Linux стабильнее винды, но иногда все равно приходится гуглить «Как завершить процесс Linux», потому что что-то зависло.
kill / pkill / killall — завершить процесс
Первый вопрос — почему так много, какую команду использовать? Давайте по порядку:
- kill — убить процесс по его идентификатору (Process ID);
- pkill — убить процесс по его имени;
- killall — убить все процессы с указанным именем.
ps / pgrep — узнать ID процесса
Если вы не компьютер, то вряд ли вам известен ID нужного процесса. PS (Process Status) выведет на экран информацию о запущенных процессах. Чтобы показать список всех активных процессов, используется ps axu.
debtop@DebTop:~/playpen$ top top - 14:21:22 up 8 days, 21:57, 3 users, load average: 0,49, 0,66, 0,65 Tasks: 181 total, 1 running, 180 sleeping, 0 stopped, 0 zombie %Cpu(s): 0,8 us, 0,4 sy, 0,0 ni, 98,7 id, 0,0 wa, 0,0 hi, 0,0 si, 0,0 st MiB Mem : 7856,4 total, 4009,2 free, 1944,6 used, 1902,6 buff/cache MiB Swap: 8068,0 total, 7913,4 free, 154,6 used. 5390,8 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 690 root 20 0 309888 34416 16856 S 2,0 0,4 5:46.67 Xorg 11426 debtop 20 0 1195064 78272 62036 S 1,7 1,0 0:15.55 konsole 936 debtop 20 0 2994244 59840 36732 S 1,3 0,7 6:10.33 kwin_x11 11586 debtop 20 0 9188248 513296 127392 S 1,0 6,4 14:44.20 chrome 11068 debtop 20 0 973096 310508 142424 S 0,3 3,9 2:27.42 chrome 11107 debtop 20 0 390416 110176 62368 S 0,3 1,4 0:44.15 chrome 11516 debtop 20 0 9177080 384808 114828 S 0,3 4,8 0:58.68 chrome 1 root 20 0 169620 6872 5272 S 0,0 0,1 0:02.15 systemd 2 root 20 0 0 0 0 S 0,0 0,0 0:00.02 kthreadd 3 root 0 -20 0 0 0 I 0,0 0,0 0:00.00 rcu_gp 4 root 0 -20 0 0 0 I 0,0 0,0 0:00.00 rcu_par_gp 6 root 0 -20 0 0 0 I 0,0 0,0 0:00.00 kworker/0:0H-kblockd 8 root 0 -20 0 0 0 I 0,0 0,0 0:00.00 mm_percpu_wq 9 root 20 0 0 0 0 S 0,0 0,0 0:00.07 ksoftirqd/0 10 root 20 0 0 0 0 I 0,0 0,0 0:09.29 rcu_sched 11 root 20 0 0 0 0 I 0,0 0,0 0:00.00 rcu_bh 12 root rt 0 0 0 0 S 0,0 0,0 0:00.17 migration/0 14 root 20 0 0 0 0 S 0,0 0,0 0:00.00 cpuhp/0 15 root 20 0 0 0 0 S 0,0 0,0 0:00.00 cpuhp/1 16 root rt 0 0 0 0 S 0,0 0,0 0:00.37 migration/1 17 root 20 0 0 0 0 S 0,0 0,0 0:00.15 ksoftirqd/1 19 root 0 -20 0 0 0 I 0,0 0,0 0:00.00 kworker/1:0H-kblockd
Проблема в том, что найти нужный процесс среди этого полотна очень сложно. Решений этой проблемы несколько.
1. top (Table Of Processes) — каждые 2 секунды обновляет активные процессы. Колонка PID указывает на ID процесса, USER на пользователя и т.д. Удобно. Если процесс активен постоянно, но уследить за постоянно обновляющимся списком не всегда получается.
2. Более продвинутые утилиты командной строки Linux — atop, htop. Отображают не только активные процессы с обновлением в две секунды, но и контроль над загрузкой и т.д. Утилиты полезны для системных администраторов, но для обычного пользователя все-таки перебор.
3. ps axu | grep имя_процесса. С помощью утилиты grep можно вычленить нужный процесс, если известно его имя.
debtop@DebTop:~/playpen$ ps axu | grep bash debtop 11468 0.0 0.0 8316 5192 pts/1 Ss 13:20 0:00 /bin/bash debtop 14232 0.0 0.0 6224 888 pts/1 S+ 14:22 0:00 grep bash
4. pidof — самый короткий способ выяснить ID процесса, если известно его имя.
debtop@DebTop:~/playpen$ pidof bash 11468
Пакетные менеджеры или как установить файл
По сравнению с Windows, в Linux установка программы требует чуть больше усилий. Даже для установки браузера Chrome придется залезть в терминал.
dpkg — установить файл с расширением .deb (только для систем на Debian).
Многие программы, скачанные из интернета, которые поддерживаются ОС Linux, имеют расширение .deb. Это файлы, оптимизированные под дистрибутивы на основе Debian (Debian, Ubuntu и Ubuntu-based, Mint и т.д.). Когда вы скачаете и попытаетесь открыть файл (точнее пакет) .deb кликом указателя скорей всего ничего не произойдет, потому что это необходимо делать через dpkg:
dpkg -i package.deb — установит пакет .deb;
dpkg —remove package — удалит пакет. Да, при удалении не требуется указывать расширение, так как пакет уже установлен в системе и идентифицируется по имени.
Примечание: Если вы работали в Windows, вы помните, что приложения удаляются не полностью, остаются пустые папки и записи в реестре. У Linux тоже есть такая особенность, остаточные файлы и папки называются dependencies (зависимости). Избавиться от них в Linux гораздо проще, чем в ОС от Майкрософт. Достаточно ввести:
dpkg —purge package.
apt — менеджер установки пакетов Debian-based
Интересная функция Linux — пакетные менеджеры. В каждом дистрибутиве есть свой пакетный менеджер, который может запрашивать и устанавливать пакеты из удаленных репозиториев. Это очень удобно — требуется знать только название пакета, который желаете установить и команду. Пакетный менеджер по умолчанию в Debian и дистрибутивах на основе Debian — apt (Advanced Packaging Tool).
Для установки пакета с помощью apt необходимо ввести команду:
apt install имя_пакета
Часто для этой операции потребуются права суперпользователя, но об этом см. раздел ниже.
Нередко можно встретить apt-get вместо apt — это тот же самый пакетный менеджер, только более старая его версия. Тем не менее оба варианта существуют и работают. Пакетный менеджер apt объединяет сразу несколько прежних команд (apt-get и apt-cache в apt install и apt search), а также оптимизирует процесс установки пакетов.
Команда для удаления установленного пакета с помощью apt:
apt remove имя_пакета
Для удаления зависимостей вместо remove используется purge:
apt purge имя_пакета
Для автоматического удаления всего лишнего из системы используется apt autoremove.
Автоматическое удаление лишнего — это как встроенный в систему менеджер очистки, команда удаляет все файлы и зависимости, которые больше не требуются в системе, например, потому что соответствующего им приложения больше нет в системе.
yum — менеджер установки пакетов Red Hat
Red Hat — один из наиболее популярных дистрибутивов Linux. Утилита yum написана на python. Это пакетный менеджер Red Hat и дистрибутивов на основе Red Hat, например CentOS. Менеджер yum (Yellowdog Updater, Modified) использует формат пакетов rpm вместо deb, но команды остались прежними:
При удалении пакета менеджер yum по умолчанию всегда сохраняет файлы конфигурации, которые отличаются от изначальных по умолчанию и не имеет команды аналогичной apt purge. Впрочем, способы достижения аналогичного результата существуют всегда.
pacman — менеджер пакетов ArchLinux
Еще один дистрибутив, имеющий свой пакетный менеджер — ArchLinux. Утилита pacman написана на языке C (Си). ArchLinux имеет только одну версию — текущую, которая постоянно обновляется, и для этой системы pacman подходит идеально. Пакеты здесь представляют собой архивы формата .tar.xz.
Пакетный менеджер pacman работает иначе чем yum, apt или dpkg. Чтобы установить или удалить пакет с помощью pacman используются опции:
- -S устанавливает пакет ArchLinux;
- -Sw скачивает, но не устанавливает пакет;
- -U для установки пакетов с локального компьютера;
- -s для поиска пакетов;
- -u для обновления установленных пакетов;
- -R для удаления;
- -Rn для удаления резервных копий файлов конфигурации;
- -Rs для удаления зависимостей.
После опции всегда идет имя пакета, т.е.:
pacman -S имя_пакета
Команды управления пользователями
sudo — запуск команд и приложений через терминал в Linux от имени администратора (суперпользователя)
Все важные действия в Linuxе требуют подтверждения от имени администратора, в Linux администратор называется суперпользователем или root. Чтобы выполнить команду от имени суперпользователя, нужно ввести перед ней sudo. Это позволит выполнять команды от имени суперпользователя до окончания текущей сессии в терминале.
Если вы не хотите вводить sudo каждый раз, когда терминал просит это сделать, вы можете переключиться в режим суперпользователя. Для этого выполните su, введите пароль, тогда вы сможете выполнять любые команды по умолчанию от имени суперпользователя. Однако, лучше поступать так только, если вы точно знаете, что делаете. Сломать что-то важное в системе получится вряд ли, но вероятность возрастает лучше использовать sudo.
useradd (adduser) / userdel (deluser) / usermod — добавить, удалить, изменить пользователя
С помощью этих команд вы сможете управлять учетными записями пользователей. Полезно иметь под рукой такую возможность в сетевом домене или домашней сети, выдавать и ограничивать права.
Для добавления пользователя используйте useradd имя_пользователя.
Пароль для нового пользователя задается командой passwd имя_пользователя.
Аналогичным образом, командой userdel имя_пользователя, можно удалить созданную учетную запись.
Третья команда — usermod позволяет изменять учетные записи пользователей: изменять домашнюю директорию, имя учетной записи, оболочку входа в систему, «срок годности» пароля и т.д.
У каждой из трех команд есть свои опции, знать которые новичкам нет необходимости, но знать об их существовании не возбраняется.
Команды выключения и перезагрузки
Linux можно выключить или перезагрузить из командной строки. Зачем это делать? Во-первых, команды очень полезны, если отсутствует графическая оболочка системы — окружение пользователя, и вся работа происходит из терминала. Во-вторых, различные команды или опции помогут произвести перезагрузку или выключение с разными параметрами.
shutdown — выключение
shutdown опции время сообщение
Время — отсрочка выключения. Можно указывать:
- в 24-часовом формате когда нужно указать точное время выключения с точностью до минуты shutdown 10:10;
- в формате +мин, например, shutdown +10 выключит компьютер через 10 минут после выполнения. Команды shutdown +0 и shutdown now выключат компьютер немедленно.
Сообщение (wall) — текстовое сообщение, отправляемое пользователям компьютеров в сети. Если требуется добавить комментарий с причиной выключения. При добавлении сообщения обязательно указывать время.
Некоторые опции:
- -H (Halt) — останавливает все функции процессора, но не выключает компьютер. Halt можно использовать как самостоятельную команду, отдельно от shutdown;
- -P — полное выключение компьютера. Можно использовать как команду poweroff;
- -r (reboot) — перезагрузка. В качестве команды — reboot;
- -k — не производить никаких действий, отправить сообщение;
- -c — отменить запланированное выключение. Можно отменить выключение, только если не было задано время +0 или now.
Заключение, несколько советов
Мы рассмотрели основные команды Linux с примерами, надеемся, что они окажутся вам полезными. Напоследок приведем несколько советов по использованию терминала одной строкой.
Двойной символ & (амперсанд)
Предназначен для выполнения нескольких команд последовательно:
команда1 && команда2 && команда3
команда3 выполнится только после успешного исполнения команды2, а команда2 — после команды1.
Вертикальная черта | (pipe)
Вводит результат первой команды в последующую. Например, следующая команда добавит таблицу процессов к команде поиска:
ps axu | grep имя_процесса
&& и || можно комбинировать. Например вот так: команда1 && команда2 || команда3
Стрелки вверх и вниз на клавиатуре
Помогают осуществлять навигацию по последним командам. Стрелка вверх (Ctrl+P) — предыдущая выполненная команда, стрелка вниз (Ctrl+N) — следующая.
history — история
Если вы забыли, как вы выполнили действие пять дней назад, а вот оно снова потребовалось, выполните history, и терминал выведет на экран последнюю тысячу команд.
Новая вкладка bash
Не всегда удобно иметь несколько окон. Некоторые терминалы, как и браузеры, дают возможность открыть несколько вкладок сочетанием клавиш Ctrl+Shift+T.
Копирование и вставка, прерывание команды
Пробовали ли вы копировать текст и вставлять в терминал? Пробовали Ctrl+C? Ctrl+C прервет выполнение текущей команды, например таблицы процессов, сбросит текст, введенный в строку. Скопировать текст из bash — Ctrl+Shift+C, вставить — Ctrl+Shift+V (для MacOS — Command+C и Command+V соответственно).
Командная строка Linux: краткий курс для начинающих
Как работать с командной строкой и базовыми командами.
Введение
В данном руководстве мы вкратце ознакомимся с работой в командной строке в Ubuntu 20.04 .
Требования
- Cервер с Ubuntu 20.04
Для разных операционных систем командную строку можно открывать с помощью приложений:
- Mac OS X: Terminal (default), iTerm 2;
- Windows: PuTTY;
- Linux: Terminal, KDE Konsole, XTerm.
С подробным описанием команд для Ubuntu можно ознакомиться в официальной документации.
Вход на сервер через терминал
В операционной системе Ubuntu 20.04 открыть командную строку можно двумя способами: через консоль и через графический терминал.
Для работы через консоль следует нажать сочетание клавиш Ctrl+Alt+F1, для возврата в графический интерфейс — сочетание клавиш Ctrl+Alt+F7.
Для запуска терминала нажмите сочетание клавиш Ctrl+Alt+T.
Внизу экрана располагается приглашение командной строки — последовательность символов, извещающая о готовности к обработке команд:
kamilla@kamilla-Aspire-V3-371:~$
- kamilla — имя текущего пользователя (суперпользователь/администратор);
- kamilla-Aspire-V3-37 — имя хоста (сервер);
- : — разделитель;
- ~ — текущая директория (в какой папке выполняется команда) пользователя (по умолчанию /home/);
- $ — символ приглашения ввода для пользователей с обычными правами;
- # — символ приглашения ввода для суперпользователя/администратора root (например, root@cs49647:~#).
Базовые команды, используемые при настройке сервера
После создания нового сервера необходимо предпринять несколько шагов по его базовой настройке.
Для того чтобы открыть сервер под учетной записью заведенного пользователя введите команду:
ssh -p №port demo@adress
- №port — номер заданного порта при начальной настройке сервера;
- demo — имя пользователя;
- adress — ip-адрес сервера.
Для входа на сервер под учетной записью root используйте команду, заменив SERVER_IP_ADDRESS на публичный IP-адрес вашего сервера:
ssh root@SERVER_IP_ADDRESS
Для создания новой учетной записи пользователя введите команду, заменив имя DEMO на любое другое необходимое имя:
adduser DEMO
Для открытия конфигурационного файла в текстовом редакторе под пользователем root введите команду:
nano /etc/ssh/sshd_config
Для замены строчки в открывшемся конфигурационном файле найдите, например, строчку Port 22 и замените число 22 на любое другое число (от 1025 и до 65536).
После внесения изменений сохраните и закройте файл, нажав сочетание клавиш CTRL-X, затем клавишу Y, затем клавишу ENTER.
Для перезапуска сервиса SSH выполните следующую команду:
service ssh restart
Для выполнения команды с привилегиями root-пользователя, перед ней следует поставить слово sudo:
sudo command_to_run
Для завершения сессии выполните команду:
exit
Обзорное описание команд, аргументов и опций для них
Для запуска команды следует ввести команду и нажать клавишу Enter.
Команды выполняются последовательно, для выполнения следующей появится приглашение командной строки (если не использовать специальные скрипты).
Для того чтобы открыть страницу с подробным описанием команды Linux, например ip address, введите команду man с именем команды:
man ip address
Запуск без аргументов и опций
При запуске команд без аргументов:
- cd — возврат в домашнюю директорию текущего пользователя;
- ls — вывод списка файлов и директорий в текущем каталоге.
Пример:
Выполнив команду ls без параметров, получаем список файлов в каталоге:
testk@cs49647:~$ ls
linux.jpg template ubuntu.jpg
Запуск с аргументами (параметрами)
Большинство команд рассчитано на запуск с передачей аргументов (параметров).
Наиболее распространенное использование команды cd — вызов с аргументом, который является путем к директории, в которую следует перейти:
cd /usr/bin
Запуск с опциями
Многие команды также поддерживают опции (флаги, ключи) запуска, позволяющие изменять результат выполнения команды. Опции представляют собой одиночный символ после символа «-», либо в расширенном написании после «—».
Пример:
Выполнив команду ls с опциями -A, -S, -1, получаем список всех файлов, включая «скрытые», расположенных по одному на каждой строке и отсортированных по размеру:
testk@cs49647:~$ ls -AS1
.gtkrc-2.0
linux.jpg
ubuntu.jpg
template
.filter
Запуск с аргументами и опциями (одновременно)
Структура записи команды с опциями и аргументами:
команда -опции аргументы
Пример:
Команда ls -la /home выведет подробный (-l) листинг директории /home, включая скрытые файлы (-a):
testk@cs49647:~$ ls -la /home
total 12
drwxr-xr-x 3 root root 4096 Oct 14 16:13 .
drwxr-xr-x 22 root root 4096 Oct 20 10:25 ..
drwxr-xr-x 4 testk testk 4096 Oct 19 10:52 testk
Переменные окружения
Окружение/среда (environment) — это набор пар ПЕРЕМЕННАЯ=ЗНАЧЕНИЕ, которые могут использоваться запускаемыми процессами.
Просмотр переменных окружения
Для того чтобы посмотреть свое окружение введите команду без аргументов:
В зависимости от конфигурации системы, вывод списка переменных окружения может занять несколько экранов, поэтому лучше использовать команду:
env | more
Просмотр значения переменной
Переменные окружения могут формироваться как из заглавных, так и из строчных символов, однако исторически повелось именовать их в верхнем регистре.
Чтобы вывести на экран значение какой-нибудь переменной окружения, достаточно набрать echo $ИМЯ_ПЕРЕМЕННОЙ, например, просмотр домашней директории пользователя, хранящийся в переменной окружения $HOME:
echo $HOME
Для перехода в домашнюю директорию следует использовать команду:
cd $HOME
Установка переменных окружения
Для установки значений переменной окружения введите команду:
VAR=value
VAR — название переменной;
value — значение переменной.
Пример:
Выполнив команду var=value, после вывода на просмотр получаем результат value:
testk@cs49647:~$ var=value testk@cs49647:~$ echo $var value
Заключение
Мы познакомились с принципами работы в командной строке и базовыми командами.
В последующих статьях цикла, описывающего принципы работы в Linux, вы изучите с работой в bash (переменные, условия, циклы, примеры простых скриптов), а также ознакомитесь с управлением файлами и каталогами, созданием пользователей и настройкой прав.
Зарегистрируйтесь в панели управления
И уже через пару минут сможете арендовать сервер, развернуть базы данных или обеспечить быструю доставку контента.
Читайте также:
Инструкция
Как автоматизировать подготовку к собеседованиям с помощью Telegram-бота
29 сентября 2023
Инструкция
Как реализовать очередь в Redis
14 сентября 2023
Инструкция
Как генерировать истории с помощью ChatGPT и Telegram
Linux-шпаргалка: команды терминала для новичков
Терминал и текстовые команды — главный способ управления операционной системой Linux, особенно, если речь идёт о сервере. И хоть слово «терминал» пугает новичков, поверьте, что всё гораздо проще. Сегодня мы подготовили для вас шпаргалку с базовыми командами — сохраняйте её в закладки и повышайте свою продуктивность в сотни раз.
Начнём с теории
Linux (Линукс) — это целое семейство операционных систем Unix с открытым исходным кодом, основанных на ядре Linux. Сюда входят все самые популярные системы на основе ОС, например: Ubuntu, Fedora, Mint, Debian и другие. Их ещё называют дистрибутивами. Подробнее о каждом читайте в этом посте.
Терминал (или «Bash», сокращение от «Bourne-Again shell») — это программа, которая используется для взаимодействия с командной оболочкой. Терминал применяется для выполнения административных задач, например: установку пакетов, действия с файлами и управление пользователями.
Команда — это название программы, которое пользователь вводит в терминале для выполнения определённой задачи. Команды могут иметь дополнительные данные и параметры.
В ОС есть несколько сотен команд и их модификаций. Они группируются по нескольким категориям:
- По расположению — могут быть утилитами командной строки или встроенной функцией командной оболочки.
- По частоте применения — те команды, что используются постоянно, по ситуации (эпизодически) или редко.
- По типам действий — большая группа команд, с помощью которых можно управлять процессами или достать нужную информацию. О них сегодня и поговорим.
Типичная команда выглядит вот так:
Команды, которые позволят узнать больше о вашей системе
id — если вы хотите получить информацию о вашей учётной записи.
w — полезная команда, если вам нужно узнать, какой пользователь сейчас находится в системе (или команда -f — для того, чтобы узнать, откуда был совершён вход).
lsblk — если вы хотите открыть список блочных устройств хранения данных.
lscpu — отображает информацию о процессорах.
free — показывает объём свободной и уже используемой памяти (альтернативная команда — free -g).
lsb_release -a — если вы хотите получить информацию о версии вашей ОС.
Команды для работы с файлами
Содержит в себе практически все мелкие утилиты и инструменты для взаимодействия с файлами и папками.
ls — покажет содержимое директории, в которой вы находитесь. Если после команды ввести адрес конкретной папки, то она покажет то, что хранится в ней. При добавлении аргумента -R в выводе команды появятся файлы из поддиректорий.
cd — change directory, что в переводе означает «сменить директорию». Из названия понятно, что с помощью этой команды можно перемещаться между папками. Вписываем её, а потом адрес: cd /user/test/dir/111. Есть сокращенные варианты: cd- для перемещения в предыдущую директорию или cd (без аргументов) для прыжка в домашнюю папку.
pwd — укажет полный путь до директории, в которой вы находитесь. Если вы перепрыгнули на рабочий стол с помощью cd ~/Desktop/, то pwd покажет что-то в духе /home/Polzovatel/Desktop.
dd — мощная утилита для взаимодействия с разделами. С её помощью можно делать копии разделов, перемещать их, удалять без возможности восстановления.
rm — опасная команда для удаления директорий и их содержимого. Стирает все данные, которые обнаружит в указанной папке без возможности к восстановлению.
grep — это полнотекстовый поиск в файле. Очень полезная команда, когда вам нужно что-то найти. Например, grep значение /путь/до/файла покажет строки в которых есть «значение». А команда grep -ril значение /путь/до/каталога/* покажет все файлы, в которых есть искомое значение.
-r — рекурсивный поиск
-i — игнорировать регистр (Case insensetive)
-l — вывести результат списком.
chown пользователь:группа — команда позволяет изменить владельца файла.
chmod — изменяет права на файл или каталог
find — суперполезная команда. С её помощью можно искать файлы по определённым параметрам.
Следующие команды потребуются вам при работе с файлами разного типа и объёма:
cat — показывает содержимое файлов. Также может использоваться в двух вариантах: 1) одним текстовым файлом (cat путь_к_файлу), она отображает содержимое файла в окне терминала, 2) если же указать больше элементов, то команда склеит их (cat путь_к_файлу_1 путь_к_файлу_2).
head — «голова», как и cat, показывает содержимое документов, но не всё, а только первые 10 строк. При желании количество строк можно увеличить или сократить, добавив параметр -n.
tail -f — используется для просмотра растущего файла в окне интерактивного запуска кода.
touch — эта команда создавалась для изменения времени последнего открытия файла или директории, но используют её, в основном, для создания новых файлов.
wget — загружает из интернета документы, картинки, целые страницы и прочий контент.
wc — считает количество строк, слов, знаков и байтов.
zip — упаковывает файлы в архив в формате .zip.
diff — сокращение от «difference». Команда показывает разницу между двумя текстовыми файлами.
Что вы можете сделать с двоичными файлами? На самом деле, вариантов не очень много:
strings — команда выведет готовые к печати строки файла;
od — позволит вам напечатать файл в восьмеричном формате;
cmp — даёт возможность побайтно сравнивать файлы.
Если вам требуется сравнить текстовые файлы друг с другом, введите эти команды:
comm — отсортированные файлы будут строка за строкой.
diff — позволяет построчно выявить различия. Эта команда используется наиболее часто в силу богатого набора опций.
Команды для управления пользователями
Linux — многопользовательская система, поэтому здесь достаточно сложная система добавления и редактирования учётных записей. Но можно упростить себе жизнь и воспользоваться этими командами:
useradd — создаёт новую учётную запись. Например, если мы захотим бы добавить нового пользователя с именем REG.RU, то нужно воспользоваться этой командой — вводим useradd REG.RU.
passwd — задаёт пароль для учётной записи. Короче говоря, работает вкупе с предыдущей командой. То есть сразу после создания аккаунта, пишем passwd REG.RU.
userdel — удаляет выбранную учётную запись. Синтаксис простейший: userdel , которую нужно стереть
Для установки, удаления и обновления пакетов
Для установки программ в Linux используются менеджеры пакетов, но для каждого дистрибутива они разные. Вот команды для наиболее популярных дистрибутивов:
Debian/Ubuntu
sudo apt-get install название_пакета — устанавливает программу на выбор.
sudo apt remove название_пакета — команда, используя которую можно удалить не только ПО, но и все неиспользуемые пакеты.
sudo apt-get update — обновляет информацию о пакетах, имеющихся в системе, и тех, что хранятся в подключённых репозиториях.
sudo apt-upgrade — обновляет установленные пакеты до самых свежих версий, доступных в подключенных репозиториях.
sudo apt purge — удаляет все файлы конфигурации вместе с пакетами ПО.
sudo apt autoremove -purge — удаляет абсолютно всё: и пакеты, и зависимости, и конфиги.
Red Hat Linux/CentOS
sudo dnf install название_пакета — устанавливает программу на выбор.
sudo dnf upgrade — обновляет установленные пакеты до самых свежих версий.
sudo dnf remove название_пакета — стирает с жёсткого диска имеющийся в системе пакет.
Бонус! Хитрости, которые сэкономят время
Этот список полезных знаков в разы ускорит вашу работу с командами:
!! — повторяет последнюю команду.
!$ — позволяет изменить команду, сохраняя последний аргумент. Например, команда less !$ — используется для повторного открытия файла в меньшем объёме.
!* —позволяет изменить команду, сохраняя при этом все аргументы. Например, head states.txt | grep ‘^Al’ — при использовании должен быть хвост.
tail !* — избавляет от необходимости вводить остальную часть команды.
>x.txt — используется для создания пустого файла или очистки существующего.
lsof -P -i -n — определяет, к каким скриптам идёт обращение со стороны веб-сервера.
И самая крутая команда в Linux: для вывода полного руководства о той или иной команде есть man (сокращенно от manual). Чтобы вывести мануал достаточно просто выполнить man . В качестве примера давайте рассмотрим команду cat:
NAME
cat — concatenate files and print on the standard output
SYNOPSIS
cat [OPTION]. [FILE].
DESCRIPTION
Concatenate FILE(s) to standard output.
With no FILE, or when FILE is -, read standard input.
-A, —show-all
equivalent to -vET
-b, —number-nonblank
number nonempty output lines, overrides -n
-e equivalent to -vE
-E, —show-ends
display $ at end of each line
-n, —number
number all output lines
-s, —squeeze-blank
suppress repeated empty output lines
-t equivalent to -vT
-T, —show-tabs
display TAB characters as ^I
-v, —show-nonprinting
use ^ and M- notation, except for LFD and TAB
—help display this help and exit
—version
output version information and exit
EXAMPLES
cat f — g
Output f’s contents, then standard input, then g’s contents.
А для выход из режима просмотра, достаточно набрать команду quit или q.
На первый взгляд может показаться, что список очень трудно запомнить, но запоминание приходит с практикой! Чем чаще вы пользуетесь теми или иными командами, тем скорее вы их запомните.
И, если вы хотите попробовать какие-то команды на настоящем сервере — попробуйте наши Облачные VPS с готовым шаблоном популярных дистрибутивов Linux: Ubuntu, CentOS и Django и почасовой оплатой от 44 копеек.
Как в Linux удалить файл
В Linux, как и в любой операционной системе, может возникнуть необходимость удалить файлы. В этой статье расскажем причины, почему пользователям нужно удалить файл из системы, а также приведем инструкцию, как это правильно сделать.
Причины, почему нужно удалить файл из системы
1. Освобождение места на жестком диске. Если диск заполнен, удаление ненужных файлов может освободить место для хранения новых файлов.
2. Очистка системы от ненужных файлов. В Linux накапливаются временные файлы, журналы и другие файлы, которые могут занимать много места на жестком диске. Удаление этих файлов поможет освободить место и ускорить работу системы.
3. Удаление вредоносных файлов. В Linux, как и в других операционных системах, могут быть установлены вредоносные программы или файлы. Удаление таких файлов поможет защитить систему от дальнейшего распространения вредоносных программ.
4. Изменение системных настроек. В некоторых случаях удаление файлов может потребоваться для изменения системных настроек или настройки программного обеспечения.
5. Восстановление свободной памяти после установки программного обеспечения. При установке программного обеспечения могут создаваться временные файлы, которые необходимо удалить после установки, чтобы восстановить свободную память на жестком диске.
6. Удаление файлов не нужных для выполнения задачи. Например, если вы работаете над проектом, и вам больше не нужны некоторые файлы, вы можете их удалить, чтобы упростить работу с проектом.
7. Для соблюдения прав доступа. В некоторых случаях вам может потребоваться удалить файлы, чтобы соблюсти права доступа. Например, если у вас нет разрешения на просмотр или изменение файлов, вы не сможете использовать их в работе.
8. При очистке системы перед продажей или передачей устройства другому пользователю. Если вы хотите продать или передать свое устройство другому пользователю, вам может потребоваться удалить все личные данные и файлы, чтобы обеспечить конфиденциальность и безопасность своих данных.
В Linux существует множество утилит для удаления файлов с различными опциями. Например, команда «shred» удаляет файлы без возможности их восстановления, команда «wipe» удаляет файлы так, чтобы они были невосстановимыми с помощью специализированных программ, команда «srm» удаляет файлы так, чтобы они были невосстановимыми даже в лабораторных условиях.
Важно помнить, что при удалении файлов в Linux они обычно перемещаются в корзину, которая находится в специальной директории «Trash». Это позволяет восстановить файлы, если они были удалены случайно или по ошибке. Если вы хотите окончательно удалить файлы без возможности их восстановления, вы должны использовать специализированные утилиты, такие как «shred», «wipe» или «srm».
Инструкция по удалению файла из системы
В Linux для удаления файла можно использовать команду «rm». Необходимо выполнить следующие шаги:
Откройте терминал в Linux.
Введите команду «rm» и укажите путь к файлу, который нужно удалить. Например, чтобы удалить файл «file.txt», находящийся в домашней директории, нужно ввести команду «rm ~/file.txt».
Если вы хотите удалить несколько файлов, перечислите их через пробел. Например, «rm ~/file1.txt ~/file2.txt».
При использовании команды «rm» будьте осторожны, так как удаление файла с помощью этой команды происходит без подтверждения. Если вы хотите получить подтверждение перед удалением файла, используйте команду «rm -i» вместо «rm».
Важно знать, что удаленные файлы невозможно будет восстановить, поэтому перед удалением убедитесь, что файлы действительно больше не нужны.
Если вы попытаетесь удалить файл, на который у вас нет прав, вам будет выдано сообщение об ошибке. Чтобы удалить такой файл, вам необходимо получить права на его удаление. Например, для удаления файла, который принадлежит пользователю «root», необходимо выполнить команду «sudo rm /path/to/file».
Если вы хотите удалить каталог, а не файл, используйте команду «rm -r». Например, чтобы удалить каталог «mydirectory», находящийся в домашней директории, нужно ввести команду «rm -r ~/mydirectory». При использовании этой команды будьте осторожны, так как все файлы и подкаталоги в указанном каталоге будут удалены без подтверждения.
Если вы случайно удалили файл, необходимо использовать специальные программы для восстановления данных, такие как TestDisk, PhotoRec или Scalpel. Важно знать, что чем быстрее вы примените эти программы, тем больше вероятность восстановления данных. Поэтому в случае удаления файлов по ошибке, не записывайте на диск новые данные, чтобы не затереть старые.
Хотите удалить файл без вывода на экран подтверждения каждого удаления? Вы можете использовать команду «rm -f». Например, чтобы удалить файл «file.txt» без вывода подтверждения, введите команду «rm -f file.txt». Будьте осторожны при использовании этой команды, так как удаленные файлы будут безвозвратно утеряны.
Нужно удалить файлы с определенным расширением в текущей директории? Используйте символ звездочки (*) для указания расширения. Например, чтобы удалить все файлы с расширением «.txt» в текущей директории, введите команду «rm *.txt».
Если вы случайно удалили файл и хотите его восстановить из резервной копии, вы можете использовать команду «cp» для копирования файла из резервной копии в нужную директорию. Например, чтобы скопировать файл «file.txt» из резервной копии, находящейся в директории «/backup», в директорию пользователя, введите команду «cp /backup/file.txt ~/».