Arsenev-Obrazcov_S.S._i_dr._Osnovy_raboty_v_komandnoy_stroke_OS_Linux
.pdfuser:~$ 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