Вы начинающий пользователь GNU/Linux и хотите выйти за рамки обычного перетаскивания окон и щелчков мышью? Это руководство предназначено для начинающих пользователей, желающих изучить основы командной строки GNU/Linux. В этом руководстве рассматриваются основные команды Linux, связанные с навигацией, администрированием файлов и каталогов, установкой программного обеспечения и устранением основных проблем системы.

  1. Что такое терминал
  2. Что такое команды Linux
  3. Основные команды Linux
  4. Навигация по файловой системе
  5. Список содержимого каталога
  6. Создание каталога
  7. Создание файлов
  8. Переименование/перемещение файлов и каталогов
  9. Копирование файлов и каталогов
  10. Удаление файлов и каталогов
  11. Поиск файлов и каталогов
  12. Выполнение команд с правами администратора
  13. Установка программ из терминала
  14. Проверка использования дискового пространства
  15. Сжатие файлов и каталогов
  16. Завершение работы и перезагрузка
  17. Устранение неполадок Интернета/Сетевого подключения
  18. Смена разрешений и владельца
  19. Проверить версию ядра системы

Что такое терминал (командная строка) GNU/Linux

Скорее всего, всякий раз когда вы слышите что кто-то говорит об операционной системе GNU/Linux, вы также наверняка слышите, как он говорит о командной строке или командах Linux. Запустите эту команду или выполните эту и ту команду! Правильно? Что такое команды Linux

Команды Linux – это сущность всей операционной системы, используемые для администрирования всей системы. Возможно вы этого не знаете, но большинство приложений, которые вы запускаете в графическом пользовательском интерфейсе, выполняют команды Linux для вас в фоновом режиме чтобы выполнить данную задачу.

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

Теперь вы можете подумать: ОК, отлично, но сколько там команд, и я должен изучить их все? Количество команд Linux, доступных в вашей системе, не имеет значения, так как их число всегда отличается от системы к системе. Однако, если вы настроились на точное число, выполните следующую команду в вашем терминале:

for i in ${PATH//:/ }; do ls $i; done | sort | uniq | wc -l
команды терминала

В моей системе KDE NEON доступно ровно 2426 команд.

Количество команд, доступных в вашей системе, будет другим. Суть в том, что в среднем операционная система GNU / Linux может содержать несколько тысяч команд, что в конечном итоге также отвечает на наш следующий вопрос: нужно ли пользователю изучать все из них. Ну, вы можете попробовать, но этот квест обречен на провал. Основные команды Linux для файловой системы и навигации

Аргументы командной строки и параметры

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

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

Откройте терминал и выполните следующую команду.

ls

После того, как вы ввели вышеупомянутую команду и нажали клавишу ВВОД, команда перечисляет все файлы и каталоги в вашем текущем каталоге. Пока не обращайте внимания на вывод команды и обратите внимание, что эта команда состоит из одного аргумента, который является самой командой ls. Мы называем этот аргумент – аргументом 0. Далее попробуйте эту команду:

ls -a

Приведенная выше команда состоит из двух аргументов. Первый аргумент упоминается как аргумент 0, и является самой по себе командой ls, а второй аргумент нумеруется как команда 1, и находится в опции -a.

Параметры команды позволяют пользователю изменять вывод команды. Каждая команда Linux имеет свой набор параметров. Параметры команды жестко запрограммированы в самой команде. Как следует из названия, параметры команды являются необязательными и не требуют от пользователя их использования. В этом случае параметр ls команды -a, указывает команде печатать дополнительно скрытые файлы или каталоги, расположенные в нашем каталоге.

Пока вы находитесь в вашем домашнем каталоге, выполните следующую команду:

ls -l .bashrc

Как вы уже поняли приведенная выше команда состоит из трех аргументов. Во-первых, есть аргумент 0 самой команды. Второй аргумент, точнее аргумент 1(-l), является параметром команды ls, инструктирует команду ls выводить длинный список, предоставляя пользователю больше информации об одном или нескольких файлах. Наконец, третий номер аргумента 2- это параметр, предоставленный команде ls, который указывает команде действовать только на один файл с именем .bashrc.

Быстрая подсказка:
Обратите внимание, что в случае вышеуказанного файла .bashrc, префикс “.” является частью имени файла, и это указывает, что файл скрыт. Скрытый означает, что команда ls не будет перечислять этот файл как часть своих выходных данных по умолчанию, если не используется опция -a
.

Параметр – это аргумент командной строки, который предоставляет дополнительную информацию либо для самой команды, либо для одного или нескольких ее параметров. В зависимости от того, какую команду вы выполняете, вы можете указать один или несколько параметров. Рассмотрим следующий пример:

ls -l -h .bashrc .bash_history

В этом случае наша команда состоит из пяти аргументов. Есть команда ls, две опции, а именно -l, и -h, а также два имени файла в качестве параметров, .bashrc, и .bash_history.

Порядок, в котором вы вводите все аргументы в командной строке, зависит от команды Linux, которую вы выполняете. Тем не менее, рекомендуемое и универсальное правило – указывать все необходимые аргументы после команды, а затем все необходимые параметры. Например, ниже также допустимая команда, которая выдает тот же вывод, что и вышеприведенная, однако такого синтаксиса команды следует избегать:

ls .bashrc -l .bash_history -h

Наконец, чтобы сократить вашу команду и сделать ее более читабельной, большинство команд позволяют пользователю объединить несколько параметров в один аргумент. Это означает, что можно объединить параметры -l и -h в один аргумент -lh. Например:

ls -lh .bashrc .bash_history

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

В этом разделе описана еще одна важная часть командной строки Linux – навигация по файловой системе. За прошедшие годы я видел как многим пользователям было трудно понять навигацию по файловой системе, поскольку она очень отличается от обычных C: или D: накопителей. В этом разделе вы также изучите первые две команды Linux, cd и pwd.

Давайте начнем со следующего утверждения: Забудьте о дисках C: или D:, которые вы знаете из других проприетарных операционных систем. Эти знания здесь не применимы и могут только сбить вас с толку. Файловая система GNU/Linux позволяет получить доступ к любому жесткому диску или разделу из любого каталога во всей файловой системе. Однако на данном этапе мы не должны думать об этом.

Представьте файловую систему GNU/Linux как многоэтажное здание. Так называемый корневой каталог (входная дверь здания), обозначенная как / которая обеспечивает доступ ко всей файловой системе (зданию), следовательно дает доступ ко всем каталогам (уровням / комнатам) и файлам (людям).

Чтобы перейти в комнату 1 на уровне 3, сначала нужно войти в главную дверь /, а затем пройти к уровню 3. Следовательно, абсолютный путь к этой конкретной комнате в здании /level3/room1. Отсюда, если мы хотим посетить комнату 2 на уровне 3, нам сначала нужно выйти из нашего текущего местоположения, которое является комната 1, введя, ../ а затем включить имя комнаты 2. Мы выбрали относительный путь к комнате 2, который в данном случае является командой ../room2. Мы были уже на 3-м уровне, поэтому не нужно было выходить из всего здания и идти по главному входу /level3/room2. Запутались? Не беспокойтесь после нескольких сессий с командной строкой GNU/Linux, знания сами придут.

Верьте или нет, операционная система GNU/Linux предоставляет всем пользователям компас для помощи в навигации в файловой системе в виде команды pwd( P rint W orking D irectory). Каждый раз, когда вы заблудились, просто введите команду pwd, и она покажет вам путь. Попробуйте прямо сейчас. Откройте терминал и введите, команду pwd а затем ENTER:

pwd
pwd
команда pwd

По умолчанию ваш начальный рабочий каталог всегда является вашим домашним каталогом. Каждый не системный пользователь имеет свой каталог, расположенный в /home каталоге. Как показано на изображении выше абсолютный путь к домашней директории пользователя fox – /home/fox. Если ваша система включает пользователя “sergey”, то абсолютный путь к домашнему каталогу этого пользователя /home/sergey.

Быстрая подсказка:
Доступ к любому домашнему каталогу пользователя доступен только фактическому пользователю, который владеет каталогом, и администратору, который в случае GNU/Linux является root пользователем.

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

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

cd /home
cd fox
cd /
cd home/fox
cd ../fox
cd ../../etc
cd /home/

За исключением строки 5 и строки 6, вышеупомянутые команды должны быть понятны. В строке 5 мы использовали ярлык ../ для перехода к родительскому каталогу fox. В строке 6 мы переместились на два каталога вверх и в итоге перешли к каталогу etc.

Упражнение:
Выполните команду cd без каких-либо аргументов, чтобы мгновенно перейти в домашний каталог пользователя из любого места. Выполните команду cd ~ для переключения между двумя последними посещенными местоположениями. В каком каталоге вы оказались после выполнения команд cd ~ и cd?

Обход файловой системы, и понимание разницы между абсолютным и относительным путем – не простая тема для любого новичка. Прежде чем двигаться вперед, убедитесь, что вы чувствуете себя комфортно с командой cd, и навигацией между каталогами, поскольку эти знания пригодятся вам в следующих разделах.

Список содержимого каталога

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

Инструмент для отображения содержимого любого каталога – это команда ls. Попробуйте прямо сейчас. Откройте терминал и самостоятельно введите команду ls в вашем домашнем каталоге без каких-либо параметров:

ls
команда ls

Выполняя команду ls без каких-либо аргументов или параметров, команда выводит содержимое текущего рабочего каталога. Многие современные терминалы предоставляют пользователю дополнительную информацию, окрашивая каталоги в синий цвет, обычные файлы в белый цвет и исполняемые файлы в зеленый цвет. Имейте в виду, что вы не найдете такого рода роскошь во многих терминалах, и по этой причине нам нужно научиться различать различные типы элементов содержимого каталога вручную с помощью этой команды

Быстрая подсказка:
Большинство команд поставляются со страницей справочника, с помощью которой можно узнать о ее функции, а также о том, какие аргументы принимает каждая конкретная команда. Используйте команду man для отображения справочной страницы любой желаемой команды. Например, чтобы отобразить страницу руководства для команды ls введите man ls. Чтобы выйти со страницы руководства, нажмите клавишу q.

Мы уже узнали в предыдущих разделах, как можно изменить вывод команды, используя предварительно запрограммированные параметры. В этом случае опция -l, также известная как длинный список, добавляет дополнительную информацию к выводу по умолчанию :

ls -l

Параметр длинного списка -l предоставляет дополнительную информацию о каждом элементе каталога.
Используя эту опцию, команда ls предоставляет пользователю дополнительную информацию, такую ​​как разрешения, владение пользователем или группой, размер файла и время изменения.

Другой распространенный параметр ls -a – список всех скрытых файлов или каталогов. Любой файл или каталог с префиксом имени .скрыт, поэтому не включается в вывод команды по умолчанию.

ls -a

Многие параметры имеют значение только в сочетании с некоторыми другими параметрами. Например, чтобы показать размер файла любого выбранного файла, пользователь может предоставить параметр -l и фактическое имя файла в качестве параметра. Рассмотрим следующий пример команды, чтобы показать размер файла penguin.png:

ls -l penguin.png
ls -l

По умолчанию команда ls отображает размер файлов в байтах, если только не указана опция -h (удобочитаемая). Обратите внимание, что опция -h не имеет смысла, если она не предоставляется в сочетании с этой опцией -l

ls -lh

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

ls / etc/systemd
ls -l ../
ls -lh /etc/services

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

Создание каталога

Цель каталогов – сохранить файловую систему. В этом разделе вы узнаете, как создавать каталоги с помощью команды mkdir в командной строке.

Создать каталог в системе GNU/Linux так же просто, как выполнить команду mkdir, указав в качестве аргумента нужное имя. Попробуйте прямо сейчас. Откройте терминал и создайте новый каталог с именем, например dir1 в вашем домашнем каталоге.

mkdir dir1

Быстрая подсказка:
Избегайте создания файлов и каталогов с пробелом в качестве части их имени. В Linux можно создать каталог или имя файла с пробелом в нем, заключив его в кавычки, например mkdir “my files”, но это может создать проблемы, поэтому избегайте этого любой ценой! Если вам нужно использовать пробел в имени файла или каталога, используйте вместо этого _ нижнее подчеркивание.

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

Аналогично созданию каталога внутри вашего текущего рабочего каталога, вы также можете создать каталог в любом месте файловой системы, если у вас есть соответствующие разрешения для этого. Давайте теперь создадим новый каталог с именем example внутри каталога /tmp.

В настоящее время есть два способа решения этой задачи. Во-первых, мы можем перейти в /tmp использовав команду cd а затем выполнить mkdir, за которой следует новое имя каталога.

Другое решение заключается в создании каталога путем простого добавления префикса к новому имени каталога с правильным абсолютным или относительным путем к каталогу, в котором должен быть создан наш новый каталог example. Следовательно, нет необходимости использовать команду cd для перехода в /tmp/ каталог до ее выполнения:

mkdir /tmp/example

Пока вы понимаете разницу между абсолютным и относительным путем, как объяснялось ранее, у вас все будет получаться. Существует только одна или две общие опции, используемые в сочетании с командой mkdir, и это – опция p.

Допустим, вы хотите создать новый каталог dir2 в существующем каталоге dir1, а также создать новый каталог dir3 внутри dir2. Первым решением было бы сначала создать dir2, а затем выполнить вторую команду mkdir для создания dir3 в dir2 каталоге. Однако, используя опцию -p, все это может быть достигнуто одним выполнением команды:

mkdir -p dir1/dir2/dir3

Упражнение:
Используя свою учетную запись, попытайтесь создать каталог, который будет называться my_dir внутри /etc каталога. Сделали? Если нет, то почему?

Создание файлов и чтение содержимого файла

Система GNU/Linux хранит большую часть информации о настройках, конфигурации, а также данные, такие как журналы, в виде простых текстовых файлов ASCII. По этой причине для любого пользователя важно иметь хотя бы базовые знания о работе с текстовыми файлами.

В этом разделе вы узнаете, как создавать файлы, читать содержимое файла и как редактировать текстовый файл, используя простой редактор текстовых файлов на основе командной строки.

Давайте начнем с создания пустого файла с именем file1 в нашем домашнем каталоге. Для этого мы используем команду touch. Откройте свой терминал и введите следующую команду Linux:

touch file1

Это все! Вы успешно создали новый файл с именем file1 в вашем домашнем каталоге. Выполните команду ls прямо сейчас, и вы должны увидеть этот новый файл в своем домашнем каталоге.

Возможно, вы заметили, что мы создали файл без расширения, например .txt или .exe. Обратите внимание, что расширение файла в системах GNU/Linux в основном не имеет никакого значения, за исключением того факта, что при выполнении команды ls для вывода списка всех файлов и каталогов сразу становится очевидным, что файл с расширением .txt является правдоподобным текстовым файлом ASCII. и файл с .png, скорее всего, будет файлом изображения.

На этом этапе важно отметить, что существует множество способов создания файла в операционной системе GNU/Linux. На самом деле вряд ли вам нужно будет создавать пустой файл, как мы это делали ранее. Фактически, основная цель команды – не создавать файлы, а манипулировать временными метками файлов.

Поскольку основная цель файлов – хранить данные, мы собираемся сделать именно это. Давайте используем редактор текстовых файлов, называемый nano для создания нового файла с именем todo-list.txt содержащим произвольный текст. Начните с выполнения следующей команды:

nano todo-list.txt

Как только вы выполните команду nano, откроется nano-редактор, который позволит вам редактировать содержимое нового файла todo-list.txt. Находясь в редакторе, выполните любые изменения содержимого файла по мере необходимости.

Когда все будет готово, нажмите, CTRL+О а затем клавишу ENTER, чтобы сохранить файл. На этом этапе новый файл todo-list.txt создан. Для выхода из nanoредактора нажмите комбинацию клавиш CTRL+Х

Мы уже узнали, как создать файл и как редактировать существующий или новый текстовый файл с помощью текстового редактора командной строки. Мы еще не рассмотрели, как читать содержимое текстового файла. Ну, честно говоря, это не так много! Вы можете прочитать содержимое любого файла с помощью команды cat.

Попробуй прямо сейчас. Выполните команду cat и в качестве параметра укажите имя файла, который вы хотите проверить. Например:

cat todo-list.txt
команда cat

Упражнение:
Некоторые файлы могут занимать тысячи строк. Попробуйте найти содержимое файла /etc/services с помощью команды cat. Некоторые терминалы имеют ограниченное количество строк и не имеют полосы прокрутки. Следовательно, было бы невозможно прочитать содержимое больших текстовых файлов, просто используя команду cat. Поэкспериментируйте с такими командами, как less или more чтобы прочитать содержимое файла /etc/services

Прежде чем мы помечаем этот раздел как «Выполнен», есть еще одна команда, с которой вы должны ознакомиться. Эта команда называется file.

Помните, ранее мы говорили о том, что не обязательно добавлять суффиксы к именам файлов с расширениями. Хорошо, если это так, как мы узнаем какой тип файла хранится в нашем домашнем каталоге или где-нибудь в файловой системе GNU/Linux? Здесь команда file становится удобной. Команда file выводит тип любого файла, переданного ему в качестве параметра. Попробуйте прямо сейчас:

file todo-list.txt

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

Еще один логический шаг – научиться переименовывать или перемещать файлы и каталоги. На этом этапе мы обсудили, как создавать файлы или каталоги, но как насчет перемещения существующего каталога или файла в другое место? Что ж, вам должно быть приятно узнать, что перемещение и переименование файлов или каталогов в системе GNU/Linux в основном одинаковы.

Переименование и перемещение файлов в файловой системе GNU/Linux – простая задача. Все, что требуется, – это команда mv и понимание абсолютного и относительного пути, как описано выше в разделе навигации по файловой системе .

Рассмотрим следующий пример:

touch file1
mkdir dir1

Используя выше, команды touch и mkdir, мы создали файл с именем file1 и каталог dir1. Использование команд touch и mkdir были уже охвачены ранее, поэтому объяснять больше не вижу смысла.

Наша задача переименовать file1 в file2 и dir1 в dir2 с помощью команды mv. Для этого нам нужно предоставить команде mv абсолютный или относительный путь к файлу или каталогу, который мы хотим переименовать в качестве первого параметра. Второй обязательный параметр – это абсолютный или относительный путь к файлу или каталогу, в который мы хотим переименовать наш файл или каталог:

mv file1 file2
mv dir1 dir2

Здесь нужно понять, что GNU/Linux не имеет явной команды для переименования файлов. Вместо этого команда mv используется для перемещения файла или каталога из одного места в другое и изменения их имени в процессе. Рассмотрим следующий пример:

mv file2 /tmp/file3
mv dir2 /tmp/dir2

Первая команда переместила file2 в каталог /tmp/ и переименовала его в file3. Вторая команда переместила dir2 в /tmp/ и поскольку мы указали одно и то же имя каталога назначения, имя каталога остается прежним.

Следовательно, вторая команда по существу только перемещает источник dir2 в каталог назначения /tmp/ поэтому второй параметр, указывающий имя нового каталога, не требуется и может быть выполнен просто:

mv dir2 /tmp/

Важно понимать приведенную выше команду mv, поскольку эта команда также может принимать несколько параметров. Это означает, что можно перемещать несколько каталогов и/или файлов одновременно, выполнив:

mkdir dir4 dir5
touch file4 file5
mv file4 dir4 file5 dir5 /tmp

Быстрая подсказка:
Единственное правило, которое следует соблюдать для нескольких параметров команды mv, заключается в том, что если в команду введено несколько параметров источника, последний предоставленный параметр должен быть каталогом.

Приведенная выше команда mv переместила несколько файлов и каталогов в новое место: каталог tmp. Здесь важно отметить, что независимо от того, сколько исходных файлов или каталогов вы собираетесь предоставить команде mv в качестве параметров, последний предоставленный параметр обрабатывается как место назначения.

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

ПРЕДУПРЕЖДЕНИЕ.
Если параметр файла назначения, указанный в команде уже существует, он может быть перезаписан без предупреждения, поэтому это действие может привести к необратимому удалению ваших данных без возможности восстановления. Рассмотрим следующий пример:

cat /tmp/sample.txt
touch sample.txt
mv sample.txt /tmp/sample.txt
cat /tmp/sample.txt

Если вы не уверены, используйте опцию -i, чтобы указать команде mv выдать предупреждение, если целевой файл уже существует.

Пример:

mv -i sample.txt /tmp/sample.txt 
mv: переписать '/tmp/sample.txt'?

Копировать файлы и каталоги

В предыдущем разделе мы обсуждали, как перемещать файлы и каталоги из одного места в другое с помощью команды mv. В этом разделе рассматривается аналогичная тема о том, как сделать копию файлов и каталогов с помощью команды cp.

Большая часть знаний, собранных в предыдущем разделе, поможет нам изучить команду cp, так как синтаксис для команд mv и cp очень похож. Основное отличие состоит в том, что вместо перемещения файлов или каталогов, команда cp создает точную копию исходного файла или каталога.

Как и с mv, команда cp должна содержать как минимум два параметра. Первый параметр – это исходный файл или каталог, а второй параметр – файл или каталог назначения.

Давайте начнем с простого примера создания копии файла, расположенного в нашем домашнем каталоге. Сначала мы используем команду touch для создания нового файла с именем file1, а затем делаем точную копию этого файла с названием file2:

touch file1
cp file1 file2

Здесь довольно очевидное правило: параметры источника и назначения, предоставляемые команде cp, не могут быть одинаковыми:

cp file1 file1
cp: 'file1' и 'file1' - это один и тот же файл

Единственный способ указать одно и то же имя файла для параметра источника и назначения – скопировать файл в другой каталог, используя абсолютный или относительный путь. В следующем примере создается копия file1 каталога /tmp:

cp file1 /tmp/file1

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

cp file1 /tmp/

Упражнение:
Выполнив одну команду cp, скопируйте /etc/services файл в свой домашний каталог и переименуйте его в port-numbers.txt.

Вы можете использовать тот же синтаксис команды cp, чтобы сделать также копию каталога. Однако есть одно существенное отличие, заключающееся в том, что для копирования каталога нам нужно использовать -r(рекурсивный) параметр команды. Рассмотрим следующий пример:

mkdir dir1
cp dir1 /tmp/
cp: не указан -r; пропускается каталог 'dir1'
cp -r dir1 /tmp

Как и в случае с командой mv, команда cp также принимает несколько параметров. Это означает, что можно выполнить одновременное копирование нескольких файлов и каталогов путем выполнения одной cpкоманды.

Правило заключается в том, что последний параметр должен быть каталогом. Изучите следующий пример, где мы сначала создаем еще один пример каталога и файла. Далее мы копируем этот каталог вместе с двумя другими файлами в каталог /tmp/:

mkdir dir2
touch file1 file2
cp -r dir2 /file1 file2 /tmp/

ПРЕДУПРЕЖДЕНИЕ .
Если параметр файла назначения, указанный в команде cp, уже существует, он может быть перезаписан без предупреждения, поэтому это действие может привести к необратимому удалению ваших данных без возможности восстановления. В некоторых случаях это поведение действует и для каталогов! Рассмотрим следующий пример:

cat sample.txt
touch /tmp/sample.txt
cp /tmp/sample.txt sample.txt
cat sample.txt

Если вы не уверены, используйте опцию -i, чтобы указать команде выдать предупреждение, если целевой файл уже существует. Пример:

cp -i /tmp/sample.txt sample.txt 
cp: переписать 'sample.txt'?

Удалить файлы и каталоги

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

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

Для наших экспериментов мы будем использовать следующую структуру каталогов, содержащую несколько подкаталогов и файлов. Наша цель – узнать, как использовать rmdir и rm для удаления всех файлов и каталогов:

Как и с любыми командами GNU/Linux, которые вы уже изучили, rmdir также принимает несколько аргументов. Например, чтобы удалить dir4 все что нам нужно сделать, это предоставить rmdir, имя каталога, который мы хотим удалить в качестве параметра:

rmdir my_files /dir4/

Просто верно? Давайте теперь удалим следующий каталог, скажем dir1:

rmdir my_files /dir1
rmdir: не удалось удалить «my_files /dir1»: каталог не пуст

Как видите, приведенная выше команда не смогла удалить каталог dir1. Основная задача rmdir состоит в том, чтобы удалять каталоги, и поскольку каталог dir1 содержит файлы, команда пропустила этот каталог с сообщением об ошибке, сообщающим что этот каталог не пуст.

Логично! Единственный способ удалить непустую директорию – использовать довольно длинную опцию командной строки –ignore-fail-on-non-empty. Однако на этом этапе использовать rm команду намного проще . Команда rm с правильной комбинацией параметров, способна удалить любое количество файлов и каталогов, независимо от того, является ли каталог пустым или заполнен любым количеством файлов и подкаталогов.

Сначала давайте проверим и удалим файл с именем my_file.txt:

rm my_files /my_file.txt

Чтобы удалить каталог с помощью rm, нам нужно использовать комбинацию опций -r. Опция -r означает рекурсивный, что означает что команда удалит любой каталог, а также его содержимое. Следующая команда удалит весь каталог my_files/dir1, включая любой файл или подкаталог:

ВНИМАНИЕ :
Удаление файлов с помощью команды rm является необратимым действием. Это означает, что в зависимости от используемой файловой системы ваши данные не могут быть восстановлены.

rm -r my_files /dir1/

Использование команды rm довольно просто. Как и многие другие команды Linux, она принимает несколько параметров, поэтому может легко удалить один или любое количество файлов и каталогов.

Упражнение:
Выполните одну команду rm, чтобы удалить весь каталог my_file, расположенный в вашем домашнем каталоге.

Поиск файлов или каталогов

К этому моменту вам должно быть удобно работать с файловой системой навигацией и управлением файлами/каталогами. Прежде чем перейти к следующему разделу, посвященному основным командам системного администрирования GNU/Linux, мы должны обсудить, как искать файлы в случае возникновения такой необходимости. Есть две основные команды Linux, которые позволяют пользователю искать файлы. А именно, это команда locate и find.

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

Основное использование команды locate в Linux довольно просто. Тип locate с последующим именем файла или каталога в качестве параметра. Например, давайте найдем файл с именем issue:

locate issue

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

Для этого нам нужно использовать регулярные выражения и параметр -r.

Регулярные выражения выходят далеко за рамки данного руководства. Пока нам нужно только знать, что для поиска точного имени файла или каталога нам нужно заключить строку в $. Например:

locate -r /issue$

Прежде чем вы повысите себя до уровня мастера команд Linux, давайте кратко обсудим, как работает команда locate. Команда locate очень быстра в поиске, потому что она просто обращается к существующему файлу индекса базы данных перед сборкой, обновляемому один раз в день с помощью команды updatedb

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

sudo updatedb

Упражнение:
Попробуйте поиграть с командой locate и посмотрите, сможете ли вы найти способ, как настроить команду для поиска файлов только в определенном каталоге.

Выполнение команд с правами администратора

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

Однако сложно представить, чтобы полностью не выполнять команды Linux без прав администратора. Административные привилегии требуются для установки нового программного обеспечения, настройки основных системных служб и многого другого. Здесь команда sudo становится удобной. Префикс любой команды Linux с sudo обеспечит выполнение команды с правами администратора, известными как root. Попробуйте сами:

sudo whoami
whoami

Как использовать команду sudo

Команда whoami всегда возвращает имя пользователя, который его выполняет. В этом случае мы можем видеть, что префикс команды whoami с командой sudo обеспечивает выполнение команды от имени пользователя root.
По умолчанию пользователю предоставляется 5 минут для повторного ввода sudo.

Быстрая подсказка:
Каждый раз, когда вы читаете любую связанную с Linux документацию, которая просит вас запускать команды Linux с терминала, вы увидите все команды с префиксом, $ либо #. Команды со знаком $ будут выполняться как обычные непривилегированными пользователи. С другой стороны, # указывает на то, что данные команды Linux должны выполняться с правами администратора либо непосредственно от пользователя root.

Установка программ из терминала

Программное обеспечение поставляется в виде пакетов, доступных в соответствующем репозитории пакетов распространения.

Существует две основные ветви дистрибутивов GNU/Linux, когда речь идет об управлении программными пакетами.

А именно, это DEB и RPM. Первая ветвь использует apt, а вторая использует команду yum для установки программного обеспечения. Конечно, есть много других вспомогательных команд, которые помогут при установке или обслуживании программного обеспечения, но все основы описаны ниже.

Сначала мы начинаем поиск имени пакета программного обеспечения, который мы хотим установить. Допустим, нам нужно установить какой-то торрент-клиент, чтобы мы могли скачивать торрент-файлы. Сначала мы ищем имя пакета:

apt search torrent client
yum search torrent client

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

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

sudo apt install bittorrent
sudo yum install bittorrent

Быстрая подсказка:
Выполнение команды apt search может привести к длинному списку пакетов, которые могут не помещаться на экране вашего терминала. Чтобы преодолеть это неудобство, перенаправьте команду more и прокрутите список вниз, используя клавишу пробела. Пример:

apt search ВАШЕ ПОИСКОВОЕ СЛОВО | more

Чтобы выйти и вернуться в командную строку, нажмите клавишу q.

Проверка использования дискового пространства

В этом разделе вы узнаете, как проверить каталог и размер файла, а также как получить информацию о вашем текущем использовании дискового пространства. Первая команда Linux, которую мы рассмотрим в этом разделе, – это команда df. Имя команды df является аббревиатурой из слов д ИСК ф АЙЛ.

Вывод df команды по умолчанию выводит информацию об использовании диска в килобайтах. Однако это поведение может быть перезаписано с помощью параметра -h:

df -h

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

df -h /home

Проверьте наличие свободного места на диске в каталоге /home.

df -h /home
df -h /home

ПРИМЕЧАНИЕ . Проверка свободного места в каталоге с помощью команды df не дает никакой информации о его размере. Команда df выводит только информацию об использовании дискового пространства раздела, в котором находится каталог. Чтобы проверить размер каталога, используйте команду du в Linux, как описано ниже.

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

Чтобы получить информацию о размере файла в удобочитаемом формате, мы можем использовать описанную выше команду ls с комбинацией параметров -l (длинный список) и -h, и полного или относительного пути к рассматриваемому файлу. Например, приведенная ниже команда вернет размер файла с именем swapfile расположенного в корневом каталоге /:

ls -lh /swapfile

Аналогично проверке размера файла, мы можем использовать команду du для проверки размера каталога. По умолчанию команда du с параметром directory отображает размер всех каталогов в пределах:

du -h /home/

Чтобы получить общий размер одного каталога, используйте опцию -s. Еще раз, как и во всех приведенных выше примерах в этом разделе, мы заинтересованы в удобочитаемом выводе, следовательно, мы используем опцию -h:

du -sh /home/
du -sh /home/

Сжатие файлов и каталогов

В этом разделе мы обсудим несколько способов сжатия и распаковки файлов в системе GNU/Linux. Первыми инструментами, о которых вы узнаете, это tar и gzip. Команда tar в основном используется для объединения всего каталога в один файл и, при необходимости, для применения сжатия в процессе.

В следующем примере команды tar, весь каталог my_dir будет объединен в один файл с именем my_dir.tar:

tar cf my_dir.tar my_dir

Для дальнейшего сжатия полученного файла мы можем использовать команду gzip для создания сжатого файла с именем my_dir.tar.gz:

gzip my_dir.tar

Тем не менее, в большинстве случаев нам все равно необходимо сжимать каталог, поэтому можно сжимать каталог, комбинируя tar и gzip инструменты:

tar cxf my_dir.tar my_dir

Файлы , полученные с помощью комбинации tar и gzip команд называются GZIP тарболы или просто тарболы.

Чтобы распаковать любой архив, мы можем просто отменить процесс, но вместо этого мы будем использовать команду gunzip. Например, чтобы распаковать архив gzip, my_dir.tar.gz мы можем использовать команду gunzip:

gunzip my_dir.tar.gz

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

tar xf my_dir.tar

Завершение работы и перезагрузка

Когда дело доходит до выключения и перезагрузки операционной системы GNU/Linux, вам нужно изучить только одну команду, которая выполняет как перезагрузку, так и выключение. Эта команда называется shutdown.

Да, это правда, что вы можете перезагрузить систему, например с помощью команды init 6 или reboot, но изучение команды shutdown дает вам больше возможностей. Ниже приведено несколько примеров команды shutdown.

Первый пример команды перезагрузит вашу систему через одну минуту:

sudo shutdown -r

Чтобы перезагрузить систему GNU/Linux, немедленно выполните:

sudo shutdown -r now

Выключение вашей системы с помощью команды shutdown следует тому же принципу, который показан вышеупомянутыми командами перезагрузки. В следующих двух примерах показано, как отключить систему через одну минуту, немедленно, и с задержкой в ​​1,5 часа (90 минут):

sudo shutdown
sudo shutdown now
sudo shutdown +90

Если вы выполнили отложенное выключение системы, вы можете отменить процесс выключения:

sudo shutdown -c

Расширенные команды Linux

Устранение неполадок Интернета/Сетевого подключения

Этот раздел познакомит вас с некоторыми основными сетевыми навыками. В частности, вы узнаете, как получить IP-адрес служб, необходимых для установления правильного подключения к Интернету, и как устранить неполадки сетевого подключения и подключения к Интернету.

Давайте начнем с получения нашего локального IP-адреса с помощью команды ip. Команда ip имеет несколько опций, которые включают опцию address или a для краткости отображения IP-адресов, назначенных всем доступным и включенным сетевым интерфейсам:

ip a

Приведенная выше команда показывает IP-адрес, используемый в данный момент системой. Обратите внимание, что имя вашего сетевого интерфейса может отличаться. В следующем примере мы получаем IP-адрес вашего шлюза. Еще раз мы используем команду ip, но на этот раз с опцией r (route):

ip r

Следующим элементом головоломки является IP-адрес DNS (сервера доменных имен). Чтобы проверить, какой DNS-сервер используется в вашей системе для преобразования имен хостов в IP-адрес, просто проверьте содержимое файла /etc/resolv.conf, используя команду cat, как описано ранее:

cat /etc/resolv.conf

Теперь, когда мы получили самую основную информацию о конфигурации сети, мы можем использовать ее для устранения многих проблем с сетевым подключением, таких как, например, подключение к Интернету. Лучший инструмент для этой задачи команда – ping.

Используя команду ping, мы можем проверить соединение с любым IP-адресом или хостом. Команда ping отправит пакет на любой желаемый хост или IP-адрес и сообщит нам о результате. По умолчанию команда ping отправит бесконечный пинг на выбранный IP-адрес или хост. Чтобы прервать непрерывное нажатие, нажмите комбинацию клавиш CTRL+C. В качестве альтернативы используйте опцию -c с комбинацией числа, указывающего на количество пакетов, которое вы хотите отправить. Например:

ping linuxcool.ru
PING linuxcool.ru (104.27.145.210) 56(84) bytes of data. 
64 bytes from 104.27.145.210 (104.27.145.210): icmp_seq=1 ttl=60 time=22.1 ms 
64 bytes from 104.27.145.210 (104.27.145.210): icmp_seq=2 ttl=60 time=23.2 ms 
64 bytes from 104.27.145.210 (104.27.145.210): icmp_seq=3 ttl=60 time=23.6 ms 
64 bytes from 104.27.145.210 (104.27.145.210): icmp_seq=4 ttl=60 time=24.2 ms 
64 bytes from 104.27.145.210 (104.27.145.210): icmp_seq=5 ttl=60 time=22.2 ms 
64 bytes from 104.27.145.210 (104.27.145.210): icmp_seq=6 ttl=60 time=22.9 ms 
64 bytes from 104.27.145.210 (104.27.145.210): icmp_seq=7 ttl=60 time=23.6 ms 
64 bytes from 104.27.145.210 (104.27.145.210): icmp_seq=8 ttl=60 time=23.8 ms

ping -c 2 8.8.4.4 
PING 8.8.4.4 (8.8.4.4) 56(84) bytes of data. 
64 bytes from 8.8.4.4: icmp_seq=1 ttl=56 time=28.3 ms 
64 bytes from 8.8.4.4: icmp_seq=2 ttl=56 time=28.7 ms 
 
--- 8.8.4.4 ping statistics --- 
2 packets transmitted, 2 received, 0% packet loss, time 1001ms 
rtt min/avg/max/mdev = 28.398/28.587/28.777/0.253 ms

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

0% утеряно

Смена разрешений и владельца

Каждый файл или каталог в файловой системе GNU/Linux может принадлежать разным пользователям, а также различным группам пользователей. Кроме того, каждый файл или каталог может быть настроен на соответствие одному или нескольким разрешениям, таким как чтение, запись и выполнение. Тема, касающаяся прав доступа к файлам или каталогам или владения, может охватывать небольшую книгу. Но поскольку нас интересуют основы, вот несколько советов, с которых можно начать.

Начнем с получения актуальной информации о правах доступа к файлам или каталогам. Для этого выполните уже выученную команду ls с параметром -l и именем файла или каталога в качестве параметра. Например:

ls -l dir/

Есть три типа разрешений: чтениезапись и выполнение . В следующей таблице перечислены все типы разрешений, а также их символическое и восьмеричное представление:

Тип разрешения Восьмеричное Представление Символическое представление
Чтение 4 r
Запись 2 w
Выполнение 1 x

Инструмент для изменения прав доступа к файлам или каталогам в файловой системе GNU/Linux называется chmod. Есть два способа изменить права доступа к файлу или каталогу с помощью команды chmod, а именно восьмеричное или символическое представление. Из этих двух, лучший подход – тот, который вам легче всего запомнить и использовать.

В следующем примере показано, как использовать команду chmod как с восьмеричным, так и с символическим представлением, чтобы изменить права доступа к каталогу dir:

цель требование Восьмеричное Представление Символическое представление
Пользователь (владелец) Читать, записать и выполнить 7 (4 + 2 + 1) RWX
группа Прочитать и записать 6 (4 + 2) RW
другие Нет разрешений 0 0

Следующие две команды chmod, использующие восьмеричное и символическое представление разрешений, являются взаимозаменяемыми и изменят разрешения каталога dir в соответствии с вышеуказанными требованиями:

chmod 760 dir
СИМВОЛИЧЕСКОЕ:
chmod u = rwx, g = rw, o = dir

Последний инструмент, который будет рассмотрен в этом разделе, это команда chown. Команда chown позволяет пользователю изменить владельца файла или каталога. Каждый файл или каталог имеет два типа собственности. А именно, это владелец пользователя и группы.


Смена владельца с помощью команды chown – довольно простая процедура. Общее правило изменения владельца файла или каталога заключается в предоставлении команде двух параметров. Первый предоставленный параметр содержит имя пользователя и имя группы, кому мы хотим чтобы этот файл или каталог принадлежали, . и второй параметр, представляющий имя файла или каталога, о котором идет речь.

В следующем примере команды, будет изменен файл с именем file.txt принадлежащий пользователю fox и всем пользователям, принадлежащим к группе fox:

chown fox.fox file.txt

ПРИМЕЧАНИЕ . Для успешного изменения владельца файла или каталога с помощью команды chown, применяются следующие два правила. Во-первых, пользователь и группа должны существовать, а во-вторых, для смены владельца или root пользователя или группы требуются права администратора. См. Выше объяснение команды sudo для получения дополнительной информации.

Проверить версию ядра системы

Есть моменты, когда вам необходимо устранить неполадки в вашей системе GNU/Linux, поэтому вам нужно получить информацию о вашем текущем работающем ядре, известном как Linux.

Использование команды uname с комбинацией -a выводит подробную информацию о версии вашего ядра и архитектуре:

uname -a

Знаете ли вы, что: Ключевое слово Linux на самом деле относится только к ядру системы, в то время как команды фактической операционной системы основаны на GNU бинарниках свободного программного обеспечения.

Вывод

Это все народ! Но не думайте, что больше нечему учиться. Напротив, эта статья едва раскрывает поверхность, так как цель состояла в том, чтобы познакомить читателя только с некоторыми основными приемами командной строки GNU/Linux.

Пожалуйста, напишите свой отзыв ниже, чтобы помочь мне улучшить эту статью. Если у вас есть дополнительные вопросы или вам нужна дополнительная помощь, посетите форум LinuxCool.

Что вы должны узнать дальше? Продолжайте экспериментировать с основами и попробуйте ежедневно добавлять новые команды Linux в свой список. Практика и только практика!