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

Мы знаем, что структура каталогов Linux представляет собой древовидную структуру, а каталогом верхнего уровня является корневой каталог./。

Другие каталоги можно добавить в дерево с помощью монтирования и удалить с помощью размонтирования.

Прежде чем приступить к этому руководству, нам нужно знать, что такое абсолютные и относительные пути.

  • Абсолютный путь:
    Путь записывается начиная с корневого каталога/Например: каталог /usr/share/doc.

  • Относительный путь:


    Путь записывается не начиная с/Например, чтобы перейти из /usr/share/doc в /usr/share/man, можно написать:cd ../manИменно так записывается относительный путь.

Общие команды для работы с каталогами

Далее давайте рассмотрим несколько общих команд для работы с каталогами:

  • ls (полное английское название: list files): Выводит список каталогов и имён файлов
  • cd (полное английское название: change directory): Переключение каталога
  • pwd (полное английское название: print work directory): Показывает текущий каталог
  • mkdir (полное английское название: make directory): Создаёт новый каталог
  • rmdir (полное английское название: remove directory): Удаляет пустой каталог
  • cp (полное английское название: copy file): Копирует файлы или каталоги
  • rm (полное английское название: remove): Удаляет файлы или каталоги
  • mv (полное английское название: move file): Перемещает файлы и каталоги или переименовывает файлы и каталоги

Вы можете использоватьman [command]для просмотра документации по использованию каждой команды, например, man cp.

ls (Список каталогов)

В системах Linux команда ls, вероятно, выполняется чаще всего.

Синтаксис:

[root@www ~]# ls [-aAdfFhilnrRSt] 目录名称
[root@www ~]# ls [--color={never,auto,always}] 目录名称
[root@www ~]# ls [--full-time] 目录名称

Опции и параметры:

  • -a: Выводит список всех файлов, включая скрытые файлы (файлы, начинающиеся с .) (часто используется)
  • -d: Выводить только сам каталог, а не данные файлов внутри каталога (часто используется)
  • -l: Выводить в виде длинной строки данных, включая атрибуты файлов и права доступа и т. д. (часто используется)

Вывести все файлы в каталоге (включая атрибуты и скрытые файлы)

[root@www ~]# ls -al ~

cd (Смена каталога)

cd — это сокращение от Change Directory, команда, используемая для смены рабочего каталога.

Синтаксис:

 cd [相对路径或绝对路径]
#使用 mkdir 命令创建 example 目录
[root@www ~]# mkdir example

#使用绝对路径切换到 example 目录
[root@www ~]# cd /root/example/

#使用相对路径切换到 example 目录
[root@www ~]# cd ./example/

# 表示回到自己的家目录,亦即是 /root 这个目录
[root@www example]# cd ~

# 表示去到目前的上一级目录,亦即是 /root 的上一级目录的意思;
[root@www ~]# cd ..

Далее, попрактиковавшись несколько раз, вы должны хорошо понять команду cd.

pwd (Показать текущий каталог)

pwd — это сокращение отPrint Working Directory, то есть команда для отображения текущего каталога.

[root@www ~]# pwd [-P]

Опции и параметры:

  • -P: Показать фактический путь, а не использовать путь по ссылке.

Пример: Просто показать текущий рабочий каталог:

[root@www ~]# pwd
/root   <== 显示出目录啦~

Пример: Показать фактический рабочий каталог, а не только имя каталога самого файла-ссылки.

[root@www ~]# cd /var/mail   <==注意,/var/mail是一个链接档
[root@www mail]# pwd
/var/mail         <==列出目前的工作目录
[root@www mail]# pwd -P
/var/spool/mail   <==怎么回事?有没有加 -P 差很多~
[root@www mail]# ls -ld /var/mail
lrwxrwxrwx 1 root root 10 Sep  4 17:54 /var/mail -> spool/mail
# 看到这里应该知道为啥了吧?因为 /var/mail 是链接档,链接到 /var/spool/mail 
# 所以,加上 pwd -P 的选项后,会不以链接档的数据显示,而是显示正确的完整路径啊!

mkdir (Создать новый каталог)

Если вы хотите создать новый каталог, используйте mkdir (make directory).

Синтаксис:

mkdir [-mp] 目录名称

Опции и параметры:

  • -m: Настройте права доступа к файлам! Задайте их напрямую, не нужно беспокоиться о правах по умолчанию (umask) ~
  • -p: Помогает напрямую создать нужный каталог (включая родительские каталоги) рекурсивно!

Пример: Перейдите в /tmp и попробуйте создать несколько новых каталогов:

[root@www ~]# cd /tmp
[root@www tmp]# mkdir test    <==创建一名为 test 的新目录
[root@www tmp]# mkdir test1/test2/test3/test4
mkdir: cannot create directory `test1/test2/test3/test4': 
No such file or directory       <== 没办法直接创建此目录啊!
[root@www tmp]# mkdir -p test1/test2/test3/test4

Добавление опции -p поможет автоматически создать каталоги нескольких уровней!

Пример: Создайте каталог с правамиrwx--x--xdirectory.

[root@www tmp]# mkdir -m 711 test2
[root@www tmp]# ls -l
drwxr-xr-x  3 root  root 4096 Jul 18 12:50 test
drwxr-xr-x  3 root  root 4096 Jul 18 12:53 test1
drwx--x--x  2 root  root 4096 Jul 18 12:54 test2

Для указанных выше прав, если не добавить -m для принудительной настройки, система будет использовать атрибуты по умолчанию.

Если мы используем -m, как в приведённом выше примере, где мы задали -m 711, чтобы дать новому каталогу права drwx--x--x.

rmdir (Удалить пустой каталог)

Синтаксис:

 rmdir [-p] 目录名称

Опции и параметры:

  • -p :Начиная с этого каталога, удалите сразу несколько уровней пустых каталогов.

Удалите каталог из примера

[root@www tmp]# rmdir example/

Удалите каталоги, созданные в примере с mkdir (в /tmp)!

[root@www tmp]# ls -l   <==看看有多少目录存在?
drwxr-xr-x  3 root  root 4096 Jul 18 12:50 test
drwxr-xr-x  3 root  root 4096 Jul 18 12:53 test1
drwx--x--x  2 root  root 4096 Jul 18 12:54 test2
[root@www tmp]# rmdir test   <==可直接删除掉,没问题
[root@www tmp]# rmdir test1  <==因为尚有内容,所以无法删除!
rmdir: `test1': Directory not empty
[root@www tmp]# rmdir -p test1/test2/test3/test4
[root@www tmp]# ls -l        <==您看看,底下的输出中test与test1不见了!
drwx--x--x  2 root  root 4096 Jul 18 12:54 test2

Используя опцию -p, можно сразу удалить test1/test2/test3/test4 все за один раз.

Однако обратите внимание, что rmdir может удалять только пустые каталоги; для удаления непустых каталогов можно использовать команду rm.

cp (копирование файлов или каталогов)

cp используется для копирования файлов и каталогов.

Синтаксис:

[root@www ~]# cp [-adfilprsu] 来源档(source) 目标档(destination)
[root@www ~]# cp [options] source1 source2 source3 .... directory

Опции и параметры:

  • -a:Эквивалентно -pdr; о pdr см. следующие пояснения; (часто используется)

  • -d:Если исходный файл имеет атрибут файла-ссылки, то копировать атрибут файла-ссылки, а не сам файл;

  • -f:Означает принудительно; если целевой файл уже существует и не может быть открыт, удалить его и попробовать снова;

  • -i:Если целевой файл уже существует, будет запрошено подтверждение перед перезаписью (часто используется)

  • -l:Создать жёсткую ссылку на файл-ссылку, а не копировать сам файл;

  • -p:Копировать атрибуты файла вместе с файлом, а не использовать атрибуты по умолчанию (обычно используется для резервного копирования);

  • -r:Рекурсивно копировать, используется для копирования каталогов; (часто используется)

  • -s:Копировать как символическую ссылку, то есть файл-«ярлык»;

  • -u:Обновляйте пункт назначения, только если пункт назначения старше источника!

От имени root скопируйте .bashrc из корневого каталога в /tmp и назовите его bashrc

[root@www ~]# cp ~/.bashrc /tmp/bashrc
[root@www ~]# cp -i ~/.bashrc /tmp/bashrc
cp: overwrite `/tmp/bashrc'? n  <==n不覆盖,y为覆盖

rm (удаление файлов или каталогов)

Синтаксис:

 rm [-fir] 文件或目录

Опции и параметры:

  • -f: означает принудительное выполнение, игнорирует несуществующие файлы, предупреждающие сообщения не выводятся;
  • -i: Интерактивный режим, спрашивает пользователя, продолжать ли перед удалением
  • -r: Рекурсивное удаление! Чаще всего используется для удаления каталогов! Это очень опасная опция!!!

Удалите файл bashrc, созданный только что в примере с cp!

[root@www tmp]# rm -i bashrc
rm: remove regular file `bashrc'? y

Если добавить опцию -i, она будет явно запрашивать подтверждение, не позволяя вам удалить файл с неправильным именем!

mv (перемещение файлов и каталогов или переименование)

Синтаксис:

[root@www ~]# mv [-fiu] source destination
[root@www ~]# mv [options] source1 source2 source3 .... directory

Опции и параметры:

  • -f: означает принудительное выполнение; если файл назначения уже существует, он будет перезаписан сразу без запроса;
  • -i: Если файл назначения уже существует, будет задан вопрос, перезаписывать ли!
  • -u: Обновлять только если файл назначения уже существует и источник новее

Скопируйте файл, создайте каталог, переместите файл в каталог

[root@www ~]# cd /tmp
[root@www tmp]# cp ~/.bashrc bashrc
[root@www tmp]# mkdir mvtest
[root@www tmp]# mv bashrc mvtest

Перемещение файла в каталог выполняется так!

Переименуйте только что созданный каталог в mvtest2

[root@www tmp]# mv mvtest mvtest2

Просмотр содержимого файлов в Linux

В системах Linux для просмотра содержимого файлов используются следующие команды:

  • cat: выводит содержимое файла начиная с первой строки
  • tac: выводит начиная с последней строки; можно заметить, что tac — это cat, записанный задом наперёд!
  • nl: при отображении также выводит номера строк!
  • more: отображает содержимое файла постранично
  • less: похож на more, но лучше, чем more, потому что позволяет листать назад!
  • head: смотреть только первые несколько строк
  • tail: смотреть только последние несколько строк

Вы можете использоватьman [command]для просмотра документации по использованию каждой команды, например, man cp.

cat

Отобразить содержимое файла, начиная с первой строки

Синтаксис:

cat [-AbEnTv]

Опции и параметры:

  • -A : Эквивалент объединённых опций -vET, может отображать некоторые специальные символы, а не только пробельные;
  • -b : Отображать номера строк, только для непустых строк, пустые строки не нумеруются!
  • -E : Отображать байт конца строки $ в конце;
  • -n : Выводить номера строк, пустые строки также получают номера, в отличие от опции -b;
  • -T : Отображать клавишу [tab] как ^I;
  • -v : Отображать некоторые невидимые специальные символы

Просмотр содержимого файла /etc/issue:

[root@www ~]# cat /etc/issue
CentOS release 6.4 (Final)
Kernel \r on an \m

tac

Команда tac — полная противоположность cat; она отображает содержимое файла, начиная с последней строки. Можно заметить, что tac — это cat, записанная задом наперёд! Например:

[root@www ~]# tac /etc/issue

Kernel \r on an \m
CentOS release 6.4 (Final)

nl

Отображать номера строк

Синтаксис:

nl [-bnw] 文件

Опции и параметры:

  • -b : Задаёт способ нумерации строк, в основном два типа:
    -b a : Указывает, что независимо от того, является ли строка пустой, номера строк также выводятся (аналогично cat -n);
    -b t : Если есть пустые строки, не выводить номера строк для пустых строк (по умолчанию);
  • -n : Способ отображения номеров строк, в основном три типа:
    -n ln : Номера строк отображаются в крайней левой части экрана;
    -n rn : Номера строк отображаются в крайней правой части своего поля без добавления 0;
    -n rz : Номера строк отображаются в крайней правой части своего поля с добавлением 0;
  • -w : Количество цифр, занимаемых полем номера строки.

Пример 1: Использование nl для вывода содержимого /etc/issue

[root@www ~]# nl /etc/issue
     1  CentOS release 6.4 (Final)
     2  Kernel \r on an \m

more

Перелистывать страницы по одной

[root@www ~]# more /etc/man_db.config 
#
# Generated automatically from man.conf.in by the
# configure script.
#
# man.conf from man-1.6d
....(中间省略)....
--More--(28%)  <== 重点在这一行喔!你的光标也会在这里等待你的命令

Во время работы программы more можно нажать несколько клавиш:

  • Клавиша пробел (space): прокрутить на одну страницу вниз;
  • Enter : прокрутить вниз на 'одну строку';
  • /string : поиск вниз ключевого слова 'string' в отображаемом содержимом;
  • :f : немедленно отобразить имя файла и номер текущей отображаемой строки;
  • q : немедленно выйти из more и остановить отображение содержимого файла.
  • b or [ctrl]-b : прокрутить назад на одну страницу, но это действие работает только для файлов, а не для каналов.

less

Пролистывайте страницы по одной. В следующем примере выводится содержимое файла /etc/man.config:

[root@www ~]# less /etc/man.config
#
# Generated automatically from man.conf.in by the
# configure script.
#
# man.conf from man-1.6d
....(中间省略)....
:   <== 这里可以等待你输入命令!

Команды, которые можно вводить во время работы less:

  • Пробел : прокрутить вниз на одну страницу;
  • [pagedown]: прокрутить вниз на одну страницу;
  • [pageup] : прокрутить вверх на одну страницу;
  • /string : функция поиска вниз 'string';
  • ?string : функция поиска вверх строки 'string';
  • n : повторить предыдущий поиск (связано с / или ?!)
  • N : повторить предыдущий поиск в обратном направлении (связано с / или ?!)
  • q : выйти из программы less;

head

Вывести первые несколько строк файла

Синтаксис:

head [-n number] 文件 

Опции и параметры:

  • -n : за которым следует число, означающее, сколько строк отобразить
[root@www ~]# head /etc/man.config

По умолчанию отображаются первые 10 строк! Чтобы отобразить первые 20 строк, сделайте так:

[root@www ~]# head -n 20 /etc/man.config

tail

Вывести последние несколько строк файла

Синтаксис:

tail [-n number] 文件 

Опции и параметры:

  • -n : за которым следует число, означающее, сколько строк отобразить
  • -f : указывает на непрерывное отслеживание указанного имени файла; tail не прекратит мониторинг, пока не будет нажато [ctrl]-c
[root@www ~]# tail /etc/man.config
# 默认的情况中,显示最后的十行!若要显示最后的 20 行,就得要这样:
[root@www ~]# tail -n 20 /etc/man.config
Другие расширения