- •II. First steps on the command line
- •5. Man pages
- •6. Working with directories (работа с папками)
- •7.Working with files
- •8. Working with file contents
- •9. The Linux file tree
- •III. Shell expansion
- •10. Commands and arguments
- •11. Control operators
- •12. Variables
- •13. Shell history
- •14. File globbing
- •IV. Pipes and commands
- •Глава 16. Фильтры.
- •16.3 Grep
- •16.7. Sort
- •16.8. Uniq
- •16.9. Comm
- •16.12. Примеры пайпов
- •Глава 17. Основные инструменты Unix
- •17.1. Find
- •17.2. Размещение
- •17.3. Date
- •17.5. Sleep
- •17.6. Time
- •17.7. Gzip - gunzip
- •17.8. Zcat - zmore
- •18.3. Замена и удаление символов (r X X)
- •18.4. Отменить и повторить (u .)
- •18.5. Вырезать, копировать и вставить строчки (dd yy p p)
- •18.6. Вырезать, копировать и вставить строчки (3dd 2yy)
- •18.8. Объединения двух и более линий (j)
- •18.9. Слова (w b)
- •18.10. Сохранить (или нет) и выход (:w :q :q! )
- •18.11. Поиск (/ ?)
- •18.13. Чтение файлов (:r :r !cmd)
- •19.1. Предпосылки
- •19.2. Hello World
- •19.4. Комментарии
- •20.2. Если, затем, иначе (if then else)
- •20.3. If then elif
- •20.4. For loop
- •20.5. While loop
- •21.2. Shift through parameters.
- •21.3. Runtime input.
- •21.3. Sourcing a config file.
- •21.5. Get script options with getopts.
- •21.6. Get shell options with shopt.
- •Глава 22 More scripting.
- •22.1. Eval.
- •22.4. Case.
- •22.5. Shell functions.
- •Раздел VII. Local user management. Глава 23. Users.
- •23.1. Identify yourself.
- •23.2. Users.
- •23.3. Passwords.
- •23.4 Home directories
- •23.5 User shell
- •23.6. Switcj users with su
- •23.7 Run a program as another user
- •23.10 Shell environment
- •Глава 24. Groups
- •24.1 About groups
- •24.2 Groupadd
- •24.3 /Etc/group
- •24.4 Usermod
- •24.5 Groupmod
- •24.6 Groupdel
- •24.7 Groups
- •24.8 Gpasswd
- •24.9 Vigr
7.Working with files
Необходимо помнить, что, во-первых, Linux чувствителен к регистру, то есть file1 и FILE1 разные файлы, так же как /etc/hosts и /etc/Hosts разные папки (по умолчанию второй даже не существует в Linux).
Во-вторых, все является файлом. Папка (директория) – это особый вид файла, но это по-прежнему файл. Даже окно терминала (/dev/pts/4) или жесткий диск (/dev/sdb) представлены где-то в файловой системе как файл.
file
Команда file определяет тип файла. Linux не использует расширений для определения типа файла. Вашему редактору все равно, оканчивается файл .TXT или .DOC. Как системному администратору, вам следует использовать file для определения типа файла. Вот пара примеров:
paul@laika:~$ file pic33.png
pic33.png: PNG image data, 3840 x 1200, 8-bit/color RGBA, non-interlaced
paul@laika:~$ file /etc/passwd
/etc/passwd: ASCII text
paul@laika:~$ file HelloWorld.c
HelloWorld.c: ASCII C program text
Команда file использует волшебный файл, который содержит модели для определения типа файлов. Этот файл расположен в /usr/share/file/magic/. Наберите man 5 magic для большей информации.
Для определения типа специальных файлов, таких как в /dev и /proc необходимо использовать опцию –s.
root@debian6~# file /dev/sda
/dev/sda: block special
root@debian6~# file -s /dev/sda
/dev/sda: x86 boot sector; partition 1: ID=0x83, active, starthead...
root@debian6~# file /proc/cpuinfo
/proc/cpuinfo: empty
root@debian6~# file -s /proc/cpuinfo
/proc/cpuinfo: ASCII C++ program text
touch
Один из наиболее простых способов создания файлов это команда touch. (Прим: touch file1). При создании файла можно так же использовать параметр –t, для изменения времени создания:
paul@laika:~/test$ touch -t 200505050000 SinkoDeMayo
paul@laika:~/test$ touch -t 130207111630 BigBattle
paul@laika:~/test$ ls -l
total 0
-rw-r--r-- 1 paul paul 0 1302-07-11 16:30 BigBattle
-rw-r--r-- 1 paul paul 0 2005-05-05 00:00 SinkoDeMayo
rm – команда для удаления файла. В отличие от ОС с графическим интерфейсом, командная строка не имеет корзины, или чего-либо подобного. Если вы используете rm, то файл пропадает окончательно. Чтобы предостеречь себя от случайного удаления файла, добавьте опцию –i, тогда будет задан вопрос, уверены ли вы:
paul@laika:~/Linux$ touch brel.txt
paul@laika:~/Linux$ rm -i brel.txt
rm: remove regular empty file `brel.txt'? y
paul@laika:~/Linux$
По умолчанию rm –r не будет удалять пустые директории. Однако есть несколько опций, которые позволят вам удалить любую директорию. Опция rm –rf известна потому, что она удалит всё (если у вас есть разрешение). Когда вы вошли с правами root, будьте осторожны с rm –rf (r – recursive, рекурсивно, f – force, усиленно/форсировано), на вас больше не будут распространяться ограничения. То есть вы буквально можете случайно удалить всю систему.
cp – для копирования файлов (если добавить исходный файл и конечную цель). Если цель – папка, то он будет скопирован в эту папку. Если вы хотите скопировать папку вместе со всем содержимым (и подпапками), используйте cp –r. Вы так же можете скопировать несколько файлов за раз, в этом случае последний аргумент (цель) должен быть папкой. (Прим: cp file1 file2 dir1/file3 dir1/file55 dir2). Аналогично с rm можно использовать опцию –i, для защиты от случайной перезаписи файла при копировании. Чтобы при копировании сохранить все выставленные права доступа, а так же время создания файла, используйте опцию –p.
mv – для изменении имени файла или для перемещения файла в другую папку. Когда надо переименовать только один файл, удобно использовать команду mv (прим: mv 1.txt 2.pdf, тогда файл 1.txt сменит название на 2.pdf).
rename – команда для переименования большого числа файлов за раз. Ниже приведены два примера, первый меняет все расширения из txt в png, для всех файлов, имя которых оканчивается на txt. Второй пример меняет все, что имеет в названии ABC в нижний регистр: abc, для всех файлов, которые кончаются на .png. Приведенный синтаксис работает для debian и ubuntu (до Ubuntu 7.10, у меня на виртуальной машине стоит Ubuntu 12.04, работает также)
paul@laika:~/test$ ls
123.txt ABC.txt
paul@laika:~/test$ rename 's/txt/png/' *.txt
paul@laika:~/test$ ls
123.png ABC.png
paul@laika:~/test$ rename 's/ABC/abc/' *.png
paul@laika:~/test$ ls
123.png abc.png
paul@laika:~/test$