Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Arsenev-Obrazcov_S.S._i_dr._Osnovy_raboty_v_komandnoy_stroke_OS_Linux

.pdf
Скачиваний:
8
Добавлен:
12.11.2022
Размер:
1.66 Mб
Скачать

user:~$ ls

Appscfg.PWF Desktop My Music My Pictures My Video Unix Intro user:~$

Команда ls в Linux с помощью разных цветов указывает на различные типы файлов. Исключением являются каталоги, которые всегда выделяются синим цветом. Также обратите внимание, что за исключением «Desktop» все имена каталогов содержат пробелы.

Можно получить дополнительную информацию о содержании каталога при использовании команды ls, запросив его детализированный (длинный) вывод. Мы делаем это, добавляя в команду параметр «l» ( «long»). Обратите внимание, что между «ls» и «-l» имеется пробел:

user:~$ ls -l

 

 

 

 

total 3

 

 

 

 

drwxr-x--- 1

y250

y250

512 2009-04-28 13:11 Appscfg.PWF

drwxr-xr-x 1

y250

y250

512 2009-04-28 12:51 Desktop

drwxr-x--- 1

y250

y250

512 2009-04-28

13:11 My Music

drwxr - x --- 1

y250

y250

512 2009-04-28

13:11 My Pictures

drwxr - x --- 1

y250

y250

512 2009-04-28

13:11 My Video

drwxr - xr - x 1

y250

y250

512 2009-04-28

13:22 Unix Intro

user:~$

(далее мы не будем помечать пробелы явно « »).

Проанализируем результат выполнения команды ls –l по таблице Desktop.

Desktop

Это имя файла или каталога.

2009-04-

Это дата и время последнего обновления файла или дата его

24 11:37

создания, если он не обновлялся с тех пор. Формат этой метки

 

 

времени варьируется между дистрибутивами Unix, некоторые из

 

них указывают на цифру меньше.

512

Это количество байтов, полученных файлом. Каталоги имеют

 

структуру базы данных , и их размеры обычно кратны 512 байтам.

 

Остальные файлы могут иметь произвольные размеры.

y250 y250

Первый элемент y250 это «владелец файла». Обычно это

 

пользователь, создавший файл (или для которого он был создан).

 

Пользователи могут объединяться в группы, а на PWF Linux мы

 

помещаем каждого пользователя в свою собственную группу.

 

Второй y250 - это группа, связанная с файлом. В этом конкретном

 

случае пользователь y250 является единственным членом группы

 

y250. В некоторых системах Unix все пользователи помещаются в

 

группу «пользователи», и эта группа используется.

1

Свойство файловой системы Unix состоит в том, что нескольким

 

именам может соответствовать один и тот же файл. Это число,

 

называемое «счетчиком ссылок», представляет собой количество

 

имен, соответствующих этому файлу или каталогу. В нашем

 

простом случае файлы имеют только одно имя.

rwxr-xr-x

Это разрешения на файл или каталог. Они образуют три триплета,

 

состоящих из букв и тире. Буквами указано, что разрешение есть, а

 

тире – разрешения нет. Рассмотрим подробнее.

rwx

Первая тройка идентифицирует разрешения, предоставленные

 

11

 

владельцу файла (пользователь y250). Пользователь может читать,

 

записывать и выполнять файл (read from, write to, execute the file).

 

Разрешения на чтение и запись (read and write) означают именно

 

чтение и запись. Разрешение «Выполнить» (execute) означает, что

 

пользователь может запустить этот файл как программу.

 

В случае каталога (каталог – это папка) разрешение чтения

 

означает, что владелец может посмотреть имена файлов в каталоге,

 

разрешение на запись означает, что владелец может добавлять или

 

удалять файлы в каталоге, а разрешение на выполнение означает,

 

что владелец может изменить каталог в нем.

r-x

Вторая тройка указывает разрешения, предоставленные членам

 

группы, которые не являются владельцем. В случае с PWF Linux нет

 

никого, кто бы соответствовал этому описанию. Среднее тире

 

означает, что право на запись не предоставляется.

r-x

Третья тройка указывает разрешения, предоставленные любому

 

пользователю, который не находится в группе или владельцу файла.

d

Этот символ указывает, что это - каталог. Если бы это был простой

 

файл, символ был бы тире.

Перемещение по каталогам

Теперь мы знаем, что у нас есть несколько каталогов, давайте войдем в папку «Unix Intro». Команда для изменения каталога - cd. Но мы видим ошибку:

user:~$ cd Unix Intro

-bash: cd: Unix: No such file or directory user:~$

Разберем отчет об ошибке:

-bash: cd: Unix: – ошибка пришла из оболочки при выполнении команды cd Unix

Intro

Ошибка возникла из-за пробела. Команда cd ожидает лишь одно слово после себя. Система ищет папку Unix (которой не существует), а не Unix Intro. Поэтому берем имя папки в кавычки:

user:~$ pwd /home/y250

user:~$ cd "Unix Intro"

user:Unix Intro$ pwd /home/y250/Unix Intro

Теперь вернемся назад, вызвав просто cd:

user:Unix Intro$ pwd /home/y250/Unix Intro

user:Unix Intro$ cd

user:~$ pwd /home/y250

12

Использование табуляции

Самый простой способ передвижения по каталогам ‒ это использование табуляции. Нажатие клавиши tab «дополняет» то, что вы напечатали. Например, если вы хотите войти в каталог Unix Intro, вам достаточно напечатать команду cd U и нажать табуляцию. Компьютер сам предложит вам команду cd “Unix Intro”.

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

Команда «cd-» - аналог клавиши Backspace – возврат в предыдущий каталог.

Упражнение

Используйте команды cd и табуляцию для перемещения по каталогам.

Так же не забывайте про команды pwd и ls для того, чтобы определить где вы находитесь.

Пути к файлам и каталогам

Вам не нужно переходить в каталог, чтобы узнать, что в нем или вызвать там команду.

Например, если мы, находясь в домашнем каталоге, хотим вызвать ls в каталоге «Treasure Island», который находится в каталоге «Unix Intro», мы просто прописываем путь к этому каталогу, используя косую черту (слэш) «/». Обратите внимание, что вокруг символа слэш нет пробелов:

user:~$ ls «Unix Intro»/«Treasure Island»/ map.jpg story.txt tall ship.png

user:~$

Мы также можем переходить из каталога в каталог, используя пути:

user:~$ cd «Unix Intro»/«Treasure Island»/

user:Treasure Island$

Существуют понятия абсолютных и относительных путей к файлам.

Рассмотренные ранее (обычные) – это абсолютные пути: «Unix Intro»/«Treasure Island»/. Путь прописывается «вглубь» от места, в котором вы находитесь.

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

Например, команда “cd ..” позволит вам подняться вверх из каталога. Так же, если вы находитесь, например в каталоге “y250”, а вам нужен файл “motd” из каталога “etc” (смотрите рисунок ниже), то путь нужно прописать таким образом: “cd ../../etc/”. Двукратное использование символа “..” говорит нам о том, что мы сначала поднимаемся на два уровня выше нашего местоположения, после чего открываем папку etc.

13

Рисунок. Пример относительного пути.

Рисунок. Пример абсолютного пути.

14

Упражнение

Попробуйте перемещаться по каталогам, используя абсолютные и относительные пути. Используйте команды ls и pwd, для определения содержимого некоторого каталога, доступ к которому определяется относительным и абсолютным путем.

Переименование, создание и удаление файлов и каталогов

Теперь, когда мы можем передвигаться по файловой системе, нам нужно знать, как вносить в нее изменения. Мы начнем с каталога “Treasure Island”.

user:Work$ pwd

/home/y250/Unix Intro/Treasure Island

user:Treasure Island$ ls

map.jpg story.txt tall ship.png user:Treasure Island$

Переименование и перемещение файлов и каталогов

Предположим, мы хотим переименовать файл «tall ship.png» в «hispaniola.png». Мы делаем это с помощью команды mv («move»). Обратите внимание на использование символа обратный слэш вместо использования кавычек (Treasure\ Island = «Treasure Island»).

user:Treasure Island$ ls

map.jpg story.txt tall ship.png

user:Treasure Island$ mv tall\ ship.png hispaniola.png

user:Treasure Island$ ls hispaniola.png map.jpg story.txt

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

user:Treasure Island$ mv story.txt ..

user:Treasure Island$ ls hispaniola.png map.jpg

user:Treasure Island$ ls ..

Play story.txt Treasure Island Work user:Treasure Island$

Мы можем перемещать файлы между каталогами и переименовывать их одновременно:

user:Treasure Island$ mv map.jpg ../island.jpeg

user:Treasure Island$ ls hispaniola.png

user:Treasure Island$ ls ..

island.jpeg Play story.txt Treasure Island Work user:Treasure Island$

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

15

Копирование файлов

Чтобы скопировать файл, используем команду cp («copy») так же, как мы использовали mv:

user:Treasure Island$ ls hispaniola.png

user:Treasure Island$ cp hispaniola.png "tall ship.png"

user:Treasure Island$ ls hispaniola.png tall ship.png

user:Treasure Island$

Обратите внимание, что при описании новых файлов нам еще нужно использовать кавычки (или обратные косые черты). Так как файлы еще не существуют, табуляция не может их найти.

Существует небольшая проблема использования cp. Для копирования каталогов команда не может использоваться без дополнительной опции. Опция «R» («рекурсивная») означает скопировать каталог и все в нем:

user:Treasure Island$ cd ..

user:Unix Intro$ cp Treasure\ Island/ "Copy of Treasure Island" cp: omitting directory `Treasure Island/'

user:Unix Intro$ cp -R Treasure\ Island/ "Copy of Treasure Island"

user:Unix Intro$ ls Copy\ of\ Treasure\ Island/ hispaniola.png tall ship.png

user:Unix Intro$

Команды копирования и перемещения, cp и mv, принимают на вход два аргумента: источник и место назначения. Каждый из них оценивается относительно текущего рабочего каталога (!Но не относительно друг друга!).

Предположим, что пользователь находится в каталоге Unix Intro/Work (т. е. это текущий рабочий каталог). Необходимо скопировать файл motd.txt из каталога Project/Alpha в каталог, подключенный к родительскому - /Play. Команда будет иметь вид:.

user:Work$ pwd /home/y250/Unix Intro/Work

user:Work$ cp Project/Alpha/motd.txt ../Play/motd.txt

user:Work$

16

Создание каталогов

Чтобы создать пустой новый каталог, мы используем команду mkdir («make directory»):

user:Unix Intro$ pwd /home/y250/Unix Intro

user:Unix Intro$ ls -l

 

 

total 428

 

 

drwxr-xr-x 1 y250 y250

512 2009-04-28

18:07 Copy of Treasure Island

-rw-r--r-- 1 y250 y250

44928 2008-08-21

18:53 island.jpeg

drwxr-xr-x 1 y250 y250

512 2009-04-23

18:20 Play

-rw-r--r-- 1 y250 y250 390927 2009-04-24

11:38 story.txt

drwxr-xr-x 1 y250 y250

512 2009-04-28

18:06 Treasure Island

drwxr-xr-x 1 y250 y250

512 2009-04-27

19:19 Work

user:Unix Intro$ mkdir Fun

 

user:Unix Intro$ ls -l

 

 

total 429

 

 

drwxr-xr-x 1 y250 y250

512 2009-04-28

18:07 Copy of Treasure Island

drwxr-xr-x 1 y250 y250

512 2009-04-28

18:13 Fun

-rw-r--r-- 1 y250 y250

44928 2008-08-21

18:53 island.jpeg

drwxr-xr-x 1 y250 y250

512 2009-04-23

18:20 Play

-rw-r--r-- 1 y250 y250 390927 2009-04-24

11:38 story.txt

drwxr-xr-x 1 y250 y250

512 2009-04-28

18:06 Treasure Island

drwxr-xr-x 1 y250 y250

512 2009-04-27

19:19 Work

user:Unix Intro$ ls -l Fun total 0

user:Unix Intro$

17

Удаление файлов и каталогов

Чтобы удалить файл, мы можем использовать команду rm («remove»):

user:Unix Intro$ rm island.jpeg

user:Unix Intro$ ls

Copy of Treasure Island Fun Play story.txt Treasure Island Work

В PWD Linux не существует корзины. Поэтому удаление файла с помощью rm удаляет файл полностью.

Пустые каталоги могут быть удалены командой rmdir («remove directory»), но каталоги с контентом не могут:

user:Unix Intro$ rmdir Fun/

user:Unix Intro$ ls

Copy of Treasure Island Play story.txt Treasure Island Work

user:Unix Intro$ rmdir Copy\ of\ Treasure\ Island/

rmdir: failed to remove `Copy of Treasure Island/': Directory not empty user:Unix Intro$

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

user:Unix Intro$ rm -R Copy\ of\ Treasure\ Island/

user:Unix Intro$ ls

Play story.txt Treasure Island Work user:Unix Intro$

Упражнение

1.Создайте пустой каталог.

2.Скопируйте в него какой-нибудь файл.

3.Переименуйте его.

4.Удалите его.

5.Переименуйте каталог, в котором вы находитесь.

6.Находясь в текущем каталоге, переместите в него файл, находящийся в параллельной ветке.

18

4. Работа с опциями отдельных команд

Мы начнем этот раздел, находясь в каталоге Unix Intro.

user:Unix Intro$ pwd /home/y250/Unix Intro

Выполним команду ls:

user:Unix Intro$ ls

Fun lorem.txt Play story.txt Treasure Island Work

Используем команду с опциями ls -a -l для получения подробной информации о файлах в текущем каталоге:

user:Unix Intro$ ls -a -l

 

 

total 389

 

 

 

 

 

drwxr-xr-x 1 y250 y250

 

512 2009-11-25

19:39 .

drwxr-x--- 1 y250 y250

 

512 2009-11-25

19:00 ..

drwxr-xr-x 1 y250 y250

 

512 2009-11-25

19:37 Fun

-rw-r--r-- 1 y250 y250

 

3693 2009-11-25

19:39 lorem.txt

drwxr-xr-x 1 y250 y250

 

512 2009-11-25

19:34 Play

-rw-r--r-- 1

y250

y250

390927 2009-11-25

19:34 story.txt

drwxr-xr-x 1

y250

y250

 

512 2009-11-25

19:36 Treasure Island

drwxr-xr-x 1

y250

y250

 

512 2009-11-25

19:40 Work

 

 

 

 

 

 

Можно посмотреть данные о каталоге Work:

user:Unix Intro$ ls Work

 

abc.txt

ghi.txt

nonsense.txt

Project Delta

def.txt

lorem.txt

Project Beta

Project Epsilon

 

 

 

 

Выполним команду ls -a –l:

user:Unix Intro$ ls -a -l Work

 

total 12

 

 

 

 

drwxr-xr-x 1 y250 y250

512 2009-11-25

19:40 .

drwxr-xr-x 1 y250 y250

512 2009-11-25

19:39 ..

-rw-r--r-- 1 y250 y250

36 2009-11-25

19:34 abc.txt

-rw-r--r-- 1 y250 y250

36 2009-11-25

19:34 def.txt

-rw-r--r-- 1 y250 y250

36 2009-11-25

19:34 ghi.txt

-rw-r--r-- 1 y250 y250 3693 2009-11-25

19:34 lorem.txt

-rw-r--r-- 1 y250 y250 3664 2009-11-25

19:34 nonsense.txt

drwxr-xr-x 1

y250

y250

512 2009-11-25

19:39 Project Beta

drwxr-xr-x 1

y250

y250

512 2009-11-25

19:39 Project Delta

drwxr-xr-x 1

y250

y250

512 2009-11-25

19:40 Project Epsilon

 

 

 

 

 

Рассмотрим структуру команды ls -a -l Work - это стандартная команда системы

Unix.

Опции начинаются с тире, а параметры и команды – нет.

19

Некоторые команды имеют свои соббственные опции. Например, команда ls имеет опцию -w, которая меняет ширину поля выода текста, который выводит ls:

user:Unix Intro$ ls -w 40 Work abc.txt lorem.txt Project Delta def.txt nonsense.txt Project Epsilon ghi.txt Project Beta

Длинные команды

Мы рассмотрели некоторые опции команды «ls» (-a и –l). Опций для одной команды может быть очень много. Запоминать их затруднительно.

Именно из-за этого возникли так называемые long options – опции, когда пользователь пишет двойное тире и комбинацию букв (аналог ls -a -l ):

user:~$ ls --all

 

 

 

 

.

.gconf

 

My Music

.recently-used.xbel

..

.gconfd

 

My Pictures

.skel

Appscfg.PWF

.gnome2

 

My Video

.ssh

.bash_history

.gnome2_private

.nautilus

.thumbnails

.config

.gstreamer-0.10

.ooo3

 

Unix Intro

.dbus

.gvfs

 

.pulse

 

.Xauthority

Desktop

.hplip

 

.pulse-cookie .xsession-errors

.dmrc

.ICEauthority

.pwf-linux

 

.esd_auth

Library

 

.pyhistory

 

.fontconfig

.local

 

.recently-used

 

 

 

 

 

 

 

Или так:

 

 

 

 

 

 

 

 

 

user:~$ ls --format=long

 

 

 

total 4

 

 

 

 

 

drwxr-x--- 1 y250 y250

512 2009-11-25

19:00 Appscfg.PWF

drwxr-xr-x 1 y250 y250

512 2009-11-25

19:48 Desktop

drwxr-x--- 1 y250 y250

512 2009-11-25

13:08 Library

drwxr-x--- 1 y250 y250

512 2009-11-25

19:00 My Music

drwxr-x--- 1 y250 y250

512 2009-11-25

19:00 My Pictures

drwxr-x--- 1 y250 y250

512 2009-11-25

19:00 My Video

drwxr-xr-x 1 y250 y250

512 2009-11-25

19:39 Unix Intro

 

 

 

 

 

 

20