English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Управление файлами и каталогами 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 [команда] чтобы просмотреть документацию по командам, например: 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 для создания директории w3codebox;
[root@www ~]# mkdir w3codebox
# использовать абсолютный путь для перехода в директорию w3codebox;
[root@www ~]# cd /root/w3codebox/
# использовать относительный путь для перехода в директорию w3codebox;
[root@www ~]# cd ./w3codebox/
# означает вернуться в домашнюю директорию, то есть в директорию /root;
[root@www w3codebox]# cd ~
# означает перейти в предыдущую上级 директорию, то есть в上级 директорию от /root;
[root@www ~]# cd ..

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

pwd (показывает текущую директорию)

pwd is Print Working Directory abbreviation, which is the command to display the current directory.

[root@www ~]# pwd -P

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

  • -P : Displays the actual path, not using the link (link) path.

Example: Simply display the current working directory:

[root@www ~]# pwd
/root <== The directory is displayed!

Example: It shows the actual working directory, not just the directory name of the link file itself.

[root@www ~]# cd /var/mail <== Note, /var/mail is a link file
[root@www mail]# pwd
/var/mail <== List the current working directory
[root@www mail]# pwd -P
/var/spool/mail <== What's going on? Is there a difference with -P added?
[root@www mail]# ls -ld /var/mail
lrwxrwxrwx 1 root root 10 Sep 4 17:54 /var/mail -> spool/mail
# You should know why by now? Because /var/mail is a link file, linked to /var/spool/mail 
# So, with the option of pwd -P, it will not display the data of the link file, but show the correct complete path!

mkdir (Create new directory)

If you want to create a new directory, then use mkdir (make directory)!

Синтаксис:

mkdir [-mp] directory name

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

  • -m : Configures the permissions of the configuration file! Configure directly, no need to look at the default permissions (umask)!

  • -p : Helps you directly create the required directory (including parent directories) recursively!

Example: Try to create several new directories under /tmp to see:

[root@www ~]# cd /tmp
[root@www tmp]# mkdir test <== Create a new directory named 'test'
[root@www tmp]# mkdir test1/test2/test3/test4
mkdir: cannot create directory `test1/test2/test3/test4': 
No such file or directory <== No such file or directory! It's not possible to create this directory directly!
[root@www tmp]# mkdir -p test1/test2/test3/test4

С этим параметром -p, он сам поможет вам создать多层 директории!

Пример: создать директорию с правами rwx--x--x .

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

Если часть прав не была настроена с помощью -m, система будет использовать mặc định.

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

rmdir (удаление пустых директорий)

Синтаксис:

 rmdir [-p] имя_директории

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

  • -p :Удалите также и родительскую пустую директорию

Удалите директорию w3codebox

[root@www tmp]# rmdir w3codebox/

Удалите созданную директорию в примере mkdir (/tmp)

[root@www tmp]# ls -l <== Сколько директорий существует?
drwxr-xr-x 3 root root 4096 Июл 18 12:50 test
drwxr-xr-x 3 root root 4096 Июл 18 12:53 test1
drwx--x--x 2 root root 4096 Июл 18 12:54 test2
[root@www tmp]# rmdir test <== Её можно удалить без проблем
[root@www tmp]# rmdir test1 <== Поскольку в ней есть содержимое, её нельзя удалить!
rmdir: `test1': Директория не пуста
[root@www tmp]# rmdir -p test1/test2/test3/test4
[root@www tmp]# ls -l <== Посмотрите, test и test1 исчезли из вывода!
drwx--x--x 2 root root 4096 Июл 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:Equivalent to -pdr, for pdr, please refer to the following description (commonly used);

  • -d:If the source file is a link file, copy the link file attributes instead of the file itself;

  • -f:Means force, if the target file already exists and cannot be opened, remove it and try again;

  • -i:If the destination file already exists, it will ask for action before overwriting (commonly used)

  • -l:Create a hard link file instead of copying the file itself;

  • -p:Copies the file attributes along with the file, not using the default attributes (commonly used for backups);

  • -r:Recursively continue copying, used for copying directories (commonly used);

  • -s:Copy as a symbolic link file (shortcut file);

  • -u:Upgrade destination only if the destination is older than the source!

Using root privileges, copy the .bashrc under the root directory to /tmp and name it bashrc

[root@www ~]# cp ~/.bashrc /tmp/bashrc
[root@www ~]# cp -i ~/.bashrc /tmp/bashrc
cp: overwrite `/tmp/bashrc'? n <== n do not overwrite, y to overwrite

rm (Remove file or directory)

Синтаксис:

 rm [-fir] file or directory

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

  • -f: It means force, ignores non-existent files without displaying a warning message;

  • -i: Interactive mode, asks the user before deleting

  • -r: Recursively delete! Most commonly used for deleting directories! This is a very dangerous option!!!

Delete the bashrc created in the cp example!

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

If the -i option is used, it will actively ask to avoid deleting the wrong file name!

mv (Move files and directories, or rename)

Синтаксис:

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

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

  • -f  :force, то есть强制,если целевой файл уже существует, не будет запрошено, а будет напрямую заменен;

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

  • -u  :если целевой файл уже существует и source новее, то он обновляется (update)

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

[root@www ~]# cd /tmp
[root@www ~]# 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, написанный backwards!

  • nl   показывает строки и также выводит номера строк!

  • more показывает содержимое файла страницу за страницей

  • less, как more, но лучше, так как он может листать назад!

  • head чтобы увидеть несколько первых строк

  • tail чтобы увидеть последние несколько строк

Вы можете использовать man [команда]чтобы просмотреть документацию по командам, например: 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, написанный backwards! Например:

[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  :количество знаков, занимаемых номером строки.

Пример один: использовать 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%)  <== Внимание, важная строка! Cursor также будет ждать вашего команды здесь

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

  • Пробел (space):означает向下 страницу;

  • Enter         :означает向下翻 'одну строку';

  • /строка         :означает向下 поиск ключевого слова 'строка' в текущем содержимом;

  • :f             :немедленно показывает имя файла и текущую строку, которую отображается;

  • q             :означает немедленный выход из more и больше не отображать содержимое файла.

  • b или [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 runtime поддерживает следующие команды:

  • Пробел : перейти на одну страницу вниз;

  • [pagedown] : перейти на одну страницу вниз;

  • [pageup] : перейти на одну страницу вверх;

  • /строка : функция поиска строки向下;

  • ?строка : функция поиска строки向上;

  • 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 : означает постоянное отслеживание файла, который следует за ним, и останавливается только при нажатии [ctrl]-c

[root@www ~]# tail /etc/man.config
# По умолчанию, отображается последние десять строк! Чтобы отобразить последние 20 строк, нужно сделать так:
[root@www ~]# tail -n 20 /etc/man.config