Предыдущий Содержание Следующий

5.3  Управление файлами и каталогами

Slackware Linux организованна таким образом, чтобы быть настолько Unix подобной, насколько это возможно. Традиционно ОС Unix ориентирована на интерфейс командной строки. В Slackware есть так же и графический интерфейс, но командная строка остаётся основным способом управления системой. Поэтому очень важно понимать основные команды управления файлами.

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

5.3.1  ls

Эта команда выводит список файлов в каталоге. Пользователи Windows и DOS найдут её аналогичной команде dir. При простом выполнении ls(1) выведет список файлов в текущем каталоге. Для того, чтобы просмотреть содержимое корневого каталога, вам необходимо выполнить следующие команды:

$ cd /
$ ls

bin cdrom home mnt sbin usr
boot dev lib proc suncd var
cdr etc lost+found root tmp vmlinuz

В таком выводе неудобно то, что вы не можете определить, где файлы, а где каталоги. Многие пользователи предпочитают, чтобы ls выводила так же идентификатор типа, что-то вроде этого:

$ ls -FC

bin/ cdrom/ home/ mnt/ sbin/ usr/
boot/ dev/ lib/ proc/ suncd/ var/
cdr/ etc/ lost+found/ root/ tmp/ vmlinuz

Эта команда добавляет слэш после имён каталогов, звезду после имён выполняемых файлов, и т.д.

ls так же может быть использована для получения более подробной информации о файлах. Например, чтобы увидеть, даты создания, имена владельцев, права доступа, вы воспользуетесь подробным списком:

$ ls -l

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

Предположим, вы хотите увидеть список скрытых фалов в текущем каталоге. Для этого воспользуйтесь такой командой:

$ ls -a

. 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 странице. И не забудьте, что вы можете комбинировать их.

5.3.2  cd

Команда 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 вашей оболочки. Например:

$ help cd

Эта команда выдаст вам опции команды cd.

5.3.3  more

more(1) это то, что мы называем утилитой для разбиения на страницы. Часто вывод определённой команды больше, чем размер экрана. Отдельные команды не знают, как разбить свой вывод на несколько экранов. Они предоставляют это утилите разбиения на страницы.

Команда more разбивает вывод на отдельные экраны и ждёт, пока вы нажмёте пробел до того, как выводить следующий экран. Нажатие ввода сместит экран на одну строчку вниз. Вот хороший пример:

$ cd /usr/bin
$ ls -l

Вывод будет гораздо больше экрана. Чтобы разбить вывод на экраны, просто пропустите (pipe) команду через more:

$ ls -l | more

Это pipe символ (Shift и бэкслэш). В двух словах, pipe означает ''возьми вывод команды ls и пропусти его через more''. Вы можете пропускать практически всё через more, не только ls. pipe описана в разделе 5.1.2.

5.3.4  less

Команда more очень удобна, но зачастую вы встретитесь с ситуацией, когда вы пропустили тот экран, который вам необходим. more не позволяет вернуться. Команда less(1) позволяет вам сделать это. Она используется так же, как и more команда, так что примеры, приведённые выше справедливы и для неё. В общем, less больше, чем more.

5.3.5  cat

cat(1) это сокращение от ''concatenate'' (сцеплять, связывать). Изначально была разработана для объединения нескольких текстовых файлов в один, но может быть использована и для других целей.

Чтобы объединить два или несколько файлов в один, просто перечислите файлы после cat команды и пере направьте вывод в новый файл. cat работает со стандартным вводом и выводом, поэтому вам надо воспользоваться символами оболочки для пере направления. Например:

$ cat file1 file2 file3 > bigfile

Эта команда возьмёт содержимое фалов file1, file2 и file3 и объединит их в файл bigfile.

Вы можете также использовать cat для просмотра содержимого фалов. Многие пользователи для просмотра текстовых фалов выполняют cat, имя фала, и затем пропускают вывод через more или less:

$ cat file1 | more

Так же cat часто используется для копирования фалов. Вы можете скопировать любой файл, выполнив:

$ cat /bin/bash > ~/mybash

Файл /bin/bash будет скопирован в ваш домашний каталог, под именем mybash.

Обсуждённые здесь примеры, это лишь несколько из возможных вариантов применения cat. Так как cat предоставляет расширенный контроль за стандартным вводом и выводом, она идеальна для применения в shell скриптах, и для использования в качестве части более сложных команд.

5.3.6  touch

touch(1) используется для изменения временных атрибутов файла. С помощью этой команды вы можете изменить отметку времени доступа и отметку времени изменения файла. Если указанный файл не существует, то touch создаст пустой файл с указанным именем. Чтобы пометить файл текущим системным временем, выполните такую команду:

$ touch file1

Эта команда имеет несколько опций, включая опции для уточнения, какую временную метку изменить, какое время использовать, и ещё много других. man станица содержит описание всех этих опций.

5.3.7  echo

Команда echo(1) выводит указанный текст на экран. Строку, которую вы хотите вывести, следует указать после echo команды. По умолчанию echo выведет текст и символ перевода строки после него. Вы можете указать опцию -n, чтобы строка не переводилась. Опция -e укажет команде искать эскейп символы в строке и выполнить их.

5.3.8  mkdir

mkdir(1) создаёт новый каталог. Просто укажите имя каталога, который вы хотите создать после имени команды. Вот пример создания под-каталога hejaz в текущем каталоге:

$ mkdir hejaz

Так же вы можете указать путь:

$ mkdir /usr/local/hejaz

Опция -p укажет mkdir создавать ''вложенные'' каталоги. Так, если в выше приведённом примере каталог /usr/local не существует, то программа выдаст сообщение об ошибке. Указание параметра -p заставить программу создать /usr/local и hejaz каталоги:

$ mkdir -p /usr/local/hejaz

5.3.9  ln

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

5.3.10  cp

cp(1) применяется для копирования файлов. Пользователи DOS найдут её похожей на команду copy. Эта команда имеет очень много опций. Загляните в man страницу, если вам интересно.

Обычный вариант использования команды это копирование файла из одного места в другое. Например:

$ cp hejaz /tmp

Эта команда создать копию файла hejaz из текущего каталога в /tmp каталог.

Многие пользователи предпочитают сохранять временные отметки файлов при копировании. Вот вам пример:

$ cp -a hejaz /tmp

Это сохранит все временные отметки оригинального файла для копии.

Для того, чтобы рекурсивно скопировать содержимое каталога в другой каталог, вы воспользуетесь такой командой:

$ cp -R adirectory /tmp

Это скопирует adirectory в каталог /tmp.

cp имеет гораздо больше опций, которые детально описаны в man странице.

5.3.11  mv

mv(1) перемещает файлы из одного места в другое. Пользователи DOS найдут её похожей на move команду. При использовании команды надо указывать источник и назначение. Вот пример обычного использования mv:

# mv myfile /usr/local/share/hejaz

mv имеет несколько опций, которые так же обсуждаются в man странице.

5.3.12  rm

rm(1) удаляет файлы и деревья каталогов. Аналогия для пользователей DOS - del и deltree. Использование rm может быть очень опасным, если вы не отдаёте себе отчёта в том, что вы делаете. В отличие от DOS и Windows в Linux удалённые файлы восстановлению не подлежат.

Чтобы удалить отдельный файл, укажите его имя после имени команды:

$ rm file1

Если у вас нет прав записи для этого файла, то вы получите сообщение об ошибке доступа. Чтобы удалить файл, несмотря ни на что, воспользуйтесь -f опцией:

$ rm -f file1

Чтобы целиком удалить каталог, воспользуйтесь обеими -r и -f опциями. Вот вам хороший пример того, как удалить всё содержание вашего диска. Надеемся, вы не захотите выполнить такую команду. В любом случае, вот пример команды:

# rm -rf /

Будьте очень осторожны при использовании rm; вы можете подстрелить себя в ногу. За получением дополнительных опций, обращайтесь к man страничке.

5.3.13  rmdir

rmdir(1) удаляет каталоги из файловой системы. Каталог должен быть пустым, иначе команда не сможет удалить его. Синтаксис прост:

$ rmdir <directory>

Этот пример удалит hejaz под-каталог в текущем рабочем каталоге:

$ rmdir hejaz

Если этот каталог не существует, rmdir скажет вам об этом. Вы так же можете указать полный путь к каталогу, который хотите удалить:

$ rmdir /tmp/hejaz

Этот пример попробует удалить hejaz каталог, являющийся под-каталогом /tmp каталога.

Вы так же можете удалить каталог, и все его родительские каталоги, указав -p опцию.

$ rmdir -p /tmp/hejaz

Эта команда вначале попытается удалить каталог hejaz, внутри /tmp. Если это удастся, команда попытается удалить /tmp каталог. rmdir продолжит удаление указанных каталогов, пока не столкнуться с ошибкой, или не удалит все указанные каталоги.

5.3.14  Итог

В этом разделе описано множество программ для манипулирования фалами и каталогами. Вы должны были научиться создавать, удалять, и перемещать файлы и каталоги. Вы так же должны были научиться, отображать содержимое каталогов и файлов и изменять их временные метки. Ну и наконец, вы должны понимать, почему rm -rf / это очень и очень плохая идея.


Предыдущий Содержание Следующий

File translated from TEX by TTH, version 2.89.
On 24 Apr 2001, 16:43.