유닉스란?
유닉스(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 사용
- /test/test_dir1/test_dir1_inner/test.txt 파일을 /test/test_dir2로 이동하는 커맨드를 작성해주세요.
- /test/test_dir2에 test.txt 파일이 이미 존재할 때 사용자에게 덮어쓰기 여부를 묻도록 커맨드를 작성해주세요.
-
test
-
test_dir1
-
test_dir1_inner
-
test.txt
-
-
-
test_dir2
-
정답
- mv test.txt ../../test_dir2
- mv -i test.txt ../../test_dir2
'개발 공부 일지 > ETC' 카테고리의 다른 글
주소창에 www.google.com을 검색하면 일어나는 일 (4) | 2024.12.23 |
---|---|
[SVGR] Next.js에서 SVGR 사용하기 (6) | 2024.12.13 |
[JWT] Refresh Token이란? (7) | 2024.12.07 |
프레임워크(Framework)와 라이브러리(Library)의 차이 (3) | 2024.12.03 |