Anderson M. Gomesからの回答を展開すると、Bashでは、ディレクトリスタック上の位置を入力~N(または~+N)することにより、ディレクトリスタック内の以前のディレクトリを参照できますN。例えば:
# 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
これで、次のように、2つの過去のディレクトリ間でファイルをコピーできます。どちらも現在のディレクトリではありません。
cp -v ~3/file1.txt ~2
元のポスターの問題を解決するには、次のようにします。
$ 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 .
ファイルの大規模なセットを使用すると、マニフェストファイルに名前をリストし、ソースディレクトリからコピーを実行できます。
$ cd /path/to/destination/directory
$ pushd /path/to/source/directory
# copy
cp -v $(cat files_to_copy.list) ~1
参照:Bash manページのこのセクション
同様に、Tcshでは、=2(ではなく~2)表記を使用して、dirスタックの2番目のdirを参照できます。
参照:Tcsh manページのこのセクション
cdあなただけのことができるように、コマンドをcd -リコールする上矢印、前のディレクトリに戻るcdように行をコマンド、および編集cpの代わりにcd。(ctrl-a(行頭)、alt-d(kill-word)cp -a、、 ctrl-e(行末))。