Que fait le petit squiggly ~ sous Linux?

25

J'ai deux exemples de son utilisation et je me demande ce que chacun fait:

  1. service=~

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

Que fait le petit squiggly ~?

Ensuite, après cela, que ferait cd $service-il?

O_O
la source
3
cela mérite donc une balise [squiggly]
cregox
3
Tilde, est spécifique au shell et non spécifique à Linux.
David Allan Finch
@Cawas: Demandez et vous recevrez.
Dave Sherohman
@Dave merci! Mais il semble que Chris détestait ça. Eh bien, la vie continue ...
cregox
Est-ce vraiment la première fois que cela se pose? Je m'attendais à ce que ce soit fermé en double.
Erik B

Réponses:

45

La chose ondulée est appelée un "tilde".

Il se développe dans votre répertoire personnel.

Essayer

echo ~
echo $HOME

Les deux instructions mettent votre répertoire personnel seul sur une ligne.

Voir Bash Tilde Expansion pour plus de détails.

Mikel
la source
8
La comparaison ci-dessus, bien que valide, est peut-être trompeuse: le tilde ne fonctionne que pendant l'interprétation du shell dans les scripts et sur la ligne de commande. Cependant, la variable d'environnement, $ HOME, fonctionne partout où une variable d'environnement fonctionne - ce qui représente beaucoup plus d'endroits.
Mei
36

Le "squiggly" est appelé un tilde. Il est utilisé pour faire référence à votre répertoire personnel qui, sous Linux, l'est normalement /home/username . Il est également stocké dans la $HOMEvariable d'environnement. L'extension ~de l'emplacement du répertoire personnel est le travail du shell (comme zsh ou bash) ou du gestionnaire de fichiers (comme Nautilus) et non le système de fichiers ou le système d'exploitation lui-même.

Vous pouvez également l'utiliser pour faire référence au répertoire personnel d'un autre utilisateur. Par exemple, si le nom d'utilisateur de l'autre utilisateur est bob, vous pouvez vous référer à son répertoire personnel avec ~bob, qui sera étendu à /home/bob/.

Le premier exemple que vous avez donné définit la variable servicepour ~qu'elle corresponde à votre répertoire personnel. Cela équivaut à service=/home/usernameou service=$HOME.

Le deuxième exemple copie le fichier ~/Desktop/Service$version.tgz(ou /home/username/Desktop/Service$version.tgz) dans /home/username. Cette commande équivaut à:

mv ~/Desktop/Service$version.tgz ~

ou

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

ou

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

Le troisième changera le répertoire de travail actuel ( $PWD) en /home/username/. Cela équivaut à:

cd /home/username/

ou

cd $HOME
Wuffers
la source
3
Une chose supplémentaire à garder à l'esprit: l'expansion de Tilde est le travail du shell ou du gestionnaire de fichiers, ce n'est pas une fonction du système de fichiers Linux lui-même. Ainsi, souvent, il ne fonctionnera pas dans les fichiers de configuration et l'ajout de guillemets autour de "~" arrêtera son expansion dans le shell.
Grumbel
3
Il convient également de noter que les répertoires personnels ne se trouvent pas nécessairement dans / home, il ne faut donc pas supposer que ~ se développe vers / home / [mon nom d'utilisateur] ou que ~ bob se développe vers / home / bob
darkliquid
Merci pour la suggestion @Grumbel. Et merci à @PriceChild d'avoir ajouté la suggestion de @ darkliquid!
Wuffers
10

Dans les deux # 1 et # 2: ~ est votre répertoire personnel, donc si vous êtes qwerty, ce sera probablement le répertoire / home / qwerty. Essayez donc ls ~de voir cela.

Pour # 1: il me semble que le service variable est défini comme votre répertoire personnel.

Cela signifie qu'après que # 2 a déplacé le fichier tgz du sous-répertoire Desktop vers votre répertoire personnel, # 3 passe ensuite au répertoire personnel.

nomaderWhat
la source
5

Il semble que les commandes effectuent les opérations suivantes.

  1. Attribuez une variable appelée service à l'emplacement de votre dossier de base, par exemple:

    /home/user
    
  2. Il déplace le fichier de votre bureau vers le niveau supérieur de votre répertoire personnel, par exemple:

    /home/user/Desktop/Service$version.tgz $service
    
  3. Le script modifie ensuite le répertoire au niveau supérieur du répertoire de base.

Donc, tout ce que le script fait, c'est simplement nettoyer votre bureau en déplaçant le fichier dans votre /home/userdossier à la place.

James
la source
1

J'ajouterai ici que ~ user se développe également dans le répertoire personnel de [utilisateur], donc ce n'est pas seulement un raccourci pour votre propre répertoire personnel.

Par exemple:

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