LXF106:Терминал-разговорник
|
|
|
Содержание |
Ду ю спик команд лайн?
- Для тех, кто не силен в этом языке, использование командной строки будет сродни путешествию за рубеж. Если вы не желаете испытывать затруднений в общении, полистайте разговорник Джо Касселза.
Не все пользователи 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