Журнал LinuxFormat - перейти на главную

LXF106:Терминал-разговорник

Материал из Linuxformat
Перейти к: навигация, поиск

Содержание

Ду ю спик команд лайн?

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

Не все пользователи Linux являются закоренелыми компьютерщиками. Некоторым из нас, конечно, нужно знать внутреннюю механику ПК; другим же достаточно просто ее использовать. Всегда будет существовать определенное число людей, занимающих промежуточное положение, но есть одна вещь, совершенно четко отделяющая компьютерщиков от продвинутых пользователей — это интерфейс командной строки (CLI). Ветераны Linux клянутся, что он — единственный способ сделать все правильно, хотя большая часть из нас избегает его, как чумы.

Новички боятся командной строки из-за смеси ее вычурного синтаксиса и необходимости аккуратно набирать команды с клавиатуры. У других работа в терминале ассоциируется с суровой «гиканутостью». Но, согласитесь, иметь пару иностранных фраз в запасе не помешает. Это не то же самое, что изучить язык, но, когда будет необходимость, вы сможете найти дорогу на пляж, в бар и ресторан.

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

Смена каталога: cd

Большинство графических оболочек так или иначе содержат файловый менеджер (например, Nautilus в Gnome и Konqueror в KDE), и большинство пользователей знакомы с каталогами, которые представлены в них папками, где можно хранить файлы или другие папки. С помощью файлового менеджера можно просматривать содержимое каталогов, но, бывает, вам нужно выполнить какие-то действия внутри него. Зачастую, наиболее эффективное решение для данной задачи – командная строка. Попасть внутрь любого каталога можно командой cd. Например, переход в папку с видео происходит так:

cd /home/username/Videos

Здесь предполагается, что папка Videos находится в вашем домашнем каталоге. Замените username вашим именем пользователя. Переход в папку Music аналогичен:

cd /home/username/Music

а набрав

 cd /etc/mplayer

вы перейдете в каталог настроек программы mplayer.

Команды быстрого вызова

Вместе с командой cd можно использовать различные сокращения. Например, символ ~ эквивалентен пути к вашему домашнему каталогу. Значит, чтобы «вернуться домой», достаточно просто набрать:

cd ~

а чтобы перейти в Videos, следует написать:

cd ~/Videos

После успешной смены каталога вы увидите имя текущей директории в приглашении терминала. Для перехода к предыдущему каталогу [аналогично кнопке Назад в файловом менеджере, – прим.ред.] служит cd -. Это полезно, когда вам необходимо быстро перемещаться по директориям туда и обратно.


Создание папки: mkdir

Для создания новой папки используется команда mkdir. Например:

mkdir New

Для того, чтобы создать новую папку внутри уже существующей, сначала перейдите внутрь неё при помощи cd. Так, чтобы создать папку New2 внутри New, необходимо проделать следующее:

cd New
mkdir New2

Если вы хотите создать дерево каталогов, состоящее из нескольких вложенных друг в друга папок, то переходы вовнутрь и вызовы mkdir – весьма кропотливое и длительное занятие. В GUI их не избежать, а в терминале вы сможете обойтись всего одной строкой, если воспользуетесь командой mkdir с опцией -p. Для создания папки folder1 внутри папки folder2, которая, в свою очередь, находится внутри folder3, наберите:

mkdir -p folder3/folder2/folder1

Где я? pwd

При постоянной смене каталогов и создании новых папок достаточно легко заблудиться. Неплохая профилактика – время от времени спрашивать себя: «Где я нахожусь?» Задать этот вопрос системе можно при помощи команды pwd. Введите ее в терминале, и Linux сообщит вам полный путь до рабочего каталога, в котором вы находитесь в данный момент.

mv и cp

Вот вы и научились перемещаться по каталогам; а как же копировать и перемещать папки и файлы? В GUI было бы достаточно открыть папку-источник и папку-назначение и перетащить файл или папку из одного места в другое. Это очень простое действие, но открытие папки-источника и папки-назначения может занять некоторое время, особенно если у них большой уровень вложенности. Тогда проще сделать это в командной строке.

Копирование и перемещение – очень похожие операции. В обоих случаях вам необходимо знать местоположение и имя копируемого или перемещаемого источника и местоположение и имя объекта-приёмника. В случае перемещения исходный файл удаляется, в случае копирования – сохраняется. Команда копирования называется cp, а перемещения – mv. Используются они одинаково: после команды последовательно указывается исходный, а затем – конечный объект.

Чтобы скопировать файл text.txt внутри одного и того же каталога, выполните:

cp text.txt text1.txt

Так как копия файла создаётся в той же самой директории, необходимо указать ей имя, отличное от исходного (у нас – text1.txt). Это совершенно необязательно, если копия файла создается в другой папке. Допустим, что text.txt находится в домашнем каталоге, а его нужно скопировать в Documents. Тогда команда будет такой:

cp text.txt ~/Documents/text.txt

Чтобы переместить, а не скопировать файл, используйте mv:

mv text.txt ~/Documents/text.txt

Если необходимо скопировать или переместить какой-то файл из каталога, не являющегося текущим, нужно всего лишь указать полный путь к источнику. То есть, чтобы скопировать файл text.txt из папки Documents в Music (в каком бы каталоге вы ни находились), нужно написать:

cp ~/Documents/text.txt ~/Music/text.txt

Для перемещения файла замените cp на mv.

Шаблоны

По правде сказать, копирование и перемещение файлов один за другим таким способом – та ещё задачка, но процесс можно значительно ускорить, если использовать шаблоны. Например, переместить все JPEG-изображения из домашнего каталога в папку Pictures можно так:

mv ~/*.jpg ~/Pictures

Другой полезный спецсимвол – точка (.) – обозначает текущий рабочий каталог. Чтобы перенести все mp3-файлы из папки Music туда, где вы находитесь, наберите:

mv ~/Music/*.mp3 .

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

mv text.txt words.txt

Что здесь? ls

Команда ls позволяет в любой момент посмотреть содержимое папки. Самое простое: вы набираете ls (сокращение от анг. list – список), нажимаете Enter и получаете список имен всех файлов и папок, находящихся в текущем каталоге.

Однако вы не ограничены им – можно указать любую другую папку, набрав ее относительный или абсолютный путь. Например, чтобы увидеть содержимое директории Pictures в вашем домашнем каталоге, используйте:

ls Pictures

Если же вы обретаетесь не у себя дома, измените команду так:

ls ~/Pictures

И снова шаблоны

Использование шаблонов позволяет получить список файлов определенного типа. Так, команда

ls ~/Pictures/*.png

выводит список всех PNG-файлов в папке с изображениями.

Опция -R позволяет получить список всех файлов нужной папки вместе с содержимым всех вложенных в нее каталогов [т.е. рекурсивно, отсюда и R, – прим. ред.]. Например:

ls ~/Pictures -R

В результате вы получите отдельные списки файлов для каждого подкаталога в Pictures. Если есть необходимость получить список скрытых файлов, используйте -a. Команда

ls ~ -a

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

Опция -X

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

ls -X

В результате вы получите список файлов в текущем каталоге, отсортированный по расширению: сначала все вложенные папки, а затем файлы с расширениями в алфавитно-цифровом порядке. Для сортировки по времени и дате используйте опцию -t, а по размеру – опцию -S. Можно использовать несколько опций одновременно, но в этом случае важно помнить, что некоторые из них отменяют действие предыдущих. Например, по команде ls -t -a вы получите список содержимого текущей папки, отсортированный по дате с учетом скрытых файлов. А по команде ls -S -X список будет отсортирован только по типу, а не по размеру и расширению.

Где файл? locate и grep

Для поиска файлов можно использовать несколько команд. Первая из них, locate привлекает заранее созданную базу данных имен. Она возвращает список всех файлов, совпадающих по имени с запросом, и полные пути до них. Например, команда:

locate text

возвращает список всех файлов, содержащих в имени строку ‘text’. По умолчанию поиск происходит с учетом регистра, поэтому файлы с именем Text.txt не будут отображаться. Однако, опция -i' делает процесс регистронезависимым. Если, как в приведенном примере, результатов поиска окажется очень много, можно ограничить возвращаемый командой список, чтобы им было проще управлять. Это делается при помощи опции -n, за которой следует количество возвращаемых записей. Команда

locate -n 5 text

вернет список из пяти первых результатов поиска строки ‘text’ в именах файлов или путях.

Grep

Иногда требуется производить поиск не по имени файла, а по его содержимому. Это можно сделать при помощи команды grep. Для того, чтобы найти строку ‘Hello’ в файле Text.txt, используйте следующую запись:

grep Hello Text.txt

Команда возвращает строку файла, содержащую слово ‘Hello’. Команда Grep чувствительна к регистру, поэтому она не возвращает запись со строкой ‘hello’. Если вам необходимо найти по вашему запросу все файлы, содержащие строку ‘Hello’, то используйте шаблон:

grep Hello *

После этой команды происходит поиск строки ‘Hello’ во всех файлах [текущего каталога – прим. ред.]. Результат будет состоять из списка имен файлов и записей в них, содержащих искомое словосочетание. Если вы ищете строку, содержащую пробелы, заключите ее в одинарные кавычки. Например, для поиска строки ‘Linux Format’ во всех файлах каталога, используйте:

grep ‘Linux Format’ *

Для того, чтобы при поиске не учитывался регистр, используйте опцию -i. Если поиск должен проходить и внутри вложенных папок, то его можно сделать рекурсивным при помощи опции -R. Строка

grep -i ‘linux format’ *

приводит к поиску всех файлов текущего каталога, содержащих строку ‘linux format’ без учета регистра. Помните, что рекурсивный поиск и поиск без учета регистра увеличивает количество возвращаемых результатов и время работы команды. Если вы хотите быстро найти чо-то, то запрос должен быть максимально точным.

Просмотр: head, tail и cat

Найдя нужный вам файл, вы, возможно, захотите посмотреть его содержимое. Если файл текстовый, то это можно сделать прямо в терминале, вводя нужные команды. Если вам нужно вывести только первые 10 строк файла (чтобы, например, убедиться, что вы нашли именно то, что хотели), используйте head.

Перейдите в каталог, где хранится нужный файл, а затем наберите head и имя файла. Для просмотра первых 10 строк файла Text.txt напишите:

head Text.txt

Для изменения числа строк используется опция -n, например:

head -n 7 Text.txt

Команда возвращает первые семь строк файла Text.txt.

Если вы хотите посмотреть последние строки файла, используйте команду tail вместо head, например, так:

tail -n 5 Text.txt

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

cat Text.txt

Она действительно выводит всё содержимое файла Text.txt, но увидеть вы сможете только то, что помещается на экране. Начало файла пронесётся со свистом у вас перед глазами, поэтому, чтобы посмотреть его, придется использовать полосу прокрутки. Альтернативный вариант – применить команду less:

less Text.txt

В этом случае, для перехода между страницами файла используются клавиша Page Down, а перемещение по строкам можно осуществлять при помощи клавиш-стрелок. В отличие от head и tail, less не возвращает вас в строку ввода терминала до тех пор, пока вы не нажмёте клавишу Q для выхода.

Создание архивов: zip

Большие файлы можно сжать и добавить в архив при помощи команды zip. Сжать файл image.tif в архив с именем image.zip можно так:

zip image.zip image.tif

В уже созданный архив image.zip можно добавлять другие файлы. Так, для добавления файлов image2.tif и image3.tif наберите следующее:

zip image.zip image2.tif image3.tif

Шифрование

Если вы хотите зашифровать и защитить паролем ваш zip-архив, используйте опцию -e. Например для уже рассмотренного выше примера введите:

zip -e image.zip image.tif

После нажатия клавиши Enter в строке ввода появится приглашение ввести пароль, а затем – подтвердить его (он будет нужен также при извлечении данных из архива). Для распаковки архивов введите в команду unzip.

unzip image.zip

Если архив защищен паролем, то в строке ввода появится приглашение ввести его.

Посмотрим...

Находясь за рубежом, вы неизбежно сталкиваетесь с незнакомыми вам словами. Чтобы понять их значение, вы ищите их в словаре, а как же быть с командами Linux? Бывает, что необходимо выяснить, какое действие выполняет та или иная утилита и как её применить. К счастью, есть несколько способов найти информацию о разных командах.

Местным аналогом поиска слова в англо-русском разговорнике является использование команды man. Её название образовано сокращением английского слова manual (справочник), а сама команда выводит информацию о нужной утилите и несколько примеров её использования. Чтобы получить информацию о команде mkdir, введите:

man mkdir

Вы увидите страницу с информацией об использовании команды mkdir и её опциях. Для перемещения по странице используются клавиши со стрелками, для выхода – клавиша Q.

man-страницы отличаются друг от друга по качеству материала, поскольку информация для каждой команды предоставляется непосредственно её автором. Некоторые страницы содержат более подробную информацию, другие – менее. Если вы хотите получить более подробные сведения, используйте команду info. Info-страницы разбиты на отдельные разделы. Перемещаться назад и вперед между разделами можно при помощи клавиш Page Down и Page Up. Для выхода из руководства нажимайте клавишу Q, а для получения информации о навигации по страницам справочника нажмите ?. В этом случае вы получите полный список опций и команд, связанных с использованием info. Постарайтесь запомнить команды навигации, поскольку некоторые страницы справочника могут быть достаточно сложными. Удачи!

Путешествие продолжается...

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

Но будьте осторожны – начав однажды, вам может так понравится, что остановиться будет трудно. Представьте, что вам звонят и приглашают на шаBash. А вы начнете с шуток о командной строке, затем перейдете к разговору о каналах, процессах и pstree, а закончите обсуждением ps -fu. Прелестно. LXF

Персональные инструменты
купить
подписаться
Яндекс.Метрика