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быстрая коричневая лиса перепрыгивает через ленивую собаку. [адрес электронной почты защищен]: ~ $ vim Summer.txt [адрес электронной почты защищен]: ~ $ cat Summer.txtБЫСТРАЯ КОРИЧНЕВАЯ ЛИСА Прыгает через ленивую собаку.  email protected]: ~ $  

все является файлом

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

file

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

  [email protected]: ~ $ file linux-command-past-date.pnglinux-command-past-date.png:  Данные изображения PNG, 397 x 219, 8-битный/цветной RGB, без чересстрочной развертки [защита электронной почты]: ~ $ file Summer.txtSummer.txt: текст ASCII [защита электронной почты]: ~ $  

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

  [защита электронной почты]:/home $ file/dev/sda/dev/sda: специальная блокировка [защита электронной почты]:/home $ file -s/dev/sda/ dev/sda: нет разрешения на чтение [электронная почта защищена]:/home $ file/proc/cpuinfo/proc/cpuinfo: пусто [электронная почта защищена]:/home $ file -s/proc/cpuinfo/proc/cpuinfo: текст ASCII с  очень длинные строки  

touch

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

  [защита электронной почты]: ~ $ touch file1 [защита электронной почты]: ~ $ touch file2 [защита электронной почты]: ~ $ ls -ltotal 104-rw-rw-r-  - 1 datasoft datasoft 729 28 июля 15:34 abc.txtdrwxr-xr-x 2 datasoft datasoft 4096 20 июня 12:41 Desktopdrwxr-xr-x 2 datasoft datasoft 4096 20 июня 12:41 Documentsdrwxr-xr-x 2 datasoft datasoft 4096 июн  20 12:41 Downloads-rw-r - r-- 1 datasoft datasoft 8980 20 июня 11:42 примеры. desktop-rw-rw-r-- 1 datasoft datasoft 0 29 июля 12:32 file1-rw-rw-r-- 1 datasoft datasoft 0 29 июля 12:32 file2  

touch -t

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

  [защита электронной почты]: ~ $ touch -t 200505050000 SinkoDeMayo [защита электронной почты]: ~ $ touch -t 130207111630 BigBattletouch: недопустимый формат даты? 130207111630? [защита электронной почты]: ~ $  ls -ltotal 104-rw-rw-r-- 1 datasoft datasoft 729 28 июля 15:34 abc.txtdrwxr-xr-x 2 datasoft datasoft 4096 20 июня 12:41 Desktopdrwxr-xr-x 2 datasoft datasoft 4096 20 июня 12:  41 Documentsdrwxr-xr-x 2 datasoft datasoft 4096 20 июня, 12:41 Downloads-rw-r - r-- 1 datasoft datasoft 8980 20 июня, 11:42 examples.desktop-rw-rw-r-- 1 datasoft datasoft 0 июл  29 12:32 file1-rw-rw-r-- 1 datasoft datasoft 0 29 июля 12:32 file2-rw ------- 1 datasoft datasoft 8800 27 января 2014 linux-command-past-date.pngdrwxr-xr  -x 2 datasoft datasoft 4096 20 июня, 12:41 Musicdrwxrwxr-x 6 datasoft d  atasoft 4096 28 июля 17:01 MyDirdrwxr-xr-x 2 datasoft datasoft 4096 20 июня 12:41 Picturesdrwxr-xr-x 2 datasoft datasoft 4096 20 июня 12:41 Public-rw-rw-r-- 1 datasoft datasoft 0 5 мая  2005 SinkoDeMayo  

rm

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

  [email protected]: ~ $ lsabc.txt examples.desktop Music SinkoDeMayo test3Desktop file1 MyDir summer.txt typescriptDocuments file2 Pictures Summer.txt VideosDownloads  linux-command-past-date.png Общедоступные шаблоны [защита электронной почты]: ~ $ touch -t 200505050000 SinkoDeMayo [защита электронной почты]: ~ $ rm SinkoDeMayo [защита электронной почты]: ~ $ lsabc.txt examples.desktop Music summer.txt typescriptDesktop  file1 MyDir Summer.txt ВидеоДокументы file2 Шаблоны изображенийЗагружает linux-command-past-date.png Public test3  

rm -i

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

  [email protected]: ~ $ touch brel.txt [email protected]:  ~ $ rm -i brel.txtrm: удалить обычный пустой файл? brel.txt ??  y [электронная почта защищена]: ~ $  

rm -rf

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

  [защита электронной почты]: ~ $ ls test3Mytest [защита электронной почты]: ~ $ rm test3rm: невозможно удалить? test3 ?: Каталог [защищен электронной почтой]: ~ $ rm  -rf test3 [электронная почта защищена]: ~ $ ls test3ls: нет доступа к test3: нет такого файла или каталога  

cp

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

  [email protected]: ~ $ touch FileA [email protected]: ~ $ lsabc.txt file1 MyDir TemplatesDesktop  file2 Изображения машинописный текстДокументы FileA Общедоступные видеоЗагрузки linux-command-past-date.png summer.txtexamples.desktop Music Summer.txt [защищен по электронной почте]: ~ $ cp FileA FileB [защищен по электронной почте]: ~ $ lsabc.txt file1 Music Summer.txtDesktop file2  MyDir TemplatesDocuments FileA Pictures typescriptDownloads FileB Public Videosexamples.desktop linux-command-past-date.png summer.txt [email protected]: ~ $ mkdir MyTest [email protected]: ~ $ lsabc.txt file1 Music summer.txtDesktop file2 MyDir Summer.  txtDocuments FileA MyTest TemplatesDownloads FileB Pictures typescriptexamples.desktop linux-command-past-date.png Общедоступное видео [защищено по электронной почте]: ~ $ mkdir MyDir1 [защищено по электронной почте]: ~ $ lsabc.txt file2 MyDir1 TemplatesDesktop FileA MyTest typescriptDownloads FileB Linux Pictures VideosDownloads  command-past-date.png Publicex  amples.desktop Music summer.txtfile1 MyDir Summer.txt [защита электронной почты]: ~ $ cp FileA MyDir1/[защита электронной почты]: ~ $ ls MyDir1/FileA  

cp -r

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

  [email protected]: ~ $ lsabc.txt file2 MyDir1 TemplatesDesktop FileA MyTest typescriptDocuments FileB Pictures VideosDownloads linux-command-past-date.png Publicexamples.desktop Music summer.txtfile1 MyDir Summer.txt [email protected]:  ~ $ ls MyDir1/FileA [защищено по электронной почте]: ~ $ cp -r MyDir1 MyDirA [защищено по электронной почте]: ~ $ lsabc.txt file2 MyDir1 Summer.txtDesktop FileA MyDirA TemplatesDocuments FileB MyTest typescriptDownloads linux-command-past-date.png Pictures Videosexamples  .desktop Music Publicfile1 MyDir summer.txt [защита электронной почты]: ~ $ ls MyDirAFileA  

cp несколько файлов в каталог

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

  [email protected]: ~ $ cp file2 FileA MyDir1  

cp -i

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

  [защита электронной почты]: ~ $ cp FileA FileB [защита электронной почты]: ~ $ cp -i FileA FileBcp: перезапись? FileB ??  нет [электронная почта защищена]: ~ $  

cp -p

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

  [защита электронной почты]: ~ $ cd MyDir1 [защита электронной почты]: ~/MyDir1 $ lsfile1 file2 FileA [защита электронной почты]: ~/MyDir1 $ ls -ltotal 0-rw  -rw-r-- 1 datasoft datasoft 0 29 июля 13:30 file1-rw-rw-r-- 1 datasoft datasoft 0 29 июля 13:30 file2-rw-rw-r-- 1 datasoft datasoft 0 29 июля 13:  22 FileA [email protected]: ~/MyDir1 $ cp */cp: невозможно создать обычный файл?/File1 ?: Permission deniedcp: не может создать обычный файл?/File2 ?: Permission deniedcp: не может создать обычный файл?/FileA ?: Разрешение  отказано [защита электронной почты]: ~/MyDir1 $ cp * ../MyTest/[email protected]: ~/MyDir1 $ cd .. [защита электронной почты]: ~ $ cd MyTest [защита электронной почты]: ~/MyTest $ ls -ltotal  0-rw-rw-r-- 1 datasoft datasoft 0 29 июля 13:34 file1-rw-rw-r-- 1 datasoft datasoft 0 29 июля 13:34 file2-rw-rw-r-- 1 datasoft datasoft 0 июл  29 13:34 FileA  

mv

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

  [email protected]: ~ $ touch file100 [email protected]: ~ $ l  sabc.txt file100 MyDir summer.txtDesktop file2 MyDir1 Summer.txtDocuments FileA MyDirA TemplatesDownloads FileB MyTest typescriptexamples.desktop linux-command-past-date.png Изображения Videosfile1 Music Public [email protected]: ~ $ mv file100 ABC.txt [email protected]  : ~ $ lsabc.txt file1 MyDir summer.txtABC.txt file2 MyDir1 Summer.txtDesktop FileA MyDirA TemplatesDocuments FileB MyTest typescriptDownloads linux-command-past-date.png Pictures Videosexamples.desktop Music Public [email protected]: ~ $   

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

rename

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

  [email protected]: ~ $ ls -l * .txt-rw-r - r  - 1 root root 23 июля 29 14:20 myfile1.txt-rw-r - r-- 1 root root 9 июля 14:20 myfile2.txt [защита электронной почты]: ~ $ rename 's/txt/doc/ '* .txt [электронная почта защищена]: ~ $ ls -l * .doc-rw-r - r-- 1 root root 23 июля 29 14:20 myfile1.doc-rw-r - r-- 1 root root  9 июля 29 14:20 myfile2.doc [защита электронной почты]: ~ $ rename 's/myfile/MYFILE/' * .doc [защита электронной почты]: ~ $ ls -l * .doc-rw-r - r--  1 root root 23 29 июля 14:20 MYFILE1.doc-rw-r - r-- 1 root root 9 29 июля 14:20 MYFILE2.doc [электронная почта защищена]: ~ $  

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

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

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

Код:

  ls/bin   

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

Код:

  файл sudo/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.jpgsudo wget http://linux-training.be/files/studentfiles/abc.pngsudo wget  http://linux-training.be/files/books/xyz.pdf  

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

Код:

  файл abc.jpg xyz.pdf   

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

Код:

  sudo mv abc.jpg xyz.pdf  

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

Код:

  файл wolf.pdf LinuxFun.pdf  

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

Код:

  mkdir ~/woorkarea;  cd ~/workarea  

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

Измените дату в файле вчера.txt, чтобы она соответствовала вчерашней дате.

Код:

  touch -t 200810251405 вчера.txt (замените 20081025 на вчера)  

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

Код:

  cp abc.txt copy.xyz.txt  

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

Код:

  mv copy.abc.txt kim  

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

Код:

  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 Копируются только файлы * .conf, которые находятся непосредственно в/etc/.  

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

Код:

   В RHEL: коснитесь 1.conf 2.conf;  переименовать резервную копию conf * .conf В Debian: коснитесь 1.conf 2.conf;  переименовать 's/conf/backup/' * .conf  

Оцените статью
nanomode.ru
Добавить комментарий