Какие имена файлов соответствуют маске ask d
Маска имени файла или папки – это представление имени папки или имени и расширения файла с использованием общих символов.
Для формирования маски имени файла или папки вы можете использовать следующие общие символы:
- Символ * , который заменяет любой набор символов, в том числе пустой. Например, маска C:\*\*.txt будет включать все пути к файлам с расширением txt , расположенным в папках на диске (C:).
- Символ ? , который заменяет любой один символ, кроме символов \ и / (разделители имен файлов и папок в путях к файлам и папкам). Например, маска C:\Folder\. txt будет включать пути ко всем расположенным в папке Folder файлам с расширением txt и именем, состоящим из трех символов.
Какие имена файлов соответствуют маске ask d
Миша готовится к ЕГЭ по информатике. Сейчас он изучает задачу A4, в которой описывается работа с масками файлов:
Для групповых операций с файлами используются маски имён файлов. Маска представляет собой последовательность букв, цифр и прочих допустимых в именах файлов символов, в которой также могут встречаться следующие символы.
Символ «?» (вопросительный знак) означает ровно один произвольный символ.
Символ «*» (звёздочка) означает любую последовательность символов произвольной длины, в том числе «*» может задавать и пустую последовательность.
Поскольку открытого банка задач для ЕГЭ по информатике не существует, Мише приходится тренироваться самостоятельно. Напишите программу, которая для каждого имени файла определит, подходит ли оно под заданную маску, чтобы Миша мог сверить свои ответы. Гарантируется, что в маске файла присутствует не более одного символа «*».
Входные данные
В первой строке содержится маска файла. В следующих 5 строках содержатся имена файлов по одному в строке. Имена файлов состоят из маленьких латинских букв, цифр и символа «.» (точка), в маске также могут содержаться символы «?» и «*» (символ «*» — не более одного раза). Длина каждой строки не превосходит 20 символов.
Выходные данные
Для каждого имени файла выведите слово «YES» если оно удовлетворяет маске и «NO» иначе. Выводить слова следует большими латинскими буквами без кавычек, каждое в новой строке.
Примеры тестов
Входные данные
?or*.d??
fort.doc
ford.doc
lord2.doc
orsk.dat
port
Поиск файла по маске.
Для групповых операций с файлами используются маски имён файлов. Маска представляет собой последовательность букв, цифр и прочих допустимых в именах файлов символов, среди которых также могут встречаться следующие символы:
Символ > (вопросительный знак) означает ровно один произвольный символ.
Символ > (звёздочка) означает любую последовательность символов произвольной длины, в том числе > может задавать и пустую последовательность.
Определите, какое из указанных имен файлов будет соответствовать маске *b*ed.*?x:
Разберем каждый вариант ответа и сделаем вывод, может ли он соответствовать маске, указанной в условии.
Согласно маске, название файла должно содеражть в себе букву \(b\) и оканчиваться на \(-ed\) . Этим условиям наша маска соответсвует, но в формате файла последней буквой обязан быть \(x\) . Так как формат нашего файла \(.txt\) , данный вариант ответа не подходит.
Название содержит букву \(b\) , оканчивается на \(-ed\) , а формат файла оканчивается иксом. Значит, это и есть наш ответ. Но разберем и следующие варианты:
Название не оканчивается на \(-ed\) , значит данный вариант нам также не подходит.
Название не оканчивается на \(-ed\) , значит данный вариант нам также не подходит.
Задание 2 #12547
Для групповых операций с файлами используются маски имён файлов. Маска представляет собой последовательность букв, цифр и прочих допустимых в именах файлов символов, среди которых также могут встречаться следующие символы:
Символ > (вопросительный знак) означает ровно один произвольный символ.
Символ > (звёздочка) означает любую последовательность символов произвольной длины, в том числе > может задавать и пустую последовательность.
Определите, какие из указанных имен файлов будет соответствовать маске ?*kol*.?*x*:
В ответ запишите номера выбранных вариантов без разделителей и пробелов, сами имена файлов писать не нужно.
Разберем каждый вариант ответа и сделаем вывод, может ли он соответствовать маске, указанной в условии.
Согласно маске, название файла должно содеражть в себе сочетание букв \(kol\) , а перед ним должна встречаться хотя бы еще одна любая буква (на это указывает знак вопроса). В формате файла должна содержаться буква \(x\) , но обязательно не первой. Всем этим требованиям данный файл соответствует, значит, записываем его в ответ.
Так как файл начинается с сочетания букв \(kol\) , а по условию требуется хотя бы еще одна буква в начале, данный файл нам не подходит.
Имя файла соответствует всем условиям, о которым мы говорили в пункте 1, но в формат не может начинаться с единственного \(x\) , поэтому данный ответ нам так же не подходит.
Название содержит в себе сочетание букв \(kol\) , перед ним есть еще буквы, а формат содержит \(x\) , но не начинается с него, – следовательно, записываем данный вариант в ответ.
Задание 3 #12549
Для групповых операций с файлами используются маски имён файлов. Маска представляет собой последовательность букв, цифр и прочих допустимых в именах файлов символов, среди которых также могут встречаться следующие символы:
Символ > (вопросительный знак) означает ровно один произвольный символ.
Символ > (звёздочка) означает любую последовательность символов произвольной длины, в том числе > может задавать и пустую последовательность.
Определите, какое из указанных имен файлов будет соответствовать маске *ar?.*x*:
Разберем каждый вариант ответа и сделаем вывод, может ли он соответствовать маске, указанной в условии.
Согласно маске, название файла должно содеражть в себе сочетание букв \(ar\) и \(x\) в формате файла. В данном варианте ответа сочетания букв \(ar\) не встречается, значит, ответ нам не подходит.
Согласно маске, название файла должно содеражть в себе сочетание букв \(ar\) и \(x\) в формате файла. В данном варианте ответа сочетания букв \(ar\) не встречается, значит, ответ нам не подходит.
Название файла содержит сочетание букв \(ar\) , после данного сочетания встречается ровно одна буква, которая заменена в маске знаком вопроса, а формат файла содержит \(x\) . Значит, данный файл нам подходит.
Название файла содержит сочетание букв \(ar\) , но после него идет больше одной буквы, значит, данный файл нам не подходит.
Задание 4 #12550
Для групповых операций с файлами используются маски имен файлов. Маска представляет собой последовательность букв, цифр и прочих допустимых в именах файлов символов, в которых также могут встречаться следующие символы:
Символ “ ? ” (вопросительный знак) означает ровно один произвольный символ.
Символ “ * ” (звездочка) означает любую последовательность символов произвольной длины, в том числе “ * ” может задавать и пустую последовательность.
Определите, какое из указанных имен файлов удовлетворяет маске: t*?xt.?x?
1) next.txt
2) txt.txt
3) text.txt
4) tent.txt
1) next.txt не удовлетворяет маске, т.к. имя файла должно начинаться с “ t ” (t*?xt.?x?).
2) txt.txt не удовлетворяет маске, т.к. содержит 7 символов (“ t ”, “ x ”, “ t ”, “ . ”, “ t ”, “ x ”, “ t ”), а в имени файла, судя по маске, должно быть хотя бы 8 символов (“ t ”, “ ? ”, “ x ”, “ t ”, “ . ”, “ ? ”, “ x ”, “ ? ”).
3) text.txt для того, чтобы убедиться в том, что именно этот вариант подходит, рассмотрим его подробнее:
буква “ t ” соответствует маске, т.к. первым символом в маске и должна быть буква “ t ” (t*?xt.?x?).
буква “ e ” соответствует символу “ ? ” в маске (t*?xt.?x?), следовательно “ * ” в маске означает пустую последовательность.
буквы “ x ” и “ t ”соответствуют маске (t*?xt.?x?).
далее в маске идет “ .?x? ”, то есть после точки должно идти ровно три символа, вторым из которых обязательно должна быть буква “ x ”, и “ .txt ” также полностью отвечает требованиям маски.
4) tent.txt не подходит, т.к. на месте сочетание букв “ xt ” в маске (t*?xt.?x?), стоит “ nt ” ( tent.txt).
Задание 5 #12551
Для групповых операций с файлами используются маски имен файлов. Маска представляет собой последовательность букв, цифр и прочих допустимых в именах файлов символов, в которых также могут встречаться следующие символы:
Символ “ ? ” (вопросительный знак) означает ровно один произвольный символ.
Символ “ * ” (звездочка) означает любую последовательность символов произвольной длины, в том числе “ * ” может задавать и пустую последовательность.
На диске хранятся 8 файлов:
banana.xlsx
random.xml
panda.xls
tabata.xlsx
lavanda.txt
land.xls
santa.xls
vacanda.xlsx
Определите, по какой маске из файлов на диске будет отобрана указанная группа файлов:
santa.xls
panda.xls
vacanda.xlsx
banana.xlsx
Рассмотрим все варианты маски по-порядку:
1) маска *?an?a.xls* не подходит, т.к. символ “ ? ” между “ an ” и “ a. ” (*?an?a.xls*) означает, что на его месте может находиться лишь один символ, а значит по этой маске не будет отобран файл banana.xlsx (в этом названии файла есть два сочетания “ an ” (banana.xlsx и banana.xlsx), при том в первом случае между “ an ” и “ a. ” два символа, а во втором случае между “ an ” и “ a. ” нет ни одного символа).
2) маска *?an*a.xls не подходит, т.к. она не отберет файлы с типом “ .xlsx ” .
3) маска ?*?an*a.xls* не подходит, т.к. “ ?*? ” означает, что перед “ an ” должно быть как минимум два символа, однако, в названиях файлов panda.xls и santa.xls меньше двух символов перед “ an ”.
4) маска *an*a.xls* правильно отберет указанную группу файлов, докажем это:
“ *an*a. ” означает, что в названии файла обязательно должны быть “ an ” и “ a. ” (santa.xls, panda.xls, vacanda.xlsx, banana.xlsx) и что перед “ an ” и между “ an ” и “ a. ” может быть любое кол-во символов
“ xls* ” означает, что после “ xls ” может быть сколько угодно символов, а значит будут отобраны и файлы с типом “ xlsx ” (santa.xls, panda.xls, vacanda.xlsx, banana.xlsx)
Важно заметить, что маска не отберет “ лишних ” файлов (random.xml не содержит “ a. ” и “ xls* ”, tabata.xlsx не содержит “ an ”, lavanda.txt не сожержит “ xls* ”, land.xls не содержит “ a. ”).
Задание 6 #12552
Для групповых операций с файлами используются маски имен файлов. Маска представляет собой последовательность букв, цифр и прочих допустимых в именах файлов символов, в которых также могут встречаться следующие символы:
Символ “ ? ” (вопросительный знак) означает ровно один произвольный символ.
Символ “ * ” (звездочка) означает любую последовательность символов произвольной длины, в том числе “ * ” может задавать и пустую последовательность.
В архиве хранятся 8 файлов:
oddball.doc
dodgeball.doc
football.docx
eyeball.doc
volleyball.docx
broomball.docx
fireball.docx
meatball.doc
Необходимо отобрать 4 файла, связанные с видами спорта:
dodgeball.doc
football.docx
volleyball.docx
broomball.docx
По какой из масок будет отобрана указанная группа файлов?
1) ?o*ball.doc*
2) ?*o?*ball.doc*
3) ?*o. ball.doc*
4) ?*o?*ball.doc
1) ?o*ball.doc* не является подходящей маской, т.к. “ ?o ” в маске означает, что перед буквой “ o ” должен стоять ровно один символ, а значит маска не отберет файл с названием broomball.docx .
2) маска ?*o?*ball.doc* верно отберет указанную группу файлов:
“ ?*o ” и “ ?*ball ” в маске означают, что до буквы “ o ” и между “ o ” и “ ball ” в названии файла должен стоять хотя бы один символ (или больше), а “ .doc* ” означает, что подходят файлы как с расширением .doc, так и .docx .
— dodgeball.doc .
— football.docx или football.docx .
— volleyball.docx .
— broomball.docx или broomball.docx .
Так же важно, что маска не отберет лишние файлы из архива, т.к. eyeball.doc, fireball.docx, meatball.doc не содержат букву “ o ” в названии, а в названии файла oddball.doc нет ни одного символа до буквы “ o ”.
3) ?*o. ball.doc* не является подходящей маской, т.к. “ o?*?ball ” означает, что между “ o ” и “ ball ” должно быть три символа, а значит по этой маске не будут отобраны файлы football.docx и broomball.docx .
4) ?*o?*ball.doc не является подходящей маской, т.к. “ .doc ” означает, что файлы с расширением .docx (football.docx, volleyball.docx, broomball.docx) не будут отобраны.
Какие имена файлов соответствуют маске ask d
1989 % of sales $ projection
sales net 100.000 3800000
budget88 budget89 budget90 budget91 budget92 budget93 budget94
Класс символов — это группа символов, заключенная в квадратные скобки [ ] . В данном случае shell подставляет один из символов, указанных в скобках.
Класс символов — это может быть либо список символов, либо ряд символов с использованием дефиса, где первым указывается самый старший символ (в соответствии с ASCII кодами). Смотрите Пример 1 на следующей странице.
Поскольку каждый класс символов представляет лишь один символ, вы можете указать в командной строке несколько классов символов.
Для представления символов, НЕ УКАЗАННЫХ в классе символов, наберите восклицательный знак ( ! ) на месте первого символа внутри скобок. Shell подставляет в этом случае любой из символов, не стоящий в скобках. Пример 2 на следующей странице показывает применение такого исключенного класса, когда на экран выводятся имена всех файлов каталога, за исключением файла budget 91.
При использовании метасимвола [ ] существует аналогичное исключение — файлы, имена которых начинаются с точки ( . ).
budget90 budget92 budget93
budget91 budget92 budget93
budget90 budget92 budget93 budget94
Используя имена файлов в качестве аргументов команд, вы можете комбинировать метасимволы. В Примере 1 на следующей странице команда wc делает полный подсчет для каждого файла, имя которого начинается с budget, а затем идет 8 или 9 и что-либо еще.
Вы можете использовать метасимволы в любом месте в имени пути. В Примере 2 на следующей странице вы работаете с каталогом receivable . Первая звездочка не дает быть напечатанным всему каталогу receivable . Вам нужно получить список файлов принятых счетов с 1991 по 1992 от клиентов, чьи имена начинаются с A по L.
Вы можете использовать метасимволы в качестве аргументов команды find . Но имя файла у этой команды должно быть написано в кавычках. Использование кавычек обсуждается в четвертом уроке шестого раздела. В Примере 3 на соседней странице файл tot является единственным файлом каталога unit4 , имя которого начинается с букв to .
23 72 995 budget88
23 72 995 budget89
69 216 2985 budget8tot
23 72 995 budget90
23 72 995 budget91
23 72 995 budget92
23 72 995 budget93
23 72 995 budget94
92 288 3980 budget9tot
322 1008 13930 total
$ find .. -name ‘see*’ -print
Вывод на экран нескольких файлов одновременно
Команды pg , pr и cat печатают содержимое файлов на экране вашего терминала. Используя метасимволы, на экран можно выводить сразу несколько файлов.
Команда pg позволяет комбинировать метасимволы в именах файлов. В Примере 1 на соседней странице на экран выводятся имена файлов, в которых НЕТ цифр от 0 до 9.
Опция -v команды cat показывает на экране непечатаемые символы, за исключением табуляций, символов новой строки и формата.
Опция -t команды cat , использованная после опции -v , выводит на экран непечатаемые символы, включая табуляции, обозначаемые ^I . В Примере 2 на следующей странице, когда вы применяете команду cat к файлам sep.92 и sep.93, раздается звонок. Если вы добавите опцию » -v «, то вместо звонков появятся их символы CTRL/g. Если вы добавите опции -v и -t к команде cat , то вы увидите символы ^I , представляющие табуляции.
ВЫВОД НА ЭКРАН НЕСКОЛЬКИХ ФАЙЛОВ ОДНОВРЕМЕННО
budget8tot budget9tot budgettot
Status Report For 3Q92 July — September 1992
Status Report For 3Q92 July — September 1992
$ cat -v -t work/sep.9?
^IStatus Report For 3Q92 July — September 1992
Опция -d команды pr выводит файлы на экран, удваивая пробелы.
Опция -n команды pr выводит на экран нумерацию строк файла. В Примере 1 на следующей странице содержимое файла budgettot перенаправляется в файл newbudget , который выводится на экран с удвоенными пробелами и нумерацией строк.
$ pr -dn *tt* > newbudget
Nov 17 08:53 1988 budgettot Page 1
1 1987 % of sales $ projection
3 sales net 100.000 3200000
Печать содержимого файлов командой lp
Вы использовали команды pg , pr и cat для печати содержимого файлов на экран терминала. Команда lp печатает содержимое файлов на принтере. В зависимости от прав доступа к вашим файлам и каталогам, вы можете набрать команду:
или же направить файл на принтер конвейером:
cat имя_файла | lp
Команда lp не производит форматирования, поэтому принтер печатает содержимое файла точно так же, как команда cat выводит его на экран. Когда вы используете конвейеры для вывода на принтер, то обычно вы форматируете файлы командой pr . Например, чтобы напечатать на принтере файл с удвоенными пробелами, наберите:
pr -dn имя_файла | lp
Если ваша система имеет несколько принтеров, то команда lp по умолчанию использует один принтер. Для выбора другого принтера наберите lp -d и имя принтера. Имена принтеров можно узнать у системного администратора. Формат команды:
pr имя_файла | lp -d имя_принтера
Опции команды lp
Опция -n команды lp позволяет вам указать количество печатаемых копий. Формат команды:
pr имя_файла | lp -n количество
Опция -m команды lp посылает вам сообщение, когда нужные вам файлы будут напечатаны. Другие опции команды lp указаны в «Справочнике пользователя».
ПЕЧАТЬ СОДЕРЖИМОГО ФАЙЛОВ КОМАНДОЙ lp
ПРИМЕР 1: Перенаправление вывода на принтер:
request id is lp-4573 (standard input)
request id is lp1-4574 (standard input)
$ pr b*tot | lp -n 2 -m
request id is lp1-4576 (standard input)
mailx version 4.0 Type ? for help.
«/var/mail/jmg»: 1 message 1 new
>N 1 lp Wed Feb 1 10:31 9/115
From lp Wed Feb 1 10:34 EST 1989
printer request lp1-4576 has been printed on printer lp1
Команда lp составляет очередь из требований на печать и сообщает вам номер вашего заказа. Команда lpstat сообщает статус и номера ваших требований. Опция -o команды lpstat сообщает статус и номера всех требований команды lp .
Отмена запроса принтера
Команда cancel отменяет любое требование принтера, работа по которому еще не завершена. Аргументом этой команды является номер требования, который выводят на экран команды lp и lpstat . Чтобы прекратить выполняемую в данный момент принтером работу, укажите имя принтера в качестве аргумента команды cancel .
lp1-4574 jmg 743 Aug 2 10:56 on lp1
lp3-4573 slf 268 Aug 2 10:53 on lp3
lp1-4574 jmg 743 Aug 2 10:56 on lp1
lp1-4575 jas 851 Aug 2 10:58 waiting
$ pr budget88 | lp -d lp1
request id is lp1-7099 (standard input)
request «lp1-7099» canceled
Метасимволы в именах файлов: заменители частей имен файлов
Звездочка: представляет любую строку (возможно, пустую)
Знак вопроса: представляет любой одиночный символ
Класс символов: представляет любой символ, из указанных в квадратных скобках [ ]
≈ список символов или ряд символов
≈ знак восклицания: представляет любой символ КРОМЕ указанных в скобках
Команда pg : позволяет комбинировать метасимволы при задании аргументов
Опция -v команды cat : выводит на экран непечатаемые символы, за исключением табуляций, символов новой строки и формата
Опция -v -t команды cat : Выводит на экран непечатаемые символы, включая табуляции
Опция -dn команды pr : выводит на экран файл, удваивая пробелы
Команда lp : печатает содержимое файла на принтере
≈ создает очередь из заявок на принтерную печать и сообщает номер вашей заявки
Опция -d команды lp : позволяет выбирать принтер
Опция -n команды lp : позволяет указывать количество печатаемых копий
Опция -m команды lp : посылает вам сообщение, о том, когда ваш заказ будет выполнен
Команда lpstat : сообщает статус и номера заявок команды lp
Опция -o команды lpstat : сообщает статус и номера всех заявок lp
Команда cancel : отменяет принтерные заказы, которые еще не выполнены
А. Войдите в свой каталог. Спросите у преподавателя имя вашего принтера.
1. Распечатайте на принтере календарь на этот год.
В. Войдите в каталог unit3 .
1. Выведите на экран список файлов, имена которых оканчиваются на em .
2. Выведите на экран список файлов, имена которых начинаются с буквы p .
3. Выведите на экран список файлов, имена которых содержат букву a .
С. Войдите в каталог unit4 .
1. Используя перенаправление, создайте файл с именем work93 . В этом файле должны содержаться все файлы, имена которых оканчиваются на число 93 .
2. Выведите на экран список файлов, имена которых начинаются со слова budget , а затем следуют любые два символа.
3. Выведите на экран содержимое файлов budget90 , budget91 , budget92 , используя метасимволы. Затем одной командой распечатайте эти файлы на принтере.
4. Проверьте статус сделанных вами заявок на принтер. Затем, попытайтесь отменить эти заявки, до того как они будут выполнены.
5. Используя перенаправление, создайте файл с именем budgetall . В этом файле должны содержаться файлы budget88 , budget89 , budget90 , budget91 , budget92 , budget93 и budget94 .
D. Войдите в каталог unit5 .
1. Используя метасимволы в именах файлов, выполните одну команду file , чтобы выяснить типы всех файлов каталога.
2. Пользуясь «Справочником пользователя», найдите опцию команды pr , которая печатает каждую строчку с отступом. Выведите на экран файл friends с отступом в 10 позиций и с нумерацией строк.
3. Выведите на экран файл friends , удваивая пробелы. Но на этот раз создайте конвейер таким образом, чтобы файл выводился постранично.
4. В вашем каталоге найдите все файлы, имена которых заканчиваются на t .
- Перемещать и переименовывать файлы командой mv .
- Копировать файлы командой cp .
- Получать доступ к отдельному файлу из двух разных мест посредством связывания имен файлов.
- Символически связывать файлы в разных файловых системах.
- Создавать каталоги командой mkdir .
- Переименовывать каталоги командой mv .
- Копировать каталоги командой cp -r .
- Удалять обычные файлы командой rm .
- Удалять каталоги командой rmdir .
Перемещение, копирование и переименование файлов
Создав файл, вы можете переименовать его или переместить в другой каталог командой mv . Вы также можете скопировать его в другой файл или каталог командой cp . Эти две команды имеют одинаковый формат и должны иметь по меньшей мере два аргумента:
cp опции файл(ы) цель
mv опции файл(ы) цель
В качестве цели должен быть указан путь к файлу или каталогу. Если целью служит обычный файл, то вы можете переименовать его. Но если цель есть каталог, то система перемещает или копирует файл под тем же именем. Если вы копируете или перемещаете несколько файлов, то цель должна быть каталогом.
Если целью является обычный файл, и файл с этим именем уже существует, то система ПЕРЕПИСЫВАЕТ его содержимое на содержимое нового файла, который вы копируете или перемещаете. Чтобы избежать этого, используйте с командами mv и cp опцию -i . В этом случае система будет задавать вам вопрос — надо ли переписывать существующий файл? Чтобы переписать файл, ответьте y (да); в противном случае система не даст вам переписать файл.
В Примере 1 на следующей странице команда mv изменяет имя файла с budget92 на budget98 .
В Примере 2 команда cp копирует содержимое файла budget98 в новый файл под именем budget99 . Заметьте, что применение метасимволов возможно, потому что в каталоге есть только один файл подходящий к описанию b*98 .
В Примере 3 команда cp -i копирует файл budget88 в каталог, в котором вы находитесь.
В Примере 4 команда mv -i спрашивает вас, хотите ли вы переписать существующий файл.
В Примере 5 команда cp копирует файл с именем june.92 из каталога work в текущий каталог.
В Примере 6 команда cp копирует файл с именем 92_French из каталога receivable в текущий каталог unit4 и меняет его имя на French92 .
Вот список файлов, используемых в примерах.
budget88 budget8tot budget91 budget93 budget9tot
budget89 budget90 udget92 budget94 budgettot
ПЕРЕМЕЩЕНИЕ, КОПИРОВАНИЕ И ПЕРЕИМЕНОВАНИЕ ФАЙЛОВ
cp опции файл(ы) цель
mv опции файл(ы) цель
$ mv budget92 budget98
No such file or directory
$ cp b*98 budget99
mv: overwrite ../budget88? n
$ cp rec*/*Frenc? French92
Иногда вы хотите разместить файл в нескольких каталогах одновременно, например, чтобы другие пользователи имели доступ к файлу из разных мест в системе. Другими словами, вы хотите связать ( link ) этот файл. Команда ln добавляет к обычному файлу связующее звено, и вы получаете доступ к файлу из нескольких каталогов или под разными именами. Формат команды:
Связанный файл может иметь разные имена в разных каталогах. Также он может иметь несколько имен в одном каталоге. Однако, при всем этом существует единственная копия содержимого файла.
Аргументы в пользу связывания файлов
Связывание файлов в отличие от копирования сохраняет пространство на диске. Если вы часто используете какой-нибудь файл из разных каталогов, вам проще будет связать его. Или, если вы хотите, чтобы кто-нибудь еще пользовался вашим файлом, то вы можете связать этот файл с каталогом этого пользователя.
Когда не стоит связывать
Копирование бывает предпочтительнее связывания в случае, если вы и другой пользователь хотите модифицировать файл каждый по-своему. Например, два разных человека не могут одновременно вызвать vi для работы с одним файлом.
Опция -i команды ls
В ОС UNIX имя каждого файла имеет ассоциированный номер, который используется как косвенный указатель к содержимому файла. Этот косвенный указатель называется inode number . Опция -i команды ls выводит на экран inode number файла. В Примере 1 на следующей странице, после того, как вы связали файл под именем check.paint с вашим каталогом unit4 , выводимое количество связующих звеньев изменяется с 1 на 2. После того, как вы изменяете имя файла на paint1 и выводите список файлов в обоих каталогах, содержимое файла и его inode number остаются неизменными.
$ ls -li ../unit3/paint
3028 -rw-r—— 1 jas train 1447 Jul 8 14:35 ../unit3/paint
3028 -rw-r—— 2 jas train 1447 Jul 8 14:35 ../unit3/paint
3028 -rw-r—— 2 jas train 1447 Jul 8 14:35 paint
$ mv paint paint1
$ ls -li paint1 ../unit3/paint
3028 -rw-r—— 2 jas train 1447 Jul 8 14:35 ../unit3/paint
3028 -rw-r—— 2 jas train 1447 Jul 8 14:35 paint1
Anderson Paint Company
Anderson Paint Company
Символическая связь — это файл, содержащий имя пути к другому файлу. Символические связи могут осуществлять соединение через физически различные файловые системы. Они также поддерживают имена старой системы совместимыми с более новыми. Например, ранние версии ОС UNIX организовывали каталог news в каталоге usr . Сейчас /usr/news связан символически с /var/news .Если вы набираете cat /usr/news/* , то на экран по-прежнему выводятся новости, расположенные в /var/news/* .
Символические связи создаются опцией -s команды ln . Формат этой команды:
Файл — это фактический файл. Также это может быть имя пути. Файл не обязан существовать на момент написания команды. Впоследствии, когда вы создадите этот файл, он станет символически связан с целью .
Цель — это символически связанный файл, содержащий имя фактического файла . Цель может быть существующей директорией или несуществующим файлом.
Поскольку символические связи создаются, как правило, системными администраторами, то этот курс не рассматривает примеры создания символических связей. За дальнейшей информацией обращайтесь в «Справочник пользователя».
Опция -ld команды ls
Опция -d , добавленная к команде ls -l , выводит на экран статус каталога. Пример 2 на следующей странице показывает, что каталог /usr/news символически связан с каталогом /var/news .
В соответствии с изменениями в системных именах от 05-19-89,
все сообщения для «mona5» должны отправляться «jo5».
В соответствии с изменениями в системных именах от 05-19-89,
все сообщения для «mona5» должны отправляться «jo5».
$ ln -s /var/news /usr/news
$ ls -ld /usr/news /var/news
lrwxrwxrwx 2 bin bin 512 Sep 26 14:04 /usr/news -> /var/news
-rwxrwxrwx 2 bin bin 512 Sep 26 14:04 /var/news
Создание каталога командой mkdir
Команда mkdir позволяет вам создавать каталоги. Чтобы создать каталог в нужном вам месте, войдите в вышестоящий каталог (команда cd ). Затем наберите mkdir и имя нового каталога в качестве аргумента этой команды:
Создав каталог, вы по-прежнему останетесь в вышестоящем каталоге. Для перехода в новый каталог вы должны воспользоваться командой cd .
После создания каталога вы можете копировать и перемещать в него файлы или создавать в нем собственные файлы. В Примере 1 на следующей странице команда ls лишь возвращает к приглашению $ , потому что каталог mydata пуст.
Команда mv перемещает файлы с одного места на другое. При работе же с каталогами эта команда только переименовывает их, не перемещая на другое место. Смотрите Пример 2 на следующей странице.
СОЗДАНИЕ КАТАЛОГА КОМАНДОЙ mkdir
$ mv budgettot mydata
drwx—— 2 jas train 48 Dec 19 12:37 data
Команда cp копирует только файлы. Для копирования файлов каталога, подкаталогов и их файлов используйте команду cp -r . При необходимости можно создать новый каталог командой mkdir (каталог, в котором должны появится эти файлы). Формат команды:
cp -r опции файл(ы) цель
В Примере 1 вы создаете подкаталог games вашего каталога. Затем вы копируете содержимое каталога fun , включая его подкаталог morefun , в новый каталог games .
Для перемещения каталога придерживайтесь вышеприведенного формата с командой mv .
Ранние версии ОС UNIX не содержат опцию cp -r . Для копирования каталога со всеми подкаталогами и файлами необходима команда cpio . Нужно совершить следующие шаги:
Шаг 1: Создайте новый каталог, куда нужно скопировать файлы, командой mkdir .
Шаг 2: Войдите в каталог, который вы хотите скопировать.
Шаг 3: Наберите: find . -print | cpio -pwd имя_каталога (в который нужно копировать).
cp -r опции файл(ы) цель
ATTlogo heart* morefun/ thanks
ATTlogo heart* morefun/ thanks
Удаление обычных файлов командой rm
Поскольку пространство диска разделено между всеми пользователями, экономия его — дело каждого пользователя. Если у вас есть файлы, не нужные вам сейчас, но могущие понадобиться вам впоследствии, попросите системного администратора сохранить их на каком-нибудь носителе — например, на дискете. Если некоторые файлы вам больше не нужны совсем, то удалите их командой rm .
Вы можете набирать в командной строке имена этих файлов целиком, а можете использовать метасимволы. Смотрите Пример 1 на следующей странице.
ПРЕДУПРЕЖДЕНИЕ : Система может удалить ВСЕ файлы, не задав вам дополнительного вопроса. Например, если вы наберете rm *, то система удалит все файлы текущего каталога. Если вы удалили файл, то уже не сумеете восстановить его самостоятельно. Сделать это может лишь системный администратор при условии, что была сделана соответствующая страховочная копия. Поэтому будьте осторожны при наборе этой команды. Например:
rm m* — удаляет все файлы, начинающиеся на m
rm * — удаляет все файлы в текущем каталоге
Если вы установите опцию -i для команды rm , то система будет переспрашивать вас, следует ли ей удалять файл. Чтобы удалить файл, наберите y (да). Смотрите Пример 2 на следующей странице.
УДАЛЕНИЕ ОБЫЧНЫХ ФАЙЛОВ
rm: 92.may non-existent
dec.92 dec.93 jun.92 jun.93
mar.92 mar.93 sep.92 sep.93
dec.92 dec.93 jun.92 jun.93
mar.93 sep.92 sep.93
dec.92 jun.92 sep.92
Существуют два способа удалить каталог. Каким бы из них вы не пользовались, невозможно удалить текущий каталог. Для удаления каталога нужно перейти в вышестоящий каталог.
Если вы удалили каталог по ошибке, то немедленно найдите системного администратора. Если существовали страховочные копии ваших файлов, то системный администратор способен восстановить их.
Для удаления каталога со всеми находящимися в нем файлами, а также подкаталогами и их файлов используйте опцию -r команды rm . Эта опция рекурсивно удаляет каталог и его содержимое, не задавая при этом дополнительных вопросов. Смотрите Пример 1 на следующей странице.
Вы можете комбинировать опции -r и -i , тогда система будет удалять каталог, переспрашивая. Смотрите Пример 2 на следующей странице.
Если каталог пуст, то его можно удалить командой rmdir . Смотрите Пример 3 на следующей странице.
rm: data directory
rmdir: data: Directory not empty
No such file or directory
directory work? y
Команда mv : перемещает файлы в файлы под другим именем (переименовывает) или в другие каталоги
Команда cp : копирует файлы в файлы под другим именем или в другие каталоги
≈ качестве аргумента можно задавать путь к файлу или каталогу
≈ при копировании нескольких файлов аргумент должен быть каталогом
Опция -i команд cp и mv : система спрашивает вас, нужно ли ей переписывать существующий файл заново
Команда ln : добавляет к обычному файлу связующее звено
≈ становится возможен доступ к файлу из разных каталогов или под разными именами
≈ команда ls -s : выводит на экран inode number файла
Команда ln -s : создает символические связи
Команда mkdir : создает каталоги
≈ сперва войдите в вышестоящий каталог
Команда mv : переименовывает каталоги
≈ команда ls -ld : выдает статус каталога
Команда cp -r : копирует каталог со всеми файлами и подкаталогами
≈ если необходимо, создайте каталог
≈ cp -r опции файл(ы) цель
≈ Для перемещения каталога сначала скопируйте его, а затем удалите старый
Команда rm : удаляет файлы
≈ опция rm * : удаляет все файлы текущего каталога
≈ опция rm -i : система переспрашивает, нужно ли ей удалять файл
Команда rm -r : удаляет каталог и все его содержимое
≈ включая подкаталоги и их файлы
Команда rmdir : удаляет пустой каталог
A. Перейдите в свой каталог
1. Создайте новый каталог под именем amuse .
B. Перейдите в каталог fun .
1. Переименуйте файл thanks в thank.you .
2. Сделайте копию файла heart и назовите ее AMORE .Проверьте, что этот файл создан.
3. Интерактивно переместите файл thank.you в каталог amuse .
4. Скопируйте все файлы, начинающиеся на » A «, в каталог amuse .
5. Войдите в каталог amuse и просмотрите его содержимое. В нем должно быть
три файла.
C. Перейдите в каталог unit4 .
1. Создайте каталог b.check .
2. Скопируйте все файлы каталога unit4 , начинающиеся на budget , в каталог b.check .
3. Войдите в каталог b.check . Просмотрите его содержимое и убедитесь, что все файлы, начинающиеся на budget , скопированы.
4. Удалите в каталоге b.check все файлы, начинающиеся на budget .
D. Перейдите в свой каталог.
1. Свяжите файл heart каталога fun с каталогом amuse , используя прежнее имя файла
2. Переименуйте каталог amuse в play .
E. Перейдите в каталог play .
1. Удалите файл thank.you .Убедитесь, что этот файл удален.
2. Удалите интерактивно все файлы, содержащие букву » M «.
F. Перейдите в свой каталог.
1. Последовательно и интерактивно удалите каталог play .
2. Создайте новый каталог toys .
3. Скопируйте целиком содержимое каталога fun в каталог toys .
- Описать назначение прав доступа к файлу.
- Изменять права доступа к файлу командой chmod .
- Описать права доступа к файлу и каталогу по умолчанию и команду umask .
- Изменять права владения файлом командой chown .
- Выводить на экран идентификаторы пользователя (uid) и группы (gid) командой id .
- Изменять групповое членство, назначенное файлу, командой chgrp .
- Выполнять команду newgrp для изменения вашей входной группы.
Права доступа к файлу
Важное значение имеет защита файла от изменений, копирования и удаления. Будучи владельцем своих файлов, вы контролируете, кто имеет право доступа к вашим файлам. Для каждого файла существуют три категории пользователей, которые могут иметь доступ к файлам:
Владелец — Каждый файл системы UNIX имеет владельца . Обычно, это пользователь, создавший файл.
Группа — Каждый файл ОС UNIX принадлежит к группе . Первоначально системный администратор приписывает вас к группе, и к каждому создаваемому вами файлу приписывается имя этой группы. Если к файлам должны иметь доступ несколько пользователей, работающих над одним проектом, то системный администратор может установить идентичность группы .
Остальные — Все другие пользователи системы.
Каждая категория пользователей может иметь разные права доступа к файлу. Существует три вида разрешения на доступ:
Чтение — Позволяет просматривать содержимое файла такими командами, как cat , pr и cp . Разрешение на чтение также позволяет вам получать список файлов каталога.
Запись — Позволяет менять содержимое файла редактированием или переписыванием. При работе с каталогами разрешение на запись и выполнение позволяет добавлять, удалять и переименовывать файлы.
Выполнение — Если файл содержит программу, то вы можете использовать его как команду UNIX . Разрешение на выполнение позволяет переходить в другой каталог и делает доступными все файлы каталога.
ПРЕДУПРЕЖДЕНИЕ : Даже когда файл защищен от записи, он может быть удален, если есть разрешение на запись и выполнение для вышестоящего каталога. Таким образом, лучшее правило для защиты файлов — снять разрешение на запись ваших каталогов для группы и остальных пользователей.
ПРАВА ДОСТУПА К ФАЙЛУ
Владелец: обычно пользователь, создавший файл
Группа: первоначально системный администратор приписывает вас к группе — к каждому созданному вами файлу приписывается имя этой группы
Остальные: все остальные пользователи
| ФАЙЛ | КАТАЛОГ | |
| Чтение | Позволяет читать файл командами cat, cp, pr и др. | Позволяет получать список файлов каталога. |
| Запись | Позволяет изменять содержимое файла редактированием. (Необходимо также разрешение выполнения). | Позволяет добавлять новые файлы, удалять и переименовывать |
| Выполнение | Позволяет выполнить файл как команду (Необходимо также разрешение чтения) | Позволяет переходить в другой каталог и обращаться к его файлам. |
Вывод на экран режима доступа к файлу
Команда ls -l выводит на экран режим доступа к файлу. Символы со второго по десятый в ответе системы на команду ls -l обозначают режим доступа в следующем формате:
drwxr-x— 1 jas prof 112 Jul 7 15:20 phone.list
Первый символ обозначает тип файла — d означает каталог. Символы со второго по четвертый указывают режим доступа владельца; с пятого по седьмой — группы; с восьмого по десятый — остальных пользователей.
Вы можете иметь разрешения на чтение, запись и выполнение для владельца, группы и остальных. Тире в любой позиции обозначает отсутствие соответствующего доступа. Смотрите Пример 1 на следующей странице.
Если вы находитесь в своем каталоге, то команда ls -l покажет режим доступа к нему. Вы должны проверить степень защиты своего каталога.
ВЫВОД НА ЭКРАН РЕЖИМА ДОСТУПА К ФАЙЛУ
-rw-rw—- 1 jas train 995 Nov 17 12:04 budget88
-rw-rw—- 1 jas train 995 Nov 17 12:03 budget89
-rw-rw—- 1 jas train 2985 Nov 17 08:53 budget8tot
-rw-rw—- 1 jas train 995 Nov 17 12:03 budget90
-rw-rw—- 1 jas train 995 Nov 17 12:02 budget91
-rw-rw—- 1 jas train 995 Nov 17 12:02 budget92
-rw-rw—- 1 jas train 995 Nov 17 11:58 budget93
-rw-rw—- 1 jas train 3980 Nov 17 08:53 budget9tot
-rw-rw—- 1 jas train 6965 Nov 17 08:53 budgettot
drwxrwxrwx 2 jas train 144 Nov 17 13:34 receivable
-rw-rw—- 1 jas train 551 Nov 17 08:53 tot
drwxrwxrwx 2 jas train 192 Nov 17 13:34 work
drwxrwx— 7 jas train 240 Oct 28 08:32 .
Изменение режима доступа к файлу командой chmod
Если вы являетесь владельцем файла или суперпользователем, то вы можете изменять права доступа к файлу командой chmod . Ее формат:
chmod -опции режим файлы
Первый аргумент этой команды, режим, указывает новый режим доступа к файлу. Есть два способа задания прав доступа: цифровым кодом или символьным кодом.
В цифровом коде каждое разрешение имеет свое численное значение:
разрешение значение
r 4
w 2
x 1
Цифровой код состоит из трех цифр — по одной на каждую категорию пользователей. Каждая цифра есть сумма разрешений, приписанных этой категории. Например:
владелец группа остальные
r w x r — x — — —
4+2+1 4+0+1 0+0+0
7 5 0
Когда вы используете команду chmod , то система изменяет режим доступа, не задавая при этом вопросов. Чтобы убедиться в установке нового режима, воспользуйтесь командой ls -l .
Опция -R команды chmod
Опция -R воздействует на аргумент, устанавливая заданный режим для каждого файла каталога. Но такая команда может причинить больше вреда, чем пользы. Ее применение оправдано в случае использования с каталогом, содержащим исполнимые файлы, например, с каталогом $HOME/bin, где будет выгоден одинаковый доступ к файлам.
ЗАМЕЧАНИЕ: Поскольку опция -R воздействует и на подкаталоги, то в большинстве случаев ее используют, добавляя разрешение на выполнение.
ИЗМЕНЕНИЕ РЕЖИМА ДОСТУПА К ФАЙЛУ КОМАНДОЙ chmod
chmod -опции режим файлы
-rw-r—r— 2 jas train 173 Jul 7 14:01 ATTlogo
$ chmod 640 ATTlogo
-rw-r—— 2 jas train 173 Jul 7 14:01 ATTlogo
-rwxrw—- 1 jas train 164 Jul 7 16:36 heart
$ chmod 753 heart
-rwxr-x-wx 1 jas train 164 Jul 7 16:36 heart
drwxr-xr-x 3 jas train 288 Aug 6 08:29 fun
drwxr-x— 3 jrs train 288 Aug 6 08:29 fun
$ chmod -R 700 fun
-rwx—— 1 jrs train 1164 Nov 17 fun/ATTlogo
-rwx—— 1 jrs train 753 Nov 17 fun/heart
-rwx—— 1 jrs train 9278 Nov 17 fun/thanks
-rwx—— 1 jrs train 553 Nov 17 terms
-rwx—— 1 jrs train 1839 Nov 17 twilight.unix
Справочник пользователя описывает символьный код, где также каждому разрешению приписано определенное значение:
chmod категория_пользователей операция разрешение файл(ы)
u владелец
g группа
o остальные
+ добавить
— отнять
= назначить
r чтение
w запись
x выполнение
Вы можете использовать команду chmod и с символьным кодом. Вы для каждой категории пользователей добавляете, отнимаете или назначаете разрешения. Если вы не указываете категорию, то система делает доступ одинаковым для всех пользователей. Смотрите Пример 1 на следующей странице.
-rw-r—— 2 jas train 1164 Jul 7 14:01 ATTlogo
$ chmod g+x ATTlogo
-rw-r-x— 2 jas train 1164 Jul 7 14:01 ATTlogo
$ chmod +w ATTlogo
-rw-rwx-w- 2 jas train 1164 Jul 7 14:01 ATTlogo
-rwxr-x-wx 1 jas train 753 Jul 7 14:01 heart
$ chmod go-x heart
-rwxr—w- 1 jas train 753 Jul 7 14:01 heart
-rw-rw-rw- 1 jas train 753 Jul 7 14:01 heart
Система UNIX имеет два режима доступа по умолчанию — один для каталогов, другой для обычных файлов. Если вы указываете права доступа, то каждый созданный вами каталог имеет доступ на чтение, запись и выполнение. Другими словами, режим доступа 777 . Обычные файлы, как правило, не имеют доступ на выполнение, то есть их режим по умолчанию — 666 . Например, обычный файл, созданный редактором, НЕ ИМЕЕТ доступа на выполнение. Добавить доступ на выполнение вы можете командой chmod .
В системном файле /etc/profile системный администратор может установить маску ( mask ) для режимов доступа к каталогам и файлам. Маска снимает определенные разрешения в доступе по умолчанию. Для ознакомления с маской системы выполните команду umask . Смотрите Пример 1 на следующей странице.
Команда umask выводит на экран четырехзначное число. Первая цифра — ноль, и она не используется shell. Три последующих цифры соответствуют трем категориям пользователей: владелец, группа и остальные. Каждая цифра обозначает разрешения, СНИМАЮЩИЕСЯ с этой категории пользователей.
Маска не влияет на доступ к уже существующим файлам и каталогам. Она воздействует только на создаваемые файлы. Для изменения режима доступа существующих файлов, пользуйтесь командой chmod .
Таблица на следующей странице демонстрирует наиболее распространенные маски. Например, маска 0002 снимает разрешение на запись для категории остальных пользователей. При такой маске созданные файлы будут иметь режим доступа 664 , а каталоги — 775 .
Для установления своей собственной маски, действующей только на ваши файлы, выполните команду umask , задав при ней трехзначный аргумент. Эти три цифры будут означать разрешения, снимаемые с владельца, группы и остальных пользователей соответственно. Смотрите Пример 2 на следующей странице.
чтение=4; запись=2; выполнение=1.
Маска Файлы Каталоги
umask 000 666 777
(по умолчанию) rw-rw-rw- rwxrwxrwx