unix option

hyeseong-dev·2020년 12월 1일
0

[왕초보]unix

목록 보기
7/12
post-thumbnail

옵션파보기

이번에는 옵션에 대해서 좀 더 자세히 알아볼게요. 옵션 중에는 그 뒤에 어떤 값을 한 칸 띄우고 이어서 적어야 하는 것들이 있습니다.
예를 들어 cal 커맨드의 옵션 중에는 현재 날짜가 있는 달로부터 그 이전 달들의 달력도 함께 출력해주는 -B 옵션이 있는데요.

-B 옵션은 before의 줄임말입니다.
아래 그림과 같이 -B 옵션에 값으로 2를 주면, 현재 달로부터 그 이전의 2개 달의 달력도 함께 출력합니다.

신기하죠? 이렇게 옵션에 주는 값을 옵션의 값(value)이라고 하거나 옵션의 인자(argument)라고 합니다. cal 커맨드의 옵션 중 이렇게 값을 줘야 하는 옵션에는 -A 옵션도 있는데요. -A 옵션은 after의 줄임말입니다. -A 옵션을 주면 현재 달로부터 그 이후에 있는 달들의 달력도 출력할 수 있습니다. 아래 그림과 같이 -A 옵__션에 값으로 3을 주면 현재 달부터 그 뒤의 3개 달의 달력까지 함께 출력할 수 있습니다.

만약 값을 줘야 하는 옵션에 값을 주지 않는다면 어떻게 될까요? -A 옵션에 값을 주지 않고 실행했더니 아래 그림처럼 커맨드가 실행되지 않네요.

지금 위 그림에서 option requires an argument -- 'A' 라고 쓰여진 부분 보이시나요? -A 옵션에 값(여기서는 옵션의 인자를 나타내기 위해 value 대신 argument라는 단어가 쓰였습니다)이 없다는 뜻입니다. 그리고 그 밑에는 cal 커맨드의 일반적인 사용법들이 출력되어 있습니다. 이런 사용법 중에 하나로 써야 한다는 뜻인데요. 값을 줘야 하는 옵션은 꼭 값을 주고 써야 한다는 사실을 기억하세요.

그리고 옵션은 여러 개를 쓰는 것도 가능합니다. 아래 그림처럼 -B 옵션과 -A 옵션을 함께 쓸 수도 있습니다.

위 그림의 결과를 보면 지금 현재 달로부터 2달 전까지의 달들, 현재 달로부터 3달 후까지의 달들의 달력이 모두 출력됩니다. 이렇게 옵션은 여러 개를 동시에 쓸 수도 있습니다.

그리고 값을 줘야 하는 옵션이든 값을 주지 않는 옵션이든 자유롭게 섞어 쓸 수 있는데요. cal 커맨드의 옵션 중에서 값을 주지 않는 옵션으로는 -j 옵션이 있습니다. -j 옵션을 쓰면 모든 날짜를 1월 1일을 기준으로 몇 번째 날짜인지 표시하는 방식으로 달력을 출력하는데요. 방금 전 썼던 옵션들과 함께 써보면

아까와 같이 6개 달의 달력이 출력되지만 각 날짜를 자세히 보면 차이가 있습니다. 지금 12월의 마지막 날짜를 보면 365라고 적혀있죠? 1월 1일을 기준으로 365번째 날이라는 뜻입니다. -j 옵션이 적용되었기 때문에 그런 겁니다.

이렇게 값을 줘야 하는 옵션이든, 값을 주지 않는 옵션이든 섞어 쓸 수 있습니다.

마지막으로 한 가지 더 알려드릴게요. 여러 옵션을 동시에 쓸 때는 하이픈(-) 하나 뒤에 여러 옵션의 이름을 써도 됩니다. 예를 들어 바로 위에 입력한 내용은 아래와 같이 입력해도 같은 결과가 나옵니다.

지금 옵션 -j와 옵션 -A를 -jA로 함께 쓴 거 보이시나요? 이렇게 써도 같은 결과가 나옵니다.

아래 그림처럼 옵션 -B에 붙여서 -jB라고 써도 잘 나옵니다

그런데 이렇게 여러 옵션을 함께 쓸 때는 주의할 점이 있습니다. 예를 들어 위 그림의 커맨드에서 -B 옵션과 -j 옵션의 순서를 바꿔서 cal -Bj 2 -A 3 로 적었다고 해봅시다.

그럼 에러가 출력됩니다. -Bj 2, 이 부분에 문제가 있기 때문에 그런 겁니다. 이렇게 쓰면 -B 옵션에는 아무런 값을 안 주고 -j 옵션에 2라는 값을 준다는 뜻이 되어버립니다. 하지만 정작 값을 줘야 하는 건 -B 옵션이고, -j 옵션은 값을 주면 안 되는 옵션입니다. 지금 거꾸로 된 겁니다. 그래서 cal -Bj 2 -A 3 가 이상하게 해석되어서 에러가 출력된 것입니다. 값을 줘야 하는 옵션과 값을 주지않는 옵션을 하이픈 하나에 합쳐서 나타내려면 값을 줘야 하는 옵션을 더 뒤에 써야 합니다. 그래야 그 다음에 쓰는, 지금 2와 같은 값이, 값을 줘야 하는 옵션의 값으로 인식될 수 있습니다.

정리하면

  1. 옵션에는 값을 줘야 하는 옵션과, 값을 주지 않아야 하는 옵션이 있고,
  2. 옵션 여러 개를 동시에 쓸 때는 하이픈(-) 하나 뒤에 옵션들의 이름을 이어서 쓰는 방식이 있는데
  3. 이때 값을 줘야 하는 옵션이 있다면 값을 줘야 하는 옵션을 가장 뒤에 써야 커맨드가 정상적으로 동작합니다.
profile
멋진 백엔드 개발자가 꿈입니다.

0개의 댓글