Linux папка с тильдой

Meaning of tilde in Linux bash (not home directory)

First off, I know that ~/ is the home directory. CDing to ~ or ~/ takes me to the home directory. However, cd ~X takes me to a special place, where X seems to be anything. In bash, if I hit » cd ~ » and hit tab, it shows a bunch of possible ~X options like ~mail and ~postgres and ~ssh . Going to those folders and doing a pwd shows me that these folders are not in the home directory; they’re all over the place. They are not aliases. I’ve checked. They’re not env. variables, or else they’d require a $ . What is setting these links, and where can I find where these are being set?

~X simply returns the literal «~X» but ~ returns $HOME and ~+ returns $PWD — they are not special other than that they fetch shell variables. i.e. they do not store the values or execute a command to look them up. They are already defined. Have you tried ~- ? I can’t think of a use for it, but again, it returns a shell variable $OLDPWD

8 Answers 8

It’s a Bash feature called «tilde expansion». It’s a function of the shell, not the OS. You’ll get different behavior with csh, for example.

To answer your question about where the information comes from: your home directory comes from the variable $HOME (no matter what you store there), while other user’s homes are retrieved real-time using getpwent() . This function is usually controlled by NSS; so by default values are pulled out of /etc/passwd , though it can be configured to retrieve the information using any source desired, such as NIS, LDAP or an SQL database.

Tilde expansion is more than home directory lookup. Here’s a summary:

~ $HOME ~fred (freds home dir) ~+ $PWD (your current working directory) ~- $OLDPWD (your previous directory) ~1 `dirs +1` ~2 `dirs +2` ~-1 `dirs -1` 

dirs and ~1 , ~-1 , etc., are used in conjunction with pushd and popd .

Edited to add:

As Sean Bright pointed out in a comment, the baseline tilde behavior regarding home directories is codified as standard behavior for POSIX-compliant shells. Additionally, the wordexp() C API function is specified to implement this behavior. Though, obviously, use with caution.

~+ is roughly the same as . However, to use something like ./file it has to go to the file system and figure out where . is located — it takes a few cycles. Using ~+ saves it the work by simply returning the contents of the shell variable $PWD which is already defined as you traverse the file system.

Читайте также:  Преимущество windows server перед linux

The ~ and ~username forms are specified by POSIX, so it’s not specifically a bash thing. It may have been added to POSIX since this answer was written though.

@SeanBright Fair enough; my point was that it was a shell thing, and different shells do different things. And other non-shell things (like GUIs or other programs) may do nothing at all. POSIX, after all, is just a standard saying «please implement these features in your stuff.» But you’re right, it’s worth pointing out the standards involved.

Those are the home directories of the users. Try cd ~(your username) , for example.

Best answer in my case. Also, in my particular case, it was the root directory/folder, not the home folder.

Are they the home directories of users in /etc/passwd ? Services like postgres, sendmail, apache, etc., create system users that have home directories just like normal users.

Those are users. Check your /etc/passwd .

cd ~username takes you to that user’s home directory.

FTW. Upvote. TNX for clearing that up. I wonder how many cycles and perhaps even a subshell are involved in that one. Just imagine if your system has 3K users, like at a small ISP. Yikes.

On my machine, because of the way I have things set up, doing:

cd ~ # /work1/jleffler cd ~jleffler # /u/jleffler 

The first pays attention to the value of environment variable $HOME ; I deliberately set my $HOME to a local file system instead of an NFS-mounted file system. The second reads from the password file (approximately; NIS complicates things a bit) and finds that the password file says my home directory is /u/jleffler and changes to that directory.

The annoying stuff is that most software behaves as above (and the POSIX specification for the shell requires this behaviour). I use some software (and I don’t have much choice about using it) that treats the information from the password file as the current value of $HOME, which is wrong.

Applying this to the question — as others have pointed out, ‘ cd ~x ‘ goes to the home directory of user ‘x’, and more generally, whenever tilde expansion is done, ~x means the home directory of user ‘x’ (and it is an error if user ‘x’ does not exist).

Читайте также:  Установка nvidia драйверов для линукс

It might be worth mentioning that:

cd ~- # Change to previous directory ($OLDPWD) cd ~+ # Change to current directory ($PWD) 

I can’t immediately find a use for ‘ ~+ ‘, unless you do some weird stuff with moving symlinks in the path leading to the current directory.

Источник

Что такое Тильда в Linux

Тильда (~) — это метасимвол в Linux, который имеет особое значение в пределах оболочки терминала. Это «ярлык» Linux, который используется для представления домашнего каталога пользователя. Тильда (~) показывает домашнюю папку пользователя в текущем каталоге. Пользователь может вводить команды типа cd/ в командной строке. Эта команда изменяет каталог на корневую папку.

Если вы когда-нибудь сталкивались с тильдой, но не знаете, как ее использовать, это руководство для вас. В этом руководстве мы дадим вам краткую информацию о тильде в Linux с соответствующими примерами.

Что такое Тильда в Linux?

В этом разделе мы будем использовать несколько примеров, чтобы вы могли понять все о тильде в Linux.

Пример 1:
Давайте начнем с базового примера, где мы хотим использовать «Документы» в качестве текущего рабочего каталога в терминале. Сначала выполните следующую команду, указав полное расположение каталога:

cd /home/user/Загрузки

С другой стороны, мы также можем выполнить следующую команду, используя только тильду (~) вместе с косой чертой (/), чтобы найти каталог «Документы»:

компакт-диск ~/Документы

Запуск обеих предыдущих команд в терминале дает одинаковый результат. Однако тильда заменила местоположение каталога, то есть /home/user, чтобы обеспечить тот же результат.

Пример 2:

Давайте используем команду echo с тильдой, чтобы напечатать путь к вашему домашнему каталогу. Давайте запустим следующую команду, чтобы получить результаты:

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

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

Наконец, мы можем использовать тильду только для получения информации о пользователе и каталоге.

Следовательно, это доказывает, что тильда в Linux является продвинутой заменой каталога /home/user.

Вывод

Тильда (~) в Linux используется в качестве замены каталога /home/user при смене текущего рабочего каталога в терминале. В этом руководстве мы включили все возможные детали, связанные с символом тильды в Linux. Мы также объяснили, что такое тильда (~) и как ее использовать в терминале Linux. Тильда — это простая альтернатива, которая может сэкономить ваше время при работе в Linux. Надеюсь, это руководство помогло вам узнать больше о тильде в Linux.

Источник

#9 Kali Linux для начинающих. Урок 5 — Основные команды. Перемещение по папкам. Часть 2.

Давайте рассмотрим первую команду, которую мы изучим. Обратите внимание на заголовок окна, потому что символ тильда «~» означает, что я нахожусь в директории /home, и так как я root пользователь, то моя домашняя директория называется /root:

Читайте также:  Нет wlan kali linux

Это легко можно проверить с помощью команды pwd, набрав ее в терминале, и она выводит текущую директорию:

Допустим, мне нужно перейти в директорию /tmp. Я могу сделать это с помощью команды cd и указав путь, по которому мне нужно перейти через пробел. В данном случае это будет / tmp /:

Обратите внимание, что в консоли, в частности в заголовке окна появилось /tmp:

Также мы можем удостовериться относительно того, в какой директории мы находимся, и это делается с помощью знакомой нам команды pwd:

Если Вам по какой-либо необходимости нужно перейти на уровень выше, в корневую директорию, ведь мы сейчас находимся в директории /tmp. Исходя из иерархии директорий в Kali Linux, /tmp будет находиться на уровень ниже, нежели /root directory. Для перехода на уровень выше, нужно указать знакомую из прошлых уроков команду: cd .

Имейте ввиду, что мы сейчас находимся в директории /root, а не в /root home. Это можно заметить с помощью символов после имени хоста и двоеточия. Сразу после этих символов будет идти знак «/», а не «~», как в случае с /root home:

Выполняем команду pwd и ее результатом является прямой слеш, а не /root, как в случае с директорией /root home:

Давайте вернемся в директорию /root home. Это делается с помощью команды cd пробел ~:

Данная комбинация означает возврат в директорию /home.

Опять обращаем внимание на заголовок окна, как он поменялся на символ тильды:

Чтобы окончательно удостовериться в том, что мы находимся в указанной ранее директории, давайте выполним команду pwd.

Результат не заставит нас долго ждать:

Продолжим работу с перемещением по директориям. Перейдем снова в директорию /tmp. Это команда cd пробел / tmp /:

И еще один способ, как можно перейти в директорию /root home. Для этого просто нужно указать команду cd, находясь в /tmp, и мы перейдем в указанную выше директорию:

Опять проверим, где мы находимся. Вводим pwd и получаем результат:

Возможно, Вам интересно, для чего я показываю два разных способа для преодоления одной и той же цели. Об этом чуть позже поговорим. Для себя просто понимайте, что есть несколько подходов к работе с директориями, в частности /root home.

Если Вы по какой-либо причине хотите вернуть назад место расположения в директории, то для этого существует команда cd пробел — «минус». Давайте проверим ее в действии. Вводим в терминале: cd — и получаем результат:

Источник

Оцените статью
Adblock
detector