Atalho de linha de comando para o diretório atual semelhante a ~ para o diretório inicial?

22

Quando eu uso o comando cp ou move em uma janela de terminal, Atualmente estou com o bash em uma determinada pasta como essa.

NES@server:~/Desktop/dir1$

E agora eu quero copiar um arquivo daqui ~/anotherdir/dir2 para o atual pasta escolhida no bash (dir1) eu usaria o comando

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

existe uma string de atalho para se referir ao diretório atual escolhido? De modo que neste exemplo eu não tenho que fornecer o caminho completo para o dir de destino, mas o comando sabe que deve usar o diretório atual escolhido no bash? ou seja, como ~ representa o diretório inicial?

    
por NES 11.02.2011 / 14:49

7 respostas

40

Seu diretório atual é . . Portanto, cp /foo/fam/foo . copia o arquivo para seu diretório atual.

A construção análoga para "um diretório acima" ou o diretório pai de seu diretório de trabalho atual é dois pontos, ou seja, .. . (Obrigado @djeikyb.)

Então, de /usr/house/firstfloor/basement , cd .. leva você um nível até /usr/house/firstfloor .

No mesmo exemplo (a partir de /usr/house/firstfloor/basement , o comando cd ../.. levaria você para /usr/house .

Você também pode usar $PWD com echo para obter seu diretório atual:

echo $PWD

A propósito, $OLDPWD fornecerá seu diretório anterior. (Que em bash você também pode acessar digitando cd - .)

    
por belacqua 11.02.2011 / 14:55
6

Você pode usar $ (pwd), ele irá resolver para a saída do comando pwd.

Exemplo:

echo $(pwd)
    
por João Pinto 11.02.2011 / 14:54
3

./ representa o diretório atual. Então você pode usar o comando cp ~/anotherdir/dir2/file ./ Isso irá copiar o arquivo "file" no diretório de trabalho do currect.

    
por binW 11.02.2011 / 14:54
2

Para usar o diretório atual como o diretório de destino, use um único ponto ' . '

Resposta longa

Usando seu exemplo, você digitaria: cp ~/anotherdir/dir2/file .

Para ver os nomes dos diretórios dos pontos . , .. e ../../ em ação, copie e cole os seguintes comandos em seu 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

A saída do comando tree aparece assim:

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

3 directories, 3 files

O . na parte superior da saída da árvore representa o novo diretório atual a , que é o avós de a/b/c para o qual navegamos usando o comando cd ../../ . Abaixo de a , vemos os subdiretórios a/b , a/b/c e a/b/c2

Análise linha por linha

Primeiro, criamos 4 diretórios em uma linha usando && para unir várias linhas.

Depois, mudamos para o diretório a/b/c , que é o diretório atual dos seguintes comandos de cópia:

  • No primeiro comando de cópia ( cp ), definimos o destino para o nosso diretório atual ( c ) com . .
  • No segundo comando de cópia, definimos o destino para o pai diretório ( b ) com .. .
  • No terceiro comando de cópia, definimos o destino para o irmão diretório ( c2 ) com ../c2

Em seguida, conforme declarado anteriormente, alteramos o diretório atual para a e executamos o comando tree para exibir todos os diretórios e arquivos em a .

Limpeza

Depois de terminar, removemos os três diretórios e arquivos com:

cd ~/
rm -r tree
    
por WinEunuuchs2Unix 23.10.2016 / 18:47
1

A variável de ambiente para o diretório atual é $ PWD

echo $PWD
    
por Takkat 11.02.2011 / 14:59
1

Você pode usar o ponto ( . ), o ~+ expansão do til , Comando pwd ou a variável $ PWD para representar o diretório de trabalho atual (CWD). Todos esses comandos podem fazer isso:

  1. mv file_old_dir .
  2. mv file_old_dir ~+
  3. mv file_old_dir $(pwd)
  4. mv file_old_dir $PWD
por Helio 14.04.2015 / 11:17
0

Sim (como outros notaram), o diretório atual é ".", é por isso que você pode iniciar programas / script a partir do diretório atual com ./script (apenas script não funcionará a menos que não seja a parte do PATH, que não é recomendado embora). Usar $ PWD ou $ (pwd) é um pouco exagerado, mesmo que outros tenham mencionado que usar um único caractere de ponto é menor, com certeza :) ".." é o diretório pai, com certeza "/" é a raiz. Também é bom mencionar que "cd -" irá colocá-lo no diretório anterior onde você estava antes de alterar o cwd (diretório de trabalho atual). Também pode ser útil no trabalho diário. Um único comando "cd" sem qualquer outro na linha de comando colocará você em "~" (sua casa).

    
por LGB 11.02.2011 / 15:22