이번에는 Linux에 대해 배워볼 차례이다. 리눅스는 우리가 주로 사용하는 윈도우와 같은 운영체제(OS, operating system)이다. 코딩을 할 때 윈도우를 쓰지 않고 굳이 리눅스 환경을 고집하는 이유는 오픈소스 소프트웨어이기 때문이다. 이 때문에 우리가 어떤 문제에 직면했을 때 그것을 핸들링 하는 것이 조금 더 수월해진다. 따라서 우리는 리눅스를 어떻게 다루는지 처음부터 배우도록 해본다.
Command Line Interface의 약자. 명령어를 입력해 컴퓨터를 조작하는 방식을 말한다. 우리가 평소에 사용하는 윈도우는 GUI(Graphical User Interface), 화면을 통해 컴퓨터와 소통하는 방식이다. 우리는 이미 GUI에 익숙해져 있고, 이미 직관적으로 복잡한 과정들을 해내고 있다. CLI는 그러한 복잡한 과정들을 직접 우리 손으로 명령어를 입력해 실행시켜주어야 하지만 CLI의 강력한 명령어를 사용하다보면 그것에 매료될 것이다.
컴퓨터 조작을 위해서는 다양한 input이 필요하다. 입력을 담당하는 키보드나 마우스 등의 입력소스(input source)로 우리는 여러가지 행동들을 할 수 있다. 이러한 입력 소스에 의해 또는 작성된 프로그램에 의해 모니터를 띄우거나 스피커로 소리를 내도록 하는 것을 output이라 하며, 그 매개를 출력소스(output source)라고 부른다. 이 둘을 합쳐 간단히 I/O(Input/Output)라고 부르기도 한다.
앞에서도 말했듯이 우리는 GUI가 더 편하다. 그럼에도 굳이 CLI를 사용하는 이유는 따로 있다. 개발자라면 서버를 자주 다루게 될 것인데, 서버 컴퓨터에 하나하나 GUI 시스템을 구축하는 것은 거의 불가능 하기 때문에 Linux 환경에서 CLI를 사용한다. 따라서 현재에도 많이 쓰이고 있는 CLI의 기능을 배우고 쓸 줄 알아야 한다.
Ubuntu
macOS(Apple)
런치패드(Launchpad)를 이용해 터미널을 실행하는 방법
a. 하단의 독(dock, 설정에 따라 화면의 모서리 중 다른 곳에 위치할 수 있음)에서 런치패드를 클릭
b. 런치패드가 열리면, 상단의 검색창에 Terminal을 입력하고 Enter를 누르거나, 화면에 나타난 프로그램을 클릭
스포트라이트(Spotlight search)를 이용해 터미널을 실행하는 방법
a. 모니터 화면 최상단의 상태바에서 돋보기모양을 클릭하여 스포트라이트를 실행합니다.
b. Terminal을 입력하고 Enter(엔터 키)를 누르거나, 화면에 나타난 프로그램을 클릭
Ubuntu는 작업표시줄, macOS는 독(dock)에 터미널을 고정하고 사용하길 권장합니다.
터미널 프로그램의 하단에 커서가 보인다. 키보드에서 문자 키를 입력하면 커서에 있던 자리에 문자가 나타나고 커서가 오른쪽으로 이동한다. 이렇게 키보드의 입력을 확인하고 편집할 수 있는 한 줄의 공간을 프롬프트(prompt)라고 한다.
pwd print working directory의 약자.
출력 예: /Users/username
mkdir [ 생성할 폴더 이름 ] make directories의 약자.
정상적인 입력이 되었다면 별 다른 출력없이 폴더가 바로 생성된다.
ls list의 약자.
출력 예: 폴더1 폴더2 폴더3 ... 일정한 간격으로 나열됨
-l: 폴더나 파일의 포맷을 전부 표현-a: 숨어있는 폴더나 파일을 포함한 모든 항목 출력-l옵션을 사용했을 때 drwxrwxrwx 또는 -rwxrwxrwx 같은 해괴한 문자열을 확인할 수 있다. 이는 개체가 파일인지 폴더인지를 알려주는 역할도 하며, 읽기(r, reading)와 쓰기(w, writing) 및 실행(x,execute)의 권한을 알려준다. 맨 앞의 d와 -가 각각 폴더와 파일을 뜻한다. rwx가 세 뭉치로 되어있는데 첫 번째의 경우 현 사용자의 권한, 두 번째는 해당 그룹, 세 번째는 다른 모든 사용자들의 권한을 뜻한다.
nautilus .
open .
cd [ 진입할 폴더 이름 ] change directory 약자.
터미널에서 해당 위치로 이동한다.
touch [ 생성할 파일 이름 ]
폴더가 아니라 파일임을 명심한다. 확장자까지 따로 적어주어야 한다.
cat [ 출력할 파일 이름 ] concatnate의 약자.
이름과 같이, 파일들을 병합한 후 출력할 수도 있다.
rm [ 삭제할 대상 이름 ] remove의 약자.
폴더를 삭제하려면 -rf 옵션을 사용해야 한다.
-r 폴더를 지울 때 사용-f 질문을 받지 않고 지움mv [ 대상의 이름 ] [ 도착 폴더의 이름 / 변경할 파일 이름] move의 약자.
뒤쪽 인자에 도착 폴더의 이름을 적으면 이동하며,
파일 이름을 적으면 이름이 바뀐다.
cp [ 원본 파일 이름 ] [ 복사할 파일 이름 ] copy 의 약자.
rm과 마찬가지로 폴더를 복사하려면 -rf 옵션을 사용한다.
-h 또는 (주로)--help와 같은 옵션을 통해 확인할 수 있다./ : 폴더 내부, (절대 경로에서는) root 폴더
~ : 루트폴더/로 부터 사용자 폴더까지의 경로
. : 현재 폴더
.. : 상위 폴더
./ : 그렇다면 이것은 현재 폴더 내부라는 뜻으로 사용된다.
sudo [다른 명령어] substitute user do 약자.
명령어 앞에 붙여서 해당 명령에 관리자 권한을 부여한다.
fine.