5.3 Управление файлами и каталогами
Slackware Linux организованна таким образом, чтобы быть настолько Unix подобной, насколько это возможно. Традиционно ОС Unix ориентирована на интерфейс командной строки. В Slackware есть так же и графический интерфейс, но командная строка остаётся основным способом управления системой. Поэтому очень важно понимать основные команды управления файлами.
Этот раздел объясняет основные команды для управления файлами и примеры их использования. Помимо команд описанных здесь существует множество других, но для начала вам хватит и этих. Команды лишь коротко описаны здесь. Для получения дополнительной информации обращайтесь к соответствующим man страницам.
Эта команда выводит список файлов в каталоге. Пользователи Windows и
DOS найдут её аналогичной команде dir. При простом выполнении ls(1)
выведет список файлов в текущем каталоге. Для того, чтобы просмотреть содержимое
корневого каталога, вам необходимо выполнить следующие команды:
bin | cdrom | home | mnt | sbin | usr |
boot | dev | lib | proc | suncd | var |
cdr | etc | lost+found | root | tmp | vmlinuz
|
В таком выводе неудобно то, что вы не можете определить, где файлы, а где
каталоги. Многие пользователи предпочитают, чтобы ls выводила так же
идентификатор типа, что-то вроде этого:
bin/ | cdrom/ | home/ | mnt/ | sbin/ | usr/ |
boot/ | dev/ | lib/ | proc/ | suncd/ | var/ |
cdr/ | etc/ | lost+found/ | root/ | tmp/ | vmlinuz
|
Эта команда добавляет слэш после имён каталогов, звезду после имён выполняемых
файлов, и т.д.
ls так же может быть использована для получения более подробной информации
о файлах. Например, чтобы увидеть, даты создания, имена владельцев, права
доступа, вы воспользуетесь подробным списком:
drwxr-xr-x | 2 | root | bin | 4096 | May | 7 | 1994 | bin/ |
drwxr-xr-x | 2 | root | root | 4096 | Feb | 24 | 03:55 | boot/ |
drwxr-xr-x | 2 | root | root | 4096 | Feb | 18 | 01:10 | cdr/ |
drwxr-xr-x | 14 | root | root | 6144 | Oct | 23 | 18:37 | cdrom/ |
drwxr-xr-x | 4 | root | root | 28672 | Mar | 5 | 18:01 | dev/ |
drwxr-xr-x | 10 | root | root | 4096 | Mar | 8 | 03:32 | etc/ |
drwxr-xr-x | 8 | root | root | 4096 | Mar | 8 | 03:31 | home/ |
drwxr-xr-x | 3 | root | root | 4096 | Jan | 23 | 21:29 | lib/ |
drwxr-xr-x | 2 | root | root | 16384 | Nov | 1 | 08:53 | lost+found/ |
drwxr-xr-x | 2 | root | root | 4096 | Oct | 6 | 1997 | mnt/ |
dr-xr-xr-x | 62 | root | root | 0 | Mar | 4 | 15:32 | proc/ |
drwxr-x-x | 12 | root | root | 4096 | Feb | 26 | 02:06 | root/ |
drwxr-xr-x | 2 | root | bin | 4096 | Feb | 17 | 02:02 | sbin/ |
drwxr-xr-x | 5 | root | root | 2048 | Oct | 25 | 10:51 | suncd/ |
drwxrwxrwt | 4 | root | root | 487424 | Mar | 7 | 20:42 | tmp/ |
drwxr-xr-x | 21 | root | root | 4096 | Aug | 24 | 1999 | usr/ |
drwxr-xr-x | 18 | root | root | 4096 | Mar | 8 | 03:32 | var/ |
-rw-r-r- | 1 | root | root | 461907 | Feb | 22 | 20:04 | vmlinuz
|
Предположим, вы хотите увидеть список скрытых фалов в текущем каталоге. Для
этого воспользуйтесь такой командой:
. | bin | cdrom | home | mnt | sbin | usr |
.. | boot | dev | lib | proc | suncd | var |
.pwrchute_tmp | cdr | etc | lost+found | root | tmp | vmlinuz
|
Файлы, имя которых начинается с точки (так называемые ''dot файлы'') не показываются при простом выполнении ls, поэтому называются ''скрытыми''. Вы увидите их только, если добавите опцию -a.
Существует ещё множество других опций, описание которых вы можете найти в man странице. И не забудьте, что вы можете комбинировать их.
Команда cd используется для смены рабочего каталога. Просто наберите cd и затем имя каталога, в который вы хотите перейти. Вот несколько примеров:
darkstar: $ cd /bin |
darkstar:/bin$ cd usr |
bash: cd: usr: No such file or directory |
darkstar:/bin$ cd /usr |
darkstar:/usr$ |
Обратите внимание, что если вы не указываете слэш в начале пути, команда пытается переместится в под-каталог текущего каталога.
Команда cd отличается от остальных тем, что она встроена в оболочку. Команды, встроенные в оболочку обсуждаются в разделе 5.1. Возможно, это ничего для вас не значит сейчас. В общем, это означает, что для этой команды нет man страницы. Вместо этого вам надо обратиться к help вашей оболочки. Например:
Эта команда выдаст вам опции команды cd.
more(1) это то, что мы называем утилитой для разбиения на страницы. Часто вывод определённой команды больше, чем размер экрана. Отдельные команды не знают, как разбить свой вывод на несколько экранов. Они предоставляют это утилите разбиения на страницы.
Команда more разбивает вывод на отдельные экраны и ждёт, пока вы нажмёте пробел до того, как выводить следующий экран. Нажатие ввода сместит экран на одну строчку вниз. Вот хороший пример:
Вывод будет гораздо больше экрана. Чтобы разбить вывод на экраны, просто пропустите (pipe) команду через more:
Это pipe символ (Shift и бэкслэш). В двух словах, pipe означает ''возьми вывод команды ls и пропусти его через more''. Вы можете пропускать практически всё через more, не только ls. pipe описана в разделе 5.1.2.
Команда more очень удобна, но зачастую вы встретитесь с ситуацией, когда вы пропустили тот экран, который вам необходим. more не позволяет вернуться. Команда less(1) позволяет вам сделать это. Она используется так же, как и more команда, так что примеры, приведённые выше справедливы и для неё. В общем, less больше, чем more.
cat(1) это сокращение от ''concatenate'' (сцеплять, связывать). Изначально была разработана для объединения нескольких текстовых файлов в один, но может быть использована и для других целей.
Чтобы объединить два или несколько файлов в один, просто перечислите файлы после cat команды и пере направьте вывод в новый файл. cat работает со стандартным вводом и выводом, поэтому вам надо воспользоваться символами оболочки для пере направления. Например:
$ cat file1 file2 file3 > bigfile
|
Эта команда возьмёт содержимое фалов file1, file2 и file3 и объединит их в файл bigfile.
Вы можете также использовать cat для просмотра содержимого фалов. Многие
пользователи для просмотра текстовых фалов выполняют cat, имя фала, и
затем пропускают вывод через more или less:
Так же cat часто используется для копирования фалов. Вы можете скопировать
любой файл, выполнив:
$ cat /bin/bash > ~/mybash
|
Файл /bin/bash будет скопирован в ваш домашний каталог, под именем
mybash.
Обсуждённые здесь примеры, это лишь несколько из возможных вариантов применения cat. Так как cat предоставляет расширенный контроль за стандартным вводом и выводом, она идеальна для применения в shell скриптах, и для использования в качестве части более сложных команд.
touch(1) используется для изменения временных атрибутов файла. С помощью этой команды вы можете изменить отметку времени доступа и отметку времени изменения файла. Если указанный файл не существует, то touch создаст пустой файл с указанным именем. Чтобы пометить файл текущим системным временем, выполните такую команду:
Эта команда имеет несколько опций, включая опции для уточнения, какую временную метку изменить, какое время использовать, и ещё много других. man станица содержит описание всех этих опций.
Команда echo(1) выводит указанный текст на экран. Строку, которую вы хотите вывести, следует указать после echo команды. По умолчанию echo выведет текст и символ перевода строки после него. Вы можете указать опцию -n, чтобы строка не переводилась. Опция -e укажет команде искать эскейп символы в строке и выполнить их.
mkdir(1) создаёт новый каталог. Просто укажите имя каталога, который вы хотите создать после имени команды. Вот пример создания под-каталога hejaz в текущем каталоге:
Так же вы можете указать путь:
Опция -p укажет mkdir создавать ''вложенные'' каталоги. Так, если в выше приведённом примере каталог /usr/local не существует, то программа выдаст сообщение об ошибке. Указание параметра -p заставить программу создать /usr/local и hejaz каталоги:
$ mkdir -p /usr/local/hejaz
|
ln(1) используется для создания ссылок на файлы. Это могут быть как
жёсткие - hard, так и гибкие или символические -soft, symbolic ссылки.
Разница между двумя типами ссылок обсуждалась в разделе5.2.3. Если вы хотите создать символическую ссылку на каталог
/var/media/mp3 и расположить ссылку в вашем домашнем каталоге, вам
необходимо выполнить такую команду:
$ ln -s /var/media/mp3 ~/mp3
|
Опция -s указывает команде ln, что ссылка должна быть символическая. Затем задаётся цель ссылки, и в конце указывается как она будет называться. В приведённом случае будет создан файл mp3, указывающий на /var/media/mp3. Вы можете назвать ссылку как вам заблагорассудиться, просто изменив последний из параметров команды ln.
Создание жёстких ссылок производится аналогично. Только опускается опция -s. Для примера, создадим жёсткую ссылку на тот же каталог, что и в примере выше:
$ ln /var/media/mp3 ~/mp3
|
cp(1) применяется для копирования файлов. Пользователи DOS найдут её похожей на команду copy. Эта команда имеет очень много опций. Загляните в man страницу, если вам интересно.
Обычный вариант использования команды это копирование файла из одного места в другое. Например:
Эта команда создать копию файла hejaz из текущего каталога в /tmp каталог.
Многие пользователи предпочитают сохранять временные отметки файлов при копировании. Вот вам пример:
Это сохранит все временные отметки оригинального файла для копии.
Для того, чтобы рекурсивно скопировать содержимое каталога в другой каталог, вы
воспользуетесь такой командой:
Это скопирует adirectory в каталог /tmp.
cp имеет гораздо больше опций, которые детально описаны в man странице.
mv(1) перемещает файлы из одного места в другое. Пользователи DOS
найдут её похожей на move команду. При использовании команды надо
указывать источник и назначение. Вот пример обычного использования mv:
# mv myfile /usr/local/share/hejaz
|
mv имеет несколько опций, которые так же обсуждаются в man странице.
rm(1) удаляет файлы и деревья каталогов. Аналогия для пользователей DOS - del и deltree. Использование rm может быть очень опасным, если вы не отдаёте себе отчёта в том, что вы делаете. В отличие от DOS и Windows в Linux удалённые файлы восстановлению не подлежат.
Чтобы удалить отдельный файл, укажите его имя после имени команды:
Если у вас нет прав записи для этого файла, то вы получите сообщение об ошибке доступа. Чтобы удалить файл, несмотря ни на что, воспользуйтесь -f опцией:
Чтобы целиком удалить каталог, воспользуйтесь обеими -r и -f опциями. Вот вам хороший пример того, как удалить всё содержание вашего диска. Надеемся, вы не захотите выполнить такую команду. В любом случае, вот пример команды:
Будьте очень осторожны при использовании rm; вы можете подстрелить себя в ногу. За получением дополнительных опций, обращайтесь к man страничке.
rmdir(1) удаляет каталоги из файловой системы. Каталог должен быть пустым, иначе команда не сможет удалить его. Синтаксис прост:
Этот пример удалит hejaz под-каталог в текущем рабочем каталоге:
Если этот каталог не существует, rmdir скажет вам об этом. Вы так же
можете указать полный путь к каталогу, который хотите удалить:
Этот пример попробует удалить hejaz каталог, являющийся под-каталогом
/tmp каталога.
Вы так же можете удалить каталог, и все его родительские каталоги, указав
-p опцию.
Эта команда вначале попытается удалить каталог hejaz, внутри /tmp.
Если это удастся, команда попытается удалить /tmp каталог. rmdir
продолжит удаление указанных каталогов, пока не столкнуться с ошибкой, или не
удалит все указанные каталоги.
В этом разделе описано множество программ для манипулирования фалами и
каталогами. Вы должны были научиться создавать, удалять, и перемещать файлы и
каталоги. Вы так же должны были научиться, отображать содержимое каталогов и
файлов и изменять их временные метки. Ну и наконец, вы должны
понимать, почему rm -rf / это очень и очень плохая идея.
File translated from
TEX
by
TTH,
version 2.89. On 24 Apr 2001, 16:43.
|