터미널

자유인사전 - 자유인들의 백과사전
이동: 둘러보기, 검색

대하여[편집]

통신기술에서 쓰이는 용어 터미널은 단말기를 뜻한다. 단말기는 한 호스트에 여러 사용자가 연결되어 있는 '다중 사용자 네트워크' 에서, 사용자가 입력한 신호를 중앙의 메인프레임이나 서버로 보내고 서버에 보낸 자료를 서버에서 처리한 정보를 다시 받아서 출력하는 역할을 하는 기기를 뜻한다. 카드 단말기가 대표적인 모델로, 카드 정보와 금액을 입력하면 중앙에서 이런 저런 처리를 한 후 디지털 디스플레이와 영수증으로 결과를 출력한다.

현대로 오면서 많은 뜻을 함유하게 되었는데, 소프트웨어에서 말하는 터미널은 주로 텍스트 명령 입출력 인터페이스나 터미널 에뮬레이터, 가상 터미널, 혹은 이 모두를 뜻한다.

가상 터미널[편집]

가상 콘솔, 혹은 VT라고 한다. 모니터와 키보드로 하는 명령 입출력 인터페이스를 말한다. 여기에 왜 가상이 들어가느냐는 당연하지만, 사람이 하는 일을 컴퓨터에서 소프트웨어로 구현했기 때문이다. 컴퓨터 실물이 있기 전에도 이와 유사한 방식으로 통신했다. 사람이 전보로 명령을 받아서 처리를 했다. 이걸 텔레타입 이라고 하는데, 그걸 그대로 유닉스에 실어놓은 게 TTY이다.

DEC에서 만든 VT100, VT220 등등의 유닉스용 가상터미널기가 있었다. 이 기계들에서 사용했던 가로 80자, 세로 24 혹은 25자의 전통은 지금까지 내려오고 있다. 하이텔 단말기는 1994년에 가입자에 한해서 무상으로 대여되었는데, VT220 기반으로 초록색 단색 모니터와 2.4Kb/s 모뎀이 내장되어있고, 특이사항으로 한글입출력(CP949)을 지원한다. 이 단말기는 지금도 작동만 된다면 시리얼포트로 유닉스 서버에 접속이 가능하다. 참조

터미널 에뮬레이터[편집]

터미널 에뮬레이터는 옛날 하이텔 단말기 같은 VT기를 소프트웨어로 구현한 것이다. 말하자면 가상 터미널은 단말기 그 자체와 입출력 인터페이스를 이르는 것이고, 터미널 에뮬레이터는 말 그대로 그 가상 터미널을 에뮬레이트 하는 것이다. 주로 가로 80자 세로 25자로 표시한다. 응용 소프트웨어로써 X 환경 위에 띄워서 하드웨어 가속과 함께 쓰이는 경우가 많으며, UTF-8을 지원하거나 트루타입 폰트 등을 쓸 수 있고, 256색을 지원한다. xTerm 같은 게 바로 터미널 에뮬레이터이다. xterm은 X 서버의 표준 터미널인데 xterm보다 훨-씬 쓰기 편하고 좋은 xterm의 프론트엔드나 독자적인 에뮬레이터들이 많다.

VT220 등을 에뮬레이팅 하기 위한 시도는 도스에도 있었는데, 그것이 바로 이야기이다. 북미에는 Netrunner, Telemate 같은 게 있었다. 이 둘은 다이얼에 대한 설정을 할 수 있게 되어 있는데, 아시다시피 전화선 모뎀 통신을 위해 있는 것이다.

윈도우에선 모두 알다시피 과거 새롬데이타맨이 있었는데, 무려 마우스가 지원된다. 하이퍼터미널이나 지금도 쓰이는 PuTTY 등등이 있다. 북미의 새롬과도 같은 SyncTERM도 있다.

쓰임새[편집]

다 어디서 들어본 게 아닌가? 그렇다. PC통신, Telnet, SSH 등 유닉스 서버에 원격 접속을 위한 것이다. 개발자들이 가장 많이 쓰는 용도는 GitHub 등의 Git 시스템을 이용하는 것일 것이다. 이것 때문에 많은 터미널 에뮬레이터들을 SSH 클라이언트라고 부르는 것이다. 이게 절대 틀린 이야기가 아니다. 원래 용도다.

터미널은 도스 처럼 CLI 응용 프로그램을 쓸 수도 있다. 물론 GUI 응용 프로그램을 실행 할 수도 있다. 일련의 작업을 자동화하는 쉘 스크립트를 작성 및 실행 할 때 쓰기도 한다.

당연하지만 서버를 직접 구동할 때 쓰기도 한다.

UNIX 터미널 다루기[편집]

제어[편집]

  • ^H: 백 스페이스. 어떤 서버에 접속하면 백스페이스 대신 ^H^H^H를 남발하는 경우가 있는데, 진짜로 문자열로 ^H를 입력해버리는 것이다. Ctrl+H 로 입력해야 지워진다.
  • ^C: intr. Interupt로 실행을 abort하는 것이다.
  • ^Z: susp. Suspend로 실행중인 프로그램을 중지하고 빠져나오는 것이다. 간혹 이것 때문에 백그라운드에선 계속 실행이 되고 있는 경우가 있다. 완전히 끄려면 $ jobs를 쳐서 작업중인 세션의 번호를 알아서, 만약 1번이면 $ kill %1 라고 입력해서 꺼야한다.

스트림[편집]

  • < 과 >(리다이렉팅): 주로 파일로 내용을 내보내거나 입력을 할 때 >를 쓰게 될텐데, >는 덮어쓰고, >>는 아래에 계속 쓰는 것을 유념. << 는 생각해보니 별로 안 쓴다. 만약 콘솔 터미널에서 grub.cfg의 uuid를 수정해야 하는데, blkid 명령으로 확인한 uuid가 존나 길면 어떡할까? 책상의 포스트잇에 받아 적을 수도 있지만, 손에 부상을 입어서 힘들다면 blkid /dev/sdxn >> grub.cfg 로 uuid 내용을 추가해주고, vi로 들어가서 멋진 솜씨로 uuid 부분만 수정하면 좋다.
  • | (파이프): 명령을 연결 시켜준다. 주로 less 명령을 쓸 때 쓴다.

디렉토리 기호[편집]

되게 당연할 수도 있는데, 웹을 다룰 때도 대충 통용되는 기호들이다.

  • ~: (사용자) 의 홈 디렉토리로, /home/, MacOS 에선 /Users/의 줄임말이다. 사용자 마다 개인화된 설정 파일들이나 사용자가 저장한 각종 문서들이 이곳에 배치된다. (예: ~/videos/EDD-202.mp4)
  • /: '/' 는 디렉토리의 상하를 구분하는 기호이다. '/'가 맨 처음오는 경로를 절대경로라고 하는데, 설치된 운영체제의 맨 위에서 부터 모든 경로를 나열하는 것이다. (예: /home//.bashrc) 그럼 딸랑 '/' 만 있다면? '/'인 절대경로, 즉 최상위 디렉토리, 루트 디렉토리를 말한다.
  • ./: 작업중인 경로. 파일로써 열람을 할때는 생략하지만 (예: $ vim configure) 파일을 실행할 때에는 무조건 붙여야한다. (예: $ ./configure)
  • ../: 작업중인 경로의 상위 경로. '../' 라고 한다.

기본 명령어[편집]

이하의 명령어는 바이너리 실행파일로 /bin 에 있고, /usr/bin 등에 심볼릭 링크 되어있다. 유닉스 터미널은 대소문자를 매우 엄격히 구분함을 주의해야 한다. 아래의 명령에 붙는 옵션 파라미터(예: ls -al-al 부분)도 대소문자 별로 다르다.

  • man: Manual. 설명서. 요즘이야 구글에 검색하면 명령줄이 널려 있지만, 처음 써보는 CLI 프로그램이 있다면 한 번쯤 읽어볼 만 하다. 사용례로 ffmpeg의 옵션 패러미터들을 알아보기 위해서 $ man ffmpeg 라고 치면 된다. man 문서에 들어가게 되면, 이때는 vi의 컨트롤과 유사하게 j로 아래, k로 위로 페이지를 이동할 수 있다. 검색도 vi에서와 마찬가지로 /로 보고있는 화면으로부터 아래로, ?로 위로 검색한다.
  • pwd: Print Working Directory, 작업중인 디렉토리 출력. 내가 어느 디렉토리에 있는지 알려준다.
  • ls: MS-DOS의 DIR이라고 볼 수 있다. 작업중인 디렉토리 내의 파일과 디렉토리를 출력한다. rust로 쓰여진, 보다 현대적인 exa도 좋다. -al 옵션을 붙이는 경우가 많을 텐데, 숨김파일 및 디렉토리를 포함 모든 파일 및 디렉토리를 파일의 속성과 함께 나열한다,
  • cd: 디렉토리를 이동한다.
  • echo: 패러미터의 문자열을 출력. 파일로 저장할 수도 있다.
  • cat: 파일의 내용을 입출력.
  • mkdir: 디렉토리를 만듦.
  • mv: 파일을 이동시키거나, 파일 이름을 바꾼다.
  • cp: 파일을 복사한다.
  • rm: 파일을 지운다.
  • less: 주로 긴 출력물을 확인 할 때 쓴다. 쉽게 예를 들자면, 에로 망가 디렉토리에 가서 ls를 치면 수 백여 개의 jpg 파일들이 나열되는데, 우리가 볼 수 있는 것은 80x25 화면에서 마지막 24개 파일이 전부다. 전부 확인하려면 ls와 less 명령을 파이프로 연결하면 된다. $ ls | less 이렇게. 물론 j와 k 이동 /, nN 검색 등은 man이나 vi나 같다.