2. 리눅스 사용

김동웅·2021년 9월 8일
0

UNIX

목록 보기
2/14

핵심 개념

  • 유닉스의 디렉터리는 루트로부터 시작하여 계층구조를 이룬다.

  • 절대 경로명은 루트 디렉터리부터 시작하고 상대 경로명은 현재 디렉터리부터 시작한다.

  • 파일의 사용권한은 소유자, 그룹, 기타로 구분하여 관리한다.

  • 출력 재지정은 표준출력 내용을 파일에 저장하고 입력 재지정은 표준입력을 파일에서 받는다.

  • 실행중인 프로그램을 프로세스라고 한다.

1. 기본명령어

  • date -> 현재날짜 및 시간

  • uname -> 현재 사용중인 운영체제

  • who -> 현재 로그인한 사용자확인

  • ls -> 디렉터리의 내용을 리스트

  • clear -> 화면을 깨끗이 함

  • passwd -> 패스워드 변경

2. 파일 및 디렉토리

  • 일반 파일(ordinary file)
    : 데이터를 가지고 있으면서 디스크에 저장된다.

  • 디렉터리(directory) / 폴더(folder)
    : 디렉터리(폴더) 자체도 하나의 파일로 한 디렉토리는 다른 디렉토리들을 포함함으로써 계층구조를 이룬다.
    ex) /home/downloads

  • 특수 파일(special file)
    : 물리적인 장치에 내한 내부적인 표현
    ex) 키보드(stdin), 모니터(stdout), 프린터 등도 파일처럼 사용


  • 디렉터리의 계층구조

  • 홈 디렉터리/ 현재작업 디렉터리
  1. 홈 디렉터리(Home directory)
    : 각 사용자마다 별도의 홈 디렉터리가 있다.
    사용자가 로그인하면 홈 디렉터리에서 작업을 시작함.

  2. 현재 작업 디렉터리(current working directory)
    : 현재 작업중인 디렉터리


  • 디렉터리 관련 명령어
  1. pwd(print working directory) : 현재 작업 디렉터리를 프린트

  2. cd(change directory) [디렉터리] : 현재 작업 디렉터리를 이동

  3. mkdir(make directory) : 새 디렉터리를 만듦
    $ mkdir 디렉터리

  4. ls(list) : 디렉터리의 내용을 리스트한다.

  5. $ ls
    cs1.txt

  6. ls -s (size)
    총 6
    6 cs1.txt

  7. ls -a (all)
    . ..cs1.txt
    .은 현재디렉터리
    ..은 부모 디렉터리

  8. ls -l (long)
    -rw-r--r-- 1 kdo6301 kdo6301 0 Sep 7 22:46 test1.txt
    파일사용권한 링크수 유저 그룹 파일크기 최종수정날짜 파일이름

  9. ls -asl


  • 경로명
    : 파일이나 디렉터리에 대한 정확한 이름

    1. 절대경로명
      : 루트 디렉터리부터 시작한 경로이름
    2. 상대결로명
      : 현재작업디렉터리부터 시작한 경로이름
  • 파일내용리스트
    1. 파일내용출력과 관련된 명령어들
    cat, more, head, tail, wc등

    • $ 명령어 파일 -> 1개의 파일을 인수로
      $ 명령어 파일* -> 0혹은 그보다 많은 파일을 인수로
      $ more 파일+ -> 1개이상의 파일을 인수로

    • 파일 내용출력
      $ cat cs1.txt -> cs1.txt의 내용을 출력
      $ cat -> 키보드로부터 입력받아 출력
      ...^D -> Ctrl + D 입력의 끝

    • more 명령어
      : 하나 이상의 파일 이름을 받을 수 있으며, 각 파일의 내용을 페이지 단위 로 출력

    • head 명령어
      : 파일의 앞부분(10줄)을 출력

    • tail명령어
      : 파일의 뒷부분(10줄)을 출력

    • wc(word count)
      : 파일에 저장된 줄,단어, 문자 개수를 세서 출력

      ex) $wc cs1.txt

    • $ cp 파일1 파일2
      : 파일1의 복사본 파일2를 현재 디렉터리 내에 만듦
      ex) cp cs1.txt cs2.txt
      ls -l cst1.txt cs2.txt

    • $ cp 파일 디렉터리
      : 파일1의 복사본을 디렉터리 내에 만듦

    • mv(move) 파일1 파일2
      : 파일1의 이름을 파일2로 변경한다.

    • rm(remove) 명령어
      : 명령줄 인수로 받은 파일을 지운다.

    • rm -r 디렉토리이름
      : 디렉토리를 지운다.

    • rmdir 명령어
      : 명령어 인수로 받은 디렉터리(들)을 지운다.
      $ remdir 디렉터리+

      주의 : 디렉터리 내에 아무것도 없어야한다.


3. 파일속성(file attribute)

  • 파일의 이름, 타입, 크기, 소유자, 사용권한, 수정시간
    $ ls -sl cs1.txt
    -> 6 -rw-r--r-- 1 chang faculty 2088 4월 16일 13:37 cs1.txt

  • 사용권한
    : 읽기(r), 쓰기(w), 실행(x) 권한
    파일의 사용권한은 소유자/그룹/기타로 구분하여 관리한다.

    rw-
    r-- r--
    소유자 그룹 기타

  • chmod (change mode)
    파일 혹은 디렉터리의 사용권한을 변경하는 명령어
    $ chmod [-R] 사용권한 파일
    : -R 옵션은 디렉터리 내의 모든파일, 하위디렉터리에 대해서도 적용

    ex) chmod g+w cs1.txt

  • chown 명령어
    : 파일이나 디렉터리의 소유자를 변경할때 사용 (Only superuser)

    $ chown 사용자 파일
    $ chown [-R] 사용자 디렉터리(디렉터리 내의 모든 파일, 하위 디렉터리)

  • chgrp 명령어
    : 파일의 그룹을 변경할 수 있다. (Only 파일소유자, superuser)
    $ chgrp 그룹 파일
    $ chgrp [-R] 그룹 디렉터리


4. 입출력 재지정 및 파이프

4-1. 출력 재지정

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

$ 명령어 > 파일
$ who > names.txt
: 현재 디렉토리에 names.txt를 만들고 거기에 who명령어의 내용을 저장

$ cat > list1.txt
Hi
This is the first list.
^D
: 현재 디렉토리에 list1.txt를 만들고 인수로 입력받은 문자를 저장

$ cat list1.txt list2.txt > list3.txt
: list1.txt의 내용과 list2.txt의 내용을 list3.txt 파일을 만들어 그 안에 저장

4-2. 출력추가

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

$ 명령어 >> 파일
$ cat >> list1.txt
Bye!
This is the end of the first list.
^D

$ cat list1.txt
->
Hi, this is the first list.
BYe!
This is the end of the first list.

4-3. 입력 재지정

  • 명령어의 표준입력을 키보드 대신 파일에서 받는다.
  • $ 명령어 < 파일
    $ wc < list1.txt
    -> 4 17 71

4.4 문서 내 입력

  • 명령어의 표준입력을 단어가 다시 나타날때까지의 내용으로

  • 보통 스크립내 내에서 입력을 줄때 사용

    $ 명령어 << 단어
    ...
    단어

    $ wc << end
    hello!
    word count
    end
    2 4 19

4-5. 파이프

  • 로그인된 사용자들을 정렬해서 보여주기
    $ who > names.txt
    $ sort < names.txt

  • $ 명령어1 | 명령어2
    : 명령어1의 표준출력을 명령어2의 표준입력으로 바로 받는다.
    ex) $who | sort


5. 후면 처리 및 프로세스

5.1 전면처리 vs 후면처리

  • 전면처리
    : 명령어를 입력하면 명령어가 전면에서 실행되며 명령어가 끝날때 까지 쉘이 기다려준다.

  • 후면처리
    : 명령어들을 후면에서 처리하고 전면에는 다른작업을 할 수 있으면 동시에 여러작업을 수행할 수 있다.
    : $ 명령어 &
    ex)

    $ (sleep 100; echo done) &
    [1] 8320
    $ find . -name test.c -print &
    [2] 8325
    $ jobs
    [1] + Running ( sleep 100; echo done )
    [2] - Running find . -name test.c –print

    $ fg %작업번호
    $ fg %1
    ( sleep 100; echo done )

    후면처리 입출력
    $ find . -name test.c -print > find.txt &
    $ find . -name test.c -print | mail chang &
    $ wc < inputfile &

5.2 프로세스

: 실행중인 프로그램을 프로세스 라고 부른다.
각 프로세스는 고유한 pid를 갖는다.
ps 명령어를 사용하여, 나의 프로세스들을 볼 수 있다.

$ ps
PID TTY TIME CMD
8695 pts/3 00:00:00 csh
8720 pts/3 00:00:00 ps

$ ps u
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
chang 8695 0.0 0.0 5252 1728 pts/3 Ss 11:12 0:00 -csh
chang 8793 0.0 0.0 4252 940 pts/3 R+ 11:15 0:00 ps u

kill 명령어

: 프로세스를 강제적으로 종료시킴
$ kill 프로세스번호
$ kill $작업번호

ex)
$ kill 8320 혹은
$ kill %1
-> [1] Terminated ( sleep 100; echo done )

0개의 댓글

관련 채용 정보