У меня есть два случая его использования, и мне интересно, что каждый из них делает:
service=~
mv ~/Desktop/Service$version.tgz $service
Что делает маленький волнистый ~
?
Затем, после этого, что будет делать cd $service
?
У меня есть два случая его использования, и мне интересно, что каждый из них делает:
service=~
mv ~/Desktop/Service$version.tgz $service
Что делает маленький волнистый ~
?
Затем, после этого, что будет делать cd $service
?
Волнистая вещь называется "тильда".
Он расширяется до вашего домашнего каталога.
Пытаться
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