Jump to content
Sign in to follow this  
akademik78

Помогите, плз, с тестами

Recommended Posts

Здравствуйте!

Дали задание, состоящее из многих пунктов.Выполняю их на виртуализированной Mandriva Linux Free 2010. Несколько из них сделал самостоятельно, а другие не могу, так как не могу разобраться в синтаксисе команд и переменных. Конкретно: не умею составлять конвейер. Привожу задания:

1. Выведите на экран список всех каталогов и файлов, имена которых содержат три символа из каталога /usr/share.

Я так понимаю, нужно составить конвейер из команд ls /usr/share и grep? В методичках есть только описания команд. К командам man и ls --help прошу не отправлять.

2. Выведите на экран список всех каталогов и файлов, имена которых начинаются на 'd' из каталога /usr/ bin.

3. Создайте схемы каталогов согласно рисунку:

http://img-fotki.yandex.ru/get/5302/bombaster78.0/0_59294_514061c6_L.jpg

http://fotki.yandex.ru/users/bombaster78/view/365204/

В принципе, каталоги тоже могу создать, но как сделать это красиво? В подтверждение нужно представить скриншот списка всех использованных команд (собираюсь делать через histori).

Остальное постараюсь сделать сам, опираясь на синтаксис Ваших примеров.

Благодарю всех откликнувшихся.

Share this post


Link to post
Share on other sites

Конвейеры Вам не нужны. Речь идёт о wildcard'ах шелла (* и ?). Например, 1:

Вывести содержимое каталога: ls

Без содержимого вложенных директорий: ключ -d

Имена состоят из трёх символов: ???

Получается ls -d /usr/share/???

Аналогично 2, но количество символов неизвестно, поэтому нужно использовать *

По пункту 3: у mkdir есть ключ -p, который позволяет создавать не только указанный каталог, но и все родительские. Например,

mkdir -p ~/x/y/z создаст всю указанную иерархию каталогов. Если этот ключ не указывать и каталогов x или y не существует, получите ошибку. Подробнее - man mkdir. Вдобавок можно воспользоваться конструкцией x/{a,b,c}, которая развернётся в x/a x/b x/c. Комбинируя это с ключом -p, можно быстро создать указанную иерархию.

Share this post


Link to post
Share on other sites

Спасибо, по 1-му и 2-му пунктам все получилось. Сегодня возьмусь за 3-й. Но вот конвейеры строить я так и не научился. Просветите, пожалуйста, на этот счет. Может, литературу какую порекомендуете, в которой все описано просто и с большим количеством примеров?

И ещё: как при помощи команды cat создать файл в конкретной директории?

Благодарю за помощь.

Share this post


Link to post
Share on other sites

Команда1 | команда2 | команда3. Это означает, что команда2 прочитает то, что выведет команда1, а команда 3 - то, что выведет команда2. Поток ввода (stdin) и поток вывода (stdout) - это трубы, которые по умолчанию подключены к терминалу. Пайпы (конвейеры) позволяют соединять их друг с другом, вывод одной с вводом другой. Собственно, слово pipe и переводится, как "труба". Немного модернизированный пример из статьи http://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%BD%D0%B2%D0%B5% D0%B9%D0%B5%D1%80_(UNIX)

ps ax | grep terminal | grep -v grep | awk '{print $1}'

1. ps ax выведет список запущенных в системе процессов

2. выведенный текст получит на свой вход команда grep и выведет строки, в которых есть слово "terminal":

ineu@ineu ~ % ps ax | grep terminal  3750 ?        S      0:00 /bin/sh /home/ineu/.soft/bin/switch_win gnome-terminal 3760 ?        Sl     0:01 gnome-terminal 4004 pts/1    S+     0:00 grep --color=auto --exclude-dir=.svn --exclude-dir=cache --exclude=*.log terminal

3. из этих строк следующая команда grep выведет строки, в которых нет слова "grep" (отрицание - опция -v)

ineu@ineu ~ % ps ax | grep terminal | grep -v grep                    3750 ?        S      0:00 /bin/sh /home/ineu/.soft/bin/switch_win gnome-terminal 3760 ?        Sl     0:01 gnome-terminal

4. из получившегося на этот момент текста команда awk выведет первую колонку:

ineu@ineu ~ % ps ax | grep terminal | grep -v grep | awk '{print $1}'37503760

Создать файл: открыть в редакторе несуществующий и сохранить. Или использовать команду touch, которая обновляет время доступа/модификации к файлу или создаёт файл, если его нет.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
Sign in to follow this  

×
×
  • Create New...