Linux - Работа с файлами
В этом занятии мы рассмотрели, как распознавать, создавать, удалять, копировать и перемещать файлы, используя такие команды, как 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 программирования