운영체제는 사용자가 컴퓨터를 사용하기 위해 필요한 소프트웨어이다. 우리가 일반적으로 컴퓨터를 사용하면서 실행한 모든 프로그램들은 운영체제에서 관리하고 제어한다.
대표적인 운영체제는 Windows, Linux, Mac OSX, iOS 등이 있다.
기본적인 역할은 사용자와 컴퓨터간의 번역기 역할을 하기위해 컴퓨터의 하드웨어를 관리한다고 생각할 수 있다.
윈도우, 맥 등등
사용자가 명령 실행
→ 쉘이 분석해서 커널에게 전달(명령을 분석)
→ 커널은 하드웨어(메모리,cpu, 저장장치 등)에게 명령을 전달
모니터(출력)같은 경우, 반대로 하드웨어에서 출력을 허락 → 커널 → 쉘 → 사용자 순서
자세한 과정보다는 쉘과 커널을 통해서 컨트롤한다는 정도를 알아두자!
터미널 열면 실행되는게 쉘이다. 그래서 터미널에 명령을 치면 쉘에 치는 것과 같다!
이 명령이 커널에 전달되고 하드웨어 전달되는 것이다.
쉘 종류는 100가지 정도 존재한다.
리눅스 왜 쓰는걸까? 리눅스는 오픈소스이다.
결국 뿌리는 리눅스로 같다.
Graphical User Interface VS Command Line Interface
그래픽 사용자 인터페이스는 이미지, 아이콘 등이 포함된 그래픽을 사용하여 사용자가 시스템과 상호 작용한다. CLI는 명령을 통해서 상호작용하며 GUI에서 할 수 있는 건 모두 CLI에서 가능하다.
파일 시스템 계층구조 표준(Filesystem Hierachy Standard, FHS)는 리눅스 운영 체제의 주 디렉토리를 말한다.
root(/)
로 최상위 경로이다. /
기호로 접근할 수 있다. ~
)리눅스의 운영과 관리에 관련한 파일들이 존재하는 디렉토리들. ~
기호로 곧바로 접근할 수 있다.
Binary의 약자로 OS의 최소한의 구동을 위해 필요한 프로그램이 들어있는 폴더이다.
sbin은 root 권한을 가진 사용자만이 이용할 수 있고, bin은 일반 사용자들이 이용할 수 있는 binaries이다. /sbin 에 halt, reboot 등의 binaries들이 위치해있으므로 일반사용자에게는 sbin에 대한 권한이 부여되어 있지 않아야 하는 것이 맞다.
/
: root 디렉토리~
: home 디렉토리/home/eun/bin
)cd ..
).
: 현재 경로..
: 상위 경로환경변수란 프로세스가 컴퓨터에서 동작하는 방식에 영향을 미치는, 동적인 값들의 모임이다. 환경변수는 시스템의 실행 파일이 놓여 있는 디렉터리의 지정 등 OS 상세서 동작하는 응용소프트웨어가 참조하기 위한 설정이 기록된다.
쉽게 이야기해서 각자 깊숙이 있는 응용프로그램을 쉽게 꺼내쓰기 위해서 미리 변수로 등록해 놓는 것을 말한다.
env
명령어로 linux의 환경변수를 확인할 수 있다.HOME
→ home의 위치가 환경변수로 저장되어있어서 ~
쳤을때 이동 가능하다.PATH
→ 명령어들이 실제로 위치하고 있는 곳을 저장한다..
으로 시작하는 파일 및 디렉토리는 숨김파일로 간주한다.ls - 현재 위치의 파일 목록을 조회하는 명령어
cd - 디렉토리를 이동하는 명령어
touch - 파일의 용량이 0인 파일을 생성, 날짜 변경하는 명령어
mkdir - 디렉토리를 생성하는 명령어
cp - 파일을 복사하는 명령어
mv - 파일을 이동시키는 명령어, 이름을 변경하는 명령어
rm - 파일을 제거하는 명령어
cat - 파일의 내용을 화면에 출력하거나 파일을 만드는 명령어
redirection - 화면에 출력되는 결과를 파일로 정하는 명령어
alias - 자주 수행하는 명령어들을 쉽게 사용할 수 있도록 설정하는 명령어
pwd - 현재 있는 폴더를 보여주는 명령어(print working directory)
clear - 명령어 및 결과들이 지워지는 명령어
vi file - file 명령모드로 이동
i - 명령모드에서 입력모드로 전환
ese + :wq! - 명령모드로 돌아가며 저장 후 종료
wget 이미지 주소 - 이미지 불러오기
find ./ -name 'file.txt' : 현재 폴더 기준으로 file.txt 파일을 모두 출력하세요.
find ./ -name '*.txt' : 현재 폴더 기준으로 확장자가 .txt 파일을 모두 출력하세요.
ls(list segments)
ls-l : 파일들의 상세정보를 나타낸다.
ls-a : 숨어있는 파일들도 표시한다.
cd(change directory)
cd one : one이라는 디렉토리로 이동한다.
cd ~ : 어느 곳이든지 홈디렉토리로 바로 이동한다.
cd .. :상위 디렉토리로 이동한다.
cd / : 최상위 디렉토리로 이동
cd/dir : 절대경로 dir로 이동할 경우 사용한다.
cd - : 이동하기 바로 전의 디렉토리로 이동한다.
touch
mkdir (make directory)
mkdir one : one의 디렉토리를 생성
cp (copy)
cp file cfile: file을 cfile 이라는 이름으로 복사한다.
cp -f file cfile: 복사 대상이 있으면 지우고 강제로 복사한다.
cp -R dir cdir: 디렉토리 복사 시, 폴더 안의 모든 하위 경로와 파일들을 모두 복사한다.
mv(move)
mv와 cp의 다른 점은 cp는 파일을 복사하여 원본 파일이 남지만 mv는 원본 파일이 지워진다. 그러므로 이름을 변경 시에도 사용한다.
mv fname mfname : fname 파일을 b로 이동/변경한다.
mv -b fname mfname :mfname 파일이 존재하면 mfname를 백업한 뒤 이동한다
mv -f fname mfname : mfname 존재하면 백업 없이 덮어쓴다.
rm(remove)
rm fname : fname을 삭제한다.
rm -f fname : fname을 묻지않고 삭제한다.
rm -r dir: 디렉토리 하위 파일을 포함하여 모두 제거하는 명령어이다.(디렉토리는 -r 없이 삭제할 수 없다.)
rm -d dir: 디렉토리를 삭제하는 명령어이다. rm -r dir과 다른 점은 -d는 하위에 다른 파일이 존재하면 제거할 수 없다.
cat(catenate)
cat fname: fname의 내용을 출력한다.
cat fname1 fname2: fname1과 fname2의 내용을 이어서 출력한다.
redirection ('>'.'>>')
리눅스 스트림의 방향을 조절한다.
명령 > 파일 : 명령의 결과를 파일로 저장한다.
alias ne ='command' : command를 실행하는 새 명령어 new를 만든다.
alias ls='ls -l' : ls를 실행하면 -l 옵션을 갖는 ls를 실행한다.
unalias new : new 라는 alias를 해제한다.