unix option

Hyeseong·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개의 댓글