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

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

Материал из Linuxformat
(Различия между версиями)
Перейти к: навигация, поиск
(''mv'' и ''cp'')
(Просмотр: ''head, tail'' и ''cat'')
Строка 216: Строка 216:
 
содержимое. Если файл текстовый, то это можно сделать прямо в терминале, вводя нужные команды. Если вам нужно вывести только первые 10 строк файла (чтобы, например, убедиться, что вы нашли именно то, что хотели), используйте ''head''.
 
содержимое. Если файл текстовый, то это можно сделать прямо в терминале, вводя нужные команды. Если вам нужно вывести только первые 10 строк файла (чтобы, например, убедиться, что вы нашли именно то, что хотели), используйте ''head''.
  
Перейдите в каталог, где хранится нужный файл, а затем набери-
+
Перейдите в каталог, где хранится нужный файл, а затем наберите ''head'' и имя файла. Для просмотра первых 10 строк файла '''Text.txt'''
те ''head'' и имя файла. Для просмотра первых 10 строк файла '''Text.txt'''
+
 
напишите:
 
напишите:
  
Строка 237: Строка 236:
 
  cat Text.txt
 
  cat Text.txt
  
Она действительно выводит все содержимое файла ''Text.txt'', но увидеть вы сможете только то, что помещается на экране. Начало файла
+
Она действительно выводит всё содержимое файла ''Text.txt'', но увидеть вы сможете только то, что помещается на экране. Начало файла
пронесется со свистом у вас перед глазами, поэтому, чтобы посмотреть
+
пронесётся со свистом у вас перед глазами, поэтому, чтобы посмотреть
 
его, придется использовать полосу прокрутки. Альтернативный вариант – применить команду ''less'':
 
его, придется использовать полосу прокрутки. Альтернативный вариант – применить команду ''less'':
  
 
  less Text.txt
 
  less Text.txt
  
В этом случае, для перехода между страницами файла используются клавиша '''Page Down''', а перемещение по строкам можно осуществлять при помощи клавиш-стрелок. В отличие от ''head'' и ''tail, less'' не возвращает вас в строку ввода терминала до тех пор, пока вы не нажмете
+
В этом случае, для перехода между страницами файла используются клавиша '''Page Down''', а перемещение по строкам можно осуществлять при помощи клавиш-стрелок. В отличие от ''head'' и ''tail, less'' не возвращает вас в строку ввода терминала до тех пор, пока вы не нажмёте
 
клавишу '''Q''' для выхода.
 
клавишу '''Q''' для выхода.
  

Версия 14:23, 28 октября 2010

Содержание

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

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

Не все пользователи 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

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