在Linux中,小小的弯腰是做什么的?


25

我有两个实例正在使用,我想知道每个实例是做什么的:

  1. service=~

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

那个小小弯腰的人~做什么?

然后,那之后该怎么cd $service办?


3
这值得标签[
cquiggly

3
Tilde是特定于Shell的,并非特定于Linux。
David Allan Finch

@卡瓦斯:问,你们会得到的。
Dave Sherohman 2011年

@戴夫谢谢!但似乎克里斯讨厌它。哦,生活还在继续……
cregox

这真的是第一次被问到吗?我希望将其作为副本关闭。
Erik B

Answers:


45

弯曲的东西称为“波浪号”。

它会扩展到您的主目录。

尝试

echo ~
echo $HOME

这两个语句都将您的主目录本身放在一行上。

有关详细信息,请参见bash Tilde Expansion


8
上面的比较虽然有效,但可能会引起误解:波浪号仅在脚本和命令行中的Shell解释期间有效。但是,环境变量$ HOME在任何环境变量可用的地方都可以使用-位置很多。

36

“弯曲”称为波浪号。它用于指代您的主目录,该主目录在Linux上通常是 /home/username。它还存储在$HOME环境变量中。将扩展~到主目录的位置是Shell(例如zsh或bash)或文件管理器(例如Nautilus)的工作,而不是文件系统或OS本身。

您也可以使用它来引用另一个用户的主目录。例如,如果其他用户的用户名是bob,则可以使用引用其主目录~bob,该目录将扩展为/home/bob/

您提供的第一个示例将变量设置service~,因此它对应于您的主目录。这等效于service=/home/usernameservice=$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

3
要记住的另一件事:扩​​展名是Shell或文件管理器的工作,它不是Linux文件系统本身的功能。因此,它通常在配置文件中不起作用,并在“〜”周围添加引号,这将阻止它在shell中扩展。
Grumbel

3
还应注意,主目录不一定位于/ home中,因此不应假定〜扩展为/ home / [我的用户名]或
〜bob

感谢@Grumbel的建议。感谢@PriceChild添加@darkliquid的建议!
Wuffers 2011年

10

在#1和#2中:〜是您的主目录,因此,如果您是qwerty,则可能是目录/ home / qwerty。所以尝试ls ~看看。

对于#1:在我看来,变量服务已定义为您的主目录。

这意味着在#2将tgz文件从“桌面”子目录移动到您的主目录之后,#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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.