GUI vs. CLI
윈도 운영체제가 있기 전 DOS 환경에서 컴퓨터를 이용해본 사람들은 cd
나 dir
과 같은 명령어를 기억할 것이다. 조선컴처럼 오로지 명령어를 통해 작업을 할 수 있는 환경을 CLI (command line interfaces)라고 한다. 시간이 지나 윈도와 같은 GUI (graphical user interfaces)가 등장한 이후, 리눅스 환경에서도 ubuntu desktop이나 mint 등 멋진 GUI를 통해 편하게 리눅스를 사용할 수 있다. 폴더를 더블 클릭해서 열고, ctrl+c
ctrl+v
로 파일을 복사할 수 있다. 마우스를 통해 모든 것을 할 수 있지만, 그렇다고 해서 CLI를 잊어선 안된다. 명령어에 익숙해지게 된다면 같은 일을 GUI보다 훨씬 빠르고 효율적으로 처리할 수 있고, GUI를 쓸 수 없는 불상사가 생겼을 때 엄청난 도움이 될 것이다. 개발자에게는 당연히 필수이지 않을까. 이 글에서는 리눅스 bash 터미널의 shell 스크립트 명령어 쓰는 법을 정리한다.
Shell이란?
쉽게 말해서 키보드로 입력한 명령어를 운영체제로 전달해서 실행시키게 하는 프로그램이다. 윈도의 cmd로 열리는 터미널, 여러 리눅스 시스템에서 쓰는 bash 등이 shell 프로그램의 예이다. ubuntu에서 ctrl+alt+t
를 입력하면 bash 터미널을 실행할 수 있다. 아니면 시작 메뉴에서 terminal로 검색해서 실행시킬 수 있다.
각 명령어는 대부분 옵션을 가지고 있는데, 다음과 같은 방식으로 옵션을 쓴다.
$ ls -s
$ ls --size
여기서 -s
와 --size
는 같은 옵션이다. 전자(-s
)는 약어형 명령이고, 후자(--size
)는 사람이 읽을 수 있도록 풀어 쓴 명령이다.
sudo
: 관리자 권한으로 명령어 실행
실행하고자 하는 명령어 앞에 sudo
를 함께 입력하면, 그 명령을 관리자 권한으로 실행할 수 있다. sudo
가 필요한 경우는 대표적으로 프로그램을 설치/업뎃할 때나, root 폴더 등 관리자 권한이 필요한 폴더에 접근하고자 할 때이다.
$ sudo apt-get update
sudo
명령을 무분별하게 쓰지는 말자. 컴퓨터 시스템에 손상을 입힐 수 있다! sudo
에 대해서는 추후에 따로 포스트할 예정이다.
파일 및 디렉토리 관련 명령
~
: 물결 표시(~
)는 사용자의 홈 디렉토리의 경로를 나타낸다. 내 ubuntu 계정 이름이 don이라면,~
는 경로/home/don
을 의미한다.pwd
(print working directory): 지금 위치한 경로를 알려준다.ls
(list): 현재 폴더 안에 있는 파일 목록을 보여준다.ls -l
(long listing format): 파일의 크기, 수정 날짜, 파일의 소유자, 그리고 권한(읽기, 쓰기 등)을 같이 보여준다.ls -a --all
: 숨겨진 파일까지 다 같이 보여준다.ls -s --size
: 파일 크기를 보여준다ls PATH
:PATH
경로에서ls
를 실행한 결과를 보여준다. 예를 들어ls ~
는 홈 디렉토리의 목록을 보여준다.cd
(change directory): 홈 디렉토리로 경로 이동cd ..
: 상위 디렉토리로 이동cd -
: 이동하기 전 경로로 이동 (웹브라우저의 뒤로가기와 같은 기능)cd PATH
: 경로PATH
로 이동, 예를 들어cd ~/Desktop
cp FILEPATH1 FILEPATH2
(copy):FILEPATH1
을FILEPATH2
로 복사cp -r FOLDERPATH
(copy recursively):FOLDERPATH
통째로 어딘가로 복사mv
(move):cp
와 같은 사용법으로 복사 대신 이동rm FILEPATH
(remove): 파일 삭제rm -r FOLDERPATH
(remove recursively): 폴더 전체 삭제rmdir FOLDERPATH
(remove directory): 빈 폴더만 삭제할 때 사용한다.mkdir FOLDERNAME
(make directory): 새로운 폴더 생성
파일 실행
현재 위치에서 실행 가능한 어떤 파일 FILE.EXTENSION을 실행하려면 다음과 같이 입력하면 된다.
$ ./FILE.EXTENSION
시스템 정보 확인
df
(disk usage of filesystem): 모든 파티션의 용량 정보를 보여준다.df -h
(human-readable): 사람이 알아들을 수 있도록 용량 단위들을 친절하게 나타낸 모드이다.du
(disk usage): 해당 디렉토리의 용량 정보를 보여준다.du -s
(summary): 하위 디렉토리 내용을 제외한 해당 디렉토리의 용량만 보여준다.du -h
(human-readable): 용량 단위를 친절하게 알려준다.du -sh = du -s -h
free
: 사용 및 가용 메모리 정보를 나타낸다.free -m
(megabytes): 메가바이트 단위로 보여준다.top
(table of processes): 지금 사용하고 있는 프로세스들이 얼마나 메모리를 사용하고 있는 지 보여주는 윈도의 작업관리자 같은 역할을 한다. 엔터키를 치면 업데이트가 되며, q키를 누르면 나갈 수 있다.uname -a
: 기계, 커널 정보 등 여러 시스템 정보를 보여준다.lsb_release -a
: 현재 사용 중인 리눅스 배포판에 대한 정보를 보여준다.ip addr
: 네트워크 정보를 보여준다.
사용자
adduser USERNAME
:USERNAME
이라는 이름의 사용자 추가passwd USERNAME
:USERNAME
사용자의 비밀번호 설정
도움말 얻기
물고기 낚는 법을 알려주는 매우 중요한 명령어를 설명한다.
man COMMAND
(manual):COMMAND
에 대한 매뉴얼을 보여준다.
$ man man
$ man intro
위 두 명령어는 초보자가 읽어볼 만한 좋은 문서이니 읽어보길 권한다.
info COMMAND
(information):man
보다 더욱 자세하고 깊은 내용의 문서를 제공한다.- 위 두 명령어와 비슷한 기능으로
--help
옵션이 있다. 대부분의 명령어는--help
옵션을 제공하는데,man
이나info
보다는 훨씬 짧은 도움말을 제공한다.man --help
를 통해 경험해보자.
지금까지 설명한 man
, info
, --help
옵션 등은 이미 사용하고 있는 명령어 이름을 알고 있을 때 사용 가능한 도우미들이다. 명령어를 찾고 싶을 때는 다음 명령어를 통해 매뉴얼에서 검색할 수 있다.
whatis -r COMMAND
:COMMAND
라는 단어를 명령어 리스트 안에서 찾아본다.apropos -r DESCRIPTION
:DESCRIPTION
이라는 단어를 문서 내용 안에서 찾아본다.
$ whatis -r cpy
$ apropos -r "copy files"
위 두 명령을 실행해보면 감을 잡을 수 있을 것이다.
tarball 압축
tar xvzf FILE.tar.gz
:FILE.tar.gz
라는 tarball 압축 파일을FILE
이라는 이름의 새 폴더를 만들어서 압축을 푼다.tar zcvf FILE.tar.gz FOLDERNAME
:FOLDERNAME
폴더를FILE.tar.gz
로 압축한다.
참조 링크
ubuntu 매뉴얼
https://help.ubuntu.com/community/UsingTheTerminal
openhatch.org 튜토리얼
https://openhatch.org/missions/shell/about
'GNU-Linux' 카테고리의 다른 글
vim tutorial (vimtutor 요약 정리) (0) | 2017.01.27 |
---|---|
ubuntu 환경 변수 vs. 지역 변수 (0) | 2016.12.19 |
리눅스 shell 명령어 히스토리 빠르게 사용하기 (0) | 2016.09.21 |
간단하게 pdf 합치기 (0) | 2016.06.14 |
우분투에서 와이파이 리스트가 뜨지 않을때 시도해 볼 만한 것 (0) | 2016.05.11 |