Midnight Commander(MC), User Menu 사용법 본격 정리에 앞서.

예전부터 이 기능을 써보고 싶었는데, 이제야 팔(즉, 삽질) 여지가 생겼다.
늘 그렇듯, 첫부분 부터 막혔다.
설명서(Man Page)라는게 알고 보면 쉬운데, 모를 땐 백번을 읽어도 이해가 되지 않는다. 친절한 설명서는 대개 돈을 주고 사야하는데, (즉 종이책이든 전자책이든, 누군가 영리를 목적으로 만든 저작물을 사야, 그나마 쉽게 이해를 할 수 있는데..), MC 라는게 워낙에 전문가집단을 위해 만들어졌기에, ‘상냥함’이란 어디서도 찾아볼 수 없다.
대부분 *nix 집단들의 문서가 다 그렇긴 하지만..

맨 처음 부딪힌 항목은 ‘Default Conditions’ 였다. 이게 도대체 뭔지?
설명서엔 이렇게 나와있다.

Default Conditions

Each  menu  entry  may be preceded by a condition. The condition must start from the first column with a '=' character. If the condition is true, the menu entry will be the default entry.

User Menu 를 사용하려면 menu 파일을 편집해서, 내가 원하는 명령어를 넣어야 한다. 이 때, 어떤 조건에서 이 명령어를 쓸 수 있을지를 지정할 수 있는 기능이 있는데, 이게 바로 ‘Default conditions’ 이다.

그런데, 이게 뭔 말인지 도무지 이해가 되지 않는다.
“If the condition is true, the menu entry will be the default entry.”

조건이 맞으면, 기본 항목(Default Entry)가 된다???
몇개 찾아본 관련 문서엔 저렇게만 써있고, 그 이상은 없다.
몸으로 직접 부딪혀 알아내는 수밖에…

….

알고 나니, 저 문장이 이해가 됐다. 말 그대로 Default Entry 가 된다.
일단, 설명은 나중에 하고, menu 파일에 다음과 같은 항목을 넣어보자.

= f \.mp2 | f \.flab
a mp2 인데..
  echo %f


= f \.mp3 | f \.flac
1 뭐 어쩌란 거냐
  echo %f

위 두 항목은, 기본 조건을 각각 mp2 또는 flab, 그리고 mp3 또는 flac 파일로 잡고 있다. 그리고 이 조건에 부합하면, Default Entry 로 하겠다는 뜻이다.

백문이 불여일견.

확장자가 mp2 인 파일 위에서 F2 를 누른 경우
확장자가 mp3 인 파일 위에서 F2 를 누른 경우

보는 그대로다.
mp3 파일 위에서 F2 를 눌러 사용자 메뉴를 부르면, Default 조건을 준 항목이 기본으로 선택된다. bbb.mp2 위에서 불렀을 땐 ‘mp2 인데..’ 가 자동 선택되었고, aaa.mp3 에선 ‘뭐 어쩌란 거냐’가 선택됐다.

만약 오른쪽 패널의 ini 파일 위에서 F2 를 눌렀다면? 내가 넣어놓은 조건과 일치되지 않은 상황이므로, 그냥 맨 첫 항목인 ‘a mp2 인데…’ 에 선택 막대가 위치하게 된다. 이건 기본 선택이 아니고, 그냥 첫자리에 있을 뿐이다.

그럼, 저렇게 그 메뉴로 자동 이동하는 거 말고, 해당 조건이 있을 때만 그 항목이 보이게 할 수는 없나??

있다.
그게 바로 ‘Addition Conditions‘ 로, 지정한 조건이 성립되었을 경우에만 메뉴가 열리게끔 설정할 수 있다.

아직 이 부분에 대해서 명확한 이해가 되고 있진 않은데..

간단하게, 이렇게 하면 mp3/flac 확장자를 가진 파일에 대해서만 다음 메뉴가 뜨고, 그 메뉴를 선택하게끔 할 수 있다.

=+ f \.mp3 | f \.flac
1 mp3/flac 입니다. 뭐 어쩌란 거냐?
  echo %f
mp3 관련 항목이 자동 선택된다.
bbb.mp2 에서 메뉴를 호출하면, 이 항목이 아예 나타나지 않는다.

이렇게 =+(또는 +=) 를 동시에 주면, 조건에 만족하는 경우에만 메뉴 항목이 나타나고, 그 항목을 자동선택하게끔 설정해줄 수가 있다.

자세한 사항에 대해선 2부(?)에서..

One Comment

안녕하세요. 글 남겨주셔서 고맙습니다.