Вполне вероятна ситуация, при которой вам придется сталкиваться с командным режимом. Как правило, это является результатом неправильной конфигурации системы или вам просто нужно выполнить какие-либо сервисные процедуры. Хотя, возможно, вы просто хотите как можно лучше разобраться с Linux. Многие удобные (и мощные) инструменты есть только в текстовом виде.
Необходимые примечания
При написании примеров команд очень часто в начале ставится специальный символ "$", показывающий, что набранное выполняется от имени простого пользователя. Если же необходимы привилегии суперпользователя, то ставится "#". В принципе, "#" можно заменить командой sudo (если она настроена для запуска от вашего имени).
Очень часто домашний каталог обозначается как "~". То есть, если имя пользователя joe, то ~ эквивалентно пути /home/joe.
ПРОПИСНЫЕ и строчные буквы - это различные символы, и имена Name и name - это различные имена. То есть возможно одновременное существование файлов aaa и ААА в одной папке.
Имя файла - всего лишь ссылка на него. То есть у файла может быть несколько имен. Это называется "жёсткая ссылка", также есть "символическая ссылка", для которой создаётся специальный файл, указывающий на исходный объект. Символическую ссылку можно создавать для папок и файлов на любых разделах и носителях (даже съёмных).
Исполняемые файлы не имеют расширения (конечно, могут и иметь, но "выполнимость" определяется не по нему). Право на выполнение - такой же атрибут, как право на запись/чтение. При желании можно разрешить/запретить любому пользователю выполнять любую команду.
Командные интерпретаторы
За "общение" пользователя с системой отвечает так называемая "оболочка", она же командный интерпретатор (вспомните DOS и его COMMAND.COM). Только важным отличием от того же DOS и Windows с их скудными инструментами являются большие возможности, предоставляемые текстовыми инструментами. Так вот, bash - это стандартный линуксовский командный интерпретатор. Кроме того, под linux существуют крайне различные его заменители (ash, fish, csh и другие). Используемая оболочка прописана в опциях пользователя.
По умолчанию, bash загружается сразу, как вы вошли в систему или запустили какой-нибудь эмулятор терминала (Konsole, xterm, gnome-terminal и другие). Собственно, он и обрабатывает всё, что вы вводите.
База
Обычно команды имеют следующий вид:
команда параметры аргументы
например, rm -rf /
команда rm предназначена для удаления;
ключ r показывает, что нужно удалять рекурсивно, то есть будут удалена папка и все файлы/подпапки этого каталога (вообще, для удаления каталогов применяется rmdir);
ключ f указывает, что ничего при выполнении выводить не надо;
аргумент / означает, что удалять мы будем корневой каталог, то есть в результате выполнения у нас удалится всё, что подмонтировано в системе (уточняю: всё, что можно удалить).
Вот пара команд, которые наиболее часто используются при работе, и их стоит запомнить:
man - показ справки по команде;
$ man rm - руководство, как пользоваться rm;
cd - сменить каталог на указанный;
$ cd /home/oni
cp - копировать файл/каталог;
$ cp /home/oni/temp/aaaa /home/oni/work/
ls - показать содержимое указанного каталога (если ничего не указано, то отображается содержимое текущей папки);
$ ls /home
Очень полезным является ключ -а, про добавлении которого показываются скрытые файлы и папки (имя которых начинается с точки, например, .config).
mv - переместить файл (если каталог, то нужно указывать ключ -r). Также применяется при переименовании, ведь, по сути, между переименованием и перемещением нету разницы.
$ mv ~/somefile ~/somedirectory/
$ mv ~/somefile ~/newname
ln - создает жёсткую ссылку, если добавить ключ -s, то создаётся символическая ссылка.
$ ln ~/myfile ~/directory/file - редактирование любого из этих фалов приведёт к изменению исходного файла.
find - поиск, имеет несколько нестандартный вид. Имеет много параметров, позволяет искать по имени, размеру и т. п.;
$ find ~/work -name document - ищет в ~/work файл с именем document;
top - отображает таблицу активных процессов в реальном времени;
ps - отображает моментальный "снимок" процесса;
$ ps aux - выведутся все текущие процессы;
grep - поиск текстовой строки в файлах.
$ grep line /home/
Можно воспользоваться перехватом вывода и подключить grep к выводу ps.
$ ps aux | grep bash выводит информацию о процессах, которые содержат "bash" в выводимом тексте.
Ну раз заговорили о процессах, то стоит упомянуть следующие.
kill - убивает процесс по его идентификатору (PID);
killall - убивает все процессы с указанным именем;
# kill 1 - убивает процесс init (у него всегда PID=1);
$ killall opera
eject - открывает устройство чтения компакт-дисков;
$ eject -T - открыть, если закрыт, и наборот;
shutdown - позволяет перезагружать (-r), выключать компьютер (-h);
# shutdown -h now - выключает компьютер незамедлительно;
также для перезагрузки используется команда reboot, а для выключения - halt;
# reboot
# halt
Это некоторые из команд, позволяющих чувствовать себя в консоли уже не таким ничего не понимающим чайником. А вообще, для файловых операций можно установить консольный файловый менеджер midnight commander и выполнять им очень многое.
# aptitude install mc
Дополнительные советы
При выполнении команды (наборе пути) не нужно полностью всё писать. Есть великая клавиша "Tab", которая заведует функцией автоматического завершения.
Например, вместо того, чтобы набирать
cd /media/win_d/Program\ Files/ProcessExplorer/
можно набрать:
cd /me{TAB}/w{TAB}d/P{TAB}/Pr{TAB}
Так как пробел является специальным символом, разделяющим аргументы, то при указании имени, содержащего пробел, нужно перед ним ставить бэкслэш (\ ). Аналогично с символами типа *, ? и другими. Хотя можно путь взять в одиночные или двойные кавычки. Зато это позволяет создавать файлы с именами, которые невозможны в Windows/DOS.
Для большего удобства сначала стоит отредактировать файл ~/.bashrc, который представляет собой файл настроек bash. Если вам надо, чтобы какие-либо команды выполнялись каждый раз при вашем запуске bash, то их тоже можно указать здесь. Также стоит раскомментировать эти строчки:
if [ "$TERM" != "dumb" ]; then eval "`dircolors -b`" alias ls="ls -F --color --file-type" alias dir='ls --color=auto --format=vertical' alias vdir='ls --color=auto --format=long' fi
Это приведет к тому, что при выполнении ls список будет разноцветным.
Также стоит включить функцию автозавершения.
if [ -f /etc/bash_completion ]; then . /etc/bash_completion fi
Это несколько ускорит работу, так как теперь при указании аргументов не надо их писать полностью. Например, вместо sudo aptitude install bb можно сделать так: in{TAB}. Аналогично и для других случаев.
Антон "Oni"
ЛИПАРИН,
oni-ddr.livejournal.com
Комментарии
Особенно радует пример для bash
rm -rf /
Ведь найдётся кто-нибудь, который это попробует на рабочей системе. Мозги есть у автора?