개발 공부 일지/ETC

UNIX

dev-hpk 2024. 9. 9. 11:43

유닉스란?

유닉스(Unix)는 벨 연구소에서 개발한 운영 체제로, 유연성, 강력한 명령어 인터페이스, 멀티태스킹, 다중 사용자 지원 등으로 인해 컴퓨터 과학 및 소프트웨어 개발의 중요한 이정표가 되었습니다.

운영 체제가 대부분 고급 언어인 C언어로 쓰여져 있었고 소스 코드를 쉽게 구할 수 있어서 다른 컴퓨터 하드웨어나 새로운 기종에 적은 노력으로도 쉽게 이식할 수 있어 대부분의 현대적 컴퓨터 운영체제의 원형이 되었다

주요 개념 & 특징
  • 멀티유저(Multiuser) 지원: 유닉스는 여러 사용자가 동시에 시스템에 접근하고 작업을 수행할 수 있는 기능을 제공합니다. 각 사용자는 고유한 계정과 권한을 가집니다.
  • 멀티태스킹(Multitasking): 유닉스는 동시에 여러 작업을 실행할 수 있는 기능을 지원합니다. 이를 통해 사용자와 시스템은 효율적으로 자원을 사용할 수 있습니다.
  • 파일 시스템: 유닉스는 계층적 파일 시스템을 사용합니다. 모든 파일과 디렉토리는 루트 디렉토리(/)를 기준으로 구조화되어 있습니다. 파일과 디렉토리는 계층 구조로 구성되어 있으며, 각 파일은 경로를 통해 접근할 수 있습니다.
  • 파일 권한과 소유권: 유닉스는 파일 및 디렉토리에 대해 읽기(r), 쓰기(w), 실행 권한(e)을 설정할 수 있습니다. 이 권한은 파일의 소유자, 그룹, 기타 사용자에게 부여됩니다.
  • 쉘(Shell): 유닉스는 다양한 종류의 쉘을 제공합니다. 쉘은 사용자가 명령을 입력하고 시스템과 상호 작용할 수 있는 인터페이스를 제공합니다. 대표적인 쉘로는 bash, sh, zsh, csh 등이 있습니다.
  • 프로세스 관리: 유닉스는 프로세스를 생성하고 관리하는 기능을 제공합니다. 각 프로세스는 독립적으로 실행되며, 프로세스 간의 통신은 파이프(pipe)와 같은 메커니즘을 통해 수행됩니다.
  • 명령어와 스크립트: 유닉스 시스템은 다양한 명령어를 사용하여 작업을 수행합니다. 또한, 쉘 스크립트를 사용하여 복잡한 작업을 자동화할 수 있습니다.
  • 네트워크 기능: 유닉스는 네트워크 기능을 지원하여 원격 시스템과의 통신, 파일 전송, 원격 명령 실행 등을 수행할 수 있습니다. ssh, scp, ftp 등의 도구가 사용됩니다.
  • 이식성(Portability): 유닉스는 다양한 하드웨어 플랫폼에서 실행될 수 있도록 설계되었습니다. 이식성 덕분에 유닉스는 여러 종류의 컴퓨터 시스템에서 널리 사용됩니다.

디렉토리 구조

유닉스(Unix)유닉스 계열 운영 체제( 리눅스)에서의 디렉토리 계층 구조는 파일 시스템을 계층적으로 조직하여 시스템의 파일과 디렉토리를 체계적으로 관리할 수 있게 합니다. 이 구조는 모든 파일과 디렉토리가 단일 루트 디렉토리(/) 아래에 위치하도록 설계되어 있습니다.

파일 및 디렉토리 조작 커맨드

  • pwd: 현재 작업 중인 디렉토리의 경로를 출력합니다.
    • 기본 사용법: pwd
    • 출력 결과: /home/user/docs
  • cd: 현재 작업 중인 디렉토리를 변경합니다.
    • 기본 사용법: cd [Path]
    • 옵션: 없음
    • 예시: cd /home/user/docs (지정된 디렉토리로 이동), cd .. (상위 디렉토리로 이동), cd ~ (홈 디렉토리로 이동)
  • ls: 파일 및 디렉토리 목록을 나열합니다.
    • 기본 사용법: ls [Option] [Path]
    • 옵션:
      • l: 자세한 정보(권한, 소유자, 크기 등)를 포함하여 나열합니다.
      • a: 숨김 파일(파일명 앞에 .이 붙은 파일)도 나열합니다.
      • h: 파일 크기를 사람이 읽기 쉬운 형태로 표시합니다.
    • 예시: ls -la (자세한 정보와 숨김 파일 포함)
  • mv: 파일이나 디렉토리를 이동하거나 이름을 변경합니다.
    • 기본 사용법: mv [Source_Path] [Destination_Path]
    • 옵션:
      • i (interactive)
        • 설명: 덮어쓰기를 확인합니다. 대상 파일이 이미 존재할 경우, 덮어쓰기 전에 사용자에게 확인을 요청합니다.
        • 예시: mv -i source.txt destination.txt
      • f (force)
        • 설명: 덮어쓰기를 강제로 수행합니다. 대상 파일이 존재할 경우, 확인 없이 덮어씁니다. i 옵션과는 반대로 작동합니다.
        • 예시: mv -f source.txt destination.txt
      • u (update)
        • 설명: 소스 파일이 대상 파일보다 새로울 때만 이동합니다. 소스 파일이 대상 파일보다 오래된 경우에는 이동하지 않습니다.
        • 예시: mv -u source.txt destination.txt
      • n (no-clobber)
        • 설명: 대상 파일이 이미 존재할 경우, 덮어쓰지 않습니다. 파일이 존재하면 아무 작업도 하지 않습니다.
        • 예시: mv -n source.txt destination.txt
      • v (verbose)
        • 설명: 이동 작업의 진행 상태를 상세히 출력합니다. 이동된 파일과 디렉토리의 경로를 표시합니다.
        • 예시: mv -v source.txt destination.txt
      • -backup
        • 설명: 덮어쓰는 파일의 백업을 생성합니다. 백업 유형은 -backup 옵션의 추가 인수를 통해 설정할 수 있습니다.
        • 예시: mv --backup source.txt destination.txt
    • 예시: mv oldname.txt newname.txt (파일 이름 변경), mv file.txt /path/to/destination/ (파일 이동)
  • mkdir: 새로운 디렉토리를 생성합니다.
    • 기본 사용법: mkdir [Directory_Name]
    • 옵션:
      • p: 상위 디렉토리가 없으면 생성합니다.
    • 예시: mkdir new_folder, mkdir -p parent/child (부모 디렉토리와 자식 디렉토리 함께 생성)
  • rm: 파일이나 디렉토리를 삭제합니다.
    • 기본 사용법: rm [File_Name]
    • 옵션:
      • r 또는 R: 디렉토리와 그 안의 모든 내용을 재귀적으로 삭제합니다.
      • f: 강제로 삭제하며, 파일이 존재하지 않아도 오류를 표시하지 않습니다.
    • 예시: rm file.txt, rm -r directory (디렉토리와 그 내용 삭제), rm -rf directory (강제로 삭제)
  • rmdir: 비어 있는 디렉토리를 삭제합니다.
    • 기본 사용법: rmdir [directory_name]
    • 예시: rmdir old_folder
  • cp: 파일이나 디렉토리를 복사합니다.
    • 기본 사용법: cp [Option] [Source_Path] [Destination_Path]
    • 옵션:
      • r: 디렉토리를 재귀적으로 복사합니다.
      • i: 복사하기 전에 확인을 요청합니다.
      • u: 소스 파일이 대상 파일보다 새로운 경우에만 복사합니다.
    • 예시: cp file.txt /path/to/destination/, cp -r dir1/ /path/to/destination/
  • touch: 파일의 수정 시간을 현재 시간으로 변경하거나 새 파일을 생성합니다.
    • 기본 사용법: touch [File_Name]
    • 예시: touch newfile.txt
  • find: 디렉토리 트리에서 파일을 검색합니다.
    • 기본 사용법: find [Path] [Option] [File_Name]
    • 옵션:
      • name: 파일 이름으로 검색합니다.
      • type: 파일 유형으로 검색합니다 (f는 파일, d는 디렉토리).
      • mtime: 수정 시간으로 검색합니다.
    • 예시: find /home/user -name "*.txt" (디렉토리 내의 .txt 파일 검색), find / -type f -name "file.txt" (루트 디렉토리에서 파일 검색)

QUIZ

현재 경로는 /test/test_dir1/test_dir1_inner & 명령어는 mv 사용

  1. /test/test_dir1/test_dir1_inner/test.txt 파일을 /test/test_dir2로 이동하는 커맨드를 작성해주세요.
  1. /test/test_dir2에 test.txt 파일이 이미 존재할 때 사용자에게 덮어쓰기 여부를 묻도록 커맨드를 작성해주세요.
  • test
    • test_dir1
      • test_dir1_inner
        • test.txt
    • test_dir2
정답
  1. mv test.txt ../../test_dir2
  1. mv -i test.txt ../../test_dir2