25

У меня есть два случая его использования, и мне интересно, что каждый из них делает:

  1. service=~

  2. mv ~/Desktop/Service$version.tgz $service

Что делает маленький волнистый ~ ?

Затем, после этого, что будет делать cd $service ?

5 ответов5

44

Волнистая вещь называется "тильда".

Он расширяется до вашего домашнего каталога.

Пытаться

echo ~
echo $HOME

Оба утверждения помещают ваш домашний каталог в строку.

Смотрите bash Tilde Expansion для подробностей.

36

"Волнистый" называется тильдой. Он используется для ссылки на ваш домашний каталог, который в 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
10

В # 1 и # 2: ~ это ваш домашний каталог, поэтому если вы qwerty, скорее всего это будет каталог /home /qwerty. Так что попробуйте ls ~ чтобы увидеть это.

Для # 1: мне кажется, что служба переменных определяется как ваш домашний каталог.

Это означает, что после того, как # 2 переместил файл tgz из подкаталога Desktop в ваш домашний каталог, # 3 затем изменился на домашний каталог.

5

Похоже, команды делают следующее.

  1. Присвойте переменную с именем service вашей домашней папке, например:

    /home/user
    
  2. Он перемещает файл с вашего рабочего стола на верхний уровень вашего домашнего каталога, например:

    /home/user/Desktop/Service$version.tgz $service
    
  3. Затем скрипт меняет каталог на верхний уровень домашнего каталога.

Итак, все, что делает скрипт, это просто очищает ваш рабочий стол, вместо этого перемещая файл в вашу папку /home/user .

1

Здесь я добавлю, что ~ user также раскрывает домашний каталог [user], так что это не просто ярлык для вашего собственного домашнего каталога.

Например:

[guy@abox anotherdir]$ cd ~ 
[guy@abox ~]$ pwd
/home/guy
[guy@abox ~]$ cd ~john
[guy@abox john]$ pwd
/home/john

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .