CLI 첫 걸음

타키탸키·2021년 4월 1일
0

저번 시간에는 CLI 환경의 개념과 유닉스의 역사, 윈도우에서 CLI 환경 구현하는 방법 등을 함께 배웠습니다.

이번 시간에는 본격적으로 CLI 환경을 체험해보도록 하겠습니다.

🌏 터미널

우분투에서 터미널을 실행시켜봅시다. 앞서 9개의 점으로 이루어진 정사각형을 누르고 terminal을 검색하면 된다고 배웠죠?

이제부터 터미널이라는 이 창에 커맨드를 입력할 겁니다. 제일 먼저 clear라는 커맨드를 봅시다. clear를 치고 나면 화면이 깔끔해집니다. 이처럼 clear는 화면을 정리하는 커맨드입니다.

다음으로 현재 시간과 날짜를 출력하는 date 커맨드를 사용해보겠습니다. 터미널에 간단히 date만 치고 enter를 누르면 됩니다.

달력을 나타내는 cal 커맨드도 사용해보겠습니다. cal을 치고 enter를 누르면 달력이 나옵니다.

커맨드를 사용하면 마우스를 움직일 필요없이 키보드로만 빠르게 원하는 정보를 가져올 수 있다장점이 있습니다.

cmd를 아시는 분들은 터미널과 매우 유사하다고 생각하실 수 있는데요. 사실 유닉스의 터미널은 윈도우 계열에서의 명령 프롬포트 창 cmd과 거의 같습니다. 둘다 명령어를 입력하는 창이라는 공통점이 있죠.

🌏 인자와 옵션

우리는 앞서 cal을 통해 현재의 달력을 봤습니다. 그런데 cal을 이용해서 미래의 달력을 보고 싶으면 어떻게 해야할까요?

이처럼 커맨드를 자신이 원하는대로 사용하기 위해서는 인자옵션이라는 것이 필요합니다. 먼저, 인자부터 사용해보겠습니다.

cal 2077

이렇게 cal 옆에 연도를 적어주면 그 해에 해당하는 모든 달력이 출력됩니다.

2077과 같이 커맨드 옆에 적어주는 것인자(argument)라고 합니다. 인자는 커맨드의 동작 대상을 지정하는 역할을 합니다. 인자는 여러개 올 수 있는데요.

cal 3 2077

이렇게 하면 2077년의 3월 달력이 출력됩니다.

이처럼 cal에 인자를 하나 썼을 때는 연도로 인식하지만 두 개를 적었을 때는 앞을 월로, 뒤를 연도로 인식합니다. 이렇게 커맨드에 인자를 쓰면 커맨드를 좀 더 자신이 원하는대로 사용할 수 있습니다.

이번에는 두번째 방법인 옵션을 활용해보겠습니다.

cal -y

이렇게 하면 올해의 전체 달력이 출력됩니다.

-y는 연도를 나타내는 year의 줄임말입니다. 이와 같이 하이픈 뒤에 문자를 써서 나타내는 것을 커맨드의 옵션(option)이라고 합니다. 옵션은 커맨드의 구체적인 동작 방식을 지정하는 역할을 합니다. 위 사례의 경우, 현재 연도를 출력하라는 지시를 준 것입니다.

지금까지 배운 내용을 정리해보겠습니다. 커맨드는 인자와 옵션을 줌으로써 원하는 결과를 만들 수 있습니다. 인자와 옵션은 정해진 방식에 맞춰 사용해야 합니다.

커맨드 하나만 해도 인자와 옵션을 활용하는 방법이 다양하기 때문에 이 모두를 외우는 것은 어렵습니다. 가장 좋은 방법은 각 커맨드의 사용법과 원리만 잘 익혀두고 궁금한 점이 생길 때에는 인터넷을 찾아가며 사용하는 것입니다.

그렇다면 인자와 옵션은 어떤 차이점을 가지고 있을까요?

앞서 인자는 커맨드가 작동할 대상을 지정하기 위해 사용되고 옵션은 커맨드가 구체적으로 어떤 방식으로 동작할지를 지시하기 위해 사용된다고 했습니다. 그리고 하이픈(-)이 있는 옵션과 다르게 인자는 하이픈이 없습니다.

이런 식으로 인자와 옵션은 형식적인 측면(하이픈 여부)과 의미적인 측면(커맨드에서 어떤 성격의 지시를 내리는지)에서 차이가 납니다.

🌏 옵션에 대해 알아야 할 것

옵션 중에는 그 뒤에 어떤 값을 한 칸 띄우고 이어서 적어야 하는 것들이 있습니다. 예를 들어 cal 커맨드의 옵션 중에는 현재 날짜가 있는 달로부터 그 이전 달들의 달력도 함께 출력해주는 -B 옵션이 있는데요. -B는 before의 줄임말입니다.

cal -B 2

이렇게 -B에 2라는 값을 주면 현재 달로부터 그 이전의 2개 달의 달력도 함께 출력해줍니다.

이렇게 옵션에 주는 값옵션의 값(value) 혹은 옵션의 인자(argument)라고 합니다. cal 커맨드의 옵션 중 이렇게 값을 줘야 하는 옵션에는 -A도 있습니다. -A는 after의 줄임말인데요. -A 옵션을 주면 현재 달로부터 그 이후에 있는 달들의 달력도 출력할 수 있습니다.

cal -A 3

만약 값을 줘야 하는 옵션에 값을 주지 않으면 어떻게 될까요? 그럼 에러 메세지가 뜹니다.

cal: option requires an argument -- A

이 문구를 해석하면 -A 옵션에 값(여기서는 argumnet라는 단어가 쓰였네요)이 없다고 하고 있습니다. 그리고 이 에러 메세지 아래에는 cal 커맨드의 일반적인 사용법들을 출력해줍니다. 이 사용법대로 작성하라는 뜻이겠죠? 이렇게 값을 줘야 하는 옵션은 반드시 값을 줘야한다는 사실을 잊지 마세요.

옵션은 동시에 여러 개를 사용할 수 있습니다.

cal -B 2 -A 3

위 결과를 보면 현재 달인 4월을 기준으로 앞뒤의 달력이 더 출력되었네요.

이에 더해, 값을 줘야 하는 옵션이든 값을 주지 않는 옵션이든 자유롭게 섞어 쓰는 것이 가능합니다. cal 커맨드의 옵션 중에서 값을 주지 않는 옵션으로는 -j 옵션이 있습니다. -j 옵션을 쓰면 모든 날짜를 1월 1일 기준으로 몇 번째 날짜인지 표시하는 방식으로 달력을 출력해줍니다.

cal -B 2 -A 3 -j

날짜가 들어갈 자리에 다른 수들이 들어가 있죠? 이 수들이 바로 1월 1일 기준으로 지나간 날들을 의미합니다.

마지막으로 한 가지 더 알려드리자면 여러 옵션을 동시에 쓸 때는 하이픈(-) 하나 뒤에 여러 옵션의 이름을 써도 됩니다.

cal -B 1 -jA 1

혹은,

cal -jB 1 -A 1

그런데 이렇게 겹쳐 쓸 때에는 주의할 점이 있습니다. 값을 주는 옵션과 주지 않는 옵션을 잘 구분해서 사용해야 된다는 건데요.

cal -Bj 1 -A 1

혹은,

cal -B 1 -Aj 1

과 같이 값을 주지 않는 옵션이 옵션의 값 앞에 나오면 안됩니다. 이렇게 되면 -j에게 옵션의 값을 주라는 것으로 인식되기 때문입니다.

배운 내용을 정리하면 이렇습니다.

  1. 옵션에는 값을 줘야하는 옵션과 값을 주지 않아도 되는 옵션이 있다.
  2. 여러 개의 옵션을 동시에 사용할 때는 하이픈 하나 뒤에 옵션들의 이름을 이어서 쓸 수는 있다
  3. 그러나, 값을 줘야 하는 옵션이 있다면 값을 줘야하는 옵션을 가장 뒤에 써야 한다.

🌏 공식 매뉴얼

앞서 커맨드의 사용법과 원리만 익히고 모르는 부분은 인터넷을 참고하라고 했습니다. 인터넷에서 커맨드 사용법을 검색할 때는 단순히 커맨드의 이름을 검색하면 됩니다.

그런데 이보다 더 쉬운 방법이 있는데요. 바로 커맨드 공식 매뉴얼을 참고하는 것입니다. 커맨드 man을 입력하면 공식 매뉴얼에서 원하는 커맨드의 사용법을 볼 수 있습니다. man은 manual의 줄임말입니다. man의 사용법은 man 인자(궁금한 커맨드 이름)과 같이 man 뒤에 궁금한 커맨드의 이름을 입력하면 됩니다.

man cal


위 사진이 바로 cal의 공식 매뉴얼입니다. 이 매뉴얼 안에는 어떤 옵션들이 있는지, 이 옵션들을 사용하면 어떻게 되는지 등이 나와 있습니다.

여기서 ! 한 줄씩 아래로 내리고 싶으면 아래 방향키를, 한 페이지를 내리고 싶으면 스페이스를 누르면 됩니다. 반대로 한 줄씩 위로 올리고 싶으면 위 방향키를, 한 페이지를 올리고 싶으면 b(backward)를 누르면 됩니다.

영어로 되어 있기 때문에 처음 읽을 때는 어려워보일 수 있지만 옵션을 몇 개 가져와서 연습해보면 금방 어떤 뜻인지 이해하기 쉬워질 겁니다.

공식 메뉴얼의 구성을 알아볼까요? 공식 메뉴얼에는 섹션, 메뉴얼 이름과 커맨드의 이름, 커맨드의 실행, 커맨드에 대한 더 자세한 설명 부분으로 나누어져 있습니다.

위 사진에서 CAL(1)의 1은 공식 매뉴얼의 전체 내용 중 몇 번째 섹션에 해당하는 곳인지를 말합니다. 대부분의 유닉스 계열의 운영체제는 아래와 같은 섹션으로 구성된 공식 매뉴얼을 가지고 있습니다.

지금 당장 모든 섹션을 알 필요는 없지만 우리가 사용하는 대부분의 커맨드들이 1번 섹션에 해당하는 것만은 알아두시길 바랍니다.

NAME 부분은 커맨드의 이름과 커맨드에 대한 간단한 설명을 나타내고 SYNOPSIS 부분은 커맨드의 실행 방법사용 가능한 형식(인자, 옵션들의 조합)을 보여줍니다. 대괄호 안에 있는 것들이 사용 가능한 옵션이며, 대괄호가 없는 것인자입니다.

마지막으로 DESCRIPTION 부분은 커맨드에 대한 좀 더 자세한 설명과 각 옵션에 대한 설명을 담고 있습니다.

매우 직관적인 구성이죠? 사실 매뉴얼의 모든 설명을 보기란 쉽지 않습니다. 커맨드 하나에도 많은 내용이 있기 때문이죠. 따라서, 간단한 용법은 인터넷 검색을 참고하고 전반적인 설명이나 옵션에 대해 더 자세히 알고 싶을 때 man을 이용하면 좋을 것 같습니다.

공식 매뉴얼부터 나가려면 q(quit)를 누르면 됩니다.


이번 시간에는 CLI 환경에서 커맨드를 입력하는 첫 걸음을 떼어 봤습니다. 보기와는 다르게 어렵지 않아 참 다행인 것 같네요. 몇몇 인자와 옵션에 익숙해지면 더 많은 활용이 가능할 것 같습니다.

다음 시간에는 CLI 환경에서 디렉토리와 파일에 접근하는 방법에 대해 함께 알아보겠습니다.

* 이 자료는 CODEIT의 '유닉스 커맨드 라인' 강의를 기반으로 작성되었습니다.
profile
There's Only One Thing To Do: Learn All We Can

0개의 댓글