Как начать работать в командной строке Linux и не сойти с ума

Человека, впервые попробовавшего работу с командной строкой, этот процесс, как правило, вводит в ступор. Ничего не видно. Какие есть кнопки, не ясно. И вообще, ребята, где мы?..

Попробуем разобраться, где мы, как совершать простейшие команды над файлами, где эти самые команды искать и куда двигаться дальше.

На самом деле, командная строка - логичный и удобный инструмент, позволяющий под линуксом сделать практически всё. Причём линукс сам вам расскажет и подскажет, как управлять этим звездолетом в домашних условиях.

Для начала сориентируемся в пространстве. Все разделы системы можно посмотреть командой df -h. Примерно так:

# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 3.8G 0 3.8G 0% /dev
tmpfs 3.8G 386M 3.4G 11% /dev/shm
tmpfs 3.8G 1.8M 3.8G 1% /run
tmpfs 3.8G 0 3.8G 0% /sys/fs/cgroup
/dev/sda1 88G 81G 2.5G 98% /
tmpfs 3.8G 1.7M 3.8G 1% /tmp
tmpfs 769M 104K 769M 1% /run/user/1000

В линуксе нет диска C: и диска D:, есть корень и разделы. Корень - это самая верхняя точка, в котором лежит вообще все (кроме отдельно обозначенных разделов, например, флешки или CD-диска). Разделы внутри корня имеют свое предназначения - один для запускаемых файлов, другой для конфигураций, третий для логов и тп.

Командой pwd мы можем сориентироваться, где находимся в данный момент. Вот так:

# pwd /home/user/Downloads

Вывод команды - в нашем случае /home/user/Downloads - и будет той папкой, где вы находитесь прямо сейчас. А значит, все команды, которые можно проворачивать с файлами (прочитать, скопировать, изменить) вы будете делать именно в этом месте, если, конечно, специально не укажете полный путь до файла.

Тут надо сказать, что вообще все, что вы делаете в линуксе с файлами, можно делать по относительному пути и по абсолютному. Например, у нас есть файл /home/user/Documents/mywork/project/myplan.txt, а мы находимся в /home/user/Documents. Чтобы вывести содержимое файла на экран (этим, кстати, занимается команда cat) мы можем указать абсолютный путь:

# cat /home/user/Documents/mywork/project/myplan.txt

А можем относительный, то есть не возвращаться к началу, а просто идти дальше из той директории (/home/user/Documents) в которой находимся:

# cat mywork/project/myplan.txt

Важно! Знак / в начале пути говорит линуксу "иди в корень и начинай от него". Поэтому команда cat /mywork/project/myplan.txt не сработает, потому что раздела /mywork в корне нет.

Кроме как посмотреть, мы можем файл скопировать (команда cp), переместить (mv), удалить (rm).

Вот так это выглядит на практике:

# cp /home/user/Documents/mywork/project/myplan.txt /home/user/Documents/mywork/project/mynewplan.txt

Так мы скопировали план в новый файл mynewplan.txt. Командой mv мы можем его переименовать, что для линукса то же самое, что и переместить:

# mv /home/user/Documents/mywork/project/myplan.txt /home/user/Documents/mywork/project/mynewplan.txt

Та же самая команда служит для, собстсвенно, перемещения:

# mv /home/user/Documents/mywork/project/myplan.txt /home/user/Documents/mywork/project2/myplan.txt

Мы переместили файл из папки project в папку project2.

Удаляем мы командой rm:

# rm /home/user/Documents/mywork/project/myplan.txt

При удалении линукс, обычно молчаливый, спросит подтверждения. Чтобы этого не происходило, можно делать так:

# rm -f /home/user/Documents/mywork/project/myplan.txt

В данном случае -f - это флаг force, он говорит "точно удаляй файл, я тебе приказываю". И линукс послушно не переспрашивает.

Флагов много, есть те, которые мы используем постоянно (например, чтобы скопировать не файл, а папку, нам нужен флаг -r (cp -r /home/user/Documents /home/user/Documents2), есть те, которые никто не помнит, потому что используются они раз в десятилетие.

Запоминать их вообще не надо (кроме самых уж часто используемых, но их вы и так запомните), потому что:

1. Существует волшебный флаг --help, который есть почти у любой команды. Он выдаст список всех возможных флагов, и вы сможете выбрать нужный.

2. Во-вторых, можно просто загуглить.

3. Но если вы сидите в глухой тайге без связи и рядом с вами линуксовая машина, которую срочно надо заставить что-то делать, есть команда man (например, "man cp", "man cat" и тп). Она выдает полную документацию по выбранной команде. Спойлер: люди в реальной жизни редко используют man - там уж слишком много информации. Но иногда он бесценен.

Если вы зашли в страшный черный безынтерфейсовый линукс в первый раз, очень вероятно, что вам нужно что-то перезапустить.

Чтобы перезапустить вообще все, мы используем такую команду:

# shutdown -r now

Флаг -r намекает, что это все-таки ребут, а не выключение, а now обозначает время - можно указать какое-то другое, но на практике это обычно не требуется. Чтобы выключить сервер, а не перезагружать, убираем флаг и остается:

# shutdown now

Чтобы перезагрузить службы, нужно знать, как эта служба называется. Многие названия очевидны (например, служба веб-сервера nginx называется nginx), но некоторые вообще могут варьироваться в зависимости от того, какой именно у вас линукс (например, веб-сервер apache бывает представлен службой apache2, а бывает - службой httpd. не зная, не догадаешься).

Но в общем и целом можно использовать такой синтаксис:

# service (какая служба) (что с ней сделать)

Простые примеры:

# service nginx stop

# service apache2 start

# service mysqld status

# service httpd reload

Если после вашей команды линукс молчит - это хороший знак. Хуже, когда выдает много текста, особенно - красного. Но это уже совсем другая история.

Это - самые простейшие из команд, которые помогут вам не потеряться в черной дыре командной строки. На самом деле линукс позволяет делать практически любую магию, если вы понимаете, как эта магия устроена, а еще - всегда можно погуглить конкретные команды.

Но помните! Линукс крайне редко спрашивает подтверждения каких-либо действий. Поэтому всегда нужно понимать, что именно вы делаете и для чего.

Любите ваш линукс и он будет любить вас.

11
Начать дискуссию