web-dev-qa-db-fra.com

Raccourci de ligne de commande pour le répertoire actuel similaire à ~ pour le répertoire de base?

Lorsque j'utilise la commande cp ou move dans une fenêtre de terminal, je suis actuellement en bash dans un certain dossier comme celui-ci.

NES@server:~/Desktop/dir1$

Et maintenant, je veux copier un fichier d'ici ~/anotherdir/dir2 dans le dossier choisi en cours dans bash (dir1), j'utiliserais la commande

cp ~/anotherdir/dir2/file ~/Desktop/dir1

existe-t-il une chaîne de raccourci pour faire référence au répertoire actuellement choisi? Ainsi, dans cet exemple, je n'ai pas à fournir le chemin d'accès complet au répertoire cible, mais la commande sait qu'elle doit utiliser le répertoire actuellement choisi dans bash? c'est-à-dire que ~ représente le répertoire de base?

23
NES

Votre répertoire actuel est .. Donc, cp /foo/fam/foo . copie le fichier dans votre répertoire actuel.

La construction analogue pour "un répertoire vers le haut" ou le répertoire parent de votre répertoire de travail actuel est deux points, à savoir ... (Merci @djeikyb.)

Ainsi, à partir de /usr/house/firstfloor/basement, cd .. vous emmène d’un niveau jusqu’à /usr/house/firstfloor.

Dans le même exemple (à partir de /usr/house/firstfloor/basement, la commande cd ../.. vous mènerait à /usr/house.

Vous pouvez également utiliser $PWD avec echo pour obtenir votre répertoire actuel:

echo $PWD

Incidemment, $OLDPWD vous donnera votre répertoire précédent. (Vous pouvez également accéder à bash en tapant cd -.)

41
belacqua

Vous pouvez utiliser $ (pwd), cela résoudra le résultat de la commande pwd.

Exemple:

echo $(pwd)
6
João Pinto

./ représente le répertoire en cours. Vous pouvez donc utiliser la commande cp ~/anotherdir/dir2/file ./ Ceci va copier le fichier "fichier" dans le répertoire de travail de currect.

3
binW

Pour utiliser le répertoire actuel comme répertoire de destination, utilisez un seul point '.'

Longue réponse

En utilisant votre exemple, vous tapez: cp ~/anotherdir/dir2/file .

Pour voir les noms de répertoire point ., .. et ../../ en action, copiez et collez les commandes suivantes dans votre terminal:

mkdir a && mkdir a/b && mkdir a/b/c && mkdir a/b/c2
cd a/b/c
cp /etc/default/grub .
cp /etc/default/grub ..
cp /etc/default/grub ../c2
cd ../../
tree

Le résultat de la commande tree apparaît comme ceci:

.
└── b
    ├── c
    │   └── grub
    ├── c2
    │   └── grub
    └── grub

3 directories, 3 files

Le . au sommet de la sortie de l'arborescence représente le nouveau répertoire en cours aname__, qui est le grand-parent de a/b/c auquel nous avons accédé à l'aide de la commande cd ../../. Sous anous voyons les sous-répertoires a/b, a/b/c et a/b/c2

Analyse ligne par ligne

Nous avons d’abord créé 4 répertoires sur une ligne en utilisant && pour joindre plusieurs lignes.

Nous avons ensuite changé pour le répertoire a/b/c, qui est le répertoire en cours pour les commandes de copie suivantes:

  • Dans la première commande de copie (cpname__), nous avons défini la destination dans notre répertoire actuel (c) avec ..
  • Dans la deuxième commande de copie, nous définissons la destination dans le répertoire parent (b) avec ...
  • Dans la troisième commande de copie, nous définissons la destination dans le répertoire frère (c2) avec ../c2

Ensuite, comme indiqué précédemment, nous avons changé le répertoire actuel en aet exécuté la commande treepour afficher tous les répertoires et fichiers sous aname__.

Nettoyer

Une fois que nous avons terminé, nous supprimons les trois répertoires et fichiers avec:

cd ~/
rm -r tree
2
WinEunuuchs2Unix

Vous pouvez utiliser le point (.), le ~+développement du tilde , la commande pwd ou la variable $ PWD pour représenter le répertoire de travail actuel (CWD). Toutes ces commandes peuvent faire cela:

  1. mv file_old_dir .
  2. mv file_old_dir ~+
  3. mv file_old_dir $(pwd)
  4. mv file_old_dir $PWD
1
Helio

Le variable d'environnement pour le répertoire en cours est $ PWD

echo $PWD
1
Takkat

Oui (comme d'autres l'ont noté), le répertoire actuel est ".", C'est pourquoi vous pouvez démarrer des programmes/scripts à partir du répertoire actuel avec ./script (tout script ne fonctionnera que si. N'est pas la partie de PATH, ce qui n'est pas recommandé. bien que). Utiliser $ PWD ou $ (pwd) est un peu excessif, même si d’autres ont mentionné qu’utiliser un seul point est plus court, bien sûr :) ".." est le répertoire parent, bien sûr "/" est la racine. Aussi bien de mentionner que "cd -" vous mettra dans le répertoire précédent où vous étiez avant de changer cwd (répertoire de travail actuel). Cela peut aussi être utile dans le travail quotidien. Une seule commande "cd" sans autre dans la ligne de commande vous placera dans "~" (votre maison).

0
LGB