Expandindo a resposta de Anderson M. Gomes , o Bash permite que você se refira a qualquer diretório anterior na pilha de diretórios, digitando ~N(ou ~+N) onde Nestá a posição na pilha de diretórios. Por exemplo:
# 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
Agora você pode copiar um arquivo entre dois diretórios anteriores, nenhum deles o atual, com:
cp -v ~3/file1.txt ~2
Para resolver o problema do pôster original, você faria:
$ 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 .
Com um grande conjunto de arquivos, você pode listar seus nomes em um arquivo de manifesto e, em seguida, fazer a cópia do diretório de origem:
$ cd /path/to/destination/directory
$ pushd /path/to/source/directory
# copy
cp -v $(cat files_to_copy.list) ~1
Consulte também: esta seção da página de manual do Bash
Da mesma forma, no Tcsh, você pode usar a =2notação (em vez de ~2) para se referir ao segundo diretório na sua pilha de diretórios.
Consulte também: esta seção da página do manual Tcsh
cdcomando, paracd -voltar ao diretório anterior, seta para cima para recuperar ocdcomando e editar a linha a ser emcpvez decd. (ctrl-a (início da linha), alt-d (palavracp -afinal ) , ctrl-e (fim de linha)).