Что делает маленький волнистый ~ в Linux?
У меня есть два случая его использования, и мне интересно, что каждый из них делает:
service=~
mv ~/Desktop/Service$version.tgz $service
Что делает маленький волнистый ~
делать?
Затем, после этого, что бы cd $service
делать?
5 ответов
Волнистая вещь называется "тильда".
Он расширяется до вашего домашнего каталога.
Пытаться
echo ~
echo $HOME
Оба утверждения помещают ваш домашний каталог в строку.
Смотрите bash Tilde Expansion для подробностей.
"Волнистый" называется тильдой. Используется для ссылки на ваш домашний каталог, который в Linux обычно /home/username
, Он также хранится в $HOME
переменная окружения. Расширяя ~
к местоположению домашнего каталога относится работа оболочки (например, zsh или bash) или файлового менеджера (например, Nautilus), а не сама файловая система или ОС.
Вы также можете использовать это для ссылки на домашний каталог другого пользователя. Например, если имя пользователя другого пользователя bob
Вы можете сослаться на их домашний каталог с ~bob
, который будет расширен до /home/bob/
,
Первый пример, который вы дали, устанавливает переменную service
в ~
, так что это соответствует вашему домашнему каталогу. Это эквивалентно service=/home/username
или же service=$HOME
,
Второй пример копирует файл ~/Desktop/Service$version.tgz
(или же /home/username/Desktop/Service$version.tgz
) чтобы /home/username
, Эта команда эквивалентна:
mv ~/Desktop/Service$version.tgz ~
или же
mv ~/Desktop/Service$version.tgz $HOME
или же
mv ~/Desktop/Service$version.tgz /home/username/
Третий изменит текущий рабочий каталог ($PWD
) чтобы /home/username/
, Это эквивалентно:
cd /home/username/
или же
cd $HOME
В #1 и #2: ~ это ваш домашний каталог, поэтому если вы qwerty, скорее всего это будет каталог /home/qwerty. Так что постарайтесь ls ~
чтобы увидеть это.
Для #1: мне кажется, что служба переменных определяется как ваш домашний каталог.
Это означает, что после того, как # 2 переместил файл tgz из подкаталога Desktop в ваш домашний каталог, #3 затем изменился на домашний каталог.
Похоже, команды делают следующее.
Присвойте переменную с именем service вашей домашней папке, например:
/home/user
Он перемещает файл с вашего рабочего стола на верхний уровень вашего домашнего каталога, например:
/home/user/Desktop/Service$version.tgz $service
Затем скрипт меняет каталог на верхний уровень домашнего каталога.
Итак, все, что делает скрипт, это просто очищает ваш рабочий стол, перемещая файл на ваш /home/user
папка вместо.
Здесь я добавлю, что ~user также раскрывает домашний каталог [user], так что это не просто ярлык для вашего собственного домашнего каталога.
Например:
[guy@abox anotherdir]$ cd ~
[guy@abox ~]$ pwd
/home/guy
[guy@abox ~]$ cd ~john
[guy@abox john]$ pwd
/home/john