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(行末))。