Linux относится к семейству Unix-подобных ОС. Операционные системы Linux основаны на ядре Linux. Все команды Linux выполняются в терминале ОС Linux. Терминал очень похож на командную строку Windows. Он также называется оболочкой или консолью Linux.
Пользовательский интерфейс терминала Linux помогает выполнять все административные операции, включая установку пакетов, работу с файлами, управление пользователями.
Все команды Linux чувствительны к регистру. Команды выполняются, когда вы нажимаете клавишу Enter после ввода команды. Вывод команды будет показан в самом терминале.
Linux включает в себя множество команд. В этом гайде по командам Linux мы расскажем о самых важных из них.
Для выполнения команд вам понадобится компьютер под управлением Ubuntu (или любого другого дистрибутива Linux).
В Ubuntu вы можете запустить терминал, нажав кнопку Ctrl-Alt-T или нажав кнопку «Activities» в левом верхнем углу экрана и набрав «shell» или «terminal«, или другие распространенные синонимы.
Если у вас нет Linux OS, но вы хотите попрактиковаться в командах Linux, вы можете использовать любой онлайн-терминал Linux. Многие терминалы Linux доступны в Интернете бесплатно, для изучения команд.
Основные команды Linux
1) pwd
Команда pwd выводит текущий рабочий каталог. Она предоставляет абсолютный путь, т.е. от корня до текущего каталога, в котором вы находитесь. Эта команда поможет вам не заблудиться в окне терминала.
По умолчанию текущий рабочий каталог является домашним, если вы только что открыли терминал.
Команда: pwd
2) whoami:
Эта команда отобразит имя пользователя, который в данный момент вошел в терминал Linux.
Команда: whoami
3) clear:
Если терминал уже заполнен большим количеством команд и их выводов, вы можете использовать команду clear, чтобы очистить терминал.
4) exit:
Команда exit просто закроет сессию в этом терминале.
Команды Linux для отображения даты, времени и календаря
1) date:
Эта команда отображает текущее время и дату.
Команда: date
2) cal:
cal означает календарь. По умолчанию команда cal отображает календарь текущего месяца. На момент написания этой статьи текущим месяцем был март 2020 года, поэтому в выводе (на скриншоте) вы видите, что отображается календарь марта 2020 года.
Команда: cal
- Если вы хотите отобразить календарь за весь текущий год, вы можете дать команду ‘cal -y‘.
- Вы также можете указать год. Например, если вы хотите увидеть календарь на 2019 год, вы можете дать команду ‘cal 2019‘ — это отобразит календарь на 2019 год.
- Также, если вы хотите увидеть календарь нужного месяца нужного года, скажем января 2025 года, вы можете выполнить команду ‘cal 1 2025‘ — это отобразит календарь января 2025 года. Здесь ‘1’ обозначает первый месяц года, то есть январь.
- Вы также можете посмотреть календарь за три месяца вместе — предыдущего, текущего и следующего. Команда для этой операции — ‘cal -3‘.
Команды для навигации по файловой системе Linux
Файловая система Linux имеет древовидную структуру, которую также называют деревом каталогов. Оно используется для структуризации информации.
Дерево каталогов очень похоже на семейное дерево — у каталога или файла есть родитель. При этом у каждого каталога или файла есть только один родитель.
Сейчас рассмотрим подробнее, как устроена файловая система Linux. Во-первых, у нас есть корневой каталог, который является первым или самым верхним каталогом в нашем дереве. Он обозначается прямой косой чертой (/). В корневом каталоге находится множество подкаталогов — вложенных каталогов.
Рассмотрим некоторые важные подкаталоги:
- Bin: Этот каталог содержит исполняемые программы и команды, которые могут использовать все пользователи системы.
- Opt: Означает «необязательный». В этом каталоге содержатся коммерческие программные продукты, которые не установлены в системе по умолчанию. Например, если вы пользуете Ubuntu, то могли заметить, что Google Chrome не установлен в системе по умолчанию, и если вы хотите установить Google Chrome, вы найдете его в каталоге Opt.
- Temp: temp означает “временный”. В этом каталоге находятся временные файлы.
- Var: Содержит переменные данные, которые часто меняются с течением времени. К ним относятся файлы журналов (логов), пулы электронной почты, и базы данных пользователей.
- Home: Linux — многопользовательская ОС, что означает, что несколько пользователей могут работать в системе одновременно. Каждому пользователю выделяется квота на диске, в его домашнем каталоге.
Теперь изучим команды, которые позволяют перемещаться по дереву каталогов.
(i) pwd: Уже подробно обсуждали эту команду выше.
(ii) ls: ls означает «список» (list).
Синтаксис команды ls следующий:
ls [OPTIONS] [FILES]
Эта команда выводит список содержимого в каталоге. Если вы просто выполните команду ls без указания опций и конкретных файлов, она выведет в алфавитном порядке все вложенные каталоги и файлы, которые находятся в текущем рабочем каталоге.
Можно использовать команду ls с различными опциями и аргументами:
a) ls -l: Отображает содержимое с подробным листингом. -l означает опцию long.
b) ls -lh: Используется для отображения размеров файлов, удобочитаемых человеком. -h означает «человек».
c) Ls -lha: Эта команда используется для отображения всех скрытых файлов. -a включает показ скрытых файлов.
Пример этих команд:
ls ls -l ls -lh ls -lha
d) ls /: Поскольку / означает корневой каталог, эта команда выведет все файлы и папки, находящиеся в корневом каталоге.
e) ls ~: Поскольку ~ представляет домашний каталог, эта команда покажет содержимое вашего домашнего каталога. Команда: ls ~
f) ls …: Эта команда отобразит содержимое родительского каталога, поскольку .. означает родительский каталог. Допустим, сейчас я нахожусь в каталоге test в моем домашнем каталоге. Если я выполню команду ls … здесь, то она отобразит содержимое родительского каталога test, который является моим домашним каталогом.
Команды, выполненные в приведенном ниже примере:
ls ~ cd test pwd ls ..
g) Вы также можете вывести содержимое файла, указав абсолютный путь к нему.
Команда: ls /home/cpf657/kaushapx/test/parent
Аналогично можно использовать и относительное имя пути.
(iii) cd: Еще одна полезная команда для навигации по файловой системе — cd. cd означает «сменить каталог».
Предположим, я сейчас нахожусь в своем домашнем каталоге и хочу перейти в каталог с именем ‘test’, который находится внутри моего домашнего каталога, поэтому я использую команду cd test:
pwd cd test pwd
Чтобы перейти на уровень выше, нужно выполнить команду cd …:
pwd cd.. pwd
Вы также можете перейти к любому каталогу, используя его абсолютное имя. Например, предположим, что сейчас я нахожусь в каталоге test в моем домашнем каталоге. Теперь я хочу перейти в другую директорию под названием test1, которая находится внутри моей домашней директории. Поэтому я использую команду cd вместе с абсолютным путем к каталогу test1.
Команда:
pwd cd /home/cpf657/kaushapx/test1 pwd
Существует множество опций, которые мы можем использовать в команде cd.
cd /: Первая опция, которая очень полезна — это обычная косая черта. Так как вы знаете, что косая черта обозначает корневой каталог, cd / приведет вас прямо в корневой каталог.
Команда:
pwd cd / pwd
cd ~ : Второй вариант, это cd Tilda, то есть cd ~. Это приведет вас в домашнюю директорию, как вы можете видеть на скриншоте ниже.
Команда:
cd test pwd cd ~ pwd
cd ..: Другой вариант, который можно использовать с командой cd, — это cd с двумя точками, то есть cd ..
Две точки представляют родительский каталог, поэтому, используя команду cd …, вы перейдете на один шаг назад в дереве каталогов:
cd .. pwd
Если вы будете набирать cd с двумя точками снова и снова, то в конце концов попадете в корневой каталог.
Если вы хотите перейти в другой каталог внутри родительского, то также можете использовать эту команду, как показано ниже:
pwd cd ../directory1 pwd
cd —: команда cd-пробел-дефис переводит вас в предыдущий рабочий каталог.
Другие полезные команды Linux
(i) w: Эта команда отображает информацию о пользователях, находящихся в системе в данный момент.
Команда: w
(ii) uname: Эта команда отображает информацию о компьютере, на котором вы сейчас работаете. Существуют различные опции, с которыми вы можете использовать эту команду.
- uname -a: Отображение всей информации о компьютере с ОС Linux.
Команда: uname -a
- uname -s: Чтобы отобразить тип ядра.
Команда: uname -s
- uname -r: Чтобы отобразить релизную информацию о ядре.
- uname -v: Отображение версии ядра.
Команда: uname -v
(iii) top: Эта команда отображает данные о вашей машине в реальном времени. Она показывает сводку состояния, сколько времени работает компьютер, среднюю нагрузку, количество запущенных задач, информацию о процессоре, памяти, состоянии процессов и т.д. Для выхода из команды top необходимо нажать Q.
Команда: top
(iv) tar: tar означает ленточный архив. Эта команда используется для создания архивного файла, состоящего из множества других файлов, а также для извлечения файлов из архивного файла.
Сначала посмотрим, как создать архивный файл. Предположим, я нахожусь в каталоге под названием ‘parent’. Внутри этого родительского каталога у меня есть еще один каталог под названием ‘directory1’, который содержит два текстовых файла, как показано на скриншоте ниже.
Команда:
pwd ls ls directory1
Теперь я использую tar для архивации всех файлов в directory1 с помощью следующих аргументов:
Команда: tar -cvf testarchive.tar directory1/
Как видите на скриншоте выше, я использовал три options: -c, -v, и -f.
- -c — это опция create, которая используется для создания архивного файла.
- -v — это опция verbose, которая выводит список файлов в окне терминала, которые были добавлены в окно архива, как видите на скриншоте выше.
- -f — это опция, которая используется для присвоения нужного имени архивному файлу. Имя файла должно следовать сразу после опции -f.
В приведенном выше примере архивный файл создан, но он не сжат.
Существует два варианта сжатия архивного файла. Это:
-z: Это опция gzip. Она указывает tar использовать утилиту gzip для сжатия архивного файла. Она обеспечивает достойное сжатие и приемлемую скорость. Лучше добавить суффикс ‘.gz’ после имени файла, чтобы при попытке извлечь файлы из архива можно было легко определить тип сжатия.
Команда: tar -cvzf testarchive.tar.gz directory1/
-j: Это опция bzip2. Она использует для сжатия более совершенный алгоритм компрессии. Он обеспечивает лучшее сжатие и меньшую скорость. Лучше добавить суффикс ‘.bz2’ после имени файла, чтобы, когда кто-то попытается извлечь файлы из архива, он мог легко узнать тип сжатия.
Команда: tar -cvjf testarchive.tar.bz2 directory1/
Теперь обсудим команду для извлечения файлов из архива. Для этого нам нужно использовать опцию -x, то есть извлечение. Опции -v и -f в этом случае ведут себя так же, как и в случае с архивом.
Команда: tar -xvf testarchive.tar
Для извлечения файлов из архива .tar.gz необходимо использовать опцию -z, а для извлечения файлов из архива .tar.bz2 — опцию -j.
Команды:
tar -xvzf testarchive.tar.gz tar -xvjf testarchive.tar.bz2
(v) tail: Эта команда используется для вывода последних 10 строк файла. По умолчанию она показывает последние 10 строк, но если вы хотите указать количество строк, то можете использовать опцию -n.
Синтаксис: tail <имя файла> , или tail -n <количество строк> <filename>
Команда: tail DemoFile.txt
Команда: tail -n 5 DemoFile.txt
(vi) sudo: sudo означает «суперпользователь». Эта команда используется для выполнения действий, требующих прав «рута», то есть суперпользователя, например для изменения пароля другого пользователя и подобных операций.
(vii) ps: Эта команда позволяет получить список процессов, запущенных в текущей командной оболочке.
Команда: ps
Если хотите увидеть процессы, запущенные для определенного пользователя, нужно использовать опцию -u (user) в команде.
Команда: ps -u kaushapx
Чтобы отобразить все запущенные процессы, нужно использовать опцию -e (every), то есть ps -e в команде.
(viii) ping: Это очень полезная команда для устранения неполадок в сети. Она позволяет проверить наличие сетевого соединения с другим сетевым компьютером.
Синтаксис этой команды:
ping <ip_address_of_machine or device_name>
Чтобы остановить вывод команды ping, нужно нажать Ctrl+C.
Например, попробуем пропинговать сайт Google, чтобы проверить, доступен ли он на этой машине.
Команда: ping www.google.com
В приведенном выше примере видим, что IP-адрес Google 216.58.192.196 ответил на запрос ping и начал отправлять пакеты размером 64 байта.
Номера последовательности по протоколу ICMP (seq=1, seq=2 и т. д.) говорят о том, что нет пропущенных ответов или потери пакетов. Время жизни пакета (ttl) — это время, необходимое для предотвращения переполнения сети.
Время — это время, необходимое для того, чтобы запрос дошел от вашего компьютера до Google, а затем вернулся обратно на ваш компьютер. Чем оно короче, тем быстрее связь. В конце, выделенная часть — это резюме, которое показывает статистику пинга, которая может быть использована для мониторинга любых проблем с подключением к сети.
Если вы хотите пинговать только определенное количество раз, вы можете использовать опцию -c (count). А если вы хотите услышать пинг, используйте опцию -a (звук). Например, ping -ac 6 www.google.com
(ix) passwd: Эта команда позволяет изменить пароль. Если вы меняете пароль для себя, достаточно ввести только команду passwd. Но если вы меняете пароль для кого-то другого, вам нужно использовать эту команду вместе с командой sudo.
Для изменения собственного пароля: passwd
Для изменения пароля другого пользователя: sudo passwd <имя пользователя>
Команда: sudo passwd mary
(x) mv: Это очень важная команда. mv означает «перемещение». Эта команда позволяет перемещать файлы и папки из одной директории в другую. С помощью этой команды можно также переименовывать файлы.
Для перемещения файла в новое место в файловой системе,
Синтаксис: mv [имя файла] [целевой каталог]
Команда: mv DemoFile.txt /home/cpf657/kaushapx/test/parent/directory2
Если вы хотите просто переименовать файл, используйте следующий синтаксис.
Синтаксис: mv [filename] [new_filename]
Команда: mv DemoFile.txt Hello.txt
Вы также можете выполнить перемещение и переименование файлов одним движением, как показано в примере ниже:
Команда: mv Hello.txt /home/cpf657/kaushapx/test/parent/directory1/DemoFile.txt
(xi) mkdir: mkdir означает make directory (создать каталог). Эта команда используется для создания новых каталогов в файловой системе.
Синтаксис: mkdir [options…] [directories …]
Если вы хотите создать новый каталог внутри текущего каталога, вы можете указать в команде только имя каталога. В противном случае необходимо указать путь к новому каталогу.
Некоторые опции, которые можно использовать с командой mkdir:
- -version: Выводит информацию о версии и лицензии.
Команда: mkdir -version
-help: Здесь отображается вся информация о команде mkdir.
Команда: mkdir -help
- -v: Это опция verbose. Она выведет сообщение о созданном каталоге.
Команда: mkdir -v test3Dir
- -p: Эта опция используется для создания родительских каталогов в том случае, если для вновь создаваемого каталога он не существует.
Команда: mkdir -vp parent2/child2
- -m: Эта опция используется для установки разрешений для вновь созданного каталога.
Синтаксис: mkdir -m a=rwx [каталоги]
Предположим, что вы хотите предоставить каталогу только права на чтение, тогда используйте следующую команду.
Команда: mkdir -vm a=r readOnlyDir
На скриншоте выше видно, что readOnlyDir — это каталог с правами только на чтение (dr-r-r-)
(xii) alias: Эта команда используется для присвоения имени команде или комбинации команд.
Синтаксис: alias [-p] [name[=value] … ]
Например, если вы хотите переименовать команду mv в move, вы можете сделать это следующим образом.
Команда: alias mv=move
(xiii) cat: cat означает concatenate (конкатенация). Эта команда считывает данные из файла и выводит его содержимое в окно терминала.
Рассмотрим несколько вариантов этой команды:
- cat filename: Эта команда выводит содержимое заданного файла в окно терминала.
Команда: cat LearnLinuxCommands.txt
- cat file1 file2: Эта команда объединит содержимое двух файлов и покажет в выводе.
Команда: cat LearnLinuxCommands.txt DemoFile.txt
- cat -n filename: отображение содержимого файла вместе с номерами строк.
Команда: cat -n Demofile.txt
- cat >newFileName: Эта команда используется для создания нового файла.
- cat [source_filename] > [destination_filename]: Эта команда используется для копирования содержимого одного файла в другой. Обратите внимание, что при этом содержимое конечного файла будет заменено содержимым исходного файла.
- cat [file1] >> [file2]: Эта команда добавит содержимое файла1 в конец содержимого файла2.
- tac filename: Эта команда покажет содержимое файла в обратном порядке.
- cat -E filename: Эта команда используется для выделения конца строки.
(xiv) chmod: Эта команда используется для установки прав доступа к файлу или каталогу. Если вы выполните команду ls -l для любого файла или каталога, то увидите на выходе начальные символы -rwxrwxrwx. Первый символ ‘-‘ говорит о том, что это файл, если он отображает ‘d’, то это означает, что это каталог.
Следующие три символа представляют разрешения для пользователя, следующие — разрешения для группы и последние три — разрешения для других. r означает чтение, w — запись и x — выполнение. Если вместо rwx вы видите —, то это означает, что разрешение на файл не предоставлено.
Чтобы установить разрешение, нужно использовать команду chmod.
Всего существует восемь цифр, которые представляют различные уровни прав.
0: нет прав
1: выполнить
2: записать
3: записать и выполнить
4: прочитать
5: прочитать и выполнить
6: прочитать и записать
7: прочитать, записать и выполнить
Предположим, я хочу использовать права чтения, записи и выполнения для себя (7), права только на чтение для группы (4) и права чтения и выполнения для других (5), тогда я буду использовать 745.
Команда:
ls -l DemoFile.txt chmod -R 745 DemoFile.txt ls -l DemoFile.txt
(xv) chown: chown означает «сменить владельца». С помощью этой команды вы можете изменить владельца и группу владельцев файла.
Синтаксис: chown [OPTION]… [OWNER][:[GROUP]] ФАЙЛ…
Если вы хотите изменить владельца файла, вы можете использовать эту команду так:
chown [имя_владельца] [имя_файла]
Если вы хотите изменить владельца группы, то вам нужно использовать эту команду с командой sudo так:
sudo chown [имя_владельца]:[имя_группы] [имя_файла]
(xvi) df: Эта команда показывает размер, используемое пространство, доступное пространство, процент использования и сведения о смонтированных файловых системах на вашем компьютере.
-h и -x — это опции для чтения человеком и исключения соответственно. Опция -h показывает размер в человекочитаемом формате (Гб и Мб). Параметр -x используется для исключения файловой системы, которая вас не интересует. В примере ниже я исключил squashfs.
Команда: df -h -x squash
(xvii) diff: diff означает «разница». Эта команда используется для сравнения двух текстовых файлов и отображения различий между ними.
Синтаксис: diff [option] filename1 filename2
Команда: diff file1 file2
Вы можете использовать некоторые опции этой команды, например -y для сравнения бок о бок, -W для указания ширины строки, чтобы избежать обводки, -suppress-common-lines для подавления общих строк между двумя файлами в выводе diff.
Команда: diff -y -W 70 file1 file2
diff -y -W 70 file1 file2 -suppress-common-lines
(xviii) echo: команда echo выводит текст в окно терминала. В команду echo можно также передавать переменные окружения, как показано ниже.
Команда:
echo Hello World echo $USER echo $PATH echo $HOME
(xix) find: Эта команда используется для поиска файлов и каталогов в файловой системе. Вы можете искать по имени файла, имени каталога, дате создания, дате изменения, владельцу файла, разрешениям на файл и т. д. Вы также можете использовать подстановочные знаки в выражении поиска.
Синтаксис: find [начать поиск с этой точки] [выражение поиска] [-опции] [что найти]
Команда:
find . -name “*file*”
В приведенном выше примере команда ищет все файлы в текущем каталоге (.), в именах которых содержится строка ‘file'(*file*) (опция -name).
Попробуйте использовать find -help, чтобы изучить различные опции, которые предоставляет эта команда.
(xx) Kill: Это встроенная команда в Linux, которая используется для завершения процесса вручную. Чтобы завершить процесс, вам нужно указать идентификатор процесса (PID) в команде kill.
Синтаксис: kill PID
(xxi) history: Эта команда покажет команды, которые вы ранее выполняли в командной строке. Чтобы просмотреть историю всех команд, нужно просто набрать history.
Например, если я хочу посмотреть последние 10 команд, которые я выполнил, я использую следующую команду:
history 10
В крайнем левом углу вы можете увидеть цифры 1033, 1034,… Это номера событий. Они могут быть разными для разных компьютеров. Вы можете использовать эти номера событий для повторения определенной команды.
Синтаксис: !EventNumber.
Например,
!1033
Если вы хотите повторить последнюю выполненную команду, просто введите !!!
(xxii) head: Команда head показывает 10 верхних строк файла. Чтобы просмотреть определенное количество верхних строк, используйте опцию -n.
Команда: head -n 3 file2
(xxiii) gzip: Эта команда используется для сжатия файла.
Синтаксис: gzip [-options] filename
Пример,
gzip -v file1
Используйте gzip -help для изучения различных опций команды gzip.
(xxiv) Groups: Эта команда отображает имена групп, в которых состоит пользователь.
Синтаксис: groups username
Команда: groups kaushapx
(xxv) free: Эта команда сообщает об использовании оперативной и своп-памяти (используемой, свободной, общей, буферной, кэшированной) на вашем компьютере.
Команда: free -h
(xxvi) less: Это очень полезная команда, которую можно использовать для просмотра содержимого файла на терминале Linux без открытия файла в редакторе.
Синтаксис: less имя_файла
Чтобы выйти из вывода команды less, нужно нажать :q.
Заключение
В этом уроке мы подробно рассмотрели множество полезных и важных команд Linux вместе с примерами. Чтобы лучше изучить любую команду, вы всегда можете посмотреть справку по этой команде: command_name -help.