unix (Практическая работа по предмету UNIX), страница 5
Описание файла
Документ из архива "Практическая работа по предмету UNIX", который расположен в категории "". Всё это находится в предмете "информатика" из , которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "рефераты, доклады и презентации", в предмете "информатика, программирование" в общих файлах.
Онлайн просмотр документа "unix"
Текст 5 страницы из документа "unix"
Скопируйте, например, файл .profile, находящийся в Вашем личном каталоге, для чего введите команду
cp .profile pro
Команда
ls -l
продемонстрирует Вам, что Вы создали файл pro, который является копией файла .profile.
Обратите внимание, что, копируя файлы, Вы должны соблюдать осторожность при выборе имен файлов, т.к. команда cp не будет предупреждать Вас, что файл, в который Вы копируете уже существует, а просто заменит его новым:
cp .kermrc pro
Команда
ls –l
покажет, что файл pro - копия .profile исчез, а это имя теперь носит копия файла .kermrc.
Однако в разных каталогах можно использовать одинаковые имена файлов.
-
Копирование нескольких файлов.
Команда cp позволяет скопировать и несколько файлов одновременно. В этом случае синтаксис команды cp следующий:
cp <имя файла1>… <имя файла N > <имя каталога >,
где файл1 … файл N – копируемые файлы, а последний аргумент является каталогом, в который Вы копируете.
Каталог, куда Вы копируете, обязательно должен существовать, при попытке копирования нескольких файлов в несуществующий каталог, система укажет Вам на синтаксическую ошибку. Попробуйте ввести такую команду:
cp .kermrc .profile newcat
Вы увидите следующее сообщение:
Usage: cp file1 file2
cp file… dir
поясняющее, что нужно использовать имя каталога в случае копирования нескольких файлов, либо копировать один файл в другой файл.
Поэтому давайте создадим новый каталог в Вашем личном каталоге:
mkdir newcat
Проверьте, появился ли каталог newcat с помощью команды
ls –F
Среди файлов и подкаталогов текущего каталога Вы должны найти имя newcat, отмеченное косой чертой / (помните, что это значит?).
Теперь, когда каталог создан, можно повторить попытку копирования файлов:
cp .kermrc .profile newcat
На этот раз она должна быть более удачной, проверим это:
cd newcat; ls -а
Команда ls -а вывела на экран список файлов текущего каталога newcat – это файлы .kermrc и .profile.
При копировании нескольких файлов можно использовать шаблоны. Давайте создадим еще один подкаталог Вашего личного каталога:
cd; mkdir secnew
В подкаталоге newcat создадим файлы
echo 'hello' >hel; date>vrem1
А теперь с помощью шаблона * скопируем в подкаталог secnew все файлы подкаталога newcat:
cp newcat/* secnew
Проверьте результаты нашей работы, введя уже знакомые Вам команды:
cd secnew; ls -а
Не удивляйтесь, что не скопировались файлы .kermrc .profile - их имена начинаются с точки, а шаблон * не задает таких имен. (Для задания подобных имен используют шаблон .*)
-
Копирование файлов и подкаталогов.
Опция -r команды cp позволяет копировать файлы в каталоге, включая любое количество подкаталогов и входящих в них файлов.
Попробуйте скопировать все файлы и подкаталоги каталога newcat в каталог thnew. Для этого введите следующие команды
cd
cp -r newcat thnew
Команды
cd thnew
ls –Fa
убедят Вас, что все получилось.
Опция -r также разрешает использовать шаблоны. Командная строка
cd; mkdir fornew; cp -r * fornew
позволит Вам скопировать все файлы и подкаталоги Вашего личного каталога в каталог fornew (за исключением тех, имена которых начинаются с точки). Проверку выполнят все те же команды:
cd fornew
ls –Fa
Если Вы употребите команду cp без -r, то использование шаблона * приведет лишь к копированию файлов текущего каталога:
cd; mkdir finew
cp * finew
эта команда копирует все файлы Вашего личного каталога в подкаталог finew, исключая все подкаталоги. Когда cp встречает каталог, она выдает сообщение:
cp: fornew: Is a directory
…
(fornew: это каталог). Команды
cd finew
ls –Fa
докажут Вам, что скопированы лишь файлы.
Вы можете также скопировать и любой подкаталог
cp -r fornew sixnew
Команда
ls –l
укажет Вам, что созданный каталог sixnew является копией каталога fornew.
-
Перемещение файлов и каталогов.
-
Перемещение файлов.
-
Если Вы хотите переместить файл, т.е. Вам нужна копия файла в другом каталоге, а старая не нужна, то используйте команду
mv <имя файла> <имя каталога>,
здесь, очевидно, первый параметр - имя файла, который Вы перемещаете, а второй - имя существующего каталога, в который Вы перемещаете.
Выведите на экран список файлов и подкаталогов Вашего личного каталога и подкаталога secnew с помощью командной строки:
cd; ls -a . secnew
Заметьте, что файл .profile существует в Вашем личном каталоге, а в подкаталоге secnew такого файла нет. Команда
mv .profile secnew
переместит файл .profile в каталог secnew. А команда
ls -a . secnew
подтвердит выполнение команды mv.
Чтобы вернуть файл .profile в Ваш личный каталог, следует воспользоваться командой
mv secnew/.profile .
Увидеть результат позволит все та же команда
ls -a . secnew
С помощью команды mv можно переместить и несколько файлов, но опять же лишь в существующий каталог. Давайте переместим файлы hel и vrem из подкаталога secnew в Ваш личный каталог, для чего используем команду
mv secnew/hel secnew/vrem .
и проверим, что файлы перемещены
ls -a . secnew
Обратите внимание, что, если до перемещения файлов, в каталоге существуют файлы, имена которых совпадают с именами перемещаемых файлов, то после перемещения такие файлы будут уничтожены, и команда mv не предупредит Вас об этом.
Чтобы убедиться в вышесказанном введите следующие команды:
cd secnew; echo hi>hel
Вы создали файл hel в каталоге secnew.
ls . newcat; cat hel; cat newcat/hel
Вы вывели на экран списки файлов и подкаталогов каталогов secnew и newcat, а также содержимое файла hel каталога secnew и файла hel каталога newcat.
mv hel newcat; cat newcat/hel
Вы переместили файл hel из каталога secnew в каталог newcat и вывели на экран содержимое файла hel каталога newcat.
-
Перемещение каталогов.
Команда mv позволяет также перемещать каталоги со всеми их файлами и подкаталогами. В этом случае вместо имени перемещаемого файла указывается имя каталога. Для перемещения подкаталога newcat в подкаталог secnew используйте команду
mv newcat secnew
Чтобы увидеть результат, лучше воспользоваться следующей командой:
ls -aF secnew .
-
Использование шаблонов.
Для перемещения файлов разрешается использовать шаблоны. Попробуйте переместить все файлы подкаталога secnew в новый каталог. Сначала создайте каталог ctmv - в него Вы переместите файлы и проверьте, что каталог создан:
cd; mkdir ctmv; ls -F . secnew ctmv
А затем воспользуйтесь шаблоном *:
mv secnew/* ctmv
Команда
ls -F secnew ctmv
позволит увидеть изменения, произошедшие в каталогах secnew и ctmv.
-
Переименование файлов.
В формате MS Word 97
-
Работа с shell.
Интерпретатор shell - это наиболее важная программа для пользователей UNIX, быть может, за исключением текстового редактора. Она исполняет запросы на запуск программ и предоставляет дополнительные возможности использования имеющихся команд и даже написания собственных. С некоторыми свойствами shell Вы уже знакомы. Одно из них способность ссылаться сразу более чем на один файл, используя для этого специальные символы - шаблоны; другое - задание списка каталогов, в которых производится поиск команд для запуска по неполному имени, третье - возможность использования нескольких команд в одной командной строке. Сейчас Вы познакомитесь и с некоторыми другими возможностями интерпретатора shell.
-
Стандартный вход и стандартный выход.
Многие команды UNIX получают информацию с так называемого стандартного входа и посылают информацию на опять же так называемый стандартный выход. (Для них часто используются сокращения "stdin" и "stdout" соответственно). shell организует дело так, что стандартным входом служит клавиатура, а стандартным выходом - экран.
Рассмотрим, к примеру, использование команды cat. В случае, когда в качестве параметров заданы имена файлов, cat читает данные из файлов, имена которых определены в командной строке и посылает эти данные прямо на stdout. Поэтому при выполнении команды
cat .profile .kermrc
на экран будет выведено содержимое файла .profile, а следом за ним содержимое файла .kermrc.
Но если команде cat не заданы имена файлов в качестве параметров, то она читает данные со стандартного входа (клавиатуры) и посылает их на стандартный выход (экран). Вот пример. Введите команду
cat -u
Затем напечатайте
Hello there.
На экране появится
Hello there.
Напечатайте
Bye.
Вы получите ответ:
Bye.
Как видите, каждая строка, которую Вы напечатали, немедленно выдается командой cat на экран. При вводе со стандартного входа команда считает, что ввод закончен тогда, когда Вы нажимаете клавиши CTRL-d. Эта комбинация клавиш посылает команде сигнал EOT (End-Of-Text - конец текста). Поэтому нажмите CTRL-d (должно появиться новое приглашение на ввод $) и давайте рассмотрим другой пример.
Воспользуемся новой для Вас командой sort. Это команда сортировки. Без указания аргументов она сортирует информацию, поступающую со стандартного входа, упорядочивая строки в лексикографическом порядке, и выдает результат на стандартный выход - экран.
Попробуйте так:
введите команду
sort
напечатайте с клавиатуры следующее (для перехода на новую строку используйте ENTER):
bananas
carrots
apples
Нажмите CTRL-d и Вы увидите измененный список.
apples
bananas
carrots
В конце появится новое приглашение на ввод команд $.
-
Перенаправление входа и выхода.
Теперь, предположим, что Вы хотите послать результат сортировки в файл, чтобы сохранить список планируемых покупок. shell дает возможность перенаправлять стандартный выход в файл, используя символ ">". Вот как это работает:
напечатайте команду sort и после символа > укажите имя файла, в который хотите сохранить результат выполнения команды (эта процедура должна быть Вам знакома - Вы уже создавали файлы подобным образом)
sort > shopping-list
Затем введите с клавиатуры список предполагаемых покупок (он попадет во входной поток команды, ведь по умолчанию входной поток - клавиатура):
bananas
carrots
apples
Снова нажмите CTRL-d.
Как Вы можете видеть, результат работы команды sort не отображается на экране (после нажатия клавиш CTRL-d сразу появляется новое приглашение), вместо этого он сохраняется в файле shopping-list (список покупок). Давайте проверим, действительно ли это так с помощью давно знакомой Вам команды cat:
cat shopping-list
Если Вы все сделали правильно, то содержимое файла shopping-list будет выглядеть следующим образом:
apples
bananas
carrots
Другой вариант - у Вас сохранен не отсортированный список в некотором файле. Один из способов его сортировки и сохранения такой - отсортировать файл с данным именем вместо получения содержимого файла со стандартного входа и перенаправить стандартный выход в файл.
Создайте файл pokupki, с помощью команды echo и перенаправления выходного потока:
echo " carrots
bananas
apples "> pokupki
для перевода строки используйте клавишу ENTER. ENTER не будет восприниматься как сигнал завершения ввода команды до тех пор, пока Вы не закроете кавычки. В начале каждой строки будет появляться повторное приглашение на ввод ">".
После того как Вы создали файл, отсортируйте его и сохраните указанным выше способом:
sort pokupki > shopping-list
С помощью команды cat проверьте выполнение введенной команды: