Linux, unix, solaris, qnx, freebsd, hp-ux, netbsd, openbsd, picobsd, gentoo linux, slackware, ubuntu, red hat, macos, altlinux, asplinux, debian gnu linux, fedora core, knoppix, mandriva, suse.

8th
Сен

Работа с файлами в Linux

Автор: admin | Рубрика: FreeBSD, Linux, Unix

Операционные системы семейства UNIX предоставляют пользователю широкий спектр команд для работы с файлами и каталогами. Их сильной стороной является возможность использования их в простой форме в отношении группы файлов и каталогов, которые отвечают определенным требованиям. Например удалить группу файлов отвечающих определенным критериям или сменить им всем имена по определенному шаблону.

1. ls

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

adam@laptop:~/Documents/polishlinux.org$ pwd
/home/adam/Documents/polishlinux.org/
adam@laptop:~/Documents/polishlinux.org$ls
example.txt all_about_console.txt
adam@laptop:~/Documents/polishlinux.org$ls /var/
backups cache crash games lib local lock log mail opt run spool
tmp

Если после команды ls поставить ключ -l, то выведется более подробная информация о содержимом каталога.

adam@laptop:~/Documents/polishlinux.org/examples$ ls -l
total 0
-rw-r–r– 1 adam adam 0 2007-05-30 11:31 example.txt
-rw-r–r– 1 adam adam 0 2007-05-30 11:31 all_about_console.txt

В первой строке показывается общее количество блоков на диске занимаемое файлами каталога. Остальные строчки описывают фалы в следующем формате (по столбцам):

* -rw-r–r– - уровни доступа к файлам и каталогам
* количество жестких ссылок на файл
* пользователь и группа владельцев файла
* размер файла
* время последнего изменения файла
* имя файла или каталога

Команда ls с ключом -a выводит так же и скрытые файлы. Имена скрытых файлов начинаются с точки.

adam@laptop:~/Documents/polishlinux.org/examples$ ls -a
. .. .hidden_file example.txt all_about_console.txt

По мимо этого, доступна возможность сортировки файлов командой ls со следующими ключами:

* strong>-t - по времени (по убыванию)
* -S - по размеру (по убыванию)
* -r - обратный порядок (-tr)

Если запустить с ключом -R, то выведется все содержимое каталога и его подкаталогов (рекурсивный обход):

adam@laptop:~/Documents/polishlinux.org/examples$ ls -R
.:
directory1 directory2 example.txt all_about_console.txt
./directory1:
file1 file2
./directory2:
file3 file4

2. cd

С помощью команды cd (change directory) мы можем перемещаться по дереву каталогов. Для этой команды необходим один параметр - это целевой каталог (относительно текущего или относительно корня).

adam@laptop:~$cd /usr/bin
adam@laptop:/usr/bin$pwd
/usr/bin

Если вместо пути поставить символ тильда (~), то вас перекинут в домашнюю папку.

adam@laptop:/usr/bin$cd ~
adam@laptop:~$pwd
/home/adam

Если ввести ключ в виде ~имя_пользователя, то нас перекинут в домашний каталог этого пользователя.

adam@laptop:~$cd ~zoidberg
adam@laptop:/home/zoidberg$pwd
/home/zoidberg

Любой каталог к UNIX всегда содержит каталог “.” и “..”. Одна точка “ссылка” (не жесткая, и не символическая) на текущий каталог, а две точки - это “ссылка” на родительский каталог.

adam@laptop:~$cd ..
adam@laptop:/home$pwd
/home

Как уже говорилось выше, можно использовать как относительный путь, так и абсолютный. Абсолютный всегда начинается с корня и дальше по иерархии каталогов (/home/adam), а относительный - это относительно текущего каталога, начинается сразу с его имени.

3. mkdir, rmdir

Обе команды оперируют каталогами, первая создает их (make), вторая соответственно удаляет (remove). Обеим передается один параметр - это путь к каталогу. rmdir можно применять только к пустым каталогам.

adam@laptop:~/Documents/polishlinux.org/examples$ mkdir directory
adam@laptop:~/Documents/polishlinux.org/examples$ ls
directory example.txt all_about_console.txt

adam@laptop:~/Documents/polishlinux.org/examples$ rmdir directory/
adam@laptop:~/Documents/polishlinux.org/examples$ ls
example.txt all_about_console.txt

4. cp, mv, rm

* cp - копировать (copy), требует два параметра, “что” и “куда”
* mv - перемещение (move) или переименование (переименование - это тоже перемещение, только в тоже место), параметры как и у команды cp
* rm - удаление (remove) файлов и каталогов

С этими командами могут использоваться следующие ключи:

* -f - форсирует (force) задавание лишних вопросов, например если файл только для чтения, у вас не спросят уверены ли вы что хотите его удалить
* -i - работа в интерактивном режиме,система будет спрашивать разрешение на каждое действие
* -b - для команд cp и mv создает резервную копию файла

Для команд cp и rm существует рекурсивный режим - ключ -r.

adam@laptop:~/Documents/polishlinux.org/examples$ ls
directory1 directory2 directory3 example.txt all_about_console.txt

adam@laptop:~/Documents/polishlinux.org/examples$ cp -R directory2/ directory3/
adam@laptop:~/Documents/polishlinux.org/examples$ ls directory3/
directory2

adam@laptop:~/Documents/polishlinux.org/examples$ rm -r directory3/
adam@laptop:~/Documents/polishlinux.org/examples$ ls
directory1 directory2 example.txt all_about_console.txt

Помните, что rm -r удалит все, даже и не пустые каталоги.

5. ln

Команда ln создает ссылки на файл или каталог, которая имеет теже параметры что и оригинальный файл. Разделяют два вида ссылок, символические и жесткие.

* символическая ссылка - содержит в себе путь к оригинальному файлу, полный аналог ярлыков в Windows
* жесткая ссылка - в отличии от символической содержит в себе путь к тому дисковому пространству где расположены данные оригинального файла

Если удалить файл на который ссылается символическая ссылка, то в шелле она будет подсвечена красным. Если мы удалим оригинальный файл на который ссылается жесткая ссылка, то с ней ничего не произойдет, т.к. жесткая ссылка все еще “резервирует” место на диске, сообщая что это не не используемая область данных.

Символические ссылки создаются с помощью параметра -s.

adam@laptop:~/Documents/polishlinux.org/examples$ cat file
Symlink example.
adam@laptop:~/Documents/polishlinux.org/examples$ ln -s file
symlink_file
adam@laptop:~/Documents/polishlinux.org/examples$ ls -l
lrwxrwxrwx 1 adam adam 4 2007-06-01 19:11 symlink_file -> file
-rw-r–r– 1 adam adam 22 2007-06-01 19:10 file
adam@laptop:~/Documents/polishlinux.org/examples$ rm file
adam@laptop:~/Documents/polishlinux.org/examples$ ls
ymlink_file

Посмотреть все жесткие ссылки на файл можно с помощью команды ln с ключом -l.

adam@laptop:~/Documents/polishlinux.org/examples$ ln file hardlink_file
adam@laptop:~/Documents/polishlinux.org/examples$ ls -l
-rw-r–r– 2 adam adam 22 2007-06-01 19:11 hardlink_file
-rw-r–r– 2 adam adam 22 2007-06-01 19:11 file
adam@laptop:~/Documents/polishlinux.org/examples$ rm file
adam@laptop:~/Documents/polishlinux.org/examples$ ls -l
-rw-r–r– 1 adam adam 22 2007-06-01 19:11 hardlink_file

6. touch

Эта простая команда имеет два применения. Первое, если в параметр мы передадим имя файла, программа простол изменит его время модификации на текущее. Если такого файла нет, то она его создаст - это второе.

adam@laptop:~/Documents/polishlinux.org/examples$ ls -l example.txt
-rw-r–r– 1 adam adam 0 2007-05-30 11:31 example.txt
adam@laptop:~/Documents/polishlinux.org/examples$ touch example.txt
adam@laptop:~/Documents/polishlinux.org/examples$ ls -l
total 0
-rw-r–r– 1 adam adam 0 2007-06-07 13:27 example.txt
-rw-r–r– 1 adam adam 0 2007-05-30 11:31 all_about_console.txt

adam@laptop:~/Documents/polishlinux.org/examples$ touch new.txt
adam@laptop:~/Documents/polishlinux.org/examples$ ls -l
total 0
-rw-r–r– 1 adam adam 0 2007-06-07 13:28 new.txt
-rw-r–r– 1 adam adam 0 2007-06-07 13:27 example.txt
-rw-r–r– 1 adam adam 0 2007-05-30 11:31 all_about_console.txt

Если в качестве ключа указать -c или –no-create, то в случае отсутствия файла, она его не создаст. А параметры -d и -t меняют время создания на определенное в соответствии с шаблоном: [[CC]YY]MMDDhhmm[.ss].

adam@laptop:~/Documents/polishlinux.org/examples$ ls -l
total 0
-rw-r–r– 1 adam adam 0 2007-06-07 13:28 new.txt
-rw-r–r– 1 adam adam 0 2007-06-07 13:27 example.txt
-rw-r–r– 1 adam adam 0 2007-05-30 11:31 all_about_console.txt
adam@laptop:~/Documents/polishlinux.org/examples$ touch -t
200706101200 new.txt
adam@laptop:~/Documents/polishlinux.org/examples$ touch -d
“last monday” example.txt
adam@laptop:~/Documents/polishlinux.org/examples$ touch -d
“2 days ago 12:00″ all_about_console.txt
adam@laptop:~/Documents/polishlinux.org/examples$ ls -l
total 0
-rw-r–r– 1 adam adam 0 2007-06-10 12:00 new.txt
-rw-r–r– 1 adam adam 0 2007-06-04 00:00 example.txt
-rw-r–r– 1 adam adam 0 2007-06-05 12:00 all_about_console.txt

7. df, du

Следующие две команды шелла это df и du. Первая выводит информацию о свободнов пространстве на дисках (Display Free disk space). Вторая выводит информацию о занимаемом месте на диске файлом. С ключом -h информация выдастся не в блоках, а в мегабайтах.

adam@laptop:~/Documents/polishlinux.org/examples$ df -h
Filesystem Size Used Avail Capacity Mounted on
/dev/sda5 40G 34G 4,0G 90% /
varrun 502M 136K 502M 1% /var/run
varlock 502M 0 502M 0% /var/lock
procbususb 502M 148K 502M 1% /proc/bus/usb
udev 502M 148K 502M 1% /dev
devshm 502M 0 502M 0% /dev/shm

adam@laptop:~/Documents/polishlinux.org/examples$ du -h error.txt
4,0K error.txt

8. echo

Простая команда, возвращает текст переданный параметром.

adam@laptop:~$echo Hello World!
Hello World!
adam@laptop:~$

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

adam@laptop:~$echo -n Hello World!
Hello World!adam@laptop:~$

9. pwd

Команда pwd (print working directory) выдает полный путь к текущему каталогу.

adam@laptop:~$pwd
/home/adam
adam@laptop:~$

10. cat

Эта команда может использоваться для создания файлов. Строго говоря, эта программа перенаправляет поток ввода в файл и отображает поток ввода на стандартном потоке вывода.

adam@laptop:~$cat > file.txt
Very interesting text.

Для просмотра содержимого файла, нужно ввести тоже самое но без оператора >.

adam@laptop:~$cat file.txt
Very interesting text.

Если использовать ключ -n, строки будут пронумированны.

adam@laptop:~$cat -n file.txt
1 Very interesting text.

Так же эту команду можно использовать для объединения файлов, например:

cat file1 file2 file3 file4 file5 > file.iso

11. wc, head, tail

Есть три команды используемые для обработки строк. Команда wc выводит количество строк, слов и байтов в файле:

adam@laptop:~/Documents/polishlinux.org$ wc all_about_console.txt
94 908 6828 all_about_console.txt

Первая цифра - это строки, далее слова и последнее - это байты.

Оставшиеся две команды выводят соответственно голову и хвост файла. По умолчанию выводятся 10 строк, но используя ключ -n, и указав после него цифру, можно регулировать количество выводимых строк.

adam@laptop:~/Documents/polishlinux.org$ head -n 1 example.txt
The first row of the text.
adam@laptop:~/Documents/polishlinux.org$ tail -n 2 example.txt
The last but one row of the text.
The last row of the text.

12. less

Эта команда позволяет скролить текст прямо на экране.

adam@laptop:~$less file.txt

Если во время просмотра нажать f, то выведется интересная информация о файле, например текущая строка и т.д.

Монтаж канализации для дачных участков. Оптимальные цены, высокое качество.

Оставьте свой отзыв