Изучаем командную строку linux: навигация по файлам.


Дата: 06 апреля 2010





О чем?
Эта статья поможет новичкам продвинуться в изучении командной оболочки linux. Будут приведены ряд команд позволяющих работать с файлами и программами из командной оболочки. Рекомендуется читать всем начинающим linux пользователям.

Что нужно знать.
Команды в linux представляют собой сокращение от английских слов. Команды вводятся в эмулятор терминала и в большинстве случаев выдаёт ответ, либо завершает работу после выполнения своих действий. Команды могу запускаться без опций, либо с опциями начинающиеся с знака - (тире) с значениями (к примеру ls -a). Опции могут также иметь эквивалент полного слова. Такие опции необходимо задавать с -- (двумя тире), например ls --help. Также опции команды могут быть смешаны при одном вызове, например rm -Rfv. Также стоит всегда помнить, что linux чувствителен к регистру имен файлов и папок.

Если не хватает прав.
Если вам необходимо использовать терминал для администрирования системы, то обратитесь к руководству к вашему дистрибутиву для получении информации как стать суперпользователем.
В debian это можно сделать так:
sudo su

Навигация по файловой системе.
Это базовые команды в linux. Они помогут вам перемещаться по каталогам файловой системы.

Узнать в каком каталоге находитесь в данный момент.

pwd
Пример:
subsanek@subsanek-laptop:~$ pwd
/home/subsanek

Когда вы в терминале вы обязательно находитесь внутри какого-нибудь каталога. Команда pwd выводит полный путь до текущего каталога. Это бывает полезно для навигации чтобы определить текущую позицию и продумать следующие команды.

Узнать список файлов и папок в текущей папке.
ls
Пример:

subsanek@subsanek-laptop:/$ ls
bin dev initrd.img lost+found opt sbin sys var
boot etc initrd.img.old media proc selinux tmp vmlinuz
cdrom home lib mnt root srv usr vmlinuz.old

Очень часто необходимо вывести список файлов из папки. Для этого есть знаменитая утилита ls. Она выводит список файлов и папок в данном каталоге или любом другом при указании полного пути после команды. Но команда ls способна на гораздо большие возможности при указании ключей. Хорошее описание опций для ls можно получить выведя справку по команде: ls --help

subsanek@subsanek-laptop:/$ ls --help
Использование: ls [КЛЮЧ]... [ФАЙЛ]...
Просмотр информации о файлах (по-умолчанию в текущей директории)
Сортировка спика по алфавиту если не указаны опции -cftuvSUX или --sort.

Аргументы, обязательные для длинных ключей, обязательны и для коротких.
-a, --all не скрывать файлы начинающиеся с .
-A, --almost-all не выдавать подразумеваемые . и ..
--author вместе с -l, печатать автора каждого файла
-b, --escape печатать восьмеричные escape-последовательности
вместо неграфических знаков
--block-size=SIZE использовать блоки размером SIZE байт
-B, --ignore-backups не выдавать файлы оканчивающиеся на ~
-c с -lt: сортировать по времени изменения; с -l:
выдавать время изменения и сортировать по имени,
иначе сортировать по времени изменения
-C выдавать список в несколько колонок
--color[=КОГДА] указывает, нужно ли выделять типы файлов цветом.
КОГДА может быть `never' (не выделять), `always'
(выделять) или `auto' (зависит от терминала)
-d, --directory выдавать имена каталогов, а не их содержимое, а
также не следовать по символьным ссылкам
-D, --dired генерировать вывод для режима Emacs Dired
-f не сортировать, включает -aU, выключает -ls --color
-F, --classify добавлять к имени файла индикатор (один из */=>@|)
--file-type аналогично, но не добавлять `*'
--format=СЛОВО across -x, commas -m, horizontal -x, long -l,
single-column -1, verbose -l, vertical -C
--full-time синоним -l --time-style=full-iso
-g как -l, но не выводить владельца
--group-directories-first
group directories before files.
augment with a --sort option, but any
use of --sort=none (-U) disables grouping
-G, --no-group в длинном формате не печатать имена групп
-h, --human-readable c -l, печатать размеры в удобном для человека виде
(например, 1K 234M 2G)
--si то же, но использовать степени 1000, а не 1024
-H, --dereference-command-line
следовать по символьным ссылкам в командной строке
--dereference-command-line-symlink-to-dir
следовать по всем символьным ссылкам в командной
строке, которые указывают на каталог
--hide=ШАБЛОН не показывать файлы, соответствующие ШАБЛОНУ оболочки
(отменяется ключами -a или -A)
--indicator-style=СТИЛЬ добавлять к именам элементов индикатор с
указанным СТИЛЕМ: none (пусто, по умолчанию),
slash (косая черта, -p),
file-type (тип файла, --file-type),
classify (определяется видом файла, -F)
-i, --inode печатать индекс каждого файла
-I, --ignore=ШАБЛОН не показывать файлы, соответствующие ШАБЛОНУ оболочки
-k то же, что и --block-size=1K
-l использовать широкий формат
-L, --dereference показывая информацию для символьной ссылке,
показывать информацию о файле, на который ссылка
ссылается
-m выдавать список на всю ширину через запятую
-n, --numeric-uid-gid как -l, но выдавать числовые UID и GID
-N, --literal печатать имена как есть (не обрабатывать особо,
например, управляющие знаки)
-o как -l, но не выводить информацию о группе
-p, --indicator-style=slash добавлять индикатор / к каталогам
-q, --hide-control-chars печатать ? вместо не графических символов
--show-control-chars показывать непечатаемые символы (по умолчанию
если программа не `ls' и вывод идет не на
терминал).
-Q, --quote-name заключать имя файла в кавычки
--quoting-style=WORD использовать тип заключения в кавычки WORD:
literal, shell, shell-always, c, escape
-r, --reverse обратный порядок при сортировке
-R, --recursive рекурсивно отображать подкаталоги
-s, --size вывести объем, занимаемый каждым файлом, в блоках
-S сортировать по размеру файла
--sort=СЛОВО сортировать по СЛОВУ, а не по имени:
none (без сортировки) -U,
extension (расширение) -X, size (размер) -S,
time (время) -t, version (версия) -v
--time=СЛОВО с ключом -l, показывать вместо времени изменения
время, заданное СЛОВОМ:
atime -u, access -u, use -u (время доступа),
ctime -c или status -c (время изменения статуса);
если --sort=time, использовать указанное
время в качестве ключа сортировки
--time-style=СТИЛЬ с -l, показывать время используя указанный СТИЛЬ:
full-iso, long-iso, iso, locale, +ФОРМАТ.
ФОРМАТ интерпретируется как в `date'; если ФОРМАТ
-- это ФОРМАТ1<перевод-строки>ФОРМАТ2, ФОРМАТ1
применяется к старым файлам, а ФОРМАТ2 к новым;
если к СТИЛЮ добавлен префикс `posix-', то он
действует только в локали, отличной от POSIX
-t сортировать по времени изменения
-T, --tabsize=РАЗМЕР использовать табуляцию указанного РАЗМЕРА, а не 8
-u with -lt: sort by, and show, access time
with -l: show access time and sort by name
otherwise: sort by access time
-U do not sort; list entries in directory order
-v natural sort of (version) numbers within text
-w, --width=COLS использовать ширину экрана в COLS вместо текущей ширины
-x выводит записи по строкам, вместо колонок
-X алфавитная сортировка по расширению записи
-Z, --context выводит любой контекст безопасности SELinux для каждого файла
-1 выводить по одному файлу в строке
--help показать эту справку и выйти
--version показать информацию о версии и выйти

SIZE может быть (или может число необязательно оканчивающееся на) одно из:
kB 1000, K 1024, MB 1,000,000, M 1,048,576, итак далее для G, T, P, E, Z, Y.

По умолчанию цвет не используется для различения файлов. Это
эквивалентно использованию --color=none. Использование ключа --color
без необязательного аргумента КОГДА эквивалентно --color=always. С
ключом --color=auto, коды цвета будут выдаваться, только если
стандартный вывод подключен к терминалу (tty). На цвета может влиять
переменная среды LS_COLORS; ее можно легко установить с помощью
команды dircolors.

Exit status:
0 if OK,
1 if minor problems (e.g., cannot access subdirectory),
2 if serious trouble (e.g., cannot access command-line argument).

Как видно из справки, команда ls предлагает очень много возможностей. Моя любимая комбинация команды:
ls -la1
С помощью этих опций можно вывести список файлов с подробными сведениями о размере, датах правах на файлы и папки по одному файлу в строке.
Примерный вывод команды ls -la1

subsanek@subsanek-laptop:/$ ls -la1
итого 112
drwxr-xr-x 24 root root 4096 2010-04-06 07:21 .
drwxr-xr-x 24 root root 4096 2010-04-06 07:21 ..
drwxr-xr-x 2 root root 4096 2010-04-05 15:58 bin
drwxr-xr-x 3 root root 4096 2010-03-20 21:24 boot
lrwxrwxrwx 1 root root 11 2010-02-13 16:12 cdrom -> media/cdrom
drwxr-xr-x 2 root root 4096 2010-02-13 16:55 .config
drwxr-xr-x 16 root root 3840 2010-04-06 11:10 dev
drwxr-xr-x 149 root root 12288 2010-04-06 11:10 etc
drwxr-xr-x 6 root root 4096 2010-02-13 21:17 home
lrwxrwxrwx 1 root root 33 2010-03-05 14:29 initrd.img -> boot/initrd.img-2.6.31-20-generic
lrwxrwxrwx 1 root root 31 2010-02-18 00:52 initrd.img.old -> boot/initrd.img-2.6.32.8-custom
drwx------ 4 root root 4096 2010-02-13 16:55 .kde
drwxr-xr-x 18 root root 12288 2010-03-26 14:12 lib
drwx------ 2 root root 16384 2010-02-13 16:12 lost+found
drwxr-xr-x 3 root root 4096 2010-04-06 11:10 media
drwxr-xr-x 2 root root 4096 2009-10-20 04:04 mnt
drwxr-xr-x 3 root root 4096 2010-02-27 15:07 opt
dr-xr-xr-x 162 root root 0 2010-04-06 11:20 proc
drwx------ 19 root root 4096 2010-04-05 16:34 root
drwxr-xr-x 2 root root 4096 2010-03-31 10:24 sbin
drwxr-xr-x 2 root root 4096 2009-10-20 03:05 selinux
drwxr-xr-x 3 root root 4096 2010-02-17 01:40 srv
drwxr-xr-x 12 root root 0 2010-04-06 11:20 sys
drwxrwxrwt 13 root root 4096 2010-04-06 11:29 tmp
drwx------ 4 root root 4096 2010-03-24 15:15 .Trash-0
drwxr-xr-x 11 root root 4096 2010-02-17 01:40 usr
drwxr-xr-x 15 root root 4096 2010-04-05 16:32 var
lrwxrwxrwx 1 root root 30 2010-03-05 14:29 vmlinuz -> boot/vmlinuz-2.6.31-20-generic
lrwxrwxrwx 1 root root 28 2010-02-18 00:52 vmlinuz.old -> boot/vmlinuz-2.6.32.8-custom


Переход в другой каталог.
Если после pwd вы видите, что данный каталог не тот, в котором вам нужно работать, возникает вопрос как перейти в другой каталог. Для этой цели есть команда cd. Команда вызывается как
cd путь_до_нужного_каталога
после этого можно проверить попали вы в нужный каталог командой pwd или ls.
Пример:

subsanek@subsanek-laptop:/$ pwd
/
subsanek@subsanek-laptop:/$ cd /boot/grub
subsanek@subsanek-laptop:/boot/grub$ pwd
/boot/grub
subsanek@subsanek-laptop:/boot/grub$

Как видите, текущий каталог действительно изменился.
Если вам необходимо перейти в свой домашний каталог, то просто введите cd ~
Учтите, что если в пути каталога назначения есть пробелы, то задавайте путь файла в одинарных кавычках.

Создание файлов и каталогов.
Если вам необходимо создать файл, то используйте команду touch:
touch newfile.txt
Для создания каталогов используйте mkdir:
mkdir newdir

Копирование и переименование файлов и каталогов.
Для копирования файлов существует команда cp:
cp путь_файла_источника путь_назначения
Также можно переименовать файл:
cp файл файл_с_новым_именем
Для более сложных действиях (например для создание ссылки) есть опции:

subsanek@subsanek-laptop:~/test$ cp --help
Использование: cp [КЛЮЧ]... [-T] ИСТОЧНИК НАЗНАЧЕНИЕ
или: cp [КЛЮЧ]... ИСТОЧНИК... КАТАЛОГ
или: cp [КЛЮЧ]... -t КАТАЛОГ ИСТОЧНИК...
Копирует SOURCE в DEST, или несколько SOURCE в DIRECTORY.

Аргументы, обязательные для длинных ключей, обязательны и для коротких.
-a, --archive тоже что -dR --preserve=all
--backup[=CONTROL] создавать резервные копии каждого существующего файла назначения
-b похожа на --backup , но не принимает аргументы
--copy-contents копирует содержимое специальных файлов при рекурсивных операциях
-d тоже что -no-dereference --preserve=links
-f, --force if an existing destination file cannot be
opened, remove it and try again (redundant if
the -n option is used)
-i, --interactive prompt before overwrite (overrides a previous -n
option)
-H follow command-line symbolic links in SOURCE
-l, --link создать ссылку вместо копирования
-L, --dereference всегда переходить по символическим ссылкам в SOURCE
-n, --no-clobber do not overwrite an existing file (overrides
a previous -i option)
-P, --no-dereference never follow symbolic links in SOURCE
-p same as --preserve=mode,ownership,timestamps
--preserve[=ATTR_LIST] preserve the specified attributes (default:
mode,ownership,timestamps), if possible
additional attributes: context, links, xattr,
all
--no-preserve=СПИС_АТТР не сохранять указанные атрибуты
--parents добавить исходный путь к КАТАЛОГУ
-R, -r, --recursive копировать рекурсивно каталоги
--remove-destination удалять каждый файл назначения перед тем,
как попыткой скопировать его (обратно к --force)
--sparse=КОГДА управляет созданием разряженных файлов
--strip-trailing-slashes удалять все конечные косые черты из каждого
аргумента ИСТОЧНИК
-s, --symbolic-link создавать символьные ссылки вместо копирования
-S, --suffix=СУФФИКС использовать для запасных копий заданный СУФФИКС
--target-directory=КАТАЛОГ скопировать все ИСТОЧНИКИ в КАТАЛОГ
-T, --no-target-directory считать НАЗНАЧЕНИЕ обычным файлом
-u, --update копировать только тогда когда исходный файл
новее чем файл назначения, или когда файл
назначения отсутствует
-v, --verbose пояснять что будет сделано
-x, --one-file-system оставаться в пределах одной файловой системы
--help показать эту справку и выйти
--version показать информацию о версии и выйти

По умолчанию, разреженные ИСХОДНЫЕ файлы определяются эвристически и
соответствующий ВЫХОДНОЙ файл создается также разреженным. Это поведение,
выбранное --sparse=auto. Укажите --sparse=always, чтобы создавать разреженный ВЫХОДНОЙ
файл всякий раз, когда ИСХОДНЫЙ файл содержит достаточно длинную последовательность нулевых байт.
Используйте --sparse=never для запрещения создания разреженных файлов.

По умолчанию суффикс для запасных копий ~, если только не установлена
переменная окружения SIMPLE_BACKUP_SUFFIX или ключ --suffix. Способ контроля
версий может быть установлен при помощи ключа --backup или переменной
окружения VERSION_CONTROL. Допустимые значения:

none, off никогда не создавать резервных копий (даже если
указан ключ --backup)
numbered, t создавать нумерованные копии
existing, nil если существуют нумерованные копии, то создавать
нумерованные иначе создавать простые
simple. never всегда создавать простые копии

Когда заданы ключи -f и -b, и SOURCE совпадает с DEST cp создает резервную
копию DEST.


Перемещение файлов.
mv откуда куда
Команда mv перемещает файл из одной позиции файловой системы в другую и удаляет исходный файл после успешного завершения. По сути это тоже самое что вызвать команду cp и потом rm.

Удаление файлов.
Команда rm удаляет файлы по заданному имени:
rm имя_файла

Удаление каталогов и файлов внутри них.
Удалять каталоги можно той же командой rm с опцией рекурсивности:
rm -R имя_каталога
Полный список опций команды rm;

subsanek@subsanek-laptop:~/test$ rm --help
Использование: rm [КЛЮЧ]... ФАЙЛ...
Удаляет (ссылки на) ФАЙЛ(ы).

-f, --force игнорировать несуществующие файлы, ни о чем не спрашивать
-i запрашивать подтверждение перед каждым удалением
-I запрашивать подтверждение один раз перед удалением более
чем трех файлов или перед рекурсивным удалением. Не так
назойливо, как -i, но все же предоставляет защиту от
большинства ошибок.
--interactive[=КОГДА] запрашивать подтверждение, КОГДА указано: never
(никогда), once (-I, один раз) или always (-i, всегда).
Если КОГДА не задано, запрашивать всегда.
--one-file-system при рекурсивном удалении иерархии, пропускать все
каталоги, находящиеся не на той же файловой системе,
что и соответствующий аргумент командной строки
--no-preserve-root не обрабатывать `/' особо
--preserve-root отказываться рекурсивно обрабатывать `/'
(по умолчанию)
-r, -R, --recursive рекурсивно удалять каталоги и их содержимое
-v, --verbose пояснять производимые действия
--help показать эту справку и выйти
--version показать информацию о версии и выйти

По умолчанию rm не удаляет каталоги. Используйте ключ --recursive (-r
или -R), чтобы удалить все перечисленные каталоги вместе с их
содержимым.

Для удаления файла, начинающегося с `-' (например: `-foo'),
используйте одну из следующих команд:
rm -- -foo

rm ./-foo

Имейте в виду, что при использовании rm для удаления файла его содержимое
обычно можно восстановить. Используйте shred, если Вам необходима большая
уверенность в невозможности восстановления содержимого.

Report rm bugs to bug-coreutils@gnu.org
GNU coreutils home page:
General help using GNU software:
Report rm translation bugs to

Очень полезно задавать ключ -I для вызова подтверждений действий.

Операции группировки.
Есть очень полезная вещь как операция группировки файлов.
Это символ * (звездочка).
rm *
-Такой вызов удалит все файлы в текущем каталоге.
rm *.png
-Такой вызов удалит все файлы в каталоги с расширением .png
rm arachive*
-Такой вызов удалит все файлы в текущем каталоге с любым расширением имена которых начинаются на archive.
Операции группировки очень помогают выполнять рутинные задачи, благодаря им удалять много файлов намного удобней , чем в GUI.

Получение дополнительной информации о командах.
ls --help
Для вызова подробной справки с прототипом применения и опциями команды задайте опцию --help после команды.

История команд.
500 последних введенных команд вы можете посмотрев набрав команду history

Повторение последней команды.
Если вам нужно быстро повторить вызов последней команды из истории, то можете использовать два восклицательных знака: !!

Комментарии:
Автор: Soft,   дата: 06 апреля 2010   16:21:31
Когда я себе ЮСБ поднимал, для проверок часто комп приходилось перезагружать... соответственно иксы долго грузятся, вот я и грузился сразу в консоль.

моими любимыми командами были:
lsusb
lspci
exit
sudo shutdown
Автор: foobar,   дата: 06 апреля 2010   23:11:49
ИМХО, много копипасты манов.
Автор: Subsanek,   дата: 07 апреля 2010   12:44:36
Много не мало)




 
Добавить комментарий:
Имя: *
e-mail:
Комментарий: *
Введите число 53: *


Архив статей:
Май 2017
Март 2017
Апрель 2016
Март 2016
Октябрь 2013
Сентябрь 2013
Май 2013
Март 2013
Ноябрь 2012
Июль 2012
Июнь 2012
Апрель 2012
Март 2012
Февраль 2012
Апрель 2011
Март 2011
Февраль 2011
Январь 2011
Декабрь 2010
Ноябрь 2010
Октябрь 2010
Сентябрь 2010
Август 2010
Июль 2010
Июнь 2010
Май 2010
Апрель 2010
Март 2010

Случайные:
Установка utf8 кодировки mysql после установки LAMP для читаемости символов

Gnome paint - новый легкий графический редактор

Фонд свободного программного обеспечения и копилефт.

Cairo-dock - функциональный док для Linux

Создание RPM пакетов из исходников

Parted Magic: легкий liveCD дистрибутив для работы с диском





Коллеги:    все
 Linux для всех

Наши баннеры:
linuxnow.ru
linuxnow.ru
Установить баннер