Командная строка Linux: краткий курс для начинающих
Работа с операционными системами GNU/Linux заключается прежде всего в работе с командной строкой. Командная оболочка позволяет пользователю взаимодействовать с операционной системой. Существует множество различных командных оболочек, в данной статье мы будем рассматривать наиболее распространенную командную оболочку bash.
Предполагается, что вы имеете доступ к консоли сервера или подключены к серверу посредством протокола удаленного доступа SSH и имеете возможность вводить команды в терминале.
Для того чтобы определить, какая оболочка используется пользователями в системе, необходимо открыть содержимое файла базы данных пользователей /etc/passwd и обратить внимание на последнее поле в каждой строке в котором указывается оболочка (поля разделяются символом :
). Для просмотра содержимого этого файла, используйте команду cat
:
timeweb@cloud:~$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
timeweb:x:1000:1000:Timeweb,,,:/home/timeweb:/bin/bash
mysql:x:106:112:MySQL Server,,,:/nonexistent:/bin/false
В этом примере, суперпользователь root и обычный пользователь timeweb используют оболочку bash и соответственно имеют доступ к командной строке. А системному пользователю mysql от которого запускается служба базы данных MySQL запрещено использовать оболочку из соображений безопасности.
Вы можете изменить оболочку пользователю с помощью команды chsh. Но для начала давайте определим список доступных оболочек, которые мы можем использовать.
timeweb@cloud:~$ cat /etc/shells
# /etc/shells: valid login shells
/bin/sh
/bin/bash
/usr/bin/bash
/bin/rbash
/usr/bin/rbash
/bin/dash
/usr/bin/dash
Например, чтобы изменить оболочку текущему пользователю timeweb с bash на обычный sh, выполните команду:
timeweb@cloud:~$ chsh -s /bin/sh timeweb
Чтобы изменить оболочку другому пользователю вам необходимы привилегии суперпользователя root. Например, можно заблокировать пользователю timeweb возможность доступа к использованию оболочки.
root@cloud:/home/timeweb# chsh -s /bin/false timeweb
Глобальные настройки командной строки находятся в файле /etc/profile, а настройки для каждого пользователя в скрытом файле ~/.bash_profile в его домашней директории.
При работе в командной строке, используются следующие распространенные команды:
- cat – вывод содержимого файла в консоль;
- pwd – вывод каталога в котором вы находитесь;
- cd – переход по директориям;
- ls – вывод содержимого каталога;
- echo – вывод текста в консоль;
- touch – создание нового пустого файла;
- mkdir – создание каталога;
- rmdir – удаление пустого каталога;
- mv – перемещение или переименование файлов и каталогов;
- history – вывод истории команд (история команд хранится в файле .bash_history)
Перед тем, как вводить команды в терминале мы должны понимать синтаксис ввода команд в оболочке.
command [options…] [arguments…]
Чтобы создать пустой файл newfile.txt, введите команду:
timeweb@cloud:~$ touch newfile.txt
Для показа содержимого текущей директории, введите команду:
timeweb@cloud:~$ ls
Мы можем передавать команде дополнительные параметры, например, вывести все содержимое каталога включая скрытые файлы и папки с командой ls
и с опцией -a
.
timeweb@cloud:~$ ls -a
Показать более детальную информацию содержимого текущей директории:
timeweb@cloud:~$ ls -l
Вы также можете объединить несколько опции для команды, например, вывести список файлов включая скрытые в подробном формате и посчитать их объем в человекопонятном виде (Кб, Мб, Гб вместо байт):
timeweb@cloud:~$ ls -lah
Если вы используете несколько параметров, требующих аргументов, не объединяйте их. Например, опция -T
, определяющая размер табуляции, также требует аргумента. Чтобы учесть оба аргумента, каждый вариант приводится отдельно:
timeweb@cloud:~$ ls -w 40 -T 12
Некоторые команды поддерживают дополнительные параметры, длина которых превышает один символ. Перед длинными параметрами команд ставится двойной дефис --
и значение параметра, обычно это имя параметра, например параметр --all
, в котором перечислены все файлы, включая скрытые. Например:
timeweb@cloud:~$ ls --all
Для команд, которые поддерживают как длинные, так и короткие параметры, выполните команду, используя одновременно длинные и короткие параметры:
timeweb@cloud:~$ ls --all --reverse -t
Команды, поддерживающие длинные параметры, часто также поддерживают аргументы, которые могут быть указаны с символом равенства =
или без него (вывод обеих команд одинаков):
timeweb@cloud:~$ ls --sort time
timeweb@cloud:~$ ls --sort=time
Команда uname
отображает системную информацию. Эта команда по умолчанию выводит Linux, если выполняется без каких-либо параметров.
timeweb@cloud:~$ uname
Команда uname полезна по нескольким причинам, например, когда вам нужно определить имя компьютера, а также текущую версию используемого ядра ОС. Чтобы отобразить дополнительную информацию о системе, вы можете использовать одну из многих опций, доступных для команды uname
. Например, чтобы отобразить всю информацию о системе, используйте параметр -a
с командой uname
:
timeweb@cloud:~$ uname -a
Чтобы перейти в другую директорию, введите команду cd
, а также pwd
, чтобы убедиться в этом:
timeweb@cloud:~$ cd Documents/
timeweb@cloud:~/Documents$ pwd
/home/timeweb/Documents
Чтобы вернуться в домашний каталог после перехода в новое место, используйте команду cd
(change directory) без каких-либо аргументов:
timeweb@cloud:~$ cd
Переменные среды это глобальные переменные, использующиеся в операционной системе и обычные переменные, которые работают в пределах запущенного сеанса консоли. Для того чтобы посмотреть свое окружение введите команду без аргументов:
timeweb@cloud:~$ env
Чтобы вывести на экран значение какой-нибудь переменной окружения, достаточно вести команду echo $ИМЯ_ПЕРЕМЕННОЙ
, например, просмотр домашней директории пользователя, хранящийся в переменной окружения $HOME
:
timeweb@cloud:~$ echo $HOME
Для создания переменной используется простой синтаксис имя_переменной=значение_переменной. Для обращения к переменной указывается символ $
, например:
timeweb@cloud:~$ var=value
timeweb@cloud:~$ echo $var
Мы познакомились с принципами работы в командной строке и базовыми командами.