Linux узнать полный путь до текущей директории

Get current directory or folder name (without the full path)

How could I retrieve the current working directory/folder name in a bash script, or even better, just a terminal command. pwd gives the full path of the current working directory, e.g. /opt/local/bin but I only want bin .

24 Answers 24

No need for basename, and especially no need for a subshell running pwd (which adds an extra, and expensive, fork operation); the shell can do this internally using parameter expansion:

result=$ # to assign to a variable result=$ # to correct for the case where PWD=/ printf '%s\n' "$" # to print to stdout # . more robust than echo for unusual names # (consider a directory named -e or -n) printf '%q\n' "$" # to print to stdout, quoted for use as shell input # . useful to make hidden characters readable. 

Note that if you’re applying this technique in other circumstances (not PWD , but some other variable holding a directory name), you might need to trim any trailing slashes. The below uses bash’s extglob support to work even with multiple trailing slashes:

dirname=/path/to/somewhere// shopt -s extglob # enable +(. ) glob syntax result=$ # trim however many trailing slashes exist result=$ # remove everything before the last / that still remains result=$ # correct for dirname=/ case printf '%s\n' "$result" 

Alternatively, without extglob :

dirname="/path/to/somewhere//" result="$">" # extglob-free multi-trailing-/ trim result="$" # remove everything before the last / result=$ # correct for dirname=/ case 

Источник

How can I get the current working directory? [duplicate]

I want to have a script that takes the current working directory to a variable. The section that needs the directory is like this dir = pwd . It just prints pwd how do I get the current working directory into a variable?

This is not a duplicate of the question for which it is currently marked as one. The two questions should be compared, at least, based on their titles (as well as their answers). That the answer to this question is already covered by another is, or should be, irrelevant.

@KennyEvitt actually, one of the main reasons we close is precisely because an answer has been given elsewhere. And, in fact, the main question here is actually how to assign the output of a command to a variable, which is covered by the dupe. I have also given the answer to this specific case, so all bases are covered. There would be no benefit in opening this again.

@terdon As a resource available, and intended, for the entire population of Unix & Linux users, this is a valuable question, even if the original asker really just needed an answer already covered elsewhere. If anything, I think this question should be edited to more closely match its title and it should be re-opened, not to allow further activity, but to not imply that this question is ‘bad’.

@KennyEvitt closing as a duplicate in no way implies that the question is bad! This question will remain here, answered, for ever. If you really want to know how to get the current working directory, you will find your answer here. If you just want to know how to save the output of a command in a variable, you will also find the answer here by following the link to the dupe. In any case, this isn’t really something I should do alone, if you feel strongly that it should be reopened, please open a discussion on Unix & Linux Meta where such things should be resolved.

5 Answers 5

There’s no need to do that, it’s already in a variable:

The PWD variable is defined by POSIX and will work on all POSIX-compliant shells:

Set by the shell and by the cd utility. In the shell the value shall be initialized from the environment as follows. If a value for PWD is passed to the shell in the environment when it is executed, the value is an absolute pathname of the current working directory that is no longer than bytes including the terminating null byte, and the value does not contain any components that are dot or dot-dot, then the shell shall set PWD to the value from the environment. Otherwise, if a value for PWD is passed to the shell in the environment when it is executed, the value is an absolute pathname of the current working directory, and the value does not contain any components that are dot or dot-dot, then it is unspecified whether the shell sets PWD to the value from the environment or sets PWD to the pathname that would be output by pwd -P. Otherwise, the sh utility sets PWD to the pathname that would be output by pwd -P. In cases where PWD is set to the value from the environment, the value can contain components that refer to files of type symbolic link. In cases where PWD is set to the pathname that would be output by pwd -P, if there is insufficient permission on the current working directory, or on any parent of that directory, to determine what that pathname would be, the value of PWD is unspecified. Assignments to this variable may be ignored. If an application sets or unsets the value of PWD, the behaviors of the cd and pwd utilities are unspecified.

For the more general answer, the way to save the output of a command in a variable is to enclose the command in $() or ` ` (backticks):

Of the two, the $() is preferred since it is easier to build complex commands like:

command0 "$(command1 "$(command2 "$(command3)")")" 

Whose backtick equivalent would look like:

command0 "`command1 \"\`command2 \\\"\\\`command3\\\`\\\"\`\"`" 

Источник

🐧 Получение абсолютного пути к файлу на Linux

Мануал

Вы можете получить полный путь к текущему каталогу с помощью команды pwd:

Но как получить абсолютный путь к файлу в системах Linux?

Существует несколько способов вывести полный путь к файлам:

Позвольте мне показать вам эти команды по очереди.

Но перед этим я предлагаю сначала ознакомиться с основами концепции абсолютного и относительного пути.

Команда readlink предназначена для разрешения символических ссылок.

Вы можете использовать ее для отображения полного пути к файлу следующим образом:

 
readlink -f sample.txt
/home/itsecforu/sample.txt

Использование команды для получения полного пути к файлу

Команда realpath используется для разрешения абсолютных имен файлов.

Помимо прочего, она может показать полный путь к файлу.

 
realpath sample.txt
/home/itsecforu/sample.txt

Если вы используете файл с символической ссылкой, он покажет реальный путь к исходному файлу.

Вы можете заставить его не следовать за символической ссылкой:

Вот пример, где он по умолчанию показывает полный путь к исходному файлу, а затем я заставил его показать символическую ссылку, а не исходный файл.

 
realpath linking-park
/home/itsecforu/Documents/ubuntu-commands.md
realpath -s linking-park

Используем команду find для получения абсолютного пути к файлу

Вот в чем дело с командой find.

Все относительно каталога, который вы указываете для поиска.

Если вы укажете ей ., она покажет относительный путь.

Если вы укажете абсолютный путь к каталогу, вы получите абсолютный путь к искомым файлам.

Используйте подстановку команд с командой find следующим образом:

Вы можете запустить команду для поиска полного пути к одному файлу:

 
find $(pwd) -name sample.txt
/home/itsecforu/sample.txt

Или вы можете использовать его с кучей файлов, соответствующих определенному шаблону:

 
find $(pwd) -name "*.pdf"
/home/itsecforu/Documents/eBooks/think-like-a-programmer.pdf
/home/itsecforu/Documents/eBooks/linux-guide.pdf
/home/itsecforu/Documents/eBooks/absolute-open-bsd.pdf
/home/itsecforu/Documents/eBooks/theory-of-fun-for-game-design.pdf
/home/itsecforu/Documents/eBooks/Ubuntu 1804 english.pdf
/home/itsecforu/Documents/eBooks/computer_science_distilled_v1.4.pdf
/home/itsecforu/Documents/eBooks/the-art-of-debugging-with-gdb-and-eclipse.pdf

Выведем полный путь с помощью команды ls

Этот способ немного сложный и запутанный.

Вы можете использовать переменную окружения PWD с командой ls следующим образом, чтобы отобразить файлы и каталоги с их абсолютным путем:

Вы получите результат, подобный этому:

 
ls -ld $PWD/*
-r--rw-r-- 1 itsecforu itsecforu 0 Jul 27 16:57 /home/itsecforu/test/file2.txt
drwxrwxr-x 2 itsecforu itsecforu 4096 Aug 22 16:58 /home/itsecforu/test/new

Однако, чтобы вывести полный путь к файлу с помощью команды ls, вам придется использовать ее следующим образом:

Не самое чистое решение, но оно работает.

$ ls -l $PWD/sample.txt -rw-r--r-- 1 itsecforu itsecforu 12813 Sep 7 11:50 /home/itsecforu/sample.txt 

Заключение

Мы рассмотрели четыре различных способа получения полного пути к файлу в Linux.

Команды find и ls являются обычными, в то время как realpath и readlink едва ли известны многим пользователям Linux.

Всегда полезно узнавать что-то новое, не так ли?

Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!

  • Аудит ИБ (49)
  • Вакансии (12)
  • Закрытие уязвимостей (105)
  • Книги (27)
  • Мануал (2 306)
  • Медиа (66)
  • Мероприятия (39)
  • Мошенники (23)
  • Обзоры (820)
  • Обход запретов (34)
  • Опросы (3)
  • Скрипты (114)
  • Статьи (352)
  • Философия (114)
  • Юмор (18)

Anything in here will be replaced on browsers that support the canvas element

OpenVPN Community Edition (CE) – это проект виртуальной частной сети (VPN) с открытым исходным кодом. Он создает защищенные соединения через Интернет с помощью собственного протокола безопасности, использующего протокол SSL/TLS. Этот поддерживаемый сообществом проект OSS (Open Source Software), использующий лицензию GPL, поддерживается многими разработчиками и соавторами OpenVPN Inc. и расширенным сообществом OpenVPN. CE является бесплатным для […]

Что такое 404 Frame? Большинство инструментов для взлома веб-сайта находятся в 404 Frame. Итак, что же представляют собой команды? Вы можете отдавать команды, используя повседневный разговорный язык, поскольку разработчики не хотели выбирать очень сложную систему команд. Команды Команды “help” / “commands” показывают все команды и их назначение. Команда “set target” – это команда, которая должна […]

В этой заметке вы узнаете о блокировке IP-адресов в Nginx. Это позволяет контролировать доступ к серверу. Nginx является одним из лучших веб-сервисов на сегодняшний день. Скорость обработки запросов делает его очень популярным среди системных администраторов. Кроме того, он обладает завидной гибкостью, что позволяет использовать его во многих ситуациях. Наступает момент, когда необходимо ограничить доступ к […]

Знаете ли вы, что выполняется в ваших контейнерах? Проведите аудит своих образов, чтобы исключить пакеты, которые делают вас уязвимыми для эксплуатации Насколько хорошо вы знаете базовые образы контейнеров, в которых работают ваши службы и инструменты? Этот вопрос часто игнорируется, поскольку мы очень доверяем им. Однако для обеспечения безопасности рабочих нагрузок и базовой инфраструктуры необходимо ответить […]

Одной из важнейших задач администратора является обеспечение обновления системы и всех доступных пакетов до последних версий. Даже после добавления нод в кластер Kubernetes нам все равно необходимо управлять обновлениями. В большинстве случаев после получения обновлений (например, обновлений ядра, системного обслуживания или аппаратных изменений) необходимо перезагрузить хост, чтобы изменения были применены. Для Kubernetes это может быть […]

Источник

Читайте также:  Установка kvm linux mint
Оцените статью
Adblock
detector