Командная строка

Введение в команды в Linux

Последнее обновление: 12.03.2024

Командная строка или терминал является важным компонентом операционной системы Linux, поскольку позволяет осуществлять всеохватное администрирование и управление всей операционной системой. Даже если речь идет о дистрибутиве Linux, который использует графический интерфейс, то все равно понадобится терминал, чтобы раскрыть всю мощь и потенциал Linux.

Для работы в командной строке Linux предоставляет то, что называется "оболочка" или shell. Оболочка — это командный интерпретатор: она отвечает за то, чтобы что-то сделать из того, что вы вводите в командной строке. Наиболее популярная оболочка - bash (сокращение от "Bourne Again Shell", где "Bourne Shell" - название первой оболочки в Unix). Также могут применяться другие оболочки. Они могут предоставлять дополнительные возможности, но в целом работают идентично. Например, оболочка tcsh предоставляет скриптовый язык, который аналогичен языку программирования С. Также довольно распространена оболочка zsh

Для взаимодействия с операционной системой через командную строку применяются команды. В Linux очень много команд, и новые команды добавляются регулярно. Однако все эти команды имеют общий способ работы. Так, все команды состоят из трех частей: сама команда, ее параметры и аргументы. Например, возьмем одну из самых распространенных команд - ls, которая предназначена для вывода списка файлов и каталогов в определенной папке. При простом вводе ls мы получим список файлов и каталогов из текущей папки:

eugene@Eugene:~$ ls
 Android            extensions        Public 
 Desktop            gnome             snap            
 Documents          Music             Templates
 Downloads          Pictures          Videos
eugene@Eugene:~$ 

В качестве второго параметра команды обычно принимают набор необязательных параметров. У каждой команды может быть множество различных параметров, и в зависимости от команды можно одновременно применять несколько из них. Например, команда ls может принимать параметр -l, который позволяет отобразить более детальную информацию о файлах и каталогах, в частности, права доступа, дату создания и т.д. Применим эту опцию:

eugene@Eugene:~$ ls -l
total 72
drwxrwxr-x  3 eugene eugene  4096 Feb 19 10:24  Android
drwxr-xr-x  2 eugene eugene  4096 Jan 28 14:39  Desktop
drwxr-xr-x 15 eugene eugene  4096 Mar  7 20:49  Documents
drwxr-xr-x  2 eugene eugene 12288 Mar  8 07:15  Downloads
-rw-rw-r--  1 eugene eugene     0 Jan 28 15:20  extensions
-rw-rw-r--  1 eugene eugene     0 Jan 28 15:20  gnome
drwxr-xr-x  2 eugene eugene  4096 Jan 28 14:39  Music
drwxr-xr-x  3 eugene eugene  4096 Feb 18 23:06  Pictures
drwxr-xr-x  2 eugene eugene  4096 Jan 28 14:39  Public
drwx------ 12 eugene eugene  4096 Mar  7 19:56  snap
drwxr-xr-x  2 eugene eugene  4096 Jan 28 14:39  Templates
drwxr-xr-x  2 eugene eugene  4096 Jan 28 14:39  Videos
eugene@Eugene:~$ 

И кроме параметров команды могут принимать аргументы. Аргументы обычно представляют объекты, к которым применяется команда. Аргумент указывается в конце команды. Например, команда ls в качестве аргумента получает путь к каталогу, содержимое которого надо получить. В примерах выше путь к каталогу не передавался, поэтому по умолчанию команда ls применялась к текущему каталогу. Но теперь передадим путь к каталогу /usr:

eugene@Eugene:~$ ls /usr
bin  games  include  lib  lib32  lib64  libexec  local  sbin  share  src
eugene@Eugene:~$ 

Если команда также принимает параметры, то аргумент указывается после необязательных параметров:

eugene@Eugene:~$ ls -l /usr
total 148
drwxr-xr-x   2 root root 61440 Mar  4 19:40 bin
drwxr-xr-x   2 root root  4096 Oct 16 13:38 games
drwxr-xr-x  83 root root 16384 Feb 23 06:47 include
drwxr-xr-x 109 root root  4096 Feb 23 15:13 lib
drwxr-xr-x   3 root root  4096 Feb 18 22:41 lib32
drwxr-xr-x   2 root root  4096 Feb  5 22:04 lib64
drwxr-xr-x  22 root root 12288 Feb 26 19:25 libexec
drwxr-xr-x  12 root root  4096 Mar  5 14:14 local
drwxr-xr-x   2 root root 20480 Mar  3 12:05 sbin
drwxr-xr-x 253 root root 12288 Mar  3 12:05 share
drwxr-xr-x   6 root root  4096 Mar  8 07:08 src
eugene@Eugene:~$ 

Цепочки команд

С помощью символа | (прямая вертикальная черта) можно составлять цепочки команд. Например, возьмем цепочку команд:

ls -R / | less

Здесь команда ls -R выполняется и отправляет свой результат команде less. А команда less разделит полученные вывод на страницы и показывать вывод первой команды страницу за страницей.

Перенаправление

Еще один часто применяемый в терминале оператор — это оператор перенаправления >. По умолчанию результат выполнения команды отображается на консоли. Используя же перенаправление, вы можете отправить его куда угодно, например, в файл. Например, вывдеем результат команды ls -l в файл folder.txt

ls -l > folder.txt

В результате выполнения этой команды в текущей папке будет создаваться файл "folder.txt", если файл ранее не был создан. Если такой файл уже имеется, то он будет перезаписан.

Если такой файл есть, но его надо не перезаписать, а добавить результат команды к уже имеющемуся содержимому. Тогда можно использовать оператор >>

ls -l >> folder.txt

В процессе выполнения команды могут возникать ошибки. Для вывода ошибок применяется оператор 2>, например:

ls -l 2> errors.txt

Однако при выполнении команды мы можем точно не знать, будет ли ошибка или нет. В этом случае мы можем разграничить обычный вывод команды и вывод ошибок, например:

ls -l > folder.txt 2> errors.txt

В данном случае вывод команды записывается в файл "folder.txt". Но если будут ошибки, то они записываются в "errors.txt".

Получение справки

Команда man

Для получении информации о командах Linux предоставляет специальную команду man (сокращение от "manual" - "руководство"). Этой команде передается название команды, о которой необходимо получить информацию:

man название_команды

Например, получим информацию о команде ls:

man ls

Консоль нам выведет что-то наподобие:

LS(1)                            User Commands                           LS(1)

NAME
       ls - list directory contents

SYNOPSIS
       ls [OPTION]... [FILE]...

DESCRIPTION
       List  information  about  the FILEs (the current directory by default).
       Sort entries alphabetically if none of -cftuvSUX nor --sort  is  speci‐
       fied.

       Mandatory  arguments  to  long  options are mandatory for short options
       too.

       -a, --all
              do not ignore entries starting with .

Вывод команды man обычно включает следующие секции:

  • Name: это имя команды, а также вкратце назначение команды.

  • Synopsis: краткая информация об использовании команды. Она отображает все доступные параметры и указывает, является ли параметр необязательным (показан в квадратных скобках) или обязательным (не в скобках).

  • Description: описание команды.

  • Options: это полный список всех доступных параметров

  • Files: краткий список файлов, связанных с командой (при их наличии).

  • See also: список связанных команд.

  • Author: автор команды, а также его почтовый адрес

Опция --help

Другим способом получить информацию о команде представляет использование опции --help, которую имеют практически все команды. Например, получим справку по команде ls:

eugene@Eugene:~/Documents$ ls --help
Usage: ls [OPTION]... [FILE]...
List information about the FILEs (the current directory by default).
Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.

Mandatory arguments to long options are mandatory for short options too.
  -a, --all                  do not ignore entries starting with .
  -A, --almost-all           do not list implied . and ..
      --author               with -l, print the author of each file
  -b, --escape               print C-style escapes for nongraphic characters
      --block-size=SIZE      with -l, scale sizes by SIZE when printing them;
                             e.g., '--block-size=M'; see SIZE format below

  -B, --ignore-backups       do not list implied entries ending with ~
  -c                         with -lt: sort by, and show, ctime (time of last
                             modification of file status information);
                             with -l: show ctime and sort by name;
                             otherwise: sort by ctime, newest first

  -C                         list entries by columns
      --color[=WHEN]         color the output WHEN; more info below

Таким образом, мы можем посмотреть все возможные опции, которые принимает команда, ее описание и синтаксис.

История оболочки

Оболочка Bash запоминает историю ввода команд и позволяет повторно использовать недавно использованные команды. Многие дистрибутивы запоминают последние 1000 команд, которые использовал пользователь; на самом деле количество команд, которые запоминает оболочка, определяется в системной переменной с именем HISTSIZE. Сама история (последние 1000 команд) хранится в файле .bash_history в домашнем каталоге каждого пользователя. Чтобы увидеть всю эту историю, можно открыть данный файл, либо можно ввести в терминале команду history:

eugene@Eugene:~$ history
    1  ls
    2  ls -l
    3  ls /usr/
    4  ls -l /usr
    5  ls --help
    6  history
eugene@Eugene:~$ 

Linux позволяет повторить команду, использовав ее номер в истории. Например, в выводе выше под номером 4 идет команда ls -l /usr. И чтобы повторить эту команду, достаточно ввести !4 (перед номером ставится восклицательный знак):

eugene@Eugene:~$ !4
ls -l /usr
total 148
drwxr-xr-x   2 root root 61440 Mar  4 19:40 bin
drwxr-xr-x   2 root root  4096 Oct 16 13:38 games
drwxr-xr-x  83 root root 16384 Feb 23 06:47 include
drwxr-xr-x 109 root root  4096 Feb 23 15:13 lib
drwxr-xr-x   3 root root  4096 Feb 18 22:41 lib32
drwxr-xr-x   2 root root  4096 Feb  5 22:04 lib64
drwxr-xr-x  22 root root 12288 Feb 26 19:25 libexec
drwxr-xr-x  12 root root  4096 Mar  5 14:14 local
drwxr-xr-x   2 root root 20480 Mar  3 12:05 sbin
drwxr-xr-x 253 root root 12288 Mar  3 12:05 share
drwxr-xr-x   6 root root  4096 Mar  8 07:08 src
eugene@Eugene:~$ 

Также можно очистить всю историю с помогает команды

history -c
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850