Определение вашего текущего каталога с помощью pwd
Как только вы начали путешествие по каталогам, вы можете легко потеряться, или позабыть имя своего текущего каталога. Оболочка вашей системы Linux, Bash , по умолчанию показывает только название текущего каталога, а на весь путь.
Рисунок 10-2. Команда pwd показывает где вы находитесь
Чтобы определить точное расположение вашего текущего каталога в файловой системе, перейдите в приглашении оболочки и введите следующую команду:
На экране вы увидите что-то подобное:
Это говорит вам, что вы находитесь в каталоге /newuser , расположенном в вашем каталоге /home .
Команда pwd расшифровывается как «print working directory» (просмотр текущего каталога). Когда вы вводите pwd , вы тем самым спрашиваете у своей Linux-системы, «Где я?» Ваша система отвечает, показывая на мониторе, также являющимся стандартным устройством вывода, каталог в котором вы находитесь.
Используйте pwd команду, если вам нужно осмотреться в системе . Даже эксперты Linux применяют эту команду.
| Назад | Начало | Вперед |
| Получение информации в Man | Вверх | Смена каталога с помощью cd |
Как определить полное имя домашнего каталога линукс
Next: Копирование файлов и каталогов Up: Работа с файлами Previous: Перемещение по каталогам Contents Index
Чтобы просмотреть содержимое каталога, используйте команду ls. В качестве аргумента следует указать имя требуемого каталога. Если аргументы не указаны, ls выведет на экран содержимое текущего рабочего каталога:
$ ls [Enter] apple cherry orange $
В этом примере текущий рабочий каталог содержит три файла: `apple’, `cherry’, и `orange’.
Чтобы просмотреть содержимое подкаталога `work’ в текущем каталоге, введите:
Чтобы просмотреть содержимое каталога `/usr/doc’, введите:
$ ls /usr/doc [Enter]
Из листинга по умолчанию Вы не сможете отличить каталоги и исполняемые файлы от обычных. Используйте ключ `-F’, который заставит ls поместить символ `/’ после имен подкаталогов и символ `*’ после имен исполняемых файлов:
$ ls -F [Enter] repeat* test1 test2 words/ $
В этом примере текущий рабочий каталог содержит исполняемый файл `repeat’, каталог `words’, и несколько файлов других типов `test1′ и `test2′.
Еще один способ просмотра содержимого каталогов — использование «менеджера файлов» , которых для Linux создано достаточно много; наиболее популярным является «Midnight Commander» или mc.
Чтобы вывести более подробный листинг каталога, используйте ls с ключом `-l’ («long»). Листинг будет содержать размер каждого файла в байтах, время последней модификации, тип файла, имя владельца и права доступа.
Для вывода подробной информации о каталоге `/usr/doc/bash’, введите:
$ ls -l /usr/doc/bash [Enter] total 72 -rw-r--r-- 1 root root 13744 Oct 19 22:57 CHANGES.gz -rw-r--r-- 1 root root 1816 Oct 19 22:57 COMPAT.gz -rw-r--r-- 1 root root 16398 Oct 19 22:57 FAQ.gz -rw-r--r-- 1 root root 2928 Oct 19 22:57 INTRO.gz -rw-r--r-- 1 root root 4751 Oct 19 22:57 NEWS.gz -rw-r--r-- 1 root root 1588 Oct 19 22:57 POSIX.NOTES.gz -rw-r--r-- 1 root root 2718 Oct 19 22:57 README.Debian.gz -rw-r--r-- 1 root root 19596 Oct 19 22:57 changelog.gz -rw-r--r-- 1 root root 1446 Oct 19 22:57 copyright drwxr-xr-x 9 root root 1024 Jul 25 1997 examples $
Первая строка содержит информацию о полном объеме занимаемого каталогом дискового пространства в блоках по 1024 байта (в данном случае 72). Каждая последующая строка содержит несколько колонок с информацией о каждом файле.
Первая колонка указывает тип файла и права доступа к нему. Первый символ в этой колонке определяет тип файла; тире (`-‘) означает обычный файл (по умолчанию). Каталоги обозначаются буквой `d’, а символические ссылки — буквой `l’. Остальные девять символов в первой колонке указывают права доступа к файлу. Вторая колонка указывает количество жестких ссылов на файл. Третья и четвертая колонки указывают пользователя и группу, которые владеют этим файлом. Пятая колонка содержит размер файла в байтах, шестая — время и дату последней модификации файла, а в последней колонке указано имя файла, к которому относится информация.
Чтобы просмотреть каталог рекурсивно, то есть со всеми содержащимися в нем подкаталогами, используйте опцию `-R’. Например, для текущего каталога введите:
$ ls -R [Enter] play work play: notes work: notes $
В данном примере текущий рабочий каталог содержит два подкаталога, `work’ и `play’, но не содержит файлов. Каждый из подкаталогов содержит файл `notes’.
Чтобы вывести полное оглавление все файловой системы, наберите:
Обычно этот ключ комбинируют с опцией `-l’, чтобы вывести наиболее полный листинг файлов системы:
Примечание: Некоторые каталоги могут не попасть в листинг, если у Вас нет права доступа к ним.
Чтобы отсортировать список файлов в каталоге по времени создания или модификации, используйте опцию `-t’. Например, чтобы вывести список файлов в каталоге `/usr/tmp’, чтобы самые новые файлы были вверху списка, введите:
$ ls -t /usr/tmp [Enter]
По умолчанию, ls не выводит имена файлов, начинающиеся с символа «точка» (`.’). Чтобы уменьшить листинг, многие приложения «скрывают» файлы конфигурации в Вашем домашнем каталоге, присваивая им имена, начинающиеся с точки; они называются dot-файлы, или «скрытые» . Каждый каталог имеет два специальных dot-файла: `..’ — родительский каталог и `.’ — сам этот каталог.
Чтобы увидеть все файлы в каталоге, включая скрытые, используйте опцию `-a’. Например, для текущего каталога:
Чтобы увидеть все файлы, исключая специальные `..’ и `.’, используйте опцию `’-A:
Чтобы увидеть цветной листинг каталога, используйте ls с ключом `—color’ ; тогда все имена файлов будут выведены разными цветами, в зависимости от их содержания. По умолчанию каталоги выводятся синим, текстовые файлы — белым, исполняемые — зеленым и т.д.
Примечание: Обычно для команды `ls -color’ создается псевдоним `ls’, так что листинг выводится в цвете по умолчанию.
Для того, чтобы вывести граф иерархии каталогов, используйте утилиту tree. Например, для вывода дерева каталогов, начиная с текущего, наберите:
$ tree [Enter] . |-- projects | |-- current | `-- old | |-- 1 | `-- 2 `-- trip `-- schedule.txt 4 directories, 3 files $
В этом примере выводится дерево каталогов, в котором текущий каталог содержит два подкаталога `projects’ и `trip’; а каталог `projects’, в свою очередь, содержит подкаталоги `current’ и `old’.
Чтобы вывести дерево каталогов для определенного каталога, укажите его имя в качестве аргумента tree. Например, для Вашего домашнего каталога, введите:
Чтобы вывести дерево каталогов, в котором будут присутствовать только имена каталогов, используйте опцию `-d’. Это полезно при выводе полного дерева каталогов системы:
$ tree -d / > tree [Enter]
Команда ls имеет много опций для управления листингом и отображаемой информацией о файлах; приведенная таблица описывает некоторые из них.
| Опция | Описание |
| —color | Вывод имен файлов в цвете, в зависимости от их типа. |
| -R | Рекурсивный список файлов. |
| -a | Вывод всех файлов, включая скрытые. |
| -d | Вывод только имен каталогов, без промсмотра их содержимого. |
| -f | Вывод содержимого каталога в том порядке, в котором оно записано на диск. |
| -l | Подробный листинг. |
| -r | Сортировка содержимого каталога в обратном порядке. |
| -s | Вывод размера — в блоках по 1K — для каждого файла. |
| -t | Сортировка по времени создания или модификации файла. |
Примечание: Вы можете комбинировать опции в любом порядке; например, чтобы вывести список файлов, отсортированный по времени, со всеми атрибутами, введите `-lt’. Чтобы рекурсивно отобразить все скрытые файлы и их атрибуты, используйте `-lRa’. Порядок опций не имеет значения, так что `-lRa’ означает то же самое, что и `-alR’.
Next: Копирование файлов и каталогов Up: Работа с файлами Previous: Перемещение по каталогам Contents Index Alex Otwagin 2002-12-16
Текущий каталог
Файловая система не только систематизирует данные, но и является основой метафоры «рабочего места» в Linux. Каждая выполняемая программа «работает» в строго определённом каталоге файловой системы. Такой каталог называется текущим каталогом, можно представлять, что программа во время работы «находится» именно в этом каталоге, это её «рабочее место». В зависимости от текущего каталога может меняться поведение программы: зачастую программа будет по умолчанию работать с файлами, расположенными именно в текущем каталоге — до них она «дотянется» в первую очередь. Текущий каталог есть у любой программы, в том числе и у командной оболочки (shell) пользователя. Поскольку взаимодействие пользователя с системой обязательно опосредовано командной оболочкой, можно говорить о том, что пользователь «находится» в том каталоге, который в данный момент является текущим каталогом его командной оболочки.
Все команды, отдаваемые пользователем при помощи shell, наследуют текущий каталог shell, т. е. «работают» в том же каталоге. По этой причине пользователю важно знать текущий каталог shell. Для этого служит утилита pwd :
[methody@localhost methody]$ pwd /home/methody [methody@localhost methody]$
Пример 1. Текущий каталог: pwd
pwd (аббревиатура от print working directory) возвращает полный путь текущего каталога командной оболочки, естественно, именно той командной оболочки, при помощи которой была выполнена команда pwd . В данном случае Мефодий узнал, что в этот момент (на этой виртуальной консоли) текущим является каталог « /home/methody ».
Почти все утилиты, с которыми работал Мефодий в предыдущих лекциях, по умолчанию читают и создают файлы в текущем каталоге. Так, Мефодий обращался к файлам, не используя никаких путей, просто по имени. Например, использовал утилиту cat , чтобы вывести на экран содержимое файла « text ».
[methody@localhost methody]$ cat text File: info.info, Node: Help-Cross, Up: Cross-refs The node reached by the cross reference in Info . . . [methody@localhost methody]$ cat /home/methody/text File: info.info, Node: Help-Cross, Up: Cross-refs The node reached by the cross reference in Info
Пример 2. Полный и относительный путь к файлу
В действительности, командная оболочка, прежде чем передавать параметр « text » (имя файла) утилите cat , подставляет значение текущего каталога — получается полный путь к этому файлу в файловой системе: « /home/methody/text ». Содержимое именно этого файла утилита cat выведет на экран.
Вообще говоря, в нескольких разных каталогах файловой системы могут оказаться файлы с именем « text », именно поэтому командная оболочка всегда передаёт программам и утилитам «точный адрес» файла в файловой системе — полный путь.
Набирая только имя файла без пути к текущему каталогу, Мефодий воспользовался относительным путём к этому файлу.
относительный путь Путь к объекту файловой системы, не начинающийся в корневом каталоге. Для каждого процесса Linux определён текущий каталог, с которого система начинает относительный путь при выполнении файловых операций.
Относительный путь строится точно так же, как и полный — перечислением через « / » всех названий каталогов, встретившихся при движении к искомому каталогу или файлу. Между полным путём и относительным есть только одно существенное различие: относительный путь начинается от текущего каталога, в то время как полный путь всегда начинается от корневого каталога. Относительный путь любого файла или каталога в файловой системе может иметь любую конфигурацию: чтобы добраться до искомого файла можно двигаться как по направлению к корневому каталогу, так и от него (см. раздел Filesystem_use.Перемещение по дереву каталогов). Linux различает полный и относительный пути очень просто: если имя объекта начинается на « / » — это полный путь, в любом другом случае — относительный.
Пользователь может обращаться к файлу при помощи полного или относительного пути — результат будет совершенно тот же. Так, команды cat text и cat /home/methody/text , отданные Мефодием, дали одинаковый результат, поскольку выводился один и тот же файл. Если в относительном пути встречаются символы « / », рассматриваются подкаталоги текущего каталога, их подкаталоги и т. д. Короче говоря, относительный путь строится по тем же правилам, что и полный, с той разницей, что относительный путь начинается не с символа « / ». Сам текущий каталог, каков бы ни был полный путь к нему, всегда имеет ещё одно обозначение, « . », которое можно использовать, если по каким-то причинам требуется, чтобы даже в относительном пути к файлу, находящемуся в текущем каталоге, присутствовал элемент «имя каталога». Так, пути « text » и « ./text » тоже приводят к одному и тому же файлу, однако в первом случае в строке пути не содержится ничего, кроме имени файла.
Отделить путь к файлу от его имени можно с помощью команд dirname и basebane соответственно:
[methody@localhost methody]$ basename /home/methody/text text [methody@localhost methody]$ basename text text [methody@localhost methody]$ dirname /home/methody/text /home/methody [methody@localhost methody]$ dirname ./text . [methody@localhost methody]$ dirname text
Пример 3. Использование dirname и basename
Мефодий заметил, что для « text » и « ./text » dirname выдало одинаковый результат: «.», что понятно: как было сказано выше, эти формы пути совершенно эквивалентны, а при автоматической обработке результатов dirname гораздо лучше получить « . », чем пустую строку.
Нужно вывести на экран терминала убунту полное имя текущего каталога
Нужно вывести на экран терминала убунту текущую дату и время, полное имя текущего каталога, полное имя домашнего каталога пользователя, имя пользователя, собственное имя программы Время я вывел, остальное под вопросом
Отслеживать
user361068
задан 29 ноя 2020 в 8:58
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
- Полное имя текущего каталога (то-есть абсолютный путь?): system(«pwd»)
- Полное имя домашнего каталога: system(«pwd ~»)
- Имя пользователя: system(«whoami»)
- Собственное имя программы. cout
Отслеживать
ответ дан 29 ноя 2020 в 9:15
1,642 8 8 серебряных знаков 23 23 бронзовых знака
не получается, к сожалению, опубликовал ошибки, которые выводятся
29 ноя 2020 в 9:45
29 ноя 2020 в 9:51
огромное спасибо! получилось
29 ноя 2020 в 10:01
- c++
- ubuntu
- консоль
-
Важное на Мете
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.1.8.3130
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.