홈 디렉토리의 ~와 비슷한 현재 디렉토리의 명령 줄 단축키?


24

터미널 창에서 cp 또는 move 명령을 사용하면 현재 이와 같은 특정 폴더에 bash가 있습니다.

NES@server:~/Desktop/dir1$

이제 파일을 여기 ~/anotherdir/dir2에서 bash (dir1)의 현재 선택한 폴더로 복사하고 싶습니다 . 명령을 사용합니다.

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

현재 선택된 디렉토리를 나타내는 바로 가기 문자열이 있습니까? 따라서이 예제에서 대상 디렉토리의 전체 경로를 제공 할 필요는 없지만 명령은 bash에서 현재 선택한 디렉토리를 사용해야한다는 것을 알고 있습니까? 즉 ~는 홈 디렉토리를 의미합니까?

답변:


42

현재 디렉토리는 .입니다. 따라서 cp /foo/fam/foo .파일을 현재 디렉토리로 복사하십시오.

"하나의 디렉토리 위로"또는 현재 작업 디렉토리의 상위 디렉토리와 유사한 구조는 두 개의 점 ..입니다. (@djeikyb 감사합니다.)

따라서에서 /usr/house/firstfloor/basementcd ..는 한 수준까지 올라갑니다 /usr/house/firstfloor.

같은 예제 (에서 시작하여 /usr/house/firstfloor/basement)로 명령 cd ../..이 이동 /usr/house합니다.

$PWDwith echo를 사용 하여 현재 디렉토리를 가져올 수도 있습니다 .

echo $PWD

또한 $OLDPWD이전 디렉토리를 제공합니다. ( bash에 입력하여 도달 할 수도 있습니다 cd -.)


3
..한 디렉토리를 낮추는 것을 배우는 것이 좋습니다. 여러 번 사용할 수 있습니다cd ../..
djeikyb

1
@djeikyb-당신은 위의 의미, 확실합니다. 따라서 cd ..는 현재 디렉토리의 상위 디렉토리로 이동합니다. 좋은 지적.
belacqua

1
그리고 나는 말할 것 popdpushd의이 에세이로 전환하는 것이 있지만.
belacqua

2
하나 개의 작은 차이가 기억 : .그리고 ..어떤 프로그램이 그들을 받아 들일 것입니다 때문에, 파일 시스템 수준이다. 반면에, 같은 바로 가기 ~~-쉘의 일부입니다.
grawity

2
cd -; +1 그것이 존재한다는 것을 몰랐다.
jg-faustus

6

$ (pwd)를 사용할 수 있으며 pwd 명령의 출력으로 해석됩니다.

예:

echo $(pwd)

1
아니면 그냥 echo $PWD.
ulidtko

3

./ 는 현재 디렉토리를 나타냅니다. 따라서 cp ~/anotherdir/dir2/file ./"file"파일을 올바른 작업 디렉토리에 복사합니다.


3
슬래시 ( ".")가 필요하지 않습니다. 충분하다. 슬래시 (경로 구성 요소 구분 기호로)는 그 뒤에 다른 경로 구성 요소를 배치하려는 경우에만 필요하지만 상대 경로는 현재 디렉토리로 시작하기 때문에 ./ 그냥 떠나는 것이 더 쉽습니다.)
LGB

나는 알고 있지만 필수는 아닙니다. 혼자 나에게 혼동을 느낀다. ". envsetup.sh"와 같은 현재 쉘의 파일에서 명령을 실행하는 데에도 사용됩니다. 따라서 끝에 /를 추가하면 더 명확 해집니다.
binW

1
접선으로 ln -s /some/long/path/to/get/to/cake 두 번째 인수없이 수행 하면 cake심볼릭 링크가 현재에 직접 연결됩니다. 게으른 사람에게 아주 좋습니다. 를 저장합니다 ..
belacqua

2

현재 디렉토리를 대상 디렉토리로 사용하려면 단일 점 ' .'을 사용하십시오.

긴 답변

예제를 사용하여 다음을 입력하십시오. cp ~/anotherdir/dir2/file .

점 확인하려면 ., ..그리고 ../../행동의 디렉토리 이름을 복사하여 터미널에 다음 명령을 붙여 넣습니다 :

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

트리 명령의 출력은 다음과 같습니다.

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

3 directories, 3 files

.트리 출력의 상단에 새로운 현재 디렉토리 대표 a 의 조부모입니다 a/b/c우리가 사용하는 탐색하는 cd ../../명령을. 아래 a우리는 하위 디렉토리를 참조 a/b, a/b/c그리고a/b/c2

라인 별 분석

먼저 &&여러 줄을 결합 하여 하나의 줄에 4 개의 디렉토리를 만들었습니다 .

그런 a/b/c다음 다음 복사 명령의 현재 디렉토리 인 directory로 변경했습니다 .

  • 첫 번째 복사 명령 ( cp)에서 대상을 현재 디렉토리 ( c )로 설정 .합니다.
  • 두 번째 복사 명령에서을 사용하여 대상을 상위 디렉토리 ( b )로 설정 ..합니다.
  • 세 번째 복사 명령에서 대상을 형제 디렉토리 ( c2 )로 설정합니다.../c2

그런 다음 앞에서 언급했듯이 현재 디렉토리를로 변경 a하고 tree명령을 실행하여에 모든 디렉토리와 파일을 표시했습니다 a.

대청소

완료되면 다음을 사용하여 세 개의 디렉토리와 파일을 제거합니다.

cd ~/
rm -r tree


1

점 ( .), ~+ 물결표 확장 , pwd명령 또는 $ PWD 변수를 사용하여 현재 작업 디렉토리 (CWD)를 나타낼 수 있습니다. 이 모든 명령이 그렇게 할 수 있습니다.

  1. mv file_old_dir .
  2. mv file_old_dir ~+
  3. mv file_old_dir $(pwd)
  4. mv file_old_dir $PWD

0

예 (다른 사람들이 지적했듯이) 현재 디렉토리는 "."이므로 ./script로 현재 디렉토리에서 프로그램 / 스크립트를 시작할 수 있습니다 (.가 PATH의 일부가 아닌 경우 스크립트가 작동하지 않으므로 권장하지 않습니다) 그래도). 다른 사람들이 언급 했더라도 $ PWD 또는 $ (pwd)를 사용하는 것은 다소 과잉입니다. 단 하나의 점 문자를 사용하는 것이 더 짧습니다. :) ".."는 상위 디렉토리이고 "/"는 루트입니다. 또한 "cd-"를 사용하면 cwd (현재 작업 디렉토리)를 변경하기 전의 이전 디렉토리로 이동하게됩니다. 일상 업무에도 유용합니다. 명령 줄에 다른 "cd"명령이 없으면 "~"(집)으로 이동합니다.


1
$PWD절대 경로에 대한 심볼릭 링크를 만들 때 과도하지 않습니다.
ulidtko

필자는 "cp"예제를 생각했다. 심볼릭 링크를 사용하더라도 상황에 따라 다릅니다. "ln -s / this / file." 현재 디렉토리를 가리키는 파일 / this / file에서 이름이 "file"인 심볼릭 링크를 생성합니다. ). 그러나 반대의 구성 : "ln -s. / this / dir"은 다소 흥미 롭습니다 (현재 디렉토리를 참조하는 / this / dir로 심볼릭 링크를 작성하십시오). 그리고 그것은 질문도 아니었다.
LGB
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.