O que faz o pequeno squiggly ~ no Linux?

25

Eu tenho duas instâncias sendo usadas e estou me perguntando o que cada uma delas faz:

  1. service=~

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

O que o pequeno ~ faz?

Então, depois disso, o que seria cd $service ?

    
por O_O 05.04.2011 / 23:48

5 respostas

44

A coisa rabiscada é chamada de "til".

Expande para o seu diretório pessoal.

Tente

echo ~
echo $HOME

As duas declarações colocam o seu diretório pessoal sozinho em uma linha ..

Veja Expansão do Til do bash para detalhes.

    
por 05.04.2011 / 23:50
36

O "squiggly" é chamado de til. Ele é usado para se referir ao seu diretório home que, no Linux, é normalmente /home/username . Ele também é armazenado na variável de ambiente $HOME . Expandir o ~ para o local do diretório inicial é o trabalho do shell (como zsh ou bash) ou do gerenciador de arquivos (como o Nautilus) e não o sistema de arquivos ou o próprio SO.

Você também pode usar isso para se referir ao diretório pessoal de outro usuário. Por exemplo, se o nome de usuário do outro usuário for bob , você poderá consultar seu diretório inicial com ~bob , que será expandido para /home/bob/ .

O primeiro exemplo que você deu define a variável service to ~ , então corresponde ao seu diretório home. Isso é equivalente a service=/home/username ou service=$HOME .

O segundo exemplo copia o arquivo ~/Desktop/Service$version.tgz (ou /home/username/Desktop/Service$version.tgz ) para /home/username . Este comando é equivalente a:

mv ~/Desktop/Service$version.tgz ~

ou

mv ~/Desktop/Service$version.tgz $HOME

ou

mv ~/Desktop/Service$version.tgz /home/username/

O terceiro alterará o diretório de trabalho atual ( $PWD ) para /home/username/ . Isso é equivalente a:

cd /home/username/

ou

cd $HOME
    
por 06.04.2011 / 02:47
10

Em ambos os itens # 1 e amp; # 2: ~ é o seu diretório home, então se você é qwerty, provavelmente será o diretório / home / qwerty. Então, tente ls ~ para ver isso.

Para o número 1: parece que o serviço variável está sendo definido como seu diretório pessoal.

Isso significa que depois que o número 2 mover o arquivo tgz do subdiretório Desktop para o diretório inicial, o número 3 será alterado para o diretório inicial.

    
por 05.04.2011 / 23:55
5

Parece que os comandos estão fazendo o seguinte.

  1. Atribuir uma variável chamada serviço ao local da sua pasta pessoal, por exemplo:

    /home/user
    
  2. Move o arquivo da sua área de trabalho para o nível superior do seu diretório pessoal, por exemplo:

    /home/user/Desktop/Service$version.tgz $service
    
  3. O script altera o diretório para o nível superior do diretório inicial.

Assim, tudo o que o script está fazendo é apenas limpar sua área de trabalho, movendo o arquivo para a pasta /home/user .

    
por 06.04.2011 / 05:28
1

Eu adicionarei aqui que o ~ user também se expande para o diretório pessoal do [user], por isso não é apenas um atalho para o seu diretório pessoal próprio .

Por exemplo:

[guy@abox anotherdir]$ cd ~ 
[guy@abox ~]$ pwd
/home/guy
[guy@abox ~]$ cd ~john
[guy@abox john]$ pwd
/home/john
    
por 06.04.2011 / 21:56