cat 명령어와 바이너리 파일: ASCII text vs data 파일의 차이
CS/운영체제
리눅스에서 파일을 읽기 위해 cat명령어를 사용하다 보면,어떤 파일은 정상적으로 읽히지만 어떤 파일은 터미널 화면이 깨지면서 이상한 문자들이 출력되는 경우가 있다.이런 현상은 구체적으로 왜 발생하는 걸까? 파일 타입 확인하기: file 명령어먼저 file 명령어를 통해 파일의 타입을 확인해보자.file 파일명위 이미지에서의 결과는 data로 나온다. 이 파일은 일반 텍스트 파일이 아닌 바이너리 파일이다.여러 파일 한 번에 확인하기디렉토리 내 모든 파일의 타입을 한 번에 확인하려면 와일드카드를 사용하면 된다.file ./*이미지 속 결과를 보면, 대부분은 data로 표시되지만 -file07만 ASCII text로 표시된다.이 ASCII text파일은 data으로 정상적으로 읽을 수 있다. cat이 바이너리..
공백이 포함된 파일명 여는 방법
CS/운영체제
리눅스에서 파일명을 확인했는데 공백이 포함되어 있다면, 파일을 읽으려 할 때 예상과 다르게 동작하는 경우가 있다.이는 셸이 공백을 해석하는 방식 때문이다. 공백이 포함된 파일명이 인식되지 않는 이유리눅스 셸은 공백을 인자를 구분하는 기준으로 사용한다.예를 들어 다음 명령어를 실행하면cat --spaces in this filename--셸은 이를 하나의 파일명이 아니라 아래와 같이 여러 개의 인자로 분리한다.--spacesinthisfilename-- 공백이 포함된 파일명 여는 방법1. 백슬래시로 공백 이스케이프 하기cat --spaces\ in\ this\ filename--\는 바로 뒤 문자를 특수 의미가 아닌 일반 문자로 처리하도록 만든다.공백이 인자 구분자가 아니라 파일명의 일부가 된다.2. 따옴..
-로 시작하는 파일명 여는 방법
CS/운영체제
리눅스에서 파일을 열려고 하는데 다음과 같은 오류를 만날 때가 있다.정상적으로 파일을 읽을 것으로 예상했지만, 읽기는 커녕 아무런 반응도 일으키지 않고 있다. 왜 이런 일이 발생할까?리눅스 CLI에서는 관례적으로 - 또는 --으로 시작하는 값은 명령어의 옵션으로 처리된다.# 예시ls -lrm -rf따라서 -test.txt라는 파일이 있다고 할때,cat -test.txt는 -test.txt라는 파일이 아니라 존재하지 않는 옵션을 전달한 것으로 인식된다. 해결 방안1. -- 사용하기cat -- --- 이후에 오는 값은 옵션이 아닌 순수한 인자로 처리하라는 의미이다.2. 경로 명시하기cat ./-./이 붙는 순간 쉘은 이를 현재 디렉토리의 파일 경로로 인식한다.3. 절대경로 사용하기cat /home/user/..
SSH로 원격 서버에 접속하기
CS/운영체제
Bandit 워게임은 대부분 SSH 접속을 통해 원격 서버에 로그인한 뒤 문제를 해결하는 방식으로 진행된다.처음 접했을 때 접속이라는 표현이 좀 추상적으로 느껴졌는데, 핵심은 내 컴퓨터가 아닌 다른 컴퓨터를 조작하는 상태라는 것이다. SSH란?SSH(Secure Shell)는 네트워크를 통해 원격 서버에 안전하게 로그인하고 명령어를 실행할 수 있게 해주는 암호화 통신 프로토콜이다.즉, 내 터미널을 그대로 사용하지만 실제로는 서버의 CPU와 파일 시스템을 사용하게 된다. 접속의 의미SSH로 접속하면 다음 과정이 내부적으로 발생한다.호스트 주소가 IP로 변환된다 (DNS)해당 서버의 특정 포트(port)로 네트워크 연결을 시도한다SSH 프로토콜로 암호화된 통신이 시작된다사용자 인증(비밀번호 또는 키)을 수행..