Ω Работа в командной строке Linux (Часть-3) Ω

Ω Работа в командной строке Linux (Часть-3) Ω

Namaste - CyberGuerrilla Anonymous Nexus
Работа в командной строке Linux (Часть-1) 
Работа в командной строке Linux (Часть-2)


Ω Перейти обратно


Стандартный вывод и стандартный ввод. Перенаправление вывода:


Для командной строки существует такое понятие как «стандартный вывод». Стандартным является вывод в консоль.


ls -l


Выводит в консоль список файлов:

Стандартный вывод можно перенаправить – вместо отображения в консоли его можно:

  • сохранить в файл;
  • передать другой программе;
  • безвозвратно уничтожить без вывода и сохранения куда-либо.


Для сохранения в файл используется символ >

После этого символа нужно указать имя файла.


Например:

ls -l > files.txt


При этом на экран ничего не вывелось.

Но если проверить файлы, то можно увидеть новый с именем files.txt

cat – для отображения содержимого файлов:

Главной функцией cat является «склеивание» нескольких файлов. После неё можно указать название нескольких файлов, и она последовательно их выведет. Если вы указали название только одного файла, то будет отображён только он.


Для показа только что созданного файла:


cat files.txt

wc – для подсчёта строк, слов и байт:

Программа wc считает, сколько ей передали строк, сколько слов и сколько байт.

После команды wc нужно указать имя файла, например:


wc files.txt

Будет выведено что-то вроде:

11 93 619 files.txt


В выводе:

  • 11 – количество строк в файле
  • 93 – количество слов в файле
  • 619 – количество байт в файле


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


wc -l files.txt

11 files.txt


Посмотрите справку:


wc --help


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


Если мы хотим передать вывод одной программы в другую, то используется символ |.


Например:

ls | wc


Если программа принимает от другой программы вывод через символ |, то это называется стандартным вводом.


Мы также можем использовать различные опции, как с первой, так и со второй командой:


ls | wc -l

Можно воспользоваться стандартным выводом команды cat:


cat files.txt | wc


grep – вывод строк, соответствующих шаблону:


Общий вид использования команды:


grep шаблон[файл...]


Пример:

grep txt files.txt


Означает искать в файле files.txt строки, соответствующие шаблону «txt».



Команда grep также поддерживает стандартный ввод:


ls -l | grep txt

-rw-rw-r-- 1 mial mial 619 июн 23 13:08 files.txt

-rw-rw-r-- 1 mial mial   4 июн 23 12:59 f.txt


Поиск по шаблону осуществляется с учётом регистра. Т.е. txt, Txt и TXT – это три разных шаблона и если вы указали txt, то строка, содержащая TXT будет считаться неподходящей. Для поиска без учёта регистра используется опция -i.


Чтобы было интереснее, скачайте или создайте текстовый файл.

Если у вас нет своего файла, то скачайте словарик:


wget https://kali.tools/files/passwords/leaked_passwords/rockyou.txt.bz2

bunzip2 rockyou.txt.bz2


Примечание: wget и bunzip2 – это также команды Linux. Первая используется для получения файлов по сети, вторая для распаковки архивов. Пока мы не будем останавливаться на них подробно.


Итак, в результате работы этих двух команд мы скачали и распаковали текстовый файл. В текущей рабочей директории у нас присутствует файл rockyou.txt.


Поищем в этом файле строки, содержащие, например, шаблон «russia», чтобы поиск осуществлялся без учёта регистра, добавим ключ -i:


grep -i russia rockyou.txt

Как мы помним, команда grep может работать со стандартным вводом.


Поэтому следующая команда абсолютно аналогична:

cat rockyou.txt | grep -i russia


Будет найдено довольно много совпадений. А сколько именно?


Легко:

grep -i russia rockyou.txt | wc -l

Если вы немного запутались, поясню.

Команда cat считывает файл rockyou.txt и выводит его в стандартный вывод, по стандартному вводу (символ |) стандартный вывод передаётся команде grep, которая без учёта регистра (-i) ищет все строки, содержащие слово russia, найденные строки по стандартному вводу (символ |) передаются команде wc, которая считает их количество, при этом считается только количество строк, а количество слов и количество байт не отображается (-l).


uniq – сообщает о повторяющихся строках или удаляет их:


Команда uniq удаляет одинаковые строки или показывает их. Но она «видит» одинаковые строки только если они являются смежными (следуют друг за другом). Т.е. перед применением команды uniq, записи в файле нужно отсортировать. Для этого применяется команда sort.


Давайте начнём с того, что посчитаем общее количество строк в файле rockyou.txt. Для этого мы выведем его содержимое в стандартный вывод командой cat, а затем применим команду wc:


cat rockyou.txt | wc -l
14344391


Теперь перед тем, как посчитать количество строк, мы их отсортируем (команда sort) и удалим одинаковые (команда uniq). Обе эти команды умеют работать со стандартным вводом (а также и с файлами). Далее показан пример при работе со стандартным вводом:


cat rockyou.txt | sort | uniq | wc -l
14341564


Как можно заметить, в файле rockyou.txt имеется почти три тысячи абсолютно одинаковых строк.


Задание для самостоятельной работы: посмотрите справку по командам uniq, sort и wc и удалите дубликаты из файла rockyou.txt без использования стандартного ввода. А затем посчитайте количество уникальный записей также без использования стандартного ввода.


У команды uniq имется ключ -d, который позволяет просмотреть одинаковые строки:


cat rockyou.txt | sort | uniq -d


Различия между > и |:

Оба символа: > и | используются для перенаправления стандартного вывода. Но символ > отправляет данные в файл, а символ | (его ещё называют «труба») отправляет их другой программе.


Если сделать так:

cat rockyou.txt > sort


То этой командой вы пытаетесь переписать бинарный (исполнимый) файл программы sort тем, что выдаст cat. Если вы обычный пользователь, то система не позволит вам испортить файл программы. Но если вы работаете под учётной записью администратора, то таким образом вы навредите системе, результат будет совершенно другим от ожидаемого вами.


Если вы хотите очистить файл rockyou.txt от дублей и сохранить результат в новый файл, то нужно сделать так:


cat rockyou.txt | sort | uniq > cleaned_rockyou.txt

Здесь cleaned_rockyou.txt – это название нового файла без дублей.


less – для просмотра содержимого больших файлов:


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


cat rockyou.txt | grep -i russia


Tо вывод получил достаточно большим и пришлось прокручивать окно консоли вверх.


Что делать, если нужно просмотреть большой вывод или очень объёмный текстовый файл?


Команда:


cat rockyou.txt


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


Для таких случаев имеется команда less. Она может работать и с файлами и со стандартным вводом. Для просмотра файла:


less имя_файла


Например:


less rockyou.txt


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


Команда | Действие:

Page Up или b Прокрутка назад на одну страницу

Page Down или пробел Прокрутка вперёд на одну страницу

Стрелка вверх (↑) Прокрутка вверх на одну строку

Стрелка вниз (↓) Прокрутка вниз на одну строку

G Перейти к концу файла

1G или g Перейти к началу файла

/символы Поиск вперёд по файлу введённых символов

n Поиск следующего вхождения предыдущего поиска

h Показать справку

q Выйти из less


Для выхода из команды less используйте клавишу q.


head — Вывод только начала текстового файла:


Команда head выводит только начало текстового файла. По умолчанию будет выведено первые 10 строк, например, чтобы вывести начало файла ZTE F2.txt:


head 'ZTE F2.txt'


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


head -n 1 'ZTE F2.txt'

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


head -n 1 'ZTE F2.txt'


Чтобы вывести первые 100 строк:


head -n 100 'ZTE F2.txt'


tail — Вывод только конца текстового файла:

Эта команда похожа на head, но выводит конец файла.


tail 'ZTE F2.txt'


По умолчанию выводятся последние 10 строк, но вы можете изменить их количество опцией -n:

tail -n 1 'ZTE F2.txt'


Ввод имён файлов в Linux:

Консоль поддерживает drag-and-drop, т.е. вы можете перетащить и бросить в консоль файл, после этого в консоли появится полный путь до файла.


Также используйте клавишу TAB для автодополнения имени файла и пути до него.


Будьте внимательны с файлами, у которых присутствуют в имени пробелы. Например, если вы хотите переименовать файл files.txt в файл new file.txt, то следующая команда завершиться шибкой:


mv files.txt new file.txt


Чтобы избежать ошибку, нужно:

  • взять путь до файла, содержащий пробелы, в кавычки;
  • экранировать пробел;
  • вместо пробела использовать знак нижнего подчёркивания (_), который по общепринятому соглашению символизирует пробел.


Т.е. все следующие команды являются верными.


Имя файла в кавычках:

mv files.txt 'new file.txt'


Экранирование пробела:


mv files.txt new\ file.txt


Замена пробела на знак нижнего подчёркивания:


mv files.txt new_file.txt


В Linux можно создавать файлы с именами, невозможными в Windows, например, в именах можно использовать слеши, двоеточие, нулевой байт и т.д. Будьте внимательны с такими файлами – в Windows вы не сможете их ни открыть, ни переименовать, ни удалить.


«Азы работы в командной строке Linux (часть 4)».




WARNING!
▲Вся информация предоставлена исключительно в ознакомительных целях. Ни редакция, ни автор не несут ответственности за любой возможный вред, причиненный материалами данной статьи▲


© Namaste - CyberGuerrilla Anonymous Nexus

Report Page