[리눅스] 리눅스 기본 명령어

10907 단어 리눅스리눅스

파일의 종류

  1. 일반 파일(ordinary file)
    • 데이터를 가지고 있으면서 디스크에 저장된다.
  2. 디렉터리(directory)
    • 디렉터리 자체도 하나의 파일로 여긴다.
    • 계층 구조를 이룬다.
  3. 특수 파일(special file)
    • 물리적인 장치에 대한 내부적인 표현
    • 키보드(stdin), 모니터(stdout), 프린터 등도 파일처럼 사용한다.

리눅스 디렉터리 구조

홈 디렉터리

  • 각 사용자마다 별도의 홈 디렉터리가 있다.
  • 사용자가 로그인하면 홈 디렉터리에서 작업을 시작한다.

현재 작업 디렉터리 (current working directory)

  • 각 프로세스마다 별도의 현재 작업 디렉터리가 있다.
  • 현재 작업 중인 디렉터리
  • 로그인을 하면 홈 디렉터리에서부터 작업이 시작된다.

디렉터리 관련 명령어

명령어의미
ls파일 및 디렉터리 리스트
ls -s파일 및 디렉터리 리스트 (size)
ls -a모든 파일 및 디렉터리 리스트 (all)
ls -l파일 및 디렉터리 리스트 자세히 (long)
mkdir디렉터리 만들기
cd홈 디렉터리로 이동
cd ~홈 디렉터리로 이동
cd ..부모 디렉터리로 이동
pwd현재 작업 디렉터리 출력

.txt 파일 관련 명령어

명령어의미
cat (enter+내용입력+^D) 내용 입력+출력
cat 파일 파일 내용 출력
cat > 파일 입력한 내용을 파일에 저장
more 파일한 번에 한 페이지씩 출력
head 파일파일의 앞부분 출력
tail 파일파일의 뒷부분 출력
wc 파일줄/단어/문자 수 출력
cp 파일1 파일2파일1을 파일 2로 복사
mv 파일1 파일2파일1을 파일2로 이름 변경
mv 파일 디렉터리파일을 디렉터리 내로 이동
rm 파일파일 삭제
rm -r 디렉터리디렉터리 내의 모든 파일 및 하위 디렉터리들을 단번에 지운다.
rmdir 디렉터리+디렉터리 삭제(주의: 디렉터리 내에 아무 것도 없어야 한다)
grep 키워드 파일파일에서 키워드 찾기

실습


파일 속성

$ ls -sl cs1.txt
> 4 -rw-r--r-- 1 ubuntu faculty 2088 41613:37 cs1.txt
파일 속성의미
블록 수파일의 블록 수(=1K 블록을 기준으로 물리적 블록(기본:4K)을 얼마나 사용하고 있나)
파일 타입일반 파일(-), 디렉터리(d), 링크(l), 파이프(p), 소켓(s), 디바이스(b 혹은 c) 등의 파일 종류를 나타낸다.
사용권한소유자, 그룹, 기타 사용자의 파일에 대한 읽기/쓰기/실행 권한
소유자 및 그룹파일의 소유자 및 소유자가 속한 그룹
크기파일을 구성하는 블록 수
수정 시간파일을 최후로 생성 혹은 수정한 시간

사용 권한

권한파일디렉터리
r파일에 대한 읽기 권한디렉터리 내에 있는 파일명을 읽을 수 있는 권한
w파일에 대한 쓰기 권한디렉터리 내에 있는 파일명을 생성하거나 삭제할 수 있는 권한
x파일에 대한 실행 권한디렉터리 내로 탐색을 위해 이동할 수 있는 권한
  • 파일의 사용권한은 소유자(owner), 그룹(group), 기타(others)로 구분하여 관리한다.

<디렉터리에 대한 r,w,x의 의미는?>
r: 파일 이름 리스트에 접근할 수 있다, 디렉터리를 삭제할 수 있다.
w: 파일 이름 리스트를 변경할 수 있다.
x: cd로 디렉터리에 접근할 수 있다.

chmod(change mode)

파일 혹은 디렉터리의 사용권한을 변경하는 명령어

$ chmod [-R] 사용권한 파일

-R 옵션은 디렉터리 내의 모든 파일, 하위 디렉터리에 대해서도 적용

사용권한: rw- rw- r--
2진수: 110 110 100
8진수: 6 6 4

$ chmod 664 cs1.txt

chown(change owner)

파일이나 디렉터리의 소유자를 변경할 때 사용한다.

$ chown 사용자 파일
$ chown [-R] 사용자 디렉터리

chgrp(change group)

파일의 그룹을 변경할 수 있다.

$ chgrp 그룹 파일
$ chgrp [-R] 그룹 디렉터리

입출력 재지정 및 파이프

출력 재지정(output redirection)

명령어의 표준출력 내용을 모니터에 출력하는 대신에 파일에 저장한다.

$ 명령어 > 파일 

출력 추가

명령어의 표준 출력을 모니터 대신에 기존 파일에 추가

$ 명령어 >> 파일 

입력 재지정(input redirection)

명령어의 표준 입력을 키보드 대신에 파일에서 받는다.

$ 명령어 < 파일 

파이프

명령어1의 표준출력을 명령어2의 표준입력으로 바로 받는다.

$ 명령어1 | 명령어2

후면 처리

처리 종류설명입력
전면 처리(foreground processing)명령어를 입력하면 명령어가 전면에서 실행되며 명령어 실행이 끝날 때까지 쉘이 기다려준다.표준입력 가능
후면 처리(background processing)명령어들을 후면에서 처리하고 전면에서는 다른 작업을 할 수 있으면 동시에 여러 작업을 수행할 수 있다.$ 명령어 &
$ (sleep 50; echo done1) &
[1] 8320 
> '[n] m' 형태로 n은 job번호, m은 프로세스 번호이다.

$ (sleep 50; echo done2) &
[2] 8325

$ jobs // 백그라운드를 돌고 있는 모든 프로세스를 보여줌
[1] - Running (sleep 50; echo done1) & 
[2] + Running (sleep 50; echo done2) &
> 백그라운드 프로세스는 스택처럼 쌓이게 된다.
> +는 스택의 가장 위에 있는 프로세스를 말한다.
> -는 그 아래에 았는 프로세스를 말한다. 

$ fg
> 스택의 꼭대기 프로세스, 즉 job번호가 1인 프로세스를 foreground로 실행시킨다. 

$ fg %job번호 // background에 있는 프로세스를 foreground로 실행시키는 명령어
> job번호에 해당되는 프로세스를 foreground로 실행시킨다.

후면처리 입출력

표준입력은 x
표준출력은 o
출력은 되도록 파일로 하는 것이 좋다.

$ ls -al >find.txt &

$ cat a.txt | mail chang &

$ wc < inputfile &

명령어 실행 중단

명령어 중단 (후면 + stop)

$ ^z

재실행

$ fg

프로세스(process)

프로세스: 실행 중인 프로그램

  • 각 프로세스는 유일한 프로세스 번호 PID를 갖는다.
  • ps 명령어를 사용하여 나의 프로세스들을 볼 수 있다.
  • ps는 현재 쉘에서 실행 중인 프로그램을 보여준다.
$ ps 
> PID   TTY    TIME   CMD
> 8695 pts/0 00:00:00 bash
> 8720 pts/0 00:00:00 ps

TTY: 터미널 번호

프로세스의 자세한 정보를 보여주는 명령어

$ ps aux
> USE PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND

$ ps -elf


프로세스를 강제적으로 종료시키는 명령어

$ kill 프로세스번호
$ kill %job번호

어떤 프로세스는 kill 명령을 받아도 안 죽지 않는다.

다음은 기본 kill 시그널로 안 죽는 프로세스를 죽이는 명령이다.

$ kill -9 프로세스번호
> '-9' 라는 시그널을 프로세스에게 보낸다.
> 프로세스를 무조건 종료하게 하는 시그널이다. 

좋은 웹페이지 즐겨찾기