Командная строка Linux. Полное руководство

Уильям Шоттс · «Питер» · 2020 г. · 544 с.

#Linux#CLI#OS#book

Books Reading

http://library.hazadus.ru/books/12/details/

Abstract

Международный бестселлер «Командная строка Linux» поможет преодолеть путь от первых робких щелчков по клавишам до уверенного создания полноценных программ для последней версии bash — наиболее популярной командной оболочки Linux.

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

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

Из коротких и простых глав, вы узнаете, как:

  • создавать и удалять файлы, каталоги и символические ссылки;
  • администрировать свою систему, от работы с сетью до установки пакетов и управления процессами;
  • использовать стандартный ввод и вывод, перенаправление и конвейеры;
  • редактировать файлы с помощью vi, самого популярного в мире текстового редактора;
  • писать сценарии командной оболочки для автоматизации рутинных задач;
  • манипулировать содержимым текстовых файлов с помощью cut, paste, grep, patch и sed.

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

https://www.piter.com/product_by_id/147022828


Знаете ли вы, что в вашей системе Linux имеется словарь? Загляните в каталог /usr/share/dict, и вы обнаружите там один или несколько словарей. Файлы словарей, находящиеся в каталоге, — это обычные длинные списки слов, по одному в строке, упорядоченные по алфавиту. Найти возможные ответы на вопрос в кроссворде можно с помощью следующей команды:

[me@linuxbox ~]$ grep -i '^..j.r$' /usr/share/dict/words
Major
major

Это регулярное выражение помогает найти в файле словаря все слова длиной в пять букв, где третья буква — j и последняя — r.


Команда xargs предлагает очень интересную возможность. Она принимает входные данные со стандартного ввода и преобразует их в список аргументов для указанной команды. В данном примере ее можно было бы использовать так:

find ~ -type f -name 'foo*' -print | xargs ls -l
-rwxr-xr-x 1 me me 224 2007-10-29 18:44 /home/me/bin/foo
-rw-r--r-- 1 me me 0 2016-09-19 12:53 /home/me/foo.txt

Здесь вывод команды find передается по конвейеру команде xargs, которая, в свою очередь, конструирует список аргументов для команды ls и выполняет ее.


[me@linuxbox ~]$ find ~ -type f -name "*.JPG" -size +1M | wc -l


SSH
  • ~/.ssh/known_hosts - содержит список известных SSH хостов.

Непосредственное перемещение данных между устройствами.

Представьте, что у вас есть два флеш-диска USB одинакового размера и вам нужно создать точную копию первого диска на втором. Допустим, что после подключения к компьютеру им назначаются имена устройств /dev/sdb и /dev/sdc соответственно. В этом случае скопировать содержимое первого диска на второй можно следующей командой:

dd if=/dev/sdb of=/dev/sdc

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

dd if=/dev/sdb of=flash_drive.img

Прием с использованием команды tail -f /var/log/messages (или /var/log/syslog) демонстрирует отличный способ наблюдения за происходящим в системе в режиме реального времени.


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


Другие команды управления процессами
  • pstree – Выводит список процессов в виде древовидной структуры, отражающей отношения «родитель–потомок» между процессами.
  • vmstat – Выводит мгновенный снимок с информацией об использовании системных ресурсов, включая память, файл подкачки и объем дискового ввода/вывода. Чтобы увидеть, как изменяется эта информация с течением времени, передайте команде интервал задержки (в секундах) между обновлениями (например, vmstat 5). Завершить работу команды можно нажатием CTRL+C

Возврат процесса на передний план

Процесс в фоновом режиме не получает ввод с клавиатуры, в том числе не видит попыток прервать его комбинацией CTRL+C. Вернуть процесс на передний план можно командой fg, как в следующем примере:

[me@linuxbox ~]$ jobs
[1]+ Running xlogo &
[me@linuxbox ~]$ fg %1
xlogo

Подстановка команд позволяет использовать поток вывода команд в качестве аргументов других команд:

[me@linuxbox ~]$ file $(ls -d /usr/bin/* | grep zip)

В этом примере результаты конвейера превратились в список аргументов команды file.

Альтернативный синтаксис (более старый):

[me@linuxbox ~]$ ls -l `which cp`

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

[me@linuxbox ~]$ ls -l /bin/usr 2> ls-error.txt

В данном примере используется единственный оператор &>, перенаправляющий стандартный вывод и стандартный вывод ошибок в файл ls-output.txt.

[me@linuxbox ~]$ ls -l /bin/usr &> ls-output.txt

Получается, что если вам понадобится очистить какой-нибудь файл (или создать новый, пустой файл), это можно сделать с помощью следующего трюка:

[me@linuxbox ~]$ > ls-output.txt


📂 Reading | Последнее изменение: 06.12.2023 15:32