Выход из тени: 6 малоизвестных команд Linux

В этой статье мы постарались систематизировать основные команды Linux. Команды, которые вы увидите в этом списке, одинаково верно работают в разных дистрибутивах, включая Debian, Gentoo, Ubuntu, ASPLinux, ALTLinux и т. д. Главная цель статьи — создать список основных команд Linux, что упростит как изучение, так и эксплуатацию этой операционной системы.

Список ключей для команды ls.

Для повседневной работы, одни из самых используемых ключей для команды ls:

  • -l — вывод подробной информации о содержимом каталога в виде списка;
  • -a (—all) — вывод информации о всех имеющихся объектах явных и скрытых;
  • -A (—allmost-all) — вывод информации о всех имеющихся явных и скрытых объектах (за исключением объектов «.» и «..»);
  • -d (—directory) — вывод информации о директории без вывода его содержимого;
  • -F — к объектам являющимся каталогами добавит в конце символ слеш «/», к объектам являющимися исполняемыми файлами добавляется «*», к объектам являющимися символьными ссылками — «@»;
  • -r (—reverse) — данные ключи меняют сортировку на обратную;
  • -i — отображение номера индексных дескрипторов объектов;
  • -S — сортировка объектов по размеру от большого к меньшему;
  • -Sr — сортировка объектов по размеру от меньшего;
  • -t — сортировка объектов по времени модификации файлов;
  • -R (—recursive) — вывод информации об имеющихся объектах в том числе и объектах во вложенных каталогах.

Способы работы с командой ls и ее ключи, упоминаемые в статье это далеко не весь список. Если вы желаете использовать всю мощь этой на первый взгляд простой команды, то как уже упоминалось ранее, более подробную информацию можно получить при вызове встроенного мануала $ man ls .

Введение

Linux[email protected]:~$имя пользователясимвол @ имя системыПРИМЕЧАНИЕ:

Ады Лавлейс/home/matthewEnter

Список

  1. pwd

    pwd расшифровывается как «Print Working Directory» («вывести текущий каталог»). Эта команда возвращает ваше местоположение в файловой системе, например, /usr/share или /home/matthew. Это может оказаться полезно при склерозе, если вы забудете, где находитесь.

  2. ls

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

  3. cd

    Эта команда приводит к смене текущего каталога на заданный. Например, команда cd /var/log перенесет вас в подкаталог log, находящийся в каталоге var.

  4. touch

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

  5. rm

    Команда rm удаляет файл. Для удаления созданного вами выше файла, введите: rm examplefile.

  6. mkdir

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

  7. rmdir

    Команда rmdir удаляет каталог. Для удаления созданного вами выше каталога, введите: rm exampledirectory.

  8. mv

    Команда mv перемещает заданный файл или каталог в указанное место. Её можно также использовать для переименования файлов и каталогов. При желании, можно сделать и то, и другое одной командой. Например, давайте переместим файл с именем sample из текущего каталога в существующий подкаталог stuff с одновременным изменением имени этого файла на example: mv sample stuff/example.

  9. cp

    Команда cp копирует заданный файл или каталог в указанное вами место, возможно, с заданным вами новым именем файла/каталога. Воспользуемся тем же примером: cp sample stuff/example. Различие между mv и cp в том, что во втором случае исходный файл остается на своём месте.

  10. man

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

Фильтры в Linux

Фильтры — это способ получения необработанных данных, созданных другой программой или сохраненных в файле.

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

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

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

СКРИН

Head — это программа, которая печатает первые строки ввода. По умолчанию он напечатает первые 10 строк, но мы можем изменить это с помощью аргумента командной строки.

head [-количество строк для печати] [путь]

Данная команда противоположна head. Tail — это команда, которая печатает последние строки ввода. По умолчанию он напечатает последние 10 строк, но мы можем изменить это с помощью аргумента командной строки.

tail [-количество строк для печати] [путь]

Выше было поведение tail по умолчанию. А ниже указывается заданное количество строк.

Фильтры в Linux

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

sort [-options] [path]

Обозначение чисел в Linux реализуется за счет команды nl.

nl [-options] [путь]

Фильтры в Linux

Вот еще несколько полезных опций командной строки.

В приведенном выше примере мы использовали 2 параметра командной строки. Первый -s указывает, что следует печатать после числа. С другой стороны, второй -w указывает, сколько отступов ставить перед числами. Для первого нам нужно было включить пробел как часть того, что было напечатано.

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

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

Фильтры в Linux

wc [-options] [путь]

Иногда вам просто нужно одно из этих значений. -l даст нам только строки, -w даст нам слова, а -m даст нам символы.

Кроме того, Вы можете комбинировать аргументы командной строки.

Cut — это хорошая команда, которую можно использовать, если ваш контент разделен на столбцы и вам нужны только определенные поля.

Фильтры в Linux

вырезать [-опции] [путь]

В нашем примере файла у нас есть данные в 3 столбцах. Допустим, мы хотели только первый столбец.

По умолчанию cut использует символ TAB в качестве разделителя для идентификации полей. Опция -f позволяет нам указать, какое поле мы бы хотели. Если нам нужно 2 или более полей, мы разделяем их запятой, как показано ниже.

Sed расшифровывается как Stream Editor и позволяет эффективно выполнять поиск и замену наших данных. Это довольно мощная команда, но мы будем использовать ее здесь в ее базовом формате.

Фильтры в Linux

sed <выражение> [путь]

Инициал s обозначает замену и определяет действие, которое нужно выполнить. Между первой и второй косой чертой (/) мы размещаем то, что ищем. Затем между вторым и третьим слэшем, чем мы хотим его заменить.

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

uniq [опции] [путь]

Фильтры в Linux

Ребята из Linux известны своим забавным чувством юмора. Программа TAC на самом деле является CAT наоборот. Это было названо так, как это делает противоположность CAT. Получив данные, он напечатает последнюю строку первой, вплоть до первой строки.

TAC [путь]

Работа с текстовыми файлами

Как сравнить два текстовых файла? ответ

diff файл_1 файл_2 или diff -a файл_1 файл_2

Как посчитать количество строк в текстовом файле? ответ

wc -l имя_файла

или awk ‘END {print NR}’ имя_файла

а можно открыть файл в текстовом редакторе vi имя_файла и посмотреть кол-во строк CTRL+G

Как вывести на экран отсортированные строки текстового файла? ответ

sort имя_файла

Как удалить дубли строк из файла? ответ

sort -u имя_файла

или sort имя_файла | uniq

Как дописать содержимое одного текстового файла в конец второго? ответ

cat файл_1 >> файл_2

Как разбить текстовый файл на несколько по 100 строк в каждом? ответ

split -l 100 имя_файла 100-

в результате работы этой команды в директории появятся файлы 100-aa, 100-ab… содержащие по 100 строк из исходного файла. Если исходный файл содержал число строк не кратное 100, то в последнем файле будет меньше ста строк.

Как вывести на экран первые 30 строк файла? ответ

head -n30 имя_файла

Как вывести на экран последние 30 строк файла? ответ

tail -n30 имя_файла

Как посмотреть содержимое текстового файла? ответ

cat имя_файла — вывести файл на экран целиком

more имя_файла — выводить файл на экран постранично (пробел — перейти к следующей странице, enter — на строку вниз)

less имя_файла — выводить файл на экран с возможностью перемещаться по нему вверх и вниз

vi имя_файла или nano имя_файла или emacs имя_файла — открыть файл в любимом текстовом редакторе

Как вывести на экран строки текстового файла /tmp/ начинающиеся со слова ‘START’? ответ

sed -n ‘/%[email protected]~*!G4;:%#`START/ p’ имя_файла

grep ‘%[email protected]~*!G4;:%#`START’ имя_файла

Как вывести на экран содержимое текстового файла без однострочных комментариев (строка комментария начинается с символа #)? ответ

sed -n ‘/%[email protected]~*!G4;:%#`[%[email protected]~*!G4;:%#`#]/ p’ имя_файла

grep -v ‘%[email protected]~*!G4;:%#`#’ имя_файла

Как среди нескольких файлов в директории найти те, которые содержат слово ‘test’? ответ

grep ‘test’ * — поиск во всех файлах в текущей директории

grep ‘test’ файл_1 файл_2 файл_3 — поиск только в указанных файлах

Команды Linux для мониторинга работы и просмотра логов

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

# top # Для получения информации о загруженных процессах, потреблении ОЗУ; # htop # Расширенная онлайн-статистика о загруженных процессах; # dmesg # Отображение log-файла загрузки операционной системы и нахождения новых устройств; # mpstat 1 # Отображается расширенная статистика потребления ресурсов в процентах (для некоторых дистрибутивов нужна установка пакета sysstat); # iostat 2 # Показывается расширенная статистика прерываний по устройствам; # vmstat 2 # Расширенная статистика по применению виртуальной памяти.

flock

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

Используя flock, можно создать разные типы возможных блокировок во время параллельных операций. Сама по себе блокировка в Linux  —  это просто файл. Рассмотрим пример использования блокировки для предотвращения взаимодействия нескольких процессов с файлом: 

LOCKFILE=/tmp/lockfile already_locked() { echo «lock is already held, exiting» exit 1 } exec 200>$LOCKFILE flock -n 200 || already_locked echo «lock obtained, proceeding» sleep 10 echo «releasing lock, done»

Если запустить этот сценарий командной строки, то он попытается получить блокировку для файла /tmp/lockfile, присвоив ему файловый дескриптор 200 и затем используя “неблокирующий” тип блокировки. При таком виде блокировки, в случае ее получения, все остальные попытки ее получения будут проваливаться вместо того, чтобы ожидать разблокировки.

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

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

  • Пользователь Linux пробует Windows в 2020
  • 5 настроек рабочего стола Linux для разработчиков
  • Невероятная история Tux: наш любимый талисман Linux!

Читайте нас в Telegram, VK и

Перевод статьи Tate Galbraith: 6 Lesser-Known Linux Commands You Should Try

; — разделитель команд оболочки

В командной строке Вы можете вводить столько команд, сколько Вам нужно, если Вы разделяете каждую из них точкой с запятой (;). Мы сделаем это в следующем примере:

ls> ; wc -l ; rm

; - разделитель команд оболочки

Обратите внимание, что вторая команда выполняется даже в случае сбоя первой, третья — даже в случае сбоя второй и тд.

Если Вы хотите остановить последовательность выполнения в случае сбоя одной команды, используйте двойной амперсанд (&&) вместо точки с запятой:

cd ./doesntexist && cp ~ / Documents / reports / *.

; - разделитель команд оболочки
Читайте также:  Как настроить статический IP-адрес в Ubuntu 18.04