시스템 해킹 02주차

준필·2022년 1월 16일
0

시스템 해킹

목록 보기
2/4
post-thumbnail

LINUX

Linux에서의 경로

절대 경로 : 최상위 디렉토리(/)를 기준으로 하는 경로
상대 경로 : 현재 디렉토리(.)를 기준으로 하는 경로

. : 현재 위치한 디렉토리를 의미한다.
.. : 현재 위치한 디렉토리 상위 디렉토리를 의미한다.
~ : 홈 디렉토리를 의미한다.

경로를 표현할 때는 디렉토리 사이를 '/'를 통해 구분한다.


Linux Commands

이 글에 사용되는 모든 예시는 macOS를 기준으로 한다.

man : 메뉴얼 페이지를 보여준다.

리눅스에서 사용하는 모든 명령어는 shell에서 man을 통해 그에 대한 설명을 볼 수 있다. 사용법은 'man command'이다.

mkdir의 설명을 보기 위해 위와 같이 입력하면

이와 같이 mkdir에 대한 man page를 볼 수 있다. 종료는 q를 입력하면 된다.

Basic Commands

cd(Change Directory) : 해당 디렉토리로 이동한다.
ls(list) : 현재 위치한 디렉토리의 파일 및 디렉토리 목록들을 출력한다. -al 옵션을 이용하면 모든 파일의 정보를 볼 수 있다.

shell에서 명령어의 옵션은 '-','--'를 명령어의 뒤에 붙여 사용한다. '-'는 주로 한 글자로 이루어진 옵션을, '--'는 주로 두 글자 이상으로 이루어진 옵션을 붙일 때 사용된다.

mkdir(make directories) : operands의 이름에 해당하는 디렉토리를 순차적으로 생성한다.
rmdir(remove directories) : operands의 순서대로 디렉토리를 삭제한다. 디렉토리가 비어 있는 경우에만 작동한다.

rm(remove) : 파일 또는 디렉토리를 삭제한다.
mv(move) : 파일을 다른 디렉토리로 이동하거나 이름을 변경한다.
cp(copy) : 파일을 복사한다.
touch : 파일의 수정 시각과 접근 시각을 변경한다. 0바이트 파일을 생성하기 위해 자주 사용되는 명령어이다.

디렉토리를 다룰 때는 '-r'옵션을 많이 사용한다.

cat(concatenate) : 파일을 순차적으로 읽어 standard ouput으로 출력한다.
head : 파일의 첫 번째 줄을 보여준다.
tail : 파일의 마지막 부분을 보여준다.

echo : 특정된 operands를 standard output으로 출력한다.

chmod(change file modes) : 파일의 permission을 변경하는 명령어이다.


Pipe & Redirection

Pipe

  • IPC(Inter Process Comunication) 중 하나로 한 프로그램의 stdout(standard output)을 다른 프로그램의 stdin(standard input)으로 전달하는 방법이다.
  • write end 쪽에서 작성된 데이터는 read end에서 읽기 전까지 kernel에 의해 buffered 된다.

파이프는 '|'을 이용해 아래와 같이 사용한다.

cmd1 | cmd2

cmd1의 stdin은 키보드 입력이고 cmd1의 stdout이 cmd2의 stdin이 된다.
결과적으로 화면에 보이는 것은 cmd2의 stdout이 된다.

sort, grep, cat 등의 명령어와 함께 자주 사용된다.

Redirection

  • IPC(Inter Process Comunication) 중 하나로 standard stream(ex stdin, stdout, stderr)를 user가 정의한 file로 변경해준다.

stdout의 Redirection은 '>'을 이용해 아래와 같이 사용한다.

command > filename 	; stdout을 redirect한다.

stderr의 Redirection은 '2>', '>&'을 이용해 아래와 같이 사용한다.

command 2> filename ; stderr만 redirect한다.
command >& filename	; stedrr, stdout을 모두 redirect한다.

stderr의 redirection이 '2>'인 이유는 stderr의 file descriptor가 file table에서 2번이기 때문이다.

profile
공부할 게 너무 많잖아?

0개의 댓글