В этом руководстве для начинающих, ты узнаешь как применять самые полезные и распространенные команды для работы с терминалом/консолью в Linux, macOS и других UNIX-подобных системах.
pwd
- вывести текущую директорию
Команда pwd
(print working directory) используется, чтобы понять в какой директории мы находимся. Она дает простой и понятный ответ на вопрос “Где я?”. Команду pwd
полезно выполнить в самом начале работы с терминалом.
Вот пример выполнения pwd
сразу после логина на Linux сервер:
root@scw-tender-lewin:~# pwd
/root
ls
- показать содержимое директории
Чтобы посмотреть содержимое директории (папки), в UNIX-подобных системах используется команда ls
(list).
В базовом случае, ее вызывают без аргументов и на экране появляется содержимое текущего каталога:
root@scw-tender-lewin:/# ls
bin dev home initrd.img.old lib64 media opt root sbin srv sys usr vmlinuz
boot etc initrd.img lib lost+found mnt proc run snap swapfile tmp var vmlinuz.old
Если ты хочешь проверить содержимое какого-то определенного каталога, например /var
, ты можешь сделать это добавив путь к каталогу после ls
:
root@scw-tender-lewin:/# ls /var
backups cache crash lib local lock log mail opt run snap spool tmp
К команде ls
, ты можешь добавить несколько флагов, чтобы улучшить формат вывода.
Расширенная информация (Long list view)
Флаг -l
добавит к каждому файлу и каталогу информацию о размере, уровне доступа, дате создания и владельце.
root@scw-tender-lewin:/# ls -l
total 4194396
drwxr-xr-x 2 root root 4096 May 15 06:46 bin
drwxr-xr-x 4 root root 4096 Sep 3 06:15 boot
drwxr-xr-x 16 root root 3680 May 20 06:35 dev
drwxrwxr-x 93 root root 4096 Sep 3 06:15 etc
drwxr-xr-x 3 root root 4096 Mar 6 09:14 home
lrwxrwxrwx 1 root root 34 Sep 3 06:15 initrd.img -> boot/initrd.img-4.15.0-115-generic
lrwxrwxrwx 1 root root 34 Sep 3 06:15 initrd.img.old -> boot/initrd.img-4.15.0-112-generic
drwxr-xr-x 23 root root 4096 Mar 6 09:16 lib
drwxr-xr-x 2 root root 4096 Jul 8 06:20 lib64
drwx------ 2 root root 16384 Mar 5 2019 lost+found
drwxr-xr-x 2 root root 4096 Feb 4 2019 media
drwxr-xr-x 2 root root 4096 Feb 4 2019 mnt
drwxr-xr-x 3 root root 4096 Mar 6 09:17 opt
dr-xr-xr-x 189 root root 0 May 4 06:16 proc
drwx------ 8 root root 4096 Mar 19 08:13 root
drwxr-xr-x 28 root root 1120 Sep 3 07:21 run
drwxr-xr-x 2 root root 12288 Jul 8 06:20 sbin
drwxr-xr-x 2 root root 4096 Mar 6 09:14 snap
drwxr-xr-x 2 root root 4096 Feb 4 2019 srv
-rw------- 1 root root 4294967296 Mar 6 10:10 swapfile
dr-xr-xr-x 13 root root 0 May 4 06:16 sys
drwxrwxrwt 10 root root 4096 Sep 3 07:22 tmp
drwxrwxr-x 10 root root 4096 Mar 5 2019 usr
drwxr-xr-x 13 root root 4096 Mar 5 2019 var
lrwxrwxrwx 1 root root 31 Sep 3 06:15 vmlinuz -> boot/vmlinuz-4.15.0-115-generic
lrwxrwxrwx 1 root root 31 Sep 3 06:15 vmlinuz.old -> boot/vmlinuz-4.15.0-112-generic
Кстати, если ты хочешь посмотреть расширенную информацию о каком-то одном файле, ты можешь указать его точно так же как и каталог, после команды ls
. Это полезно если в директории много файлов, информация о которых тебя не интересует.
Вот как это сработает с файлом swapfile
:
root@scw-tender-lewin:/# ls -l swapfile
-rw------- 1 root root 4294967296 Mar 6 10:10 swapfile
Показать скрытые файлы и папки
Чтобы вывести на экран скрытые файлы и директории, нужно добавить флаг -a
к команде ls
:
root@scw-tender-lewin:/# ls -a
. bin dev home initrd.img.old lib64 media opt root sbin srv sys usr vmlinuz
.. boot etc initrd.img lib lost+found mnt proc run snap swapfile tmp var vmlinuz.old
Так, мы всегда получим две скрытые записи: .
и ..
. Одна точка служит для доступа к текущей директории, а две — для доступа к родительскому каталогу.
Сортировка вывода команды ls
Флаг -S
используется, чтобы отсортировать вывод на экран по размеру файлов и каталогов:
root@scw-tender-lewin:/# ls -S
swapfile sbin boot home lib64 mnt root srv usr dev initrd.img vmlinuz proc
lost+found bin etc lib media opt snap tmp var run initrd.img.old vmlinuz.old sys
Объединение флагов команды ls
Иногда одного флага недостаточно. Например, ты хочешь одновременно получить расширенную информацию с помощью флага -l
, отформатировать размер каждой записи с помощью -h
и отсортировать все файлы и папки по размеру с помощью -S
.
Чтобы получить такое поведение, нужно объединить несколько флагов. Порядок флагов не имеет значение и -lhS
будет значить то же самое, что и -hSl
, поэтому можешь выбирать любую последовательность которая тебе нравится:
root@scw-tender-lewin:/# ls -lhS
total 4.1G
-rw------- 1 root root 4.0G Mar 6 10:10 swapfile
drwx------ 2 root root 16K Mar 5 2019 lost+found
drwxr-xr-x 2 root root 12K Jul 8 06:20 sbin
drwxr-xr-x 23 root root 4.0K Sep 3 06:15 .
drwxr-xr-x 23 root root 4.0K Sep 3 06:15 ..
drwxr-xr-x 2 root root 4.0K May 15 06:46 bin
drwxr-xr-x 4 root root 4.0K Sep 3 06:15 boot
drwxrwxr-x 93 root root 4.0K Sep 3 06:15 etc
drwxr-xr-x 3 root root 4.0K Mar 6 09:14 home
drwxr-xr-x 23 root root 4.0K Mar 6 09:16 lib
drwxr-xr-x 2 root root 4.0K Jul 8 06:20 lib64
drwxr-xr-x 2 root root 4.0K Feb 4 2019 media
drwxr-xr-x 2 root root 4.0K Feb 4 2019 mnt
drwxr-xr-x 3 root root 4.0K Mar 6 09:17 opt
drwx------ 8 root root 4.0K Mar 19 08:13 root
drwxr-xr-x 2 root root 4.0K Mar 6 09:14 snap
drwxr-xr-x 2 root root 4.0K Feb 4 2019 srv
drwxrwxrwt 10 root root 4.0K Sep 3 07:22 tmp
drwxrwxr-x 10 root root 4.0K Mar 5 2019 usr
drwxr-xr-x 13 root root 4.0K Mar 5 2019 var
drwxr-xr-x 16 root root 3.6K May 20 06:35 dev
drwxr-xr-x 28 root root 1.1K Sep 3 07:21 run
lrwxrwxrwx 1 root root 34 Sep 3 06:15 initrd.img -> boot/initrd.img-4.15.0-115-generic
lrwxrwxrwx 1 root root 34 Sep 3 06:15 initrd.img.old -> boot/initrd.img-4.15.0-112-generic
lrwxrwxrwx 1 root root 31 Sep 3 06:15 vmlinuz -> boot/vmlinuz-4.15.0-115-generic
lrwxrwxrwx 1 root root 31 Sep 3 06:15 vmlinuz.old -> boot/vmlinuz-4.15.0-112-generic
dr-xr-xr-x 191 root root 0 May 4 06:16 proc
dr-xr-xr-x 13 root root 0 Sep 3 08:25 sys
cd
- сменить директорию
Итак, после того, как ты узнал все о содержимом текущей директории, самое время ее сменить. Команда cd
принимает имя каталога как аргумент и перемещает тебя туда.
Команда cd
выводит информацию на экран только если возникнет ошибка, поэтому советую сразу использовать ls
, чтобы осмотреться:
root@scw-tender-lewin:/# cd var
root@scw-tender-lewin:/var# ls -a
. .. backups cache crash lib local lock log mail opt run snap spool tmp
Перемещаемся на одну директорию выше
Чтобы перейти на одну папку выше текущей, нужно указать две точки cd ..
вместо точного имени каталога. Чтобы перейти на два уровня вверх - cd ../..
и так далее.
Если ты попробуешь перейти в каталог, который не существует, то ты получишь такое сообщение:
root@scw-tender-lewin:/var# cd local42
-bash: cd: local42: No such file or directory
root@scw-tender-lewin:/var# cd ..
root@scw-tender-lewin:/# ls
bin dev home initrd.img.old lib64 media opt root sbin srv sys usr vmlinuz
boot etc initrd.img lib lost+found mnt proc run snap swapfile tmp var vmlinuz.old
Идем домой
Если ты используешь тильду cd ~
вместо имени каталога, то ты переместишься в домашнюю директорию. Это полезная ссылка, потому что где бы ты ни был, по ней ты сможешь всегда вернуться домой.
root@scw-tender-lewin:/# cd ~
root@scw-tender-lewin:~# pwd
/root
touch
- создать файл
Команду touch
используют для создания новых файлов. План такой:
- Переходим в домашний каталог:
cd ~
- Проверяем что он пустой:
ls
- Создаем новый файл с помощью
touch
и пишем сразу после команды имя файла - Выполняем команду
ls
чтобы убедиться, что файл создался успешно
root@scw-tender-lewin:/var/log# cd ~
root@scw-tender-lewin:~# ls
root@scw-tender-lewin:~# touch hello.txt
root@scw-tender-lewin:~# ls
hello.txt
mkdir
- создать директорию
Чтобы создать директорию в Linux, используют команду mkdir
. Она работает почти так же как touch
и ожидает от тебя имя директории.
root@scw-tender-lewin:~# mkdir internal
root@scw-tender-lewin:~# ls
hello.txt internal
man
- показать мануал / получить помощь
И наконец, сверхсила! Команда man
покажет тебе краткое руководство по использованию любой Linux, UNIX или MacOS команды. Ее можно применить даже к самой себе напечатав man man
.
Если ты хочешь сделать, что-то полезное, но забыл как именно пользоваться какой-то командой, то выполни man
и укажи после нее имя интересующей тебя команды. Вот так:
root@scw-tender-lewin:~# man ls
NAME
ls -- list directory contents
SYNOPSIS
ls [-ABCFGHLOPRSTUW@abcdefghiklmnopqrstuwx1%] [file ...]
DESCRIPTION
For each operand that names a file of a type other than directory, ls displays its name as well as any requested, associated information.
For each operand that names a file of type directory, ls displays the names of files contained within that directory, as well as any
requested, associated information.
If no operands are given, the contents of the current directory are displayed. If more than one operand is given, non-directory operands
are displayed first; directory and non-directory operands are sorted separately and in lexicographical order.
The following options are available:
...
Вывод
В этом руководстве я рассказал тебе о самых часто используемых команда Linux, macOS, и *nix систем. Теперь ты умеешь работать с ls
, pwd
, cd
, touch
, mkdir
, и man
.
Если ты только начинаешь программировать, то Linux и терминал могут показаться тебе чем-то очень страшным. Но, как видишь, все довольно просто и прямолинейно.