小波浪〜在Linux中做什么?

O_O*_*O_O 25 linux command-line home-folder

我有两个使用它的实例,我想知道每个实例的作用:

  1. service=~

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

小精灵是~做什么的?

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

Mik*_*kel 45

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

它扩展到您的主目录。

尝试

echo ~
echo $HOME
Run Code Online (Sandbox Code Playgroud)

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

有关详细信息,请参阅bash 波浪号扩展

  • 上面的比较虽然有效,但可能具有误导性:波浪号仅在脚本和命令行中的 shell 解释期间有效。然而,环境变量 $HOME 可以在环境变量工作的任何地方工作——这是更多的地方。 (8认同)

Wuf*_*ers 36

“波浪线”被称为波浪线。它用于引用您的主目录,在 Linux 上通常是 /home/username. 它也存储在$HOME环境变量中。扩展~到主目录的位置是 shell(如 zsh 或 bash)或文件管理器(如 Nautilus)的工作,而不是文件系统或操作系统本身。

您还可以使用它来引用另一个用户的主目录。例如,如果其他用户的用户名是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 ~
Run Code Online (Sandbox Code Playgroud)

或者

mv ~/Desktop/Service$version.tgz $HOME
Run Code Online (Sandbox Code Playgroud)

或者

mv ~/Desktop/Service$version.tgz /home/username/
Run Code Online (Sandbox Code Playgroud)

第三个会将当前工作目录 ( $PWD)更改为/home/username/. 这相当于:

cd /home/username/
Run Code Online (Sandbox Code Playgroud)

或者

cd $HOME
Run Code Online (Sandbox Code Playgroud)

  • 要记住的另一件事:波浪号扩展是 shell 或文件管理器的工作,它不是 Linux 文件系统本身的功能。因此它通常不会在配置文件中工作,并且在“~”周围添加引号它将停止它在 shell 中的扩展。 (3认同)
  • 还应该注意的是,主目录不一定位于 /home 中,因此不应假设 ~ 扩展为 /home/[my user name] 或 ~bob 扩展为 /home/bob (3认同)

小智 10

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

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

这意味着在 #2 将 tgz 文件从 Desktop 子目录移动到您的主目录后,#3 然后更改到主目录。


小智 5

看起来命令正在执行以下操作。

  1. 将名为 service 的变量分配给您的主文件夹位置,例如:

    /home/user
    
    Run Code Online (Sandbox Code Playgroud)
  2. 它将文件从桌面移动到主目录的顶层,例如:

    /home/user/Desktop/Service$version.tgz $service
    
    Run Code Online (Sandbox Code Playgroud)
  3. 然后脚本将目录更改为主目录的顶级。

因此,所有脚本所做的只是通过将文件移动到您的/home/user文件夹来清理您的桌面。