Консоль: друг или враг?


нет комментариев.

Введение

Некоторые пользователи операционных систем семейства GNU/Linux боятся консоли как огня. Они привыкли к графическим интерфейсам и не желают сталкиваться с текстовым режимом. Для входа в графическую подсистему не вводят команду "startx", для перемещения по файловой системе предпочитают такие менеджеры, в которых мышке уделено не малое значение и так далее. Список примеров можно продолжать бесконечно. Ведь чаще бывает так, что требуемое задание проще и быстрее выполнить из терминала, не прибегая к использованию сторонних приложений, а для решения административных задач всегда есть быстрое и гибкое консольное решение, особенно если оформить его в виде shell-скрипта.

Вход

Давайте для начала разберёмся, как попасть в консоль. По умолчанию их, скорее всего, шесть. Это tty1-tty6, а также "бонусная" tty7, на которой запущен X-сервер. По нажатию Ctrl+Alt+(F1-F6) откроется новая сессия, с которой уже можно начинать работу. Способ гибкий, но не удобен при работе в графической среде. Для таких случаев существует множество "терминалов". Примерами могут послужить GNOME Terminal, Konsole, Yakuake, LXTerminal, Terminator, Eterm. Найти терминал можно в меню вашей рабочей среды.

Примечание: чтобы ещё более качественно "слиться" с терминалом, я советую скачать "Yakuake": неплохое приложение, похожее на консоль игры "Quake":



Общие правила использования

Примечание: этот  раздел статьи писался в расчёте на то, что читатель использует bash в качестве shell'а по умолчанию. Для других сред оформление и клавиатурные комбинации могут отличаться, но не радикально

При подключении новой консоли высветится строка приветствия. На моём нетбуке Dell Inspiron Mini 10 она выглядит так: "vladimir@vladimir-Inspiron-1011:~$ ". Вот как она расшифровывается:
"vladimir" - имя текущего пользователя. Оно используется и для входа в систему.
"vladimir-Inspiron-1011" - имя компьютера. Используется при удалённом доступе по сети.
"~" - открытая директория. В данном случае - домашний каталог ("~").
"$" - знак пользователя.  У суперпользователя будет не "$", а "#".

В командной строке действуют особые сочетания клавиш для навигации и работы с буфером обмена. Так, по "Ctrl-A" курсор переходит в начало строки, по "Ctrl-U" можно удалить текущую строку, а "Ctrl-С" прервёт выполнение команды. Для копирования предназначена клавиатурная комбинация "Ctrl-Shift-C", а для вставки - "Ctrl-Shift-V". Если речь идёт о программе просмотра, то выход назначен на клавишу "Q". И не стоит забывать про автодополнение по нажатию "TAB".

Полезные консольные команды

Примечание: любая команда среды является отдельной утилитой. Возможно, в комплектации вашей ОС отсутствуют некоторые из упомянутых ниже. Получить их можно из репозитория. Для Debian GNU/Linux и Ubuntu: "sudo apt-cache search ключевые_слова" с последующим "sudo apt-get install имя_найденного_пакета".


1) cd

Утилита смены директории (cd = change directory). Если вы хотя бы раз запускали "командную строку Windows" (эмулятор MS-DOS), то с "cd" знакомы наверняка. Главное помнить, что привычный для пользователей Windows обратный слеш (\), служащий для оформления путей к файлам и папкам, в UNIX'ах обозначается прямым (/), как в адресах интернет-ресурсов, а имена чувствительны к регистру. То есть Vlsu и vlsu - это два абсолютно разных объекта.
cd адрес/назначения           переход к каталогу "адрес/назначения"
cd адрес\ c\ плохим\ именем   переход к каталогу "адрес с плохим именем"
cd "адрес с плохим именем"    переход к каталогу "адрес с плохим именем"
cd ..                         переход на уровень вверх
cd -                          переход назад
Примечание: если имя каталога назначения имеет недопустимые для cd символы (пробел, >, < и т.п.), то их необходимо экранировать, т.е. перед каждым недопустимым символом поставить знак обратного слеша(\). 

2) ls

Просмотр содержимого директории (ls = list directory contents). В MS-DOS ей соответствует dir. Вот некоторые часто используемые ключи:
ls -a или ls --all   отображать все файлы, включая скрытые (начинающиеся с .)
ls --author          отображение авторов файлов
ls -B                не отображать резервные копии (оканчивающиеся ~)
ls -h                отображение размеров файлов в КБ, МБ, ГБ (h - от Human readable)
ls -l                отображать подробную информацию
ls -r                смена порядка сортировки
ls -R                рекурсивное отображение каталогов
ls -s                отображать размеры файлов (в блоках)
ls -S                сортировка по размеру
ls -t                сортировать по времени
ls -v                сортировка по версии

3) cp

Копирования файлов и создание ссылок (cp = copy). Досовская утилита схожего назначения называется copy.
cp -f   копирование с автоматической перезаписью (без запроса)
cp -l   создание ссылок
cp -R   рекурсивное копирование каталогов
cp -u   обновление файлов (файл скопируется, если он новее или отсутствует в каталоге назначения)

4) mv

Перемещение и переименование отдельных файлов и/или каталогов (mv = move). Как вы уже догадались, в ДОСе команда зовётся move.
mv -T vlsu1.sh vlsu2.sh   переименовать файл "vlsu1.sh" в "vlsu2.sh"
mv vlsu1.sh scripts       переместить файл "vlsu1.sh" в папку "scripts"
mv -t scripts vlsu1.sh    переместить файл "vlsu1.sh" в папку "scripts"

5) ln

Создание как жестких, так и символьных ссылок (ln = links). Жесткие ссылки указывают на физический индекс файла (inode) и должны быть созданы в той же файловой системе, что и оригинал. Символьные ссылки указывают исключительно на адрес файла.
ln vlsu1.sh start_vlsu1.sh      создать жёсткую ссылку "start_vlsu1.sh" на файл "vlsu1.sh"
ln -s vlsu1.sh start_vlsu1.sh   создать символьную ссылку "start_vlsu1.sh" на файл "vlsu1.sh"

6) mkdir

Создание новой директории (mkdir = make directories).
mkdir новая_папка       создание директории "новая_папка"
mkdir folder1 folder2   создание двух новых директорий: "folder1" и "folder2"

7) touch

Создание файлов. Хотя основное назначение утилиты - изменение атрибутов времени.
touch vlsu1.sh            создание файла "vlsu1.sh"
touch vlsu1.sh vlsu2.sh   создание файлов "vlsu1.sh" и "vlsu2.sh"

8) split

Разбиение файла на части. Данный способ удобен при пересылке больших файлов по электронной почте, хотя минусом можно назвать то, что собрать файл обратно можно только из консоли Linux: учитывайте это обстоятельство.
split -b10240k film.avi part   разбиение файла "film.avi" на куски размером 10 МБ, когда каждая часть будет с именем "part", а точнее "part.aa", "part.ab", "part.ac" и т.д.

9) cat

Просмотр и объединение файлов (cat = concatenate files and print on the standard output). Объединению подлежат файлы, разбитые командой "split"
cat part.* > film.avi      собрать файл "film.avi" (противоположно примеру про "split")
cat vlsu1.sh               просмотреть файл "vlsu1.sh"

10) echo

Отображение текста. Широко применяется при написании shell-скриптов.
echo "привет всем"               вывести на экран надпись "привет всем"
echo "привет всем" > vlsu1.txt   записать в файл "vlsu1.txt" строку "привет всем"

11) grep

Поиск фразы в файле.
grep 'привет всем' vlsu1.txt   найти строку 'привет всем' в файле "vlsu1.txt" 

12) more

Постраничный просмотр информации.
more vlsu1.sh      просмотреть файл "vlsu1.sh"
more -p vlsu1.sh   просмотреть файл "vlsu1.sh" без прокрутки (вместо этого экран будет очищаться)

13) less

Расширенный просмотр информации..
less vlsu1.sh   просмотреть файл "vlsu1.sh"

14) vi

Консольный текстовый редактор, чаще всего используемый программистами для правки исходных текстов. Я советую установить "vim" (vim = vi improved). Он имеет гораздо больше усовершенствований, по сравнению с "vi" (выдержка из man vim: По сравнению с Vi, Vim имеет много усовершенствований: многократная отмена операций, множественность окон и буферов, подсветка синтаксиса, правка командной строки, автодополнение имён файлов, встроенная справка, визуальное выделение и т.п. См. ":help vi_diff.txt" для получения полного списка различий между Vim и Vi.). После установки VIM'а он заменит собой ссылку на "vi".
vi vlsu1.html       открыть для правки файл "vlsu1.html" 
vi -R vlsu1.html    открыть файл "vlsu1.html" в режиме "Только для чтения"
vim -v vlsu1.html   открыть для правки файл "vlsu1.html" в классическом "vi"

15) nano

Ещё один текстовый редактор (nano = nano's another editor, an enhanced free Pico clone). Не упомянуть его нельзя, так как он является стандартным консольным текстовым редактором в дистрибутиве Debian, пока не установлена какая-либо графическая среда.
nano vlsu1.html                открыть для правки файл "vlsu1.html"
nano '/etc/apt/sources.list'   открыть для правки файл конфигурации репозиториев

16) man

Просмотр документации по программам (man = manual pages).
man man   документация по команде "man" (принято считать, что это первое, что должен набрать новичёк в консоли)
man ls    документация по команде "ls"

17) info

Постраничный просмотр документации по программам. Увы, но справочная информация для "info" поставляется для меньшего числа утилит, чем для "man".
info diff                        документация по команде "diff"
info coreutils 'ls invocation'   документация по команде "ls"

18) cmp

Сравнение файлов (cmp = compare two files byte by byte).
cmp vlsu1.sh vlsu2.sh         сравнить файлы "vlsu1.sh" и "vlsu2.sh"
cmp vlsu1.sh vlsu2.sh > log   сравнить файлы "vlsu1.sh" и "vlsu2.sh",  отчёт записать в файл "log"

19) diff

Также программа для сравнения двух файлов. Главное отличие от "cmp" - вывод полного отчёта, как соответствий, так и различий.
diff vlsu1.sh vlsu2.sh         сравнить файлы "vlsu1.sh" и "vlsu2.sh"
diff vlsu1.sh vlsu2.sh > log   сравнить файлы "vlsu1.sh" и "vlsu2.sh",  отчёт записать в файл "log"

20) tar

Утилита для работы с "родными" для Linux архивами, то есть чистый "tar" и "tar, упакованный в *".
tar cvf vlsu.tar vlsu        запаковать папку "vlsu" в архив "vlsu.tar"
tar xpvf vlsu.tar vlsu       распаковать архив "vlsu.tar"
tar zcvf vlsu.tar.gz vlsu    запаковать папку "vlsu" в архив "vlsu.tar.gz"
tar zxvf vlsu.tar.gz         распаковать архив "vlsu.tar.gz"
tar jxvf vlsu.tar.bz2        распаковать архив "vlsu.tar.bz2"
tar tf vlsu.tar | less       просмотреть содержимое архива "vlsu.tar"
tar ztf vlsu.tar.gz | less   просмотреть содержимое архива "vlsu.tar.gz"

21) gzip

Сжатие файлов в архивы формата "*.gz".
gzip vlsu         запаковать папку "vlsu" в архив "vlsu.gz"
gzip -d vlsu.gz   распаковать архив "vlsu.gz"

22) unzip

Распаковка zip-архивов.
unzip vlsu.zip   распаковать архив "vlsu.zip"

23) unrar

Распаковки rar-архивов. Является проприетарной и не поддерживаемой компанией Canonical. Для её установки в Ubuntu необходимо сначала подключить multiverse-репозиторий. Кстати, данный пакет автоматически скачается при загрузке пакета (lu/ku/xu/u)buntu-restricted-extras.
unrar vlsu.rar   распаковать архив "vlsu.rar"

24) sudo

Выполнение команд от имени суперпользователя (sudo = super user do). Перед отправкой на выполнение будет запрошен пароль администратора - при вводе на экране не буде отображаться никаких опознавательных знаков: ни звёздочек, ни точек - завершите ввод и нажмите Enter.
sudo aptitude   выполнить команду "aptitude" от имени суперпользователя

25) su

Утилита, очень напоминающая sudo. Отличие в том, что "sudo" позволяет выполнить 1 команду от имени root'а, а "su" передаёт терминал рута во владение администратору. Может показаться странным, но "su" в Ubuntu требует привилегий суперпользователя. В Debian GNU/Linux пароль root'а задаётся при установке, поэтому "su" нормально запускается без "sudo".
su   получить доступ к консоли суперпользователя

26) gksu / kdesudo

Аналоги "sudo", предназначенные для графических интерфейсов
gksu nautilus     запустить "Nautilus" от имени суперпользователя
kdesudo dolphin   запустить "Dolphin" от имени суперпользователя

27) mount

Монтирование разделов и образов дисков. Монтированию через данную команду чаще всего подлежат сменные носители и образы дисков, либо разделы, не прописанные в /etc/fstab.
mount -t vfat /dev/sda1 /mnt/disk1 -o iocharset=utf8,codepage=866   монтирование FAT-диска с кодировкой UTF-8 и именем "/dev/sda1" в директорию "/mnt/disk1"
mount -t ntfs-3g /dev/sda2 /mnt/disk2 -o umask=0,nls=utf8           монтирование NTFS-диска с кодировкой UTF-8 и именем "/dev/sda2" в директорию "/mnt/disk2"
mount -t iso9660 /1.iso /mnt/disk3 -o loop                          монтирование ISO-образа с именем "/1.iso" в директорию "/mnt/disk3"

28) umount

Размонтирование разделов и образов дисков.
umount /mnt/disk1      размонтировать подключение в директории "/mnt/disk1"
umount -f /mnt/disk1   принудительно размонтировать подключение в директории "/mnt/disk1"
umount -a              размонтировать ВСЕ файловые системы

29) adduser / addgroup

Добавление нового пользователя/группы пользователей в систему. Команду можно запускать как с параметрами (имя, группа, UID...), так и без них. В последнем случае будет задано несколько вопросов. Для новичков предпочтителен именно второй вариант, так как он действует наподобие мастера настройки.
adduser newuser   добавить пользователя "newuser" в систему
addgroup home     добавить группу "home" в систему

30) gpasswd

Чрезвычайно полезное приложение, позволяющее управлять группами пользователей из консоли.
gpasswd -a vladimir admin   добавить пользователя "vladimir" в группу "admin"
gpasswd -d igor cdrom       удалить пользователя "igor" из группы "cdrom"

31) chmod

Смена прав доступа к файлу. Права доступа можно обозначать как цифрами, так и буквенными комбинациями. Первый элемент - владелец, второй элемент - группа владельца, третий элемент - все остальные
Цифры элементов достигаются суммированием: "4" - чтение, "2" - запись, "1" - выполнение. Значения по умолчанию: файлы - "644", каталоги - "755"
chmod 755 vlsu1.sh   присвоить для файла "vlsu1.sh" права "755"
chmod +x vlsu2.sh    добавить ВСЕМ возможность запускать файл "vlsu2.sh" 

32) chown

Изменение владельца и/или группы для указанных файлов. Группу/владельца можно задавать как их именами, так и числовыми идентификаторами
chown -R vladimir /mnt/flash     изменить для каталога "/mnt/flash" и всех вложенных владельца на "vladimir"
chown -R :admin /usr/share       изменить для каталога "/usr/share" и всех вложенных группу владельца на "admin"
chown vladimir:admin /vlsu1.sh   изменить для файла "/vlsu1.sh" владельца на "vladimir", группу на "admin"

33) halt

Выключение компьютера. Идеально подходит для старых машин без поддержки расширенного управления питанием.
halt   выключить компьютер

34) reboot

Перезагрузка компьютера.
reboot   перезагрузить компьютер

35) shutdown

Пожалуй, самая навороченная из всех утилит завершения сеанса. Она не только позволяет выключить или перезагрузить систему, но и запланировать данные действия с возможностью создания сообщения, которое увидят на компьютерах рабочей группы
shutdown -h 19:40 'сообщение'   выключить компьютер в 19:40, оставив 'сообщение'
shutdown -h now                 немедленно выключить компьютер
shutdown -r 19:40 'сообщение'   перезагрузить компьютер в 19:40, оставив 'сообщение'
shutdown -r now                 немедленно перезагрузить компьютер

36) rm

Удаление файлов и каталогов (rm = remove).
rm vlsu1.sh   удалить файл "vlsu1.sh"
rm -r vlsu    рекурсивное удаление каталога "vlsu"
rm -f vlsu    удаление каталога "vlsu" без вывода запросов
rm -i vlsu    удаление каталога "vlsu" с выводом запросов

37) rmdir

Удаление пустых каталогов (rmdir = remove directory).
rmdir vlsu      удаление пустого каталога "vlsu"
rmdir -p vlsu   удаление пустого каталога "vlsu" и всех пустых высшего уровня

38) mc

Двухпанельный файловый менеджер, напоминающий интерфейс "Norton Commander" (mc = midnight commander). Имеет множество чрезвычайно полезных функций, а также удобные клавиатурные сочетания. Можно работать и мышью, и клавиатурой. Более подробное описание Вы можете найти во встроенной помощи.
mc                           запустить "Midnight Commander"
mc ~/vlsu-packages ~/latex   запустить "Midnight Commander", открыв в левой панели папку "~/vlsu-packages", а в правой - "~/latex"

39) wget

Загрузка файлов с удалённых компьютеров. Можно скачивать как отдельные объекты, так и группы объектов. Ниже приведены лишь некоторые варианты использования.
wget ftp://адрессервера/file              скачать файл "file" с сервера "ftp://адрессервера/"
wget -c ftp://адрессервера/file           докачать файл "file" с сервера "ftp://адрессервера/" (например, после обрыва связи)
wget -m http://адрессервера/              создать зеркало сайта "http://адрессервера/"
wget -r -l0 -np -k http://адрессервера/   создать копию сайта "http://адрессервера/" для домашнего просмотра

40) w3m

Просмотр веб-страниц. Да-да, можно выходить в сеть из консоли. К приложению "w3m" нужно отнестись серьёзно: эта кроха, не имеющая графического интерфейса, обрабатывает даже фреймы! Страницы грузятся значительно быстрее, чем в графических конкурентах. Никто не запрещает зайти на Google, ввести ключевые слова в строку поиска и начать путешествие. А потом ещё поспорить с другом, что консоль умеет всё!
w3m http://google.com          перейти на сайт Google
w3m http://vlsu.blogspot.com   перейти на сайт "Записки линуксоида Vlsu"
w3m ~/index.html               открыть сохранённую копию html-страницы


Я описал далеко не все команды и даже не ВСЕ полезные команды. Ничего не сказано о консольных утилитах управления пакетами (вроде "aptitude", "apt-get", "apt-cache"...) - их набор зависит от дистрибутива и пакетной системы. К тому же есть такие утилиты, которые я считаю чрезвычайно полезными, но и в то же время потенциально опасными для новичков. Как пример приведу "dd" и "visudo". Если на вашем пути в каком-либо How-TO встретится необходимость использовать их, то делайте всё согласно приводимым инструкциям.
Удачи!

Ссылки
В данной работе я не использовал какие-либо статьи интернета: о многих командах узнал когда впервые познакомился с Linux-окружением. Материалы для изучения брал из документаций по утилитам, и "man" с "info" были моими лучшими товарищами в освоении терминала, благодаря которым я поверил, что консоль - это друг, а не враг.

"Комментарии отсутствуют.



Лицензия:CC BY-NC-SA 3.0 Unported (c) : "Записки линуксоида Vlsu". 2011-2015 гг.
При копировании материалов сайта ссылка обязательна!Подробнее...

Полная версия | Мобильная версия