Внутреннее устройство Linux
Шрифт:
$ touch file
Теперь примените к этому файлу команду ls -l. Вы должны увидеть результат, подобный приведенному ниже. Символом
$ ls -l file
– rw-r—r— 1 juser users 0 May 21 18:32
2.3.5. Команда rm
Чтобы
$ rm file
2.3.6. Команда echo
Команда echo выводит свои аргументы в стандартный вывод:
$ echo Hello again.
Hello again.
Команда echo весьма полезна для раскрытия значений паттернов оболочки, использующих джокерные символы вроде *, и переменных, таких как $HOME, с которыми вы познакомитесь чуть позже в этой главе.
2.4. Перемещение по каталогам
Иерархия каталогов в системе Unix начинается с каталога /, который иногда называют корневым каталогом. Каталоги разделяются с помощью символа «слеш» (/), но не с помощью обратного слеша (\). В корневом каталоге присутствует несколько стандартных подкаталогов, например /usr, как вы узнаете из раздела 2.19.
Когда вы ссылаетесь на файл или каталог, вы указываете путь или имя пути. Когда путь начинается с символа / (например, /usr/lib), такой путь называется полным или абсолютным.
Часть пути, которая представлена двумя точками (..), указывает на родительский каталог по отношению к данному. Если, например, вы работаете в каталоге /usr/lib, то в этом случае путь .. будет означать /usr. Подобным же образом ../bin означает /usr/bin.
Одна точка (.) ссылается на текущий каталог. Если, например, вы сейчас в каталоге /usr/lib, то путь . по-прежнему означает /usr/lib, а путь ./X11 будет значить /usr/lib/X11. Вам не придется слишком часто применять точку, поскольку для большинства команд по умолчанию указан текущий каталог, если путь не начинается с символа / (в предыдущем примере вы могли бы использовать X11 вместо ./X11).
Путь, который не начинается с символа /, называется относительным путем. Чаще всего вам придется работать с относительными путями, поскольку вы уже будете находиться в необходимом каталоге или где-либо неподалеку от него.
Теперь, когда у вас есть основное представление об устройстве каталогов, рассмотрим несколько важных команд для работы с ними.
2.4.1. Команда cd
Текущий рабочий каталог — это каталог, в котором в данный момент находится процесс (например, оболочка). Команда cd изменяет текущий рабочий каталог оболочки:
$ cd dir
Если вы опустите параметр dir, оболочка вернет вас в домашний каталог, с которого вы начали работу при входе в систему.
2.4.2. Команда mkdir
Команда mkdir создает новый каталог с именем dir:
$ mkdir dir
2.4.3. Команда rmdir
Команда rmdir удаляет каталог с именем dir:
$ rmdir dir
Если каталог dir не пуст, эта команда не сработает. Чтобы удалить каталог со всем его содержимым, используйте команду rm -rf dir. Однако будьте осторожны! Это одна из немногих команд, которая может причинить существенный вред, особенно если вы работаете как superuser. Параметр –r задает рекурсивное удаление, которое последовательно удаляет все, что находится внутри каталога dir, а параметр -f делает эту операцию принудительной. Не используйте флаги -rf с такими джокерными символами, как звездочка (*). Перепроверяйте команды перед их запуском.
2.4.4. Универсализация файловых имен (джокерные символы)
Оболочка способна сопоставлять простые шаблоны с именами файлов и каталогов. Этот процесс называется универсализацией файловых имен. Он напоминает применение джокерных символов в других системах. Простейшим из таких символов является звездочка (*), которая указывает оболочке на то, что вместо него можно подставить любое количество произвольных символов. Например, следующая команда выдаст список файлов в текущем каталоге:
$ echo *
Оболочка сопоставляет аргументы, которые содержат джокерные символы, с именами файлов, заменяет аргументы подходящими именами, а затем запускает исправленную командную строку. Такая подстановка называется развертыванием, поскольку оболочка подставляет все подходящие имена файлов. Вот несколько примеров того, как можно использовать символ * для развертывания имен файлов:
• at* — развертывается во все имена файлов, которые начинаются с символов at;
• *at — развертывается во все имена файлов, которые заканчиваются символами at;
• *at* — развертывается во все имена файлов, которые содержат символы at.
Если ни один из файлов не удовлетворяет шаблону, оболочка не выполняет развертывание и вместо него буквально использует указанные символы, в том числе и *. Попробуйте, например, набрать такую команду, как echo *dfkdsafh.
примечание
Если вы привыкли к работе в системе MS-DOS, то вы могли бы инстинктивно набрать символы *.*, которые подходят для всех файлов. Расстаньтесь теперь с этой привычкой. В системе Linux и других версиях системы Unix вы должны использовать символ *. В оболочке Unix комбинация *.* соответствует только тем файлам и каталогам, названия которых содержат точку. Для названий файлов в системе Unix расширения не являются обязательными, и файлы часто обходятся без них.