Работа с операционными системами 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
Мы познакомились с принципами работы в командной строке и базовыми командами.