Anderson M. Gomes'den gelen cevabı genişleterek , Bash, dizin yığındaki konumun nerede olduğunu ~N
(veya ~+N
) yazarak dizininizdeki herhangi bir dizine başvurmanızı sağlar N
. Örneğin:
# go some places
$ cd /path/to/source/directory
$ pushd /path/to/destination/directory
$ pushd $HOME
$ pushd /tmp
# show the current dir stack
$ dirs -v
0 /tmp
1 ~
2 /path/to/destination/directory
3 /path/to/source/directory
Artık bir dosyayı geçmiş iki dizin arasına kopyalayabilirsiniz, ikisi de geçerli olanı değil:
cp -v ~3/file1.txt ~2
Orijinal posterin problemini çözmek için şunları yaparsınız:
$ cd /path/to/source/directory
$ pushd /path/to/destination/directory
# show the current dir stack
$ dirs -v
0 /path/to/destination/directory
1 /path/to/source/directory
# copy
cp -v ~1/file[123].txt .
Çok sayıda dosya ile, isimlerini bir manifest dosyasında listeleyebilir ve daha sonra kopyayı kaynak dizinden yapabilirsiniz:
$ cd /path/to/destination/directory
$ pushd /path/to/source/directory
# copy
cp -v $(cat files_to_copy.list) ~1
Ayrıca bakınız: Bash man sayfasının bu bölümü
Benzer şekilde, Tcsh'da dir dizinizdeki ikinci dizine işaret etmek için =2
gösterimi (yerine ~2
) kullanabilirsiniz.
Ayrıca bakınız: Tcsh man sayfasının bu bölümü
cd
Komutu yazmanız gerekir , böylece yalnızcacd -
önceki dizine geri gidebilir,cd
komutu geri çağırmak için yukarı ok vecp
yerine olmak üzere satırı düzenleyebilirsinizcd
. (ctrl-a (satır başlangıcı), alt-d (kill kelimesi)cp -a
, ctrl-e (satır sonu)).