Читать книгу 📗 "UNIX — универсальная среда программирования - Керниган Брайан Уилсон"
$ who | 2drh tty0 Sep 28 21:23 cvw tty5 Sep 28 21:09dmr tty6 Sep 28 21:10 scj tty7 Sep 28 22:11you tty9 Sep 28 23:00 jib ttyb Sep 28 19:58$Реализация команд
23$ ln 2 3; ln 2 4; ln 2 5; ln 2 6$ ls -l [1-9]167222 -rwxrwxrwx 5 you 51 Sep 28 23:21 2167222 -rwxrwxrwx 5 you 51 Sep 28 23:21 3167222 -rwxrwxrwx 5 you 51 Sep 28 23:21 4167222 -rwxrwxrwx 5 you 51 Sep 28 23:21 5167222 -rwxrwxrwx 5 you 51 Sep 28 23:21 6$ ls /usr/you/bin | 52 3 4 411 56 cx lc m nuwhat where$ cat 5# 2, 3, ...: печать в n столбцовpr -$0 -t -11 $*$Флаг
-t-lnn$03.5 Результат выполнения программы в качестве аргумента
Теперь перейдем от аргументов команд для командного файла к порождению аргументов. Конечно, расширение имен файлов с помощью метасимволов, подобных
*`...`$ echo At the tone the time will be `date`.At the tone the time will be Thu Sep 29 00:02:15 EDT 1983.$Небольшое изменение показывает, что
`...`"..."$ echo "At the tone> the time will be `date`."At the tonethe time will be Thu Sep 29 00:03:07 EDT 1983.$В качестве другого примера предположим, что вам необходимо послать почту группе людей, которые зарегистрированы под именем, хранящимся в файле
mailinglistmailinglistmail$ mail `cat mailinglist` <letterЗапуск команды
catmailmailНесколько иной подход требуется для преобразования файла
mailinglist$ cat mailinglistecho don whr ejs mb $ cx mailinglist$ mailinglistdon whr ejs mb$Теперь посылка писем адресатам из списка реализуется командой:
$ mail `mailinglist` <letterДобавив еще одну программу, получим возможность даже изменять список пользователей в диалоге. Такая программа называется
pick$ pick аргументы...и выдает свои аргументы по одному, ожидая каждый раз ответа. Результатом действия команды
pickyyes$ pr `pick *.с` | lprЗдесь вначале выдаются имена файлов, оканчивающиеся на
.сprlprpickДопустим, вы используете второй вариант команды
mailinglistdonmb$ mail `pick `mailinglist`` <letterdon? ywhr?ejs?mb? y$Обратите внимание на вложенные знаки слабого ударения; обратная дробная черта запрещает обработку вложенной конструкции
`...`Что произойдет, если опустить символы обратной дробной черты в команде
$ echo `echo `date``Попробуйте ввести
$`date`и объясните результат.
Команда
$ grep -l pattern filenamesперечисляет имена файлов, которые соответствуют шаблону, но больше ничего не выдает. Попытайтесь выполнить разные вариации такого задания:
$ command `grep -l pattern filenames`