POSIX CLI1

이윤설·2023년 3월 19일
0

참고(출처): https://k-mozzi.tistory.com/213

Summary of POSIX CLI

  • GUI(Graphic User Interface): 사용자가 편리하게 사용할 수 있도록 입출력 등의 기능을 알기 쉬운 아이콘 따위의 그래픽으로 나타낸 것
  • CLI(Command Line Interface): 가상 터미널 또는 터미널을 통해 사용자와 컴퓨터가 상호 작용하는 방식. GUI보다 어렵지만 무조건 배워야 한다.

1) 시간 순서에 따라 명령을 내릴 수 있다.
2) 자원을 적게 사용한다.
3) 자동화가 가능하다.

  • POSIX(Portable Operating System Interface): 서로 다른 UNIX OS의 공통 API를 정리하여 이식성이 높은 유닉스 응용 프로그램을 개발하기 위한 목적으로 IEEE가 책정한 애플리케이션 인터페이스 규격

-unix와 그에 파생된 linux, macos는 모두 posix 따르기 때문에 명령어의 문법과 사용할 수 있는 프로그램이 동일하다.

1) Unix

2) Linux

3) MacOS

호환시키는 방법

1) 윈도우는 cmd, powershell 이라고 하는 독자적인 방법을 갖고 있기 때문에, posix와 호환이 되지 않는다. 하지만 emulator를 설치하면 윈도우도 posix와 같은 방법으로 제어할 수 있게 된다. 즉 emulator는 통역사와 같은 역할을 하게 된다.

  • emulator: POSIX 기반 OS가 아닌 경우에도 POSIX의 명령어 사용을 가능하게 해주는 도구(명령어 해석)

2) 별도의 서버를 마련한다. 그 서버는 POSIX(unix, linux, macOs)에 호환되는 서버이다. 우리의 운영체제에서 posix 서버에 원격으로 접속하는 것이다. 이 때 사용하는 도구가 SSH다.

  • SSH(Secure SHell): POSIX Server에 원격으로 접속하여 원격제어를 가능하게 해주는 도구

수업의 목적

컴퓨터를 사용하는 이유: 정보를 만들기 위해 Data를 파일에 저장하고 Data를 가공한다.

어떤 분야건 4가지 처리 방법 CRUD를 파악하면 기본은 안다고 할 수 있다.

File과 관련된 CRUD, Directory와 관련된 CRUD를 알면 강의는 끝난다.

디렉토리의 사용

  • 터미널 커맨드: 커맨드 앞에 man(manual)을 입력하면 해당 커맨드 사용 방법이 출력된다. (빠져나갈 땐 'Q')

1) pwd(print working directory): 현재 디렉토리의 위치를 출력한다.

→ / : root directory(절대 경로)

→ ./ : current directory

→ ../ : parent directory(상대 경로) (그냥 .. 만 사용해도 상위 위치로 이동한다.)

2) cd(change directory): 참조하는 디렉토리를 변경한다.

→ 해당 커맨드 뒤에 이동하고싶은 디렉토리의 위치를 입력한다.

→ cd ~ 를 입력하면 자신의 홈 디렉토리로 이동한다.

디렉토리의 생로병사

3) ls: 현재 위치에 어떤 파일과 디렉토리가 있는지 확인한다.

→ ls -l: 해당 파일과 디렉토리의 상세 정보를 출력한다.

→ 파일의 이름 앞에 '.'이 있으면 해당 파일은 숨겨진 파일이다. (ls -a 를 입력하면 hidden file도 출력됨)

→ ls -R: 모든 디렉토리의 하위 파일까지 출력한다.

4) touch: 빈 파일을 생성한다.

5) mkdir(make directory): 빈 디렉토리(폴더)를 생성한다.
ex) mkdir dummy -> dummy라는 폴더를 생성

6) mv(move): 디렉토리나 파일의 이름을 변경한다.
→ 현재 파일 이름 뒤에 바꿀 파일 이름을 입력한다.
ex) mv dummy2 dummy -> dummy2 폴더의 이름을 dummy로 변경

7) rm: 현재 머물고있는 파일(디렉토리)을 삭제한다.
→ rm -r: 디렉토리(폴더) 삭제.
rm 뒤에는 보통 파일이름이 온다. 만약 디렉토리를 삭제하려면
rm -r을 써야한다.

절대경로와 상대경로

최상위 디렉토리로 가는 방법 : cd /

(현재 위치하고 있는 곳의)부모 디렉토리로 가는 방법 : cd ../
--> ./는 현재 디렉토리고, ../는 부모 디렉토리가 된다.
ex) Users/live/posix 에서 cd ./를 누르고 pwd를 누르면
같은 곳이지만, cd ../를 누르고 pwd를 누르면 Users/live로 이동한다.

cd / : 절대경로를 사용한 것
cd ../ : 상대경로를 사용한 것

Users/live 폴더에서 posix 폴더로 이동하려면,
cd (./)posix 를 치면 된다. 이는 상대경로를 이용한 것이다.

cd /Users/live/posix 를 치면 똑같이 posix 폴더로 이동한다.
이는 절대경로를 이용한 것이다.

정리하자면..
./는 그냥 'cd (디렉토리 이름)' 으로 사용했을때만 생략이 가능하다.
cd / 는 '/' 즉 최상위 디렉토리로 가는 것.(위치를 지정하는 것이니 상대경로)

절대경로는 어디에 있건 이동할 수 있고,
상대경로는 그곳에 있어야 이동할 수 있다.

파일생성과 읽기

Yoon@DESKTOP-H73F8N5 MINGW64 ~
$ pwd
/c/Users/Yoon

Yoon@DESKTOP-H73F8N5 MINGW64 ~
$ cd posix

Yoon@DESKTOP-H73F8N5 MINGW64 ~/posix
$ pwd
/c/Users/Yoon/posix

Yoon@DESKTOP-H73F8N5 MINGW64 ~/posix
$ nano

Yoon@DESKTOP-H73F8N5 MINGW64 ~/posix
$ ls -al
total 17
drwxr-xr-x 1 Yoon 197121  0 Mar 26 13:36 ./
drwxr-xr-x 1 Yoon 197121  0 Mar 26 13:36 ../
-rw-r--r-- 1 Yoon 197121 13 Mar 26 13:38 hello.txt

Yoon@DESKTOP-H73F8N5 MINGW64 ~/posix
$ nano hello.txt

Yoon@DESKTOP-H73F8N5 MINGW64 ~/posix
$ cat hello.txt
hello world!

git bash에서 nano를 입력하면 새 창이 뜨는데,
거기에서 파일을 생성 or 삭제할 수 있다.

nano 창에서 내용을 쓰고, ctrl + A를 누르면 이를 저장한다.
hello.txt를 쓰면 posix 폴더에 hello.txt 파일이 만들어진다.

cat 뒤에 파일 이름을 입력하면 터미널 창에 해당 파일의 내용이 출력된다.

$ cat hello.txt
hello world

파일 수정과 삭제

파일 이름 수정:
mv hello.txt hello_world.txt <- 이름이 hello_world.txt로 바뀜

파일 삭제:
rm hello_world.txt

순서대로 실행하기

touch: 빈 파일을 생성한다.
ex) touch hello.txt

여러 명령어를 나눠서 쓰지 않고 한 줄에 쓸 수 있다.
세미콜론(;)을 명령어 마다 붙이면 된다.

$ mkdir dummy; cd dummy; touch hello.txt; cd ..; ls -R

dummy 디렉토리 생성 -> dummy로 이동 -> hello.txt 빈파일 생성 -> 부모 디렉토리로 돌아와 -> ls -R(폴더 밑 모든 파일 출력)

자동화 - 실패하면 멈추기

만약 중간에 코드를 잘못 쓴다면..?

$ mkdir dummy; cd dumy; touch hello.txt; cd ..; ls -R

--> 실행이 안된다.

$ mkdir dummy&&cd dumy&&touch hello.txt&&cd ..&&ls -R

--> 만약 중간에 오류가 발생하면 뒤에 있는 명령이 실행되지 않는다.
즉, dummy 디렉토리까지만 생긴다.

수업을 마치며

후속공부: Shell Script, Package Manager(apt-get, yum, homebrew, chocolatey),Maintain(top, htop, computer architecture), Network, 컴퓨터 구조

profile
화려한 외면이 아닌 단단한 내면

0개의 댓글