쉘 명령에서 디렉토리 이름 뒤의 슬래시 (/)


14

여기에 약간의 질문이 있습니다.

나는 두 개의 파일이있는 경우, 말을 filea하고 fileb, mv filea fileb

  • 지우다 fileb
  • 이름 바꾸기 fileafileb

나는 두 개의 디렉토리가 있다면 그런 말을 dira하고 dirb, mv dira dirb

  • 이동 diradirb(이 될 것입니다 dirb/dira)

두 경우 모두 통지 나 메시지가 없다는 것을 알았으므로 이것은 나에게 거의 일치하지 않습니다. 나는 mv dira dirb단지 dirb내용으로 덮어 써야 한다고 생각 합니다 dira(또는 두 디렉토리를라는 디렉토리 아래 병합 dirb).

슬래시가있는 디렉토리 이름 (예 :) dira/이 디렉토리처럼 취급되고 슬래시가없는 이름 (예 :) dira이 파일처럼 취급됩니다 (물론 어느 정도). 어쨌든 슬래시를 사용하여 쉘 (zsh 및 bash)을 디렉토리의 표기법을 존중하도록하고 싶습니다. 이를 적용 할 수있는 터미널 옵션이 있습니까?

명확히하기 위해 여기에 내가 원하는 행동이 있습니다.

  • mv dira dirb이 결과 dirb의 내용으로 덮어 쓰기dira
  • mv dira dirb/이 결과 dira로 이동되는 dirb(의 dirb/dira)

누구도 나와 같은 생각을 했습니까? 아니면 내가 이상해?


2
나는 당신이 원하는 행동이 다소 위험하다고 생각합니다.
starblue

@starblue : 그렇습니다. 나는 그것이 위험하다는 데 동의하지만, 일관성이없는 것보다 위험한 것으로 살기를 원합니다
phunehehe

답변:


11

예, 이것은 GNU 도구 내에서도 약간 일치하지 않습니다.

제안서의 한 가지 문제점은 비어 있지 않은 디렉토리를 제거 할 수 없다는 것입니다. 그 외에도 -T(GNU 토지에서) 어쨌든 원하는 것을 근사합니다 (첫 번째 경우).

$ ls dira/ dirb/
dira/:
a

dirb/:
b
$ mv -iT dira/ dirb/
mv: overwrite `dirb/'? y
mv: cannot move `dira/' to `dirb/': Directory not empty
$ rm dirb/b 
$ mv -iT dira/ dirb/
mv: overwrite `dirb/'? y
$ ls dira/ dirb/
ls: cannot access dira/: No such file or directory
dirb/:
a

별칭을 추가 할 수도 있습니다 (예 :) alias ren=mv -T.
Mikel

0

dira에서 dirb로 모든 것을 옮기고 싶다면 실행할 수 있습니다 mv dira/* dirb.

내 HP-UX의 mv 맨 페이지에 따라.

The mv command moves:

+ One or more directory subtrees (directory1, [directory2, ...]) to a new or existing directory (dest-directory).


3
당신의 명령은 모든 도트 파일을 놓칠 것입니다.
qbi

누가 어쨌든 점 파일이 필요합니다)
로버트 Massaioli에게

1
그리고 그것이 문제라면 shopt -s dotglob, bash 에서 그 문제 를 해결할 것입니다.
David Z
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.