кодесурса
«Linux

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

script1adsense2code
script1adsense3code

В этом занятии мы рассмотрели, как распознавать, создавать, удалять, копировать и перемещать файлы, используя такие команды, как file, touch, rm, cp, mv и rename.

все файлы чувствительны к регистру

Linux чувствителен к регистру, это означает, что file1 отличается от FILE1, а / user / data отличается от / user / Data. Следующая команда показывает разницу между двумя файлами: один с заглавными буквами S, а другой с строчными.

[email protected]:~$ vim summer.txt
[email protected]:~$ cat summer.txt
the quick brown fox jumps over the lazy dog.
[email protected]:~$ vim Summer.txt
[email protected]:~$ cat Summer.txt
THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG.
[email protected]:~$

все это файл

Каталог - это особый тип файла, но он по-прежнему (чувствителен к регистру!). Даже окно терминала (/ dev / pts / 4) или жесткий диск (/ dev / sdb) представлены где-то в файловой системе как файл. В этом уроке станет ясно, что все в Linux - это файл.

файл

Утилита файлов определяет тип файла. Linux не использует расширения для определения типа файла. Вашему редактору не важно, заканчивается ли файл в .TXT или .DOC. Как системный администратор, вы должны использовать команду file, чтобы определить тип файла. Вот несколько примеров типичной системы Linux.

[email protected]:~$ file linux-command-past-date.png
linux-command-past-date.png: PNG image data, 397 x 219, 8-bit/color RGB, non-interlaced
[email protected]:~$ file Summer.txt
Summer.txt: ASCII text
[email protected]:~$

Команда file использует волшебный файл, который содержит шаблоны для распознавания типов файлов. Волшебный файл находится в / usr / share / file / magic. Наберите man 5 magic для получения дополнительной информации. Интересно указать файл -s для специальных файлов, таких как файлы в / dev и / proc.

[email protected]:/home$ file /dev/sda
/dev/sda: block special 
[email protected]:/home$ file -s /dev/sda
/dev/sda: no read permission
[email protected]:/home$ file /proc/cpuinfo
/proc/cpuinfo: empty 
[email protected]:/home$ file -s /proc/cpuinfo
/proc/cpuinfo: ASCII text, with very long lines

потрогать

Вы можете использовать сенсорную команду, чтобы создать пустой файл. Следующие сенсорные команды создают два файла, file1 и file2 с размером нулевого байта.

[email protected]:~$ touch file1
[email protected]:~$ touch file2
[email protected]:~$ ls -l
total 104
-rw-rw-r-- 1 datasoft datasoft   729 Jul 28 15:34 abc.txt
drwxr-xr-x 2 datasoft datasoft  4096 Jun 20 12:41 Desktop
drwxr-xr-x 2 datasoft datasoft  4096 Jun 20 12:41 Documents
drwxr-xr-x 2 datasoft datasoft  4096 Jun 20 12:41 Downloads
-rw-r--r-- 1 datasoft datasoft  8980 Jun 20 11:42 examples.desktop
-rw-rw-r-- 1 datasoft datasoft     0 Jul 29 12:32 file1
-rw-rw-r-- 1 datasoft datasoft     0 Jul 29 12:32 file2

Touch -T

Используя опцию 't', вы можете установить время изменения файла (формат [[CC] YY] MMDDhhmm [.ss]).

[email protected]:~$ touch -t 200505050000 SinkoDeMayo
[email protected]:~$ touch -t 130207111630 BigBattle
touch: invalid date format ?130207111630?
[email protected]:~$ ls -l
total 104
-rw-rw-r-- 1 datasoft datasoft   729 Jul 28 15:34 abc.txt
drwxr-xr-x 2 datasoft datasoft  4096 Jun 20 12:41 Desktop
drwxr-xr-x 2 datasoft datasoft  4096 Jun 20 12:41 Documents
drwxr-xr-x 2 datasoft datasoft  4096 Jun 20 12:41 Downloads
-rw-r--r-- 1 datasoft datasoft  8980 Jun 20 11:42 examples.desktop
-rw-rw-r-- 1 datasoft datasoft     0 Jul 29 12:32 file1
-rw-rw-r-- 1 datasoft datasoft     0 Jul 29 12:32 file2
-rw------- 1 datasoft datasoft  8800 Jan 27  2014 linux-command-past-date.png
drwxr-xr-x 2 datasoft datasoft  4096 Jun 20 12:41 Music
drwxrwxr-x 6 datasoft datasoft  4096 Jul 28 17:01 MyDir
drwxr-xr-x 2 datasoft datasoft  4096 Jun 20 12:41 Pictures
drwxr-xr-x 2 datasoft datasoft  4096 Jun 20 12:41 Public
-rw-rw-r-- 1 datasoft datasoft     0 May  5  2005 SinkoDeMayo

комната

Команда rm (сокращение от «remove») используется для удаления файла. В отличие от некоторых графических пользовательских интерфейсов, командная строка, как правило, не имеет мусорной корзины или корзины для восстановления файлов. Когда вы используете rm для удаления файла, файл исчезает. Поэтому будьте осторожны при удалении файлов!

[email protected]:~$ ls
abc.txt    examples.desktop             Music     SinkoDeMayo  test3
Desktop    file1                        MyDir     summer.txt   typescript
Documents  file2                        Pictures  Summer.txt   Videos
Downloads  linux-command-past-date.png  Public    Templates
[email protected]:~$ touch -t 200505050000 SinkoDeMayo
[email protected]:~$ rm SinkoDeMayo
[email protected]:~$ ls
abc.txt    examples.desktop             Music     summer.txt  typescript
Desktop    file1                        MyDir     Summer.txt  Videos
Documents  file2                        Pictures  Templates
Downloads  linux-command-past-date.png  Public    test3

гм-я

Чтобы предотвратить случайное удаление файла, вы можете набрать rm -i.

[email protected]:~$ touch brel.txt
[email protected]:~$ rm -i brel.txt
rm: remove regular empty file ?brel.txt?? y
[email protected]:~$ 

рм-рф

По умолчанию rm -r не удаляет непустые каталоги. Тем не менее, rm принимает несколько опций, которые позволят вам удалить любой каталог. Инструкция rm -rf известна тем, что она удалит все что угодно (при условии, что у вас есть права для этого). Когда вы вошли в систему как root, будьте очень осторожны с rm -rf (f означает force, а r означает рекурсивный), так как root означает, что разрешения не применяются к вам. Вы можете буквально стереть всю вашу файловую систему случайно.

[email protected]:~$ ls test3
Mytest
[email protected]:~$ rm test3
rm: cannot remove ?test3?: Is a directory
[email protected]:~$ rm -rf test3
[email protected]:~$ ls test3
ls: cannot access test3: No such file or directory

ср

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

[email protected]:~$ touch FileA
[email protected]:~$ ls
abc.txt           file1                        MyDir       Templates
Desktop           file2                        Pictures    typescript
Documents         FileA                        Public      Videos
Downloads         linux-command-past-date.png  summer.txt
examples.desktop  Music                        Summer.txt
[email protected]:~$ cp FileA FileB
[email protected]:~$ ls
abc.txt           file1                        Music       Summer.txt
Desktop           file2                        MyDir       Templates
Documents         FileA                        Pictures    typescript
Downloads         FileB                        Public      Videos
examples.desktop  linux-command-past-date.png  summer.txt
[email protected]:~$ mkdir MyTest
[email protected]:~$ ls
abc.txt           file1                        Music     summer.txt
Desktop           file2                        MyDir     Summer.txt
Documents         FileA                        MyTest    Templates
Downloads         FileB                        Pictures  typescript
examples.desktop  linux-command-past-date.png  Public    Videos
[email protected]:~$ mkdir MyDir1
[email protected]:~$ ls
abc.txt           file2                        MyDir1      Templates
Desktop           FileA                        MyTest      typescript
Documents         FileB                        Pictures    Videos
Downloads         linux-command-past-date.png  Public
examples.desktop  Music                        summer.txt
file1             MyDir                        Summer.txt
[email protected]:~$ cp FileA MyDir1/
[email protected]:~$ ls MyDir1/
FileA

cp -r

Чтобы скопировать полные каталоги, используйте cp -r (опция -r вызывает рекурсивное копирование всех файлов во всех подкаталогах).

[email protected]:~$ ls
abc.txt           file2                        MyDir1      Templates
Desktop           FileA                        MyTest      typescript
Documents         FileB                        Pictures    Videos
Downloads         linux-command-past-date.png  Public
examples.desktop  Music                        summer.txt
file1             MyDir                        Summer.txt
[email protected]:~$ ls MyDir1/
FileA
[email protected]:~$ cp -r MyDir1 MyDirA
[email protected]:~$ ls
abc.txt           file2                        MyDir1      Summer.txt
Desktop           FileA                        MyDirA      Templates
Documents         FileB                        MyTest      typescript
Downloads         linux-command-past-date.png  Pictures    Videos
examples.desktop  Music                        Public
file1             MyDir                        summer.txt
[email protected]:~$ ls MyDirA
FileA

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

Вы также можете использовать cp для копирования нескольких файлов в каталог. В этом случае последний аргумент (или цель) должен быть каталогом.

[email protected]:~$ cp file2 FileA MyDir1

cp -i

Чтобы cp не перезаписывал существующие файлы, используйте параметр -i (для интерактивного просмотра).

[email protected]:~$ cp FileA FileB
[email protected]:~$ cp -i FileA FileB
cp: overwrite ?FileB?? no
[email protected]:~$

cp -p

Чтобы сохранить разрешения и метки времени из исходных файлов, используйте cp -p.

[email protected]:~$ cd MyDir1
[email protected]:~/MyDir1$ ls
file1  file2  FileA
[email protected]:~/MyDir1$ ls -l
total 0
-rw-rw-r-- 1 datasoft datasoft 0 Jul 29 13:30 file1
-rw-rw-r-- 1 datasoft datasoft 0 Jul 29 13:30 file2
-rw-rw-r-- 1 datasoft datasoft 0 Jul 29 13:22 FileA
[email protected]:~/MyDir1$ cp * /
cp: cannot create regular file ?/file1?: Permission denied
cp: cannot create regular file ?/file2?: Permission denied
cp: cannot create regular file ?/FileA?: Permission denied
[email protected]:~/MyDir1$ cp * ../MyTest/
[email protected]:~/MyDir1$ cd ..
[email protected]:~$ cd MyTest
[email protected]:~/MyTest$ ls -l
total 0
-rw-rw-r-- 1 datasoft datasoft 0 Jul 29 13:34 file1
-rw-rw-r-- 1 datasoft datasoft 0 Jul 29 13:34 file2
-rw-rw-r-- 1 datasoft datasoft 0 Jul 29 13:34 FileA

милливольт

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

[email protected]:~$ touch file100
[email protected]:~$ ls
abc.txt           file100                      MyDir     summer.txt
Desktop           file2                        MyDir1    Summer.txt
Documents         FileA                        MyDirA    Templates
Downloads         FileB                        MyTest    typescript
examples.desktop  linux-command-past-date.png  Pictures  Videos
file1             Music                        Public
[email protected]:~$ mv file100 ABC.txt
[email protected]:~$ ls
abc.txt           file1                        MyDir     summer.txt
ABC.txt           file2                        MyDir1    Summer.txt
Desktop           FileA                        MyDirA    Templates
Documents         FileB                        MyTest    typescript
Downloads         linux-command-past-date.png  Pictures  Videos
examples.desktop  Music                        Public
[email protected]:~$

Когда вам нужно переименовать только один файл, тогда mv - предпочтительная команда для использования.

переименовать

Можно также использовать команду переименования, но она имеет более сложный синтаксис, позволяющий переименовывать сразу несколько файлов. Ниже приведены два примера, первый переключает все вхождения txt в png для всех имен файлов, заканчивающихся на .txt. Второй пример переключает все вхождения верхнего регистра 'ABC' в нижнем регистре 'abc' для всех имен файлов, заканчивающихся на .png. Следующий синтаксис будет работать в Debian и Ubuntu (до Ubuntu 7.10).

[email protected]:~$ ls -l *.txt
-rw-r--r-- 1 root root 23 Jul 29 14:20 myfile1.txt
-rw-r--r-- 1 root root  9 Jul 29 14:20 myfile2.txt
[email protected]:~$ rename 's/txt/doc/' *.txt
[email protected]:~$ ls -l *.doc
-rw-r--r-- 1 root root 23 Jul 29 14:20 myfile1.doc
-rw-r--r-- 1 root root  9 Jul 29 14:20 myfile2.doc
[email protected]:~$ rename 's/myfile/MYFILE/' *.doc
[email protected]:~$ ls -l *.doc
-rw-r--r-- 1 root root 23 Jul 29 14:20 MYFILE1.doc
-rw-r--r-- 1 root root  9 Jul 29 14:20 MYFILE2.doc
[email protected]:~$

В Red Hat Enterprise Linux (и во многих других дистрибутивах Linux, таких как Ubuntu 8.04) синтаксис переименования немного отличается. Первый пример ниже переименовывает все файлы * .conf, заменяя любое вхождение conf на bak. Второй пример переименовывает все (*) файлы, заменяя один на ОДИН.

Упражнение, практика и решение:

1. Перечислите файлы в каталоге / bin.

Код:

ls /bin

2. Отобразите тип файла / bin / cat, / etc / passwd и / usr / bin / passwd.

Код:

sudo file /bin/cat /etc/passwd /usr/bin/passwd

3. Загрузите wolf.jpg и LinuxFun.pdf с http://linux-training.be (wget http: // linux-training.be/files/studentfiles/abc.jpg и wget http://linux-training.be /files/books/xyz.pdf)

Код:

sudo wget http://linux-training.be/files/studentfiles/abc.jpg
sudo wget http://linux-training.be/files/studentfiles/abc.png
sudo wget http://linux-training.be/files/books/xyz.pdf

4. Отобразите тип файла abc.jpg и xyz.pdf.

Код:

file abc.jpg xyz.pdf

5. Переименуйте abc.jpg в xyz.pdf (используйте mv).

Код:

sudo mv abc.jpg xyz.pdf

6. Отобразите тип файла abc.pdf и xyz.pdf.

Код:

file wolf.pdf LinuxFun.pdf

7. Создайте каталог ~ / workarea и введите его.

Код:

mkdir ~/woorkarea ; cd ~/workarea

8. Создайте файлы abc.txt и xyz.txt в касании.

Код:

touch abc.txt xyz.txt

9. Измените дату на вчерашнем тексте, чтобы соответствовать вчерашней дате.

Код:

touch -t 200810251405 yesterday.txt (substitute 20081025 with yesterday)

10. Скопируйте abc.txt в copy.xyz.txt

Код:

cp abc.txt copy.xyz.txt

11. Переименуйте copy.abc.txt в kim

Код:

mv copy.abc.txt kim

12. Создайте каталог с именем ~ / testbackup и скопируйте в него все файлы из ~ / touch.

Код:

mkdir ~/testbackup ; cp -r ~/touched ~/testbackup/

13. Используйте одну команду, чтобы удалить каталог ~ / testbackup и все файлы в нем.

Код:

rm -rf ~/testbackup

14. Создайте каталог ~ / etcbackup и скопируйте в него все файлы * .conf из / etc. Вы включили
все подкаталоги / etc?

Код:

sudo cp -r /etc/*.conf /home/datasoft/touched/etcbackup
Only *.conf files that are directly in /etc/ are copied.

15. Используйте переименовать, чтобы переименовать все файлы * .conf в * .backup. (если у вас есть более одного дистрибутива
доступно, попробуйте все!)

Код:

On RHEL: touch 1.conf 2.conf ; rename conf backup *.conf
On Debian: touch 1.conf 2.conf ; rename 's/conf/backup/' *.conf

Предыдущая: Linux - Работа с каталогами
Далее: Linux - Работа с содержимым файлов

Новый контент: Composer: менеджер зависимостей для PHP , R программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code