작업 UNIX 디렉토리의 물결표 문자(~)

작업 UNIX 디렉토리의 물결표 문자(~)

나는 UNIX 환경에서 작업하고 있는데 내 작업 디렉토리(UNIX 홈 디렉토리에서 멀리 떨어져 있음)에 ~.

한번은 rm -rf ~작업 디렉터리에서 이 작업을 수행한 후 홈 디렉터리가 완전히 삭제되어 IT 부서에 도움을 요청한 적이 있습니다.

나는 더 이상 이것을하고 싶지 않습니다. 그동안 다음 사항을 알고 싶습니다.

  1. ~내 작업 디렉토리에 생성되는 이유는 무엇입니까 ? 저장하다가 손가락이 미끄러졌나요? ( :w!그런데 무슨 일이 일어났을까요 :w~?!)

  2. p4가 체크인하기 전에 알지 못하는 추가 파일이나 폴더를 찾는 스크립트가 있으므로 이로 인해 ~문제가 발생할 수 있습니다. ~홈 디렉터리를 삭제하지 않고 작업 디렉터리에서 어떻게 제거합니까 ?

del대신에 사용하는 backup 이라는 백업 명령이 있습니다 rm -rf. 이는 단지 임시 위치에 저장하는 것뿐입니다. 사용하고 제거할 수도 있지만 ~, 왜 이런 일이 발생하는지, 어떻게 제거하는지 알고 싶은 것이 더 궁금합니다.

답변1

다음 중 하나를 인용해 보세요.

rm -i '~'
rm -i "~"
rm -i \~

또는 기본 이름뿐만 아니라 경로로 참조하십시오.

rm -i ./~
rm -i /path/to/~

SOME$PATH이것은 재미있어 보이는 한 문자 이름이지만 개념적으로는 다음과 같은 파일을 만든 경우와 다르지 않습니다.

touch 'SOME$PATH'

다음을 수행하여 제거해 보세요.

rm -i SOME$PATH

(경고: 변수 SOME$PATH 예시 목적으로 여기에는 인용하지 않았습니다. 일반적으로 따옴표로 묶입니다. 'SOME$PATH' )

두 경우 모두 쉘은 사용자가 제공한 이름을 확장하므로 이러한 일이 발생하지 않도록 해야 합니다.

또한: 파일을 삭제하는 데 사용하지 마세요 rm -rf! 그 목적은 디렉토리가 삭제될 수 있음을 rm -r알려주는 것입니다 . rm파일을 삭제하려고 할 때 실수로 전체 디렉토리를 삭제하고 싶지 않다면 습관적으로 전달하지 마십시오 -r!

답변2

물결표는 문맥상 단독으로 사용될 때 ls ~~가 홈 디렉토리에 대한 바로가기이므로 홈 디렉토리를 나열합니다. 이렇게 하면 ls ~brownBrown의 홈 디렉토리 내용이 나열됩니다.

별도로 지정하지 않는 한 VIM은 변경된 파일의 백업 복사본을 생성합니다: myFile myFile~.

이 동작은 백업을 생성하므로 좋지만 필요하지 않은 경우 .vimrc 파일에 추가하세요. 백업 설정 없음(방금 다음을 vi ~/.vimrc사용하여 액세스했습니다.)

물론, 다른 사람들이 말했듯이 ~라는 파일이 있으면 문자를 \~로 이스케이프 처리하세요.

me 217 % vi this      (saved as :w~)
me 218 % ls
this  ~
me 219 % cat \~
kfdkdfk
me 220 % \rm \~
me 221 % ls
this

답변3

오타가 있을 수 있습니다. 구성이 내 구성과 유사 하면 TERM=xterm키보드의 거의 모든 기능 키가 다음과 같은 이스케이프 시퀀스를 보냅니다.

infocmp -1 | grep -n \~ | tail -n3
138:    kich1=\E[2~,
141:    knp=\E[6~,
142:    kpp=\E[5~,

출력의 절반 이상이 다음을 infocmp -1포함합니다.~틸데내 컴퓨터에서 탈출하세요. 대부분의 사람들이 무엇을 하는지 모르겠습니다. 나는 zsh대부분의 경우 적어도 문자열의 탈출된 부분이 실제로 먹힌다는 것을 알고 있습니다 .~틸데.

예를 들어 echo다음을 입력합니다 .<space>그때 F6그리고<return>인쇄...

/home/mikeserv

전송된 실제 이스케이프 시퀀스는 다음과 같습니다.

kf6=\E[17~

>흥미롭게 도 문자를 포함하는 다른 이스케이프 시퀀스가 ​​있습니다 .

infocmp -1 | grep \>
is2=\E[!p\E[?3;4l\E[4l\E>,
rmkx=\E[?1l\E>,
rs2=\E[!p\E[?3;4l\E[4l\E>,

이는 일반적으로 사용되는 이스케이프 문자입니다. 즉, 문자열을 재설정하고 초기화합니다. 대화형 셸이 입력을 기다리는 동안 키보드를 놓거나 버튼을 누르면 ~무작위로 잘린 파일이 파일 시스템 전체에 나타날 수 있다는 것을 상상하기 어렵지 않습니다. 적어도 나에게는 가끔 그런 일이 일어난다.

관련 정보