Я использовал эти 8 основных команд Linux неправильно в течение многих лет
Как опытный пользователь Linux, у меня есть определенные привычки, присущие моему повседневному использованию терминала. За прошедшие годы я выучил различные сочетания клавиш и удобные команды, которые использую снова и снова. Но даже первоклассные инструменты можно найти с большей пользой.
1 Удалить скрытые ярлыки из списков файлов
Скрытые файлы в Linux — это мощный и удобный инструмент, главным образом потому, что они очень просты. Файл, начинающийся с точки (.), является скрытым файлом. По умолчанию он не отображается в списках терминалов и файловых менеджерах.
Если вам нужно увидеть скрытые файлы, просто используйте опцию -a, и все будет хорошо, верно?
ls -a
Однако в конце концов "." и «..» могут вас беспокоить. Эти специальные файлы представляют собой просто ярлыки для текущего каталога и его родительского каталога. Хотя они могут быть очень полезны, вам не обязательно знать о них каждый раз, когда вы выводите список файлов.
К счастью, есть простое решение: параметру -a соответствует параметр -A, который показывает скрытые файлы, но скрывает эти ярлыки:
ls -A
Вы, вероятно, захотите установите псевдоним для этой команды или любой другой, описанный здесь. Затем вы можете продолжать использовать ls, как и раньше, зная, что вам никогда не понадобится видеть "." или «..» еще раз.
2 Рекурсивный поиск Grep без канала
Очень часто я использую опцию exec find для поиска чего-либо. Это базовый способ эмуляции задачи «поиск в файлах»:
find . -exec grep 'hello' {} \;
Но эта команда длинная, и изучать непонятный синтаксис find было, конечно, неинтересно. Я почувствовал себя глупо, когда обнаружил, что в grep есть встроенная поддержка рекурсивного поиска, но я все равно рад, что сделал это! Эта команда намного удобнее и ее легко выучить:
grep -r 'hello'
3 Создание глубоких каталогов одной командой
Время от времени вам захочется создать глубокую иерархию каталогов, подобную этой:
mkdir blog/2024/09/16
Но, к сожалению, эта команда завершится ошибкой, если каталоги blog, blog/2024 или blog/2024/09 еще не существуют:
Сообщение об ошибке даже не объясняет, в чем проблема! Полезно то, что простая опция создаст все недостающие каталоги, хотя у вас может возникнуть вопрос, почему она не используется по умолчанию. Чтобы создать каталог, включая любые промежуточные каталоги, которые еще не существуют, просто используйте -p:
mkdir -p blog/2024/09/16
Вы можете запомнить это, представляя «p» как аббревиатуру «путь» или «родители».
4 Мгновенное переключение между двумя каталогами
Если вы регулярно используете командную строку, вы привыкнете к навигации по каталогам с помощью cd. Вы, вероятно, также привыкли переключаться между двумя каталогами, переходя туда и обратно, чтобы выполнить команду в одном, проверить файлы в другом и так далее. Возможно, вы даже используете команду истории, чтобы повторить себя.
К настоящему моменту вы уже не удивитесь, узнав, что есть лучший способ. У компакт-диска есть несколько секретов, но одним из наиболее полезных ярлыков является форма «cd-»:
Каждый раз, когда вы запускаете «cd -», он переключается между двумя предыдущими каталогами, в которые вы переходили, что позволяет очень быстро и легко перемещаться вперед и назад.
«cd -» напечатает путь к каталогу, в который он переходит, даже если в командной строке указан текущий каталог.
5 Копирование каталогов с максимальной точностью
Возможно, вы уже знаете о копировании каталогов с помощью cp -R:
cp -R docs backup-docs
Эта команда позволяет копировать целые структуры каталогов, создавая полную копию каталога и всего его содержимого, включая файлы и другие каталоги. Это отличный способ резервного копирования файлов или создания копии более крупного проекта для работы.
Однако вы можете заметить, что копии не совсем такие же, как оригиналы. Время их изменения, владельцы и разрешения могут быть разными. Например, в следующем случае время модификации копии отличается от времени модификации оригинала:
Эти времена отличаются всего на минуту, но проблема может быть гораздо серьезнее. Исправить это просто: используйте -a (для «архива») вместо -R:
6 Извлечение файлов tar.gz с помощью одной команды
Tarfiles по-прежнему являются одним из самых популярных способов распространения коллекций файлов в Linux, особенно исходного кода. Обычно они архивируются с помощью gzip, чтобы уменьшить размер во время загрузки или хранения. Если вы использовали эти две программы всю свою жизнь в Linux, возможно, вы привыкли делать подобные вещи с закрытыми глазами:
gunzip archive.tar.gz
tar xvf archive.tar
При этом сначала распакуется файл gzip, а затем распакуется внутри него файл tar. Но благодаря современным возможностям tar может сделать и то, и другое за один шаг, используя флаг z вместо x:
tar zvf archive.tar.gz
Этот подход более удобен и менее подвержен ошибкам. Более того, последние версии tar автоматически обнаруживают файлы gzip и автоматически распаковывают их! Итак, вы можете сразу перейти к:
tar xvf archive.tar.gz
7 Используйте cat для быстрой проверки файлов
Команда cat названа так потому, что она объединяет файлы вместе. Но вы, возможно, привыкли использовать его просто для просмотра содержимого файлов. Если да, то вы, вероятно, не знаете о нескольких полезных опциях, которые делают просмотр файлов с помощью cat немного приятнее.
Во-первых, cat -s сожмет вместе несколько пустых строк, упрощая просмотр файлов определенных форматов в терминале.
Во-вторых, cat -b добавляет к выводу номера строк, но только для непустых строк. Это может быть полезно при написании ссылок на номера строк.
Используйте их оба вместе, как cat -sb, и вы сможете использовать cat как простое средство просмотра файлов, не прибегая к пейджеру, как less.
8 Получите краткую информацию об использовании диска
Узнать, сколько места занимает каталог, полезно во время генеральной уборки. Но поведение du по умолчанию выдает большой объем выходных данных, поскольку сообщает размер каждого каталога во всей иерархии. В результате вам может потребоваться выполнить команду несколько раз, перенаправить ее вывод в grep, перенаправить во временные файлы и так далее.
Чтобы облегчить вашу борьбу, попробуйте уменьшить объем вывода. Опция --max-length
позволяет указать, сколько уровней каталогов du будет отображать в отчете. Вы по-прежнему получите точные общие размеры, но с менее подробной информацией о каждом каталоге в дереве. Например, проверьте общие размеры только непосредственных подкаталогов с помощью этой команды:
du --max-depth 1
Вы увидите результаты для текущего каталога и его ближайших подкаталогов, не видя размера каждого каталога, расположенного ниже в иерархии:
Если вы хотите узнать больше об освоении командной строки, ознакомьтесь с нашим руководством по опечаткам терминала, которых следует избегать любой ценой.