All !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Right !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 👊👊👊👊👊👊👊👊👊👊👊👊👊👊👊👊👊👊👊
어 동생이다.
이번엔 level 2에서 3 넘어가는 문제다.
The password for the next level is stored in a file called --spaces in this filename-- located in the home directory
어 --spaces in this filename-- 여기 파일에 있단다.
파일 이름에 공백이 있으면 또 안 읽히나 뭐 이딴문제를
우선 갈겨본다.
아 안되네 뭐여
검색 ㄱㄱ
....
공백 앞에 \(역슬래쉬)를 붙이면 된다는데?
--spaces\ in\ this\ filename--
이렇게 하면 되나
ㄱㄱ
안되잖아 장난 똥때리나
잠.깐.만
앞에 -- 때문인가?
푸하하하
지렸죠
해결이염 ㅋ
더 찾아봤는데 '',작은 따옴표로 감싸거나 "",큰 따옴표로 감싸면 된단다.
뒤질래? 안되잖아
와 찾다가 엄청난걸 알아버렸습니다.
===========(지림포인트 1)=============
cat 명령어가 단순히 파일 내용을 출력해주는 명령어인줄 알았는데 그게 아니였습니다.
!! 그니까 cat이 인자가 주어졌을때랑, 인자가 안주어졌을때로 볼 수 있는데
(여기서 인자란? cat file <-----"file"처럼 cat 명령어 뒤에오는 text를 말합니다.)
그니까 인자가 주어졌을때 (cat뒤에 텍스트를 썼을때)
이때 cat은 이(this) 인자를 "파일명"으로 인식하고 그 파일을 열어서(open()) 그 파일의 내용을 읽고 출력해준다고 합니다.
근데 인자가 안주어졌을때(중요!)*****
이 cat이라는 녀석은 인자(파일명)이 안 주어지면
"어 파일명이 안 주어졌네? 그럼 stdin(표준입력)에서 읽어와야지" 하고
stdin(표준입력)에서 읽어와서 출력합니다.
근데 이 stdin(표준입력)은 기본적으로 키보드에 연결되어 있는거죠
그래서 내가 키보드로 입력한 텍스트가 그대로 출력됩니다.
근데 여기서 < 이 연산자를 사용하면
자 cat은 인자가 없는거로 생각합니다.
그래서 인자가 없으니까 stdin(표준입력)에서 읽어올려고 하는데
!!이때 일반적인 경우에는 stdin(표준입력)이 키보드에 연결되어 있어
키보드로 입력한 값을 읽어오지만
"<" 이녀석이 그걸 바꿔버린거에요!!! 키보드에서 파일로 (키보드 -> 파일)!!
그래서 그 파일을 내용을 읽어오는거죠
cat file 이거는 cat이 직접 순수 file을 열어서 읽어오는거고
cat < file 이거는 cat은 그냥 stdin만 읽어오는데 쉘이 파일을 stdin에 연결을 해준거에요!!
개소름ㄷㄷㄷ 지렸죠?
그리고 cat 뒤에 -로 시작하는 파일명을 인자로 주면
cat 이녀석이 -를 보고 아 이 녀석이 나한테 옵션을 주려나 보다 라고 딱 준비를 하는데
--spaces 이런 옵션은 없잖아요 그니까 오류가 생겼던 거에요.
그리고 < (리다이렉션이라고 한데요.) 이거 말고
"--" 를 붙여줘서 하는 방법도 있대요
"--' 이게 이 뒤로는 옵션으로 읽지 말라는 것과 같아서
cat -- --"spaces in this filename"-- 이렇게 해도 읽어와요
" ",' ' 이 따옴표들이
그니까 쉘은 공백으로 인자를 구분한대요
spaces in this filename 이 문장에서는(spaces 이거 하나) (in 이거 하나) (this 이거 하나) (filename 이거 하나) 이렇게 보는거죠
근데 " ", ' '로 감싸버리면 이 공백을 못 읽고 하나로 봐버립니다.
그럼 저위에 문장에서 --"spaces in this filename"--는
spaces in this filename 이거는 " "로 감싸버려서 하나로 되어버렸고
그리고 "spaces in this filename"와 --사이에는 공백이 없으니까 하나로 보고
이래서 --"spaces in this filename"-- 이 문장을 하나의 인자가 되어버리는거죠
이것도 지리네 ===========(지림포인트 2)=============
하 오늘도 해결!!
'리눅스' 카테고리의 다른 글
dashed filename 읽기 (Bandit Level 1 → Level 2) (0) | 2025.09.20 |
---|