명령어

From Hidden Wiki
Jump to navigation Jump to search

개요

명령어(命令語, Command)는 컴퓨터에서 특정한 작업을 수행하기 위한 해석기의 역할을 하는 컴퓨터 프로그램을 가리킨다. 일반적으로 명령어는 과 같은 명령 줄 인터페이스의 하나이다.

구체적으로, 명령어라는 용어는 엄격한 컴퓨터 언어에서 쓰인다. 이러한 언어들을 명령어라고 하는데, 그 까닭은 이 언어들 안의 서술이 보통 많은 자연어에서 쓰이는 엄격한 분위기와 비슷한 방식으로 쓰이기 때문이다.

많은 프로그램들은 명령어의 기본 동작을 수정하는 플레그로 알려진 형식화된 변수를 허용한다. 반면 변수는 명령어가 실행하는 것을 서술한다. 자연어와 비교하여: 플레그는 동사이다. 반면 다른 변수는 목적어다.

보기

명령 줄 인터프리터에 줄 수 있는 명령어들 몇 가지는 다음과 같다 (유닉스 셸):

  • cd /home/pete
이 명령어는 현재의 위치에서 /home/pete 디렉터리로, 디렉터리 트리 사용자 공간을 바꾼다. "cd"는 명령어이고, "/home/pete"는 변수다.
  • echo "안녕 친구야"
이 명령어는 안녕 문자열을 표준 출력 스트림에 출력하고 화면에 문자열을 출력한다. "echo"는 명령어이고 ""안녕 친구""는 변수다.
이 명령어들은 둘 다 같다. 디렉터리 /bin 안의 파일을 나열한다. "ls"는 명령어이고 "/bin"은 변수이며 다음과 같은 세 개의 플레그가 있다: "l", "t" 그리고 "r".
  • cat ch1.txt ch2.txt
Tch1.txt와 ch2.txt 파일의 내용을 보여준다. "cat"는 명령어이고 "ch1.txt"와 "ch2.txt"는 둘 다 변수이다. (도스에서는 TYPE을 쓴다)

여기에 다른 명령 줄 해석기(마이크로소프트 윈도MS-DOS 명령 프롬프트)에 주어지는 명령어 몇 가지가 있다. 플레그들이 다르게 쓰이지만 개념은 같다:

현재의 디렉터리의 내용을 나열한다. "DIR"은 명령어이고 "A"는 플레그다. 변수는 없다.
  • TYPE /P readme.txt
readme.txt 파일의 내용을 보여 준다. "TYPE"은 명령어이고, "readme.txt"는 변수다. "P"는 매개 변수다.

리눅스 터미널 명령어

리눅스에게 주어진 양날의 검 3

(단 터미널이라고 줄여 부르는 터미널 에뮬레이터(terminal emulator)는 사용자가 데이터를 입력 출력하는 프로그램이며 사용자는 터미널 에뮬레이터를 통해 응용 프로그램에 접근하는 구조로 되어있다. 즉 터미널은 종류에 따라 CUI또는 '텍스트 유저 인터페이스(TUI)' 넓게 보면 GUI환경을 쓸 수 있도록 하는 프로그램이다. 그러므로 이 문단에서 다루는 문제점은 터미널 명령어가 아니라 그냥 리눅스가 GUI보다 CUI에 기반하고 있다는 문제와 파편화이다.)

터미널 없는 리눅스는 리눅스가 아니다. 하지만, 터미널은 그 존재 자체만으로 일반 사용자들에게 막대한 부담을 준다. 사실, 오히려 터미널 명령어가 존재하기 때문에 여러가지 문제가 생겼을때 터미널 명령어만 따라 입력해주면 바로 해결이 가능해서 오히려 GUI 보다 문제 해결에 훨씬 유리한게 터미널이다. 문제는 모든 설명을 이 터미널로 끝낸다는 점에 있다. 모든 유저들이 터미널 명령어로 일을 해결하고 싶어하는 것은 아니다! 실제론 터미널 명령어를 쓰는 것보다 복잡하더라도 GUI를 통해 일을 해결하고 싶은 사람들도 아주 많고 그것은 지금의 리눅스의 데스크탑 점유율이 확실히 입증한다.

더 골치아픈 문제점은, 배포판과 버전별로 입력해야하는 터미널 명령들이 따로 노는 경우가 허다하며, 또한 사실 GUI 상으론 똑같은 행동을 하는 것인데, 터미널 명령어는 묘하게 바뀌어있는 부분이 한두가지가 아니란 점이다. 포럼들에서 터미널 명령어를 보고 명령어를 입력했는데, 설명한 것과 다른 결과가 나오는게 어디 한두번인가?

예시를 들면, 우분투 배포판의 최신 버전은 노트북 전력 관리 기능이 꺼져있어서 포럼들을 해매며 강제로 활성화 시켜야하는데, 검색을 해보면 뭐 하나 제대로된 명령어가 없다. 하나같이 구버전에만 먹히는 명령어 이거나, 터미널 명령어로 열어야하는 창은 열었는데 그 이후의 설명이 빠져있는 둥 일반 유저는 죽었다 깨어나도 해결 불가능한 영역에 가있다. 노트북 전력 관리기능이 꺼진 우분투의 배터리 광탈이 얼마나 심각한지를 생각하면 더 이상의 설명이 필요할까?

실제로, 이 문제는 리눅스 사용자 사이에서도 일반 사용자들의 진입장벽으로 가장 먼저 언급되는 문제이며, GUI가 기본인 현재의 컴퓨팅 환경에서 지나치게 뒤쳐져 있는(Outdated) 시스템이라는 비판이 거세다. 시대적 흐름을 모르고 구식 시스템을 고수함으로써 갈라파고스화 되고 있다는 것.

명심하자. GUI에 익숙해져 있는 대다수의 일반 사용자들은 컴퓨터의 문제를 해결하려고 텍스트뿐인 창에 일일히 명령어를 쳐줘야 하는 이유를 이해하지 못할뿐더러, 비직관적이고 어렵다고 생각해 리눅스 자체에 회의감을 느끼고 끝내는 포기하게 된다. 더군다나 현 시대는 모든 소프트웨어가 직관적인 인터페이스를 추구하고 있는 시대인데 아직도 비직관적인 터미널 명령어에 의존하는 현재의 리눅스 시스템에 대중이 얼마나 적응할 수 있을 것 같은가?

결국 이 문제점은 사용자를 터미널 명령으로부터 사실상 분리하는 데 성공한 안드로이드에서는 확실하게 해결이 되었다. 물론 데스크탑 리눅스는 여전히 그런 거 없다 가 현실이지만.

알아두면 편리한 명령어 목록

GNOME 데스크탑 및 Unity 기반의 우분투가 기준이다. Unity의 경우 F1을 길게 누르면 단축키 목록을 볼 수 있다.

  • 명령어는 아니지만 설치 시 파티션 나누는 단계에서 화면 아래가 잘리는 현상에 도움이 되는 팁이 있다. alt+마우스 좌클릭 드래그로 파티션 설정 창을 위로 끌어올리면 창 아래를 볼 수 있다.
  • gksu nautilus (ALT+F2에서 입력, 관리자 권한으로 탐색기 열기. 사실상 이거 하나만 알고 있어도 웬만한 관리 작업은 다 한다.) [* 쿠분투(KDE)를 쓴다면 kdesudo dolphin 을 입력하면 되고, 주분투(Xfce)는 gksu thunar, 루분투(LXDE)는 gksu pcmanfm 을 입력하면된다. gksu나 kdesudo 대신 sudo를 입력해도 가능하다.]
  • im-switch -c (터미널에서 입력, 한글 입력기 변경, 주로 nabi를 사용)
  • gconf-editor (ALT+F2에서 입력, GNOME의 전반적인 환경설정. 레지스트리 편집기라고 보면 됨)
  • (sudo) apt-get (터미널에서 입력, 터미널에서 프로그램을 설치(install)하거나 제거(remove)하거나 설치파일을 깔끔하게 지울 때. 팁으로 패키지가 깨져서 업데이트가 불가능할때 apt-get update --fix-missing 이면 거의 해결된다.)
  • aptitude (위의 apt-get과 비슷한 기능이나, 텍스트 기반의 GUI로 편하게 관리 할수 있다. 더구나 알아서 의존성 체크도 해주고, 업데이트도 원하는 것만 골라서 설치할 수 있으니 적어도 apt-get autoremove로 커널까지 몽땅 날리는 비극은 피할수 있다...)
  • (sudo) chmod (파일의 실행 권한을 설정하는 명령어로, 뒤에 8진법 숫자나 옵션을 통해 권한을 부여한다. 자세한 사용법은 --help 옵션에 나와있다.)
  • (sudo) chown (파일의 소유권을 설정하는 명령어로, sudo 계정명(UID).그룹명(GID) "파일 또는 디렉터리" 형태로 사용한다. 더 자세한건 --help 옵션에서.)
    • sudo 앞에 붙이는 게 귀찮으면 sudo -i 로 루트 권한을 행사한 후 빠져나가면 된다.

리눅스에서 딮 웹 사용하기

리눅스의 경우 터미널

./truecrypt-7.0a-setup-x64 

와 같은 명령어를 입력해서 트루크맆트를 설치 후 터미널에

truecrypt 

를 입력하면 트루크맆트가 실행된다. 우분투의 경우 실행 후 런처에 고정시켜 놓고 사용하고, 리눅스 민트의 경우 "메뉴 -> 보조 프로그램 -> TrueCrypt"에 있다. 우분투의 유니티(Unity) 환경은 태블릿 위주로 만들어져서 윈도우즈와 매우 다르므로 윈도우즈만 사용해본 사람들은 윈도우즈와 비슷한 그놈(GNOME)을 사용하는 리눅스 민트를 쓰는 게 더 적응하기 쉬울 것이다.

cd tor-browser_ko/
./start-tor-browser
./i2prouter start
cd iMule-2.3.2.3/
cd bin/
./imule 

http://127.0.0.1:7657/i2psnark/

python torchat.py

명령어와 터미널

명령어(Command)는 터미널(terminal)에서 다음과 같이 사용한다.


ls

현재 디렉터리에 있는 파일과 폴더 목록을 보여준다.


cd folder_name

folder_name 폴더로 이동한다.


/home/user_name/folder1/program1

folder1에 있는 program1을 실행시킨다. 간단히

~/folder1/program1

으로 입력해도 되고, cd 명령어로 folder1으로 이동한 후

./program1

이라고 입력해도 된다.


리눅스에서 HDD에 남은 용량 확인은 터미널에서

df -h

로 한다.

한/영 전환

우분투에서는 "한/영" 전환 키가 안 먹히면 그냥 "Shift + space bar"를 써서 전환해도 된다.

리눅스 민트에서는 "메뉴 -> 기본 설정 -> 언어 -> 언어 입력기"에서 "UIM"을 설치한 후 한글 입력기를 UIM으로 설정하면 된다. 입력기를 적용해도 한글 입력이 안 되면 로그아웃했다가 다시 로그인하면 된다. 그래도 안 되면 컴퓨터를 재부팅하면 된다. 화면 맨 아래의 작업 표시줄 맨 오른쪽에 한글 입력기가 떠 있는 게 보일 것이다. UIM 설치 및 기본 입력기로 UIM을 설정한 후 컴퓨터를 재부팅하면 입력기가 "벼루"로 바뀌면서 Shift + space bar로 한영 변환하는 게 기본 설정으로 바뀐다. 한글 입력기에 따라 Ctrl + space bar로 한영 전환하는 것도 있다. 어떤 키나 키 조합을 한영 전환 키로 사용할지는 각 입력기의 설정에서 바꿀 수 있다.

한자 키

"한자" 키가 안 될 경우에는 "F9" 키를 한자 키 대신에 사용할 수 있다.

웹 브라우저에서 갑자기 한글 입력이 안 될 때

보조 프로그램의 텍스트 편집기(gedit)에 한글 입력 후 웹 브라우저에 복사&붙여넣기 한다.

윈도우즈와 듀얼 부팅 하기

리눅스에서는 HDD와 파티션을 sdb3과 같은 식으로 표기한다. b는 두번째 HDD라는 의미이며 3은 세번째 "주 파티션"이라는 의미이다. "논리 파티션"은 5번부터 번호가 매겨진다. 주 파티션은 4개까지 만들 수 있는데 주 파티션이 4개이면 논리 파티션을 만들 수 없으므로 주 파티션은 3개까지만 만들고 나머지 파티션은 모두 논리 파티션으로 만든다.


윈도우즈와 듀얼 부팅하려면 우선 윈도우즈를 설치해야 한다. 윈도우즈는 일단 운영 체제가 설치되는 C 드라이브만 설정한 후 설치한다. 그 후 리눅스 민트를 설치할 때 7단계 중 4단계인 "설치 형식"에서 "기타"를 선택해서 보면 /dev/sda1에 104MB의 시스템 예약 공간이 보이고, /dev/sda2에 C 드라이브가 보일 것이다. 그럼 그 밑의 "남은 공간"을 클릭한 후 "+" 버튼을 눌러서 /boot 파티션을 추가해준다. 크기는 500~1,000MB에 파티션 종류는 "주 파티션"을 선택하고, 용도는 ext4(확장 파일 시스템 4), 마운트 위치는 /boot로 선택하면 된다. 그럼 /boot 가 /dev/sda3에 생성될 것이다. 그 후 그 아래에 또 + 버튼을 눌러서 윈도우즈의 D 드라이브로 사용할 공간을 추가해준다. 파티션 종류는 "논리 파티션"을 선택해주면 되고, "용도"는 "FAT32 파일 시스템"을, 마운트 위치는 /windows를 선택하면 된다. 그럼 /dev/sda5가 생성될 것이다. 그 후 그 아래에 암호화할 파티션을 추가해준다. 역시 "논리 파티션"에 "용도"는 "암호화할 물리 볼륨"을 선택하면 된다. 그 후 새로 생성된 /dev/mapper/sda6_crypt를 누른 후 Change...를 클릭하여 마운트 위치를 / 로 바꿔준다. 그 후 "지금 설치"를 누르면 스왑 파티션을 설정하지 않았다고 뜬다. 스왑 파티션은 윈도우즈의 가상 메모리같은 건데 요즘엔 메모리 용량이 커서 없어도 별로 상관은 없다. 나중에 필요하면 스왑 파일을 만들어서 사용해도 되니 신경 쓸 필요없다. 만약 스왑 파티션을 사용하려면 스왑 파티션에 써진 임시 파일들에서 정보가 유출될 수 있으므로 스왑 파티션도 암호화해야 한다.


7단계는 계정 설정 단계로 sda6를 통채로 암호화했기 때문에 "개인 폴더 암호화"를 선택할 필요는 없다.


그 후 윈도우즈를 부팅하여 sda5 파티션을 NTFS(신기술 파일 시스템)로 포맷해도 되고, 그냥 FAT32(파일 할당 테이블, 4GB 이하의 파일만 사용 가능)로 써도 된다.

리눅스에서 HDD 암호화를 위해 Cryptsetup 사용

리눅스의 경우 Cryptsetup 패키지를 설치하여 컴퓨터를 전체 암호화해서 사용한다. 우분투의 경우 Cryptsetup 패키지가 이미 설치되어 있다. Cryptsetup은 터미널에서

$ apt-get install cryptsetup 

을 입력하여 설치할 수 있다.

만약 LVM(Logical Volumn Management)이 설치되어있지 않을 경우

$ apt-get install lvm2

를 입력하여 LVM도 설치해준다.

  • [데비안] 리눅스 디스크/파티션 LUKS로 암호화하기

데이터가 너무나도 중요해서 물리적으로 디스크를 분실해도 해독이 불가능하도록 디스크 자체에 암호화를 걸어야 될 때가 있다.
Windows에서는 한때 유명했던 TrueCrypt 프로그램(구조적인 문제 때문인지 현재는 개발이 중단되었다)이나 MS의 BitLocker를 사용하면 된다.
리눅스에서는 디스크를 암호화 시킬 수 있는 프로그램이 여러 가지다. (https://wiki.archlinux.org/index.php/disk_encryption)
여기서는 DM-Crypt를 기반으로 암호화 시켜주는 LUKS를 사용 할 것이며, 프로그램은 CryptSetup를 사용 할 것이다.

  • DM은 Device Mapper로 리눅스 커널 2.6과 3.x 버전에 포함되어 있는 프레임워크로, 물리적인 디스크를 가상의 디스크로 인식하도록 돕는 시스템으로, 여러개의 물리적인 디스크를 하나의 디스크처럼 쓸 수 있도록 도와주는 역할을 한다고 생각하면 된다. (가상의 레이드 시스템으로 보면 된다.)
    DM-Crypt는 DM의 서브시스템으로 보면 된다. 즉, 리눅스 커널에 있는 DM을 기반으로 커널의 crypto-API를 사용해 디스크를 암호화 시키는 시스템이라고 보면 된다.
  • 우분투 VPS 에서 DM-Crypt를 이용하여 암호화 볼륨 생성하기

"TrueCrypt" 프로젝트가 중단되면서 이를 대체할 암호화 모듈이 필요했습니다. 특히 파일 단위 암호화가 가능한 모듈이 필요했는데 - 파티션 단위나 디스크 단위는 너무 부담스럽잖아요 - 적당한 모듈을 검색하던 중 "DM-Crypt"를 이용하여 파일 단위 암호화 볼륨을 생성하고 사용하는 것에 대한 웹페이지를 찾게 되었습니다. http://hodol.kr/xe/note/9185

리눅스에서 암호화 암호 변경

우분투 설치시에 전체 암호화를 선택했다면 사용자 폴더를 별도로 암호화할 필요는 없다. 아무 설정도 안 건드리고 설치했다면 sda5가 암호화됐을 것이다. 다른 파티션이 암호화됐다면 처음에 부팅할 때 암호 해제할 때 sdx#이라고 나온다. 거기서 x# 부분을 봐두면 된다. x는 알파벹이고, #은 숫자이다.

암호 변경은 터미널을 열고 다음 명령어를 입력하여 한다.

sudo cryptsetup luksChangeKey /dev/sda5

암호화된 파티션이 sda5가 아닌 경우 그 파티션을 써준다.

위 명령어를 입력하면 여러분 계정의 비밀번호를 입력하라고 한다. 계정 비밀번호 입력 후 암호화에 사용된 패스프레이즈(passphrase, 암호 통과(pass)에 단어(word)보다 긴 구(phrase)를 사용할 때 쓰는 말)를 입력하라고 한다. 암호화 해제에 사용하는 비밀번호를 입력해주면 된다. 그 후 새로 사용할 패스프레이즈를 입력하라고 하는데 확인 과정없이 단 한 번의 입력만으로 패스프레이즈를 변경하므로 오타 하나 나면 모든 자료가 복구 불가능이 된다. 따라서 패스프레이즈 변경 전에 모든 자료를 뱈업(backup)해놓고 변경해야 한다.

아래는 참고 사이트들이다.

http://www.lampnode.com/linux/howto-manage-encrypted-disks-with-luks-on-linux/

https://help.ubuntu.com/community/EncryptedFilesystemHowto5

https://help.ubuntu.com/community/ResizeEncryptedPartitions

리눅스 업데이트시 /boot 여유 공간이 부족할 때

우분투데비안 계열 리눅스 업데이트를 하려는데 디스크 여유 공간이 충분하지 않다고 뜨면서 업데이트를 하려면 /boot 파티션에 몇 MB의 공간이 필요하다고 경고가 뜰 때는 다음과 같이 해주면 된다.

$ df -h /boot

위 명령어로 /boot에 남은 공간을 확인한다. 리눅스에서는 마우스로 긁으면 자동으로 복사되고, 터미널에서 휠을 누르면 자동으로 붙여넣기가 되니 그 기능을 사용하면 편하다. 또한 웬만한 파일 이름이나 디렠터리는 앞 글자만 치고 Tab 키를 누르면 다른 파일 이름과 겹치지 않는 부분까지는 자동 완성을 지원한다. 또한 터미널상에서 df나 apt-get 등 각 명령어의 추가 명령어(commands)와 옵션(options) 및 그들에 대한 설명을 보려면 df --help나 apt-get --help 이런식으로 입력하면 된다.

$ uname -r

현재 설치된 커널 정보를 확인한다.

$ dpkg -S vmlinuz

설치되어있는 vmlinuz 커널 목록을 뽑아본다.

$ dpkg -l "*3.13.0-15*" | grep ^ii

커널과 함께 설치된 패키지 목록을 뽑는다. 여기서는 3.13.0-15 기준이지만 여러분의 컴퓨터는 숫자가 다를 것이다. 가장 오래된 패키지부터 지우면 된다.

$ sudo apt-get purge linux-headers-3.13.0-44 linux-headers-3.13.0-44-generic linux-image-3.13.0-44-generic linux-image-extra-3.13.0-44-generic

위에서 나온 패키지 목록을 purge 명령어 뒤에 나열하여 모두 삭제한다. 세부적인 패키지들은 컴퓨터마다 다를 것이다.

$ df -h /boot

/boot에 확보된 공간이 업데이트를 설치하기에 충분한지 확인한다. 만약 충분하지 않으면 커널 및 그에 부속된 패키지들을 하나 더 삭제한다.


만약 패키지의 의존성 문제 때문에 기존 패키지가 삭제가 되지 않으면 아래와 같이 입력하여 의존성 문제를 해결한다.

$ sudo apt-get -f install
  • [Ubuntu] boot 용량 부족으로 업데이트가 안될 때

http://inia30.tistory.com/9

숨김 파일 및 폴더 보기

Ctrl + h 를 누르면 된다. 한 번 더 누르면 원래대로 돌아간다. 숨김 파일 및 폴더는 이름 앞에 점(.)이 붙어있다.

같이 보기

de:Instruktion tr:Komut.