- Упражнения по работе с командной строкой linux
- Основные команды для работы с файлами
- Работа с текстовыми файлами
- 20 приёмов работы в командной строке Linux, которые сэкономят уйму времени
- Приёмы работы в командной строке Linux и экономия времени
- 0. Автозавершение команд с использованием клавиши Tab
- 1. Переход в последнюю рабочую директорию
- 2. Возврат в домашнюю директорию
- 3. Вывод на экран содержимого директории
- 4. Вызов нескольких команд в одной строке
- 5. Выполнение нескольких команд в одной строке и условие на успешное завершение предыдущей команды
- 6. Простой поиск и использование ранее введённых команд
- 7. Разблокировка терминала после случайного нажатия Ctrl + S
- 8. Перемещение к началу или концу строки
- 9. Чтение лог-файлов в режиме реального времени
- 10. Чтение сжатых лог-файлов без их распаковки
- 11. Использование команды less для чтения файлов
- 12. Повторное использование последнего элемента из предыдущей команды с помощью !$
- 13. Использование предыдущей команды в текущей команде с помощью !!
- 14. Использование псевдонимов для исправления ошибок ввода
- 15. Копирование и вставка в терминале Linux
- 16. Завершение работы команды или процесса
- 17. Использование команды yes для автоматизации интерактивных команд или скриптов
- 18. Очистка содержимого файла без удаления самого файла
- 19. Выяснение наличия в директории файлов, содержащих определённый текст
- 20. Вызов справки для любой команды
- Итоги: делитесь полезными советами!
Упражнения по работе с командной строкой linux
На этой странице собраны упражнения по основным командам для манипуляции с файлами и директориями из командной строки Linux. Каждая из этих команд выполняет одно простое действие, но в дальнейшем может быть использована для составления более сложных цепочек команд.
Перед тем как начать — первый простой вопрос:
Как получить справку по команде ssh? ответ
Основные команды для работы с файлами
Как посмотреть текущую рабочую директорию? ответ
Как сменить рабочую директорию? ответ
например, cd /var/www/
Как перейти в родительскую директорию? ответ
Как вернуться в домашнюю директорию? ответ
cd — вызов команды без аргументов приводит к переходу в директорию, указанную в переменной окружения $HOME.
Как вывести список файлов в директории? ответ
ls — вывести список файлов в текущей директории
ls /var/log/ — вывести список файлов в директории /var/log/
ls -l — вывести подробный список файлов
Как посмотреть вермя последнего изменения/доступа к файлу /tmp/test.txt? ответ
ls -l /tmp/test.txt — посмотреть время последнего изменения файла
ls -lu /tmp/test.txt — посмотреть время последнего доступа к файлу
stat /tmp/test.txt — показывает 3 временные метки:
- Access — время последнего доступа к файлу (любое открытие файла для чтения: просмотр, поиск по файлу и т.п.)
- Modify — время последнего изменения файла
- Change — время изменения статуса файла (прав доступа, владельца, изменение файла).
Как создать новую директорию test? ответ
Как создать пустой файл? ответ
Существует множество способов создать пустой файл. Вот некоторые из них:
- cp empty.txt empty1.txt — скопировать любой другой пустой файл
- touch empty.txt — «потрогать» несуществующий файл
- :> empty.txt — перенаправить в файл вывод команды, которая ничего не делает
- vi empty.txt, затем сразу :wq — открыть файл и сохранить его пустым
Как создать файл /tmp/2mb.txt размером 2Mb? ответ
dd if=/dev/zero of=2mb.txt bs=1M count=2
если в предыдущей команде задать bs=1MB, то файл будет размером 2_000_000 байт.
в данном примере файл будет заполнен нулевыми байтами (0x00).
Как узнать тип файла? ответ
$ file empty.txt empty.txt: empty $ file /usr/bin/perl /usr/bin/perl: symbolic link to `perl5.16.3′ $ file /usr/bin/perl5.16.3 /usr/bin/perl5.16.3: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.16, stripped $ file index.html index.html: HTML document, UTF-8 Unicode text, with very long lines
Как переименовать файл? ответ
mv имя_файла новое_имя_файла
Как удалить файл/директорию? ответ
rm имя_файла — удалить файл
rmdir имя_директории или rm -r имя_директории — удалить директорию
shred -uv имя_файла — удаление файла для параноиков (без опции -u просто перезаписывает содержимое файла мусором)
Как создать символическую/жесткую ссылку на файл/директорию? ответ
ln -s имя_файла имя_ссылки — создаём символическую ссылку на файл
ln -s имя_директории имя_ссылки — создаём символическую ссылку на директорию
ln имя_файла имя_жесткой_ссылки — создаём жесткую ссылку на файл
в обычных условиях создать жесткую ссылку на директорию невозможно
Как посмотреть размер файла? ответ
ls -l имя_файла — размер файла в байтах
ls -lh имя_файла — размер файла в более привычном формате
Как как узнать размер директории? ответ
du -s имя_директории — размер места в килобайтах (блоках по 1024 байт), которое директория со всем своим содержимым занимает на диске
du -sh имя_директории — в более привычном формате
Как узнать сколько свободного места осталось на разделе диска? ответ
при помощи команды df место_монтирования_раздела или просто df
df -h выведет размеры не в килобайтах, а в более удобном формате.
df -ih выведет информацию о количестве использованных и свободных инодов
Работа с текстовыми файлами
Как сравнить два текстовых файла? ответ
diff файл_1 файл_2 или diff -a файл_1 файл_2
Как посчитать количество строк в текстовом файле? ответ
или awk ‘END
а можно открыть файл в текстовом редакторе vi имя_файла и посмотреть кол-во строк CTRL+G
Как вывести на экран отсортированные строки текстового файла? ответ
Как удалить дубли строк из файла? ответ
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/file.txt начинающиеся со слова ‘START’? ответ
*!G4;:%#`START/ p’ имя_файла
Как вывести на экран содержимое текстового файла без однострочных комментариев (строка комментария начинается с символа #)? ответ
Как среди нескольких файлов в директории найти те, которые содержат слово ‘test’? ответ
grep ‘test’ * — поиск во всех файлах в текущей директории
grep ‘test’ файл_1 файл_2 файл_3 — поиск только в указанных файлах
Источник
20 приёмов работы в командной строке Linux, которые сэкономят уйму времени
Тема полезных приёмов работы в терминале Linux неисчерпаема. Казалось бы — всё устроено очень просто: приглашение оболочки, да введённые с клавиатуры команды. Однако, в этой простоте кроется бездна неочевидных, но полезных возможностей. Именно поэтому мы регулярно публикуем материалы, посвящённые особенностям работы в командной строке Linux. В частности, сегодня это будет перевод статьи, автор которой увлечён экономией времени через повышение продуктивности труда.
Если вас интересует работа в командной строке Linux — вот некоторые из наших материалов на эту тему:
Приёмы работы в командной строке Linux и экономия времени
Вам когда-нибудь доводилось видеть, как коллега использует некие простые команды Linux для решения задач, решение которых занимает у вас несколько строк? Должно быть, когда подобное случалось, вы только и могли сказать себе: «Ну ничего ж себе! Я и не знал, что это можно сделать так просто».
В этом материале я покажу вам некоторые профессиональные приёмы работы в командной строке Linux, которые сэкономят вам уйму времени и в некоторых случаях избавят от плохого настроения. Мало того, что ваши друзья или коллеги скажут: «Ну надо же!», глядя на вас. Эти приёмы, кроме того, помогут вам увеличить личную продуктивность, так как вам понадобится вводить меньше команд и даже делать меньше щелчков мышью.
Нельзя сказать, что эти советы по Linux предназначены только для начинающих. Вполне возможно, что даже опытные пользователи найдут здесь что-нибудь полезное, то, о чём они не знали несмотря на то, что пользовались Linux многие годы. Linux изучают на основе опыта. Тут сгодится и собственный опыт, и опыт других людей.
Прежде чем мы начнём, хочется отметить, что некоторые из приведённых здесь методов зависят от настройки командной оболочки.
0. Автозавершение команд с использованием клавиши Tab
Я начну с кое-чего вполне очевидного, но весьма важного: с автозавершения команд с помощью клавиши Tab .
Когда вы начинаете набирать что-то в терминале Linux, вы можете нажать клавишу Tab , после чего будет выведена подсказка, содержащая набор вариантов продолжения ввода, начинающихся с только что введённых символов.
Например, собираясь скопировать файл с именем my_best_file_1.txt , вы можете просто ввести cp m и нажать Tab для того, чтобы увидеть возможные варианты продолжения команды.
Использование клавиши Tab для автозавершения ввода
Клавишу Tab можно использовать и для автозавершения команд.
1. Переход в последнюю рабочую директорию
Представьте, что вы работали в директории, до которой не так уж и просто добраться, а потом перешли в другую директорию, расположенную совершенно в другом месте. Потом вы поняли, что вам нужно вернуться в предыдущую директорию. В этом случае достаточно воспользоваться следующей командой:
Она позволит вам оказаться в последней рабочей директории. Теперь в подобных ситуациях вам не нужно больше будет вводить длинные пути, или пользоваться копированием и вставкой.
Простое переключение между директориями
2. Возврат в домашнюю директорию
Этот приём тоже весьма очевиден. Вы можете использовать нижеприведённую команду для того, чтобы вернуться в домашнюю директорию из любого места:
Однако, в домашнюю директорию можно вернуться ещё быстрее — с помощью команды cd .
В большинстве современных дистрибутивов Linux оболочка предварительно настроена на именно такое восприятие команды cd . Это сэкономит вам пару нажатий клавиш на клавиатуре.
Самый быстрый способ перехода в домашнюю директорию
3. Вывод на экран содержимого директории
Возможно, вы зададитесь вопросом о том, в чём состоит тонкость использования команды для вывода содержимого директории. Все знают, что для этой цели служит команда ls -l .
Но в том-то всё и дело. Практически все используют команду ls -l для вывода содержимого директорий, в то время как то же самое можно сделать с помощью следующей команды:
Работоспособность этой команды зависит от дистрибутива Linux и от настройки оболочки, но весьма вероятно, что вы сможете воспользоваться ей в большинстве дистрибутивов.
Использование команды ll вместо команды ls -l
4. Вызов нескольких команд в одной строке
Представьте, что вам нужно последовательно выполнить несколько команд. Наверное, вы вводите одну команду, потом ждёте, когда она завершится, дальше — вводите следующую?
В подобной ситуации полезным окажется разделитель команд ; (точка с запятой). При таком подходе вы можете ввести несколько команд в одной строке. При этом, в отличие от обычного ввода команд, для выполнения следующей команды не надо ждать завершения предыдущей.
5. Выполнение нескольких команд в одной строке и условие на успешное завершение предыдущей команды
Только что мы рассмотрели способ вызова нескольких команд в одной строке. Это экономит время. Но что если вам нужно, скажем, при вызове двух команд, чтобы следующая команда была выполнена только в том случае, если предыдущая завершится без ошибок?
Представьте себе, что хотите собрать код, а затем, если сборка оказалась успешной, вызвать make ?
В подобной ситуации можно использовать разделитель && . Этот разделитель позволяет гарантировать то, что следующая команда будет выполнена лишь в том случае, если предыдущая отработает успешно.
Вот хороший пример использования && :
6. Простой поиск и использование ранее введённых команд
Представьте себе, что вы, пару минут или пару часов назад, вводили длинную команду, и вам снова нужна эта команда. Причём, проблема заключается в том, что вспомнить точно эту команду вы не можете.
В подобной ситуации вас спасёт обратный поиск. Данная методика позволяет проводить поиск в истории команд по ключевому слову. Тут достаточно использовать комбинацию клавиш Ctrl + R для запуска обратного поиска и ввести что-то, имеющее отношение к команде. Система просмотрит историю команд и покажет команды, соответствующие введённому запросу.
По умолчанию показан будет лишь один результат. Для того, чтобы увидеть больше результатов, соответствующих запросу, вам понадобится использовать комбинацию клавиш Ctrl + R снова и снова. Для того, чтобы выйти из режима обратного поиска, нажмите Ctrl + C .
Обратный поиск по истории команд
Обратите внимание на то, что в некоторых оболочках Bash для перебора результатов поиска можно пользоваться клавишами Page Up и Page Down .
7. Разблокировка терминала после случайного нажатия Ctrl + S
Возможно, вы привыкли пользоваться комбинацией клавиш Ctrl + S для сохранения файлов. Но если нажать эти клавиши в терминале Linux, вы его заблокируете.
Если раньше вы, для того, чтобы исправить положение, вынуждены были закрывать и снова запускать терминал — теперь может вздохнуть спокойно, больше вам этого делать не придётся. Для того, чтобы привести терминал в рабочее состояние, просто воспользуйтесь комбинацией клавиш Ctrl + Q .
8. Перемещение к началу или концу строки
Представьте себе, что вы вводите длинную команду и где-нибудь посередине понимаете, что должны что-нибудь изменить в её начале. Вероятно, вы используете клавиши-стрелки для того, чтобы сначала переместиться в начало строки, а потом вернуться в конец.
Конечно, в подобной ситуации можно использовать клавиши Home и End , но, как вариант, с помощью комбинации клавиш Ctrl + A можно перейти в начало строки, а с помощью комбинации Ctrl + E — в конец.
Перемещение к началу или концу строки
Мне такой способ кажется удобнее, чем использование клавиш Home и End , особенно когда я работаю на ноутбуке.
9. Чтение лог-файлов в режиме реального времени
Когда вам нужно проанализировать файлы журналов, в которые, во время анализа, пишет данные какое-нибудь работающее приложение, вы можете использовать команду tail с опцией -f .
Кроме того, вы можете использовать команду grep в её обычном виде для отображения только тех строк, которые вас интересуют:
Также тут можно задействовать опцию F . Это приведёт к тому, что утилита tail продолжит работать даже в том случае, если просматриваемый лог-файл будет удалён. При таком подходе, если этот файл снова будет создан, tail продолжит выводить данные из него на экран.
10. Чтение сжатых лог-файлов без их распаковки
Серверные журналы обычно сжаты с помощью gzip для экономии места на диске. Это может привести к некоторым неудобствам при анализе логов разработчиками или системными администраторами. Вам может понадобиться использовать команду scp для копирования файла в свою локальную директорию, а после этого извлечь файл из архива для того, чтобы его просмотреть, так как у вас может не быть разрешения на запись туда, где хранится интересующий вас файл.
Тут нам на помощью приходит группа команд, имя которых начинается с буквы «z». Эти команды являются альтернативой обычным командам, которые используются для работы с файлами журналов. Среди них — less , cat , grep , и другие.
Итак, используя команды zless , zcat , zgrep и подобные им, вам не придётся явным образом распаковывать сжатые файлы. Подробности об этих командах можно посмотреть здесь.
Кстати, когда я рассказал об этих «секретных» командах коллеге, мне досталась чашка кофе.
11. Использование команды less для чтения файлов
Если вам нужно просмотреть файл, особенно — большой, можно попробовать команду cat , но гораздо лучше поискать что-нибудь другое. Дело в том, что cat выведет на экран весь файл, что не так уж и удобно.
Для просмотра файлов можно воспользоваться редакторами вроде Vi или Vim, работающими в терминале, но если вам просто нужно прочесть файл, очень кстати окажется команда less .
Во время сеанса работы с less можно искать нужные фрагменты текста по ключевым словам, перемещаться по страницам, выводить данные с номерами строк, и так далее.
12. Повторное использование последнего элемента из предыдущей команды с помощью !$
Во многих ситуациях очень кстати оказывается возможность использования аргумента предыдущей команды.
Предположим, вам нужно создать директорию, а потом в неё перейти. Тут можно воспользоваться опцией !$ , вводя команду перехода после команды создания директории.
Применение !$ для использования аргумента последней команды
Ещё лучше то же самое делается с помощью сочетания клавиш Alt +. (точка). Точку можно использовать несколько раз для перебора опций последней команды.
13. Использование предыдущей команды в текущей команде с помощью !!
С помощью !! можно вызвать всю предыдущую команду. Этот приём оказывается особенно полезным, когда вам нужно выполнить команду и оказывается, что для её выполнения нужны привилегии суперпользователя. Например, на рисунке ниже показана ситуация, в которой команда sudo !! позволяет сэкономить немало времени.
Воспользуйтесь. для подстановки последней команды в качестве аргумента
14. Использование псевдонимов для исправления ошибок ввода
Возможно, вы уже знакомы с командой alias . Её можно использовать для исправления ошибок во введённых командах.
Например, может случиться так, что вы часто вводите gerp вместо grep . Если с вредной привычкой справиться никак не удаётся, запишите псевдоним в свой файл bashrc следующим образом:
Теперь вам не придётся перенабирать эту команду если вы введёте её имя неправильно.
15. Копирование и вставка в терминале Linux
Этот совет несколько неоднозначен, так как он зависит от дистрибутива Linux и от терминала.
Но обычно команды копирования и вставки можно вызывать следующим образом:
- Выделите текст, который надо скопировать, и щёлкните правой кнопкой мыши для его вставки (работает в Putty и других SSH-клиентах для Windows).
- Выделите текст, который надо скопировать, после чего щёлкните центральной кнопкой мыши (колесом прокрутки) для того, чтобы его вставить.
- Используйте комбинации клавиш Ctrl + Shift + C для копирования, и Ctrl + Shift + V для вставки.
16. Завершение работы команды или процесса
Возможно, то, что я тут хочу посоветовать, совершенно очевидно, однако, всё равно об этом расскажу. Если команда выполняется на переднем плане и вы хотите из неё выйти, можете нажать клавиши Ctrl + C для того, чтобы её остановить.
17. Использование команды yes для автоматизации интерактивных команд или скриптов
Если вам приходится работать с некоторыми командами или скриптами, которые предусматривают взаимодействие с пользователем, и вы знаете, что будете вводить Y в ответ на каждый вопрос программы, можете автоматизировать этот процесс с помощью команды yes . Делается это так:
18. Очистка содержимого файла без удаления самого файла
Если вы хотите очистить содержимое текстового файла, не удаляя сам файл, можете использовать следующую команду:
19. Выяснение наличия в директории файлов, содержащих определённый текст
Командная строка Linux поддерживает множество способов поиска информации. Однако, если вам просто нужно узнать, имеются ли в некоей директории файлы, которые содержат определённый текст, вы можете воспользоваться такой командой:
Однако я советую всем, кому нужен поиск в Linux, разобраться как следует с командой find .
20. Вызов справки для любой команды
Хочу завершить этот материал одним весьма очевидным, но, тем не менее, очень важным «трюком», который заключается в вызове справки для команды или инструмента командной строки.
Практически все средства командной строки содержат справочную информацию, раскрывающую особенности их использования. Обычно чтение справки помогает разобраться с основами команды. Вызвать справку можно так:
Итоги: делитесь полезными советами!
Я намеренно не включил в этот материал команды вроде fuck, так как они не из тех стандартных средств, которые можно найти буквально повсюду. То, о чём я тут рассказал, может принести пользу при работе практически со всеми дистрибутивами Linux и оболочками командной строки без необходимости установки новых программ.
Уважаемые читатели! Возможно, вы уже знакомы с некоторыми из приведённых здесь методов использования команд Linux, а может и знаете их все. В любом случае, приглашаем вас поделиться вашими любимыми приёмами в комментариях.
Источник