Основы командной строки UNIX
Одна из ключевых идей UNIX: всё подобно тексту (человек – машина, программа – программа, программа – настройки), всё доступно через файлы (в UNIX эта идея не доведена до абсурда, есть +-клон UNIX Plan9).
- Полезное про FS: cd, ls, mv, cp, rm, rmdir, chmod, права, umask, find
- Полезное про содержимое файлов: head, tail, (cat), file, less, grep, sort, uniq, tr, sed, awk, wc
- Полезное про документацию: man(1), info, /usr/share/doc
Простые упражнения
- Создайте такую иерархию директорий:
A/ B/ C/ D/
Создайте файл A/B/C/x, содержащий в себе цифру 1
- Проверьте, что он действительно содержит цифру 1 и ничего более
Скопируйте его в A/B/C/y и в A/B/D/z
- Используйте find(1), чтобы проверить, что получилось именно то, что вы хотели
- Установите на директории такие права для себя:
A/ rwx B/ -wx C/ r-- D/ rwx
Посмотрите содержимое директорий A, A/B, A/B/C, A/B/D
Переименуйте A/B/D в A/B/E
Удалите всё, что вы натворили (т.е. директорию A и поддиректорию)
Содержательные упражнения
Игра. (Азартная. Но давайте на этот раз обойдёмся без ставок и денег). В /tmp/game создайте файл с вашим именем. Сделайте этот файл недоступным на чтение никому, кроме вас – это в ваших же интересах. Положите в этот файл ровно одно натуральное число. Выигрывает тот, кто назвал наименьшее уникальное число. (Т.е. если два человека назвали одно и то же число, оба проигрывают. А уже только из оставшихся выигрывает тот, кто назвал наименьшее число). Это называется lowest unique bid auction.
Придумайте, как одной командой1 определить победителя. Лучше, если вы будете точно знать, что эта цепочка команд приводит к правильному ответу, проверьте её на нескольких разных состояниях игры – для этого вам придётся проводить игру между собой и собой у себя в домашней директории. (Я полагаю, вам для этого заодно придётся достаточно поиграться с cp(1), mv(1), и rm(1), чтобы отдельные задания на них давать было не нужно).
- Посчитайте, сколько html страниц сделали (опубликовали) ваши собратья по курсу.
- У кого на домашней страничке встречается слово CTATGTAGTCTGTTG? (Я этот метод применяю для идентификации людей по е-почтовым адресам, но так как вы адреса друг друга наверняка все знаете, даю другую версию той же задачи).
Из нерассказанного для выполнения упражнений потребуются утилиты echo(1), find(1), wc(1), ln(1).
точнее, одной цепочкой команд соединённых через | -- такая цепочка зовётся pipeline, т.е. трубопроводом (1)