02.08.2023

Основные команды Linux

Linux Shell — это программа, которая также известна как CLI (англ. Command Line Interface). Она передает  команды от пользователя операционной системы и отображает выходные данные, если таковые имеются.

Многие из  дистрибутивов имеют графический интерфейс, называемый GUI (англ. graphical user interface), но в серверных и минимальных версиях Linux используется интерфейс командной строки. Попробуем рассмотреть некоторые команды, которые помогут нам освоить командный интерфейс Linux.

При первом входе в терминал мы можем видеть что-то наподобие:

root@server:~#

если вы вошли в систему с привилегированным пользователем root;

user@server:~$

если вы вошли в систему под пользователем с обычными правами.

Когда вы только открываете терминал, вы находитесь в домашней папке пользователя. Для того, чтобы узнать, в какой папке вы находитесь в данный момент, вы можете воспользоваться командой pwd:

root@server:~# pwd
/root

Чтобы сменить каталог воспользуйтесь командой cd:

root@server:~# cd /tmp
root@server:/tmp#

Также вы можете переходить в каталог выше или в корневую директорию используя команды:

root@server:~# cd ..

вернет вас в предыдущий каталог;

root@server:~# cd /

перейдет в корень файловой системы.

Чтобы увидеть содержимое каталога используйте команду ls:

root@server:~# ls
mybase.sql
Downloads
site.zip

Использование команды ls с параметром -a позволит увидеть скрытые файлы:

root@server:~# ls -a
.htaccess
mybase.sql
Downloads
site.zip

Скрытые файлы, начинаются со знака "."

Для создания пустого файла используется команда touch:

root@server:~# touch readme.txt

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

root@server:~# echo Hello, my name is Linux >> readme.txt

Данная строка создаст файл readme.txt, содержащий строку Hello, my name is Linux.

Для просмотра содержимого файла используем команду cat:

root@server:~# cat readme.txt
Hello, my name is Linux

Для просмотра файлов также можно использовать следующие команды:

more — постраничный просмотр содержимого;
less — то же самое, но с возможностью пролистывания вверх-вниз;
head — покажет первые десять строк файла;
tail — покажет последние десять строк.

Также может понадобится создать каталог, для чего есть команда mkdir:

root@server:~# mkdir backups

Для удаления каталога существует команда rmdir. Она удалит каталог, если он пуст:

root@server:~# rmdir backups

Для рекурсивного удаления каталогов и файлов в них используйте команду rm:

root@server:~# rm -rf backups

удалит каталог backups, все файлы и каталоги в нем;

root@server:~# rm readme.txt

удалит файл readme.txt.

Чтобы скопировать файлы применим команду cp. В формате cp "что копировать"-"куда копировать":

root@server:~# cp readme.txt backups

Для того, чтобы переместить файл, используем команду mv:

root@server:~# mv readme.txt backups

Также с помощью этой команды можно переименовать файл:

root@server:~# mv readme.txt readme.old

Sudo (англ. substitute user and do) — это утилита, позволяющая запускать команды от имени другого пользователя:

root@server:~$ sudo -i
root@server:~$

Она запустит Shell от имени суперпользователя root. Sudo используется при необходимости запустить команду с правами суперпользователя:

root@server:~$ sudo nano /etc/ssh/sshd_config

Данная строка откроет с правами администратора файл sshd_config в текстовом редакторе nano.

Также могут возникать задачи, когда необходимо сменить владельца файла. В этом случае на помощь придет команда chown:

root@server:~# chown -R www-data:www-data /var/www/html/mysite.com

Данная строка рекурсивно сменит владельца и группу каталога /var/www/html/mysite.com на www-data.

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

root@server:~# chmod -R 755 /var/www/html/mysite.com/*

Она рекурсивно назначит права 755 на все содержимое каталога /var/www/html/mysite.com.

Используя более сложную конструкцию, можно раздельно назначить права на файлы и каталоги:

root@server:~#chmod 755 $(find /var/www/html/mysite.com -type d)
root@server:~#chmod 640 $(find /var/www/html/mysite.com -type f)

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

root@server:~#cp --help
Usage: cp [OPTION]... [-T] SOURCE DEST
or: cp [OPTION]... SOURCE... DIRECTORY
or: cp [OPTION]... -t DIRECTORY SOURCE...
Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.
.....

Также всегда на помощь придет команда man.
С более подробной инструкцией по запрашиваемой команде можно ознакомиться следующим образом:

root@server:~#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.
...