ls ~
RHEL 7을 사용하고 있는데 출력 <F6>q
이 표시됩니다! 무슨 뜻이에요?
[user@server2 ~]$ ls /home/user/
<F6>q
[user@server2 ~]$ ll
total 4
-rw-r--r--. 1 root root 340 Sep 18 17:16 <F6>q
[user@server2 ~]$ cat <F6>q
-bash: F6: No such file or directory
[user@server2 ~]$ touch test
[user@server2 ~]$ ls
<F6>q test
[user@server2 ~]$ vim <F6>q
-bash: F6: No such file or directory
[user@server2 ~]$
답변1
즉, 파일 이름은 <F6>q
.
이것들은 모두아니요댓글 답변 및 기타 실제 답변에서 알 수 있듯이 표시할 수 없는 문자입니다. 눈앞에 전시되어 있는 것을 보실 수 있습니다. ☺
어떤 경우에도 표시할 수 없는 문자에 대해서는 양식이 발행되지 않습니다 <F6>
.ls
[User@server2 ~]$ cat <F6>q -bash: F6: 해당 파일이나 디렉터리가 없습니다. [User@Server2 ~]$ vim <F6>q -bash: F6: 해당 파일이나 디렉터리가 없습니다. [사용자@서버2 ~]$
쉘 구문을 알아야 합니다.
실제 명령 매개변수 없이 파일에서 표준 입력이 리디렉션되고 표준 출력이 file 로 리디렉션되는 cat
및 명령을 실행 중입니다 . 이전 리디렉션은 이라는 파일이 없기 때문에 실패합니다 . 대신 파일 이름이 이므로 후자 리디렉션은 전혀 시도되지 않습니다.vim
F6
q
F6
<F6>q
다음은 쉘이 구문 분석하는 방법을 보여주는 공백이 있는 동일한 명령입니다.
[user@server2 ~]$ cat < F6 > q -bash: F6: 해당 파일이나 디렉터리가 없습니다. [User@Server2 ~]$ vim < F6 > q -bash: F6: 해당 파일이나 디렉터리가 없습니다. [사용자@서버2 ~]$
셸 메타 문자가 포함된 파일 이름을 있는 그대로 명령에 전달하려면 셸이 메타 문자에 응답하지 않고 다음과 같아야 합니다.선두:
vim '<F6>q'또는탈출하다:
vim \<F6\>q
명령 입력 모드에서 기능 키를 누를 때 VIM에서 발생하는 상황을 고려하면 ex
VIM을 사용하여 실수로 그러한 이름의 파일을 생성하기 쉽습니다.
답변2
RHEL 7은 일반 ls
(또는 별칭 ll
)을 사용하고 출력이 터미널로 전송될 때 ls
제어 문자 및 기타 인쇄할 수 없는 문자를 표시 가능한 형식으로 변환합니다 . 이것이 당신이 보고 있는 것일 가능성이 가장 높습니다. 출력이 터미널이 아닌 다른 곳으로 이루어지는 경우에는 이 기본 대체가 발생하지 않습니다.
ls -q
물음표를 사용하여 인쇄할 수 없는 문자를 바꿀 수 있습니다 . 물음표는 단일 문자에 맞는 쉘 와일드카드이므로 실행하여 응답을 ls -q /home/user/
보면 ?q
미스터리 파일에 첫 번째 문자가 ASCII 값 0xF6인 인쇄할 수 없는 문자가 있을 수 있음을 의미합니다.
이를 사용하여 C 스타일 이스케이프 코드로 표시되는 인쇄할 수 없는 문자를 얻을 수도 있습니다 ls -b
. 이 코드는 셸에서 직접 사용할 수 없지만 인쇄할 수 없는 각 문자를 정확하게 식별합니다.
파일 이름을 좀 더 관리하기 쉬운 이름으로 바꿀 수도 있습니다.
cd /home/user
mv ?q possible-typo
vi
로 명령을 잘못 입력하여 :wq
생성 될 수 있습니다 :w<extra character>q
. 명령의 후자 형식은 <extra character>q
"기존 이름으로 저장한 다음 종료"가 아니라 "현재 파일을 이름으로 저장"으로 해석됩니다.