10.4.매개변수와 와일드 카드
10.4.1.매개변수의 뜻과 매개변수 사용법
매개변수는 도스 명령어의 매개체로 사용하는 변수입니다.
명령어 방식을 사용할 때는 명령어에 다양한 옵션을 덧붙여 사용합니다. 이때 사용하는 명령어 자체와 옵션과 파일 이름을 매개변수(parameter)라고 부릅니다. 변수는 일반적인 개념의 변수와 같습니다. 어떤 내용이 담길지 모른다는 뜻이죠. 매개변수는 리눅스 명령어를 사용할 때 매개체로 사용하는 변수를 말합니다. 이를 통해서 도스 명령어를 좀더 세밀하게 제어할 수 있습니다.
매개변수를 이용하면 도스 명령어를 좀더 세밀하게 제어할 수 있습니다.
예를 들어서 'ls'라고만 치면 리눅스 파일목록을 보여줍니다. 그러나 확장자가 html인 파일만 보고 싶다면 ls 명령어 뒤에 *.html을 덧붙여서 사용합니다. 즉 'ls *.html'이라고 명령을 내립니다. 이때 ls 뒤에 붙는 '*.html'이라는 낱말이 매개변수에 해당하는 겁니다.
변수라는 말을 사용하는 까닭은 이때 사용하는 낱말의 내용은 바뀔 수 있기 때문입니다. 즉 '*.html'이 될 수도 있지만 '*.com'이 될 수도 있고, 'test.html이'이 될 수도 있습니다. 아래와 같이 다양한 내용을 매개변수로 사용할 수 있습니다.
[보기1] ls 명령어에서 매개변수의 활용
ls *.exe
ls *.html
ls kim.*
ls kim.html

**사진: ls *.html 명령으로 html 파일만 봅니다.
그런데 이 매개변수는 하나만 덧붙일 수 있는 것이 아닙니다. 여러 가지 매개변수를 한꺼번에 사용할 수도 있습니다. ls 명령어 역시 매개변수를 여러 개 사용할 수 있습니다.
[보기2] ls 명령어만 사용한 경우
(1) ls *.html
(2) ls -al *.html
(1)번은 매개변수로 *.html을 사용했습니다. 추가로 사용한 매개변수는 *.* 하나입니다. (2)번은 매개변수로 -a와 *.html을 사용. 즉 매개변수는 2개입니다.

**사진: 'ls -al *.html'의 실행 결과
매개변수는 여러 개를 추가해 사용할 수 있습니다.
매개변수는 3개 4개 5개 등으로 계속 추가해 사용할 수 있습니다. 따라서 리눅스 명령어를 배운다는 것은 곧 파일 이름과 파일 이름 뒤에 붙여 쓸 수 있는 매개변수가 어떤 기능을 하는 지와 파일 이름을 쳤을 때 나타나는 결과를 배운다는 뜻입니다.
ls라고만 치면 파일목록을 단순하게 보여주지만 -al 옵션을 매개변수로 덧붙이면 좀더 자세하게 모든 파일의 정보를 보여줍니다. 이처럼 리눅스 명령어는 매우 다양한 조건을 걸어서 명령을 내릴 수 있습니다. 다른 모든 명령어도 마찬가지 이유로 여러 가지 매개변수를 붙여서 사용합니다.
명령어 자체도 매개변수로 계산하며, 0번 매개변수로 다룹니다.
보통의 경우 'ls -al *.html'이라는 명령어의 매개변수가 몇 개냐고 물을 경우 2개라고 대답합니다. ls 다음에 사용된 -al이 첫 번째 매개변수이고 *.html이 두 번째 매개변수입니다. 이 말은 틀린 말이 아닙니다. 그러나 프로그램을 짜는 사람들이 볼 때는 틀린 대답입니다. ls라는 명령 자체도 하나의 매개변수로 계산하기 때문입니다.
따라서 'ls -al *.html'이라는 명령어의 매개변수는 명령어 자신인 ls를 포함하여 3개입니다. 이렇게 따지면 리눅스 명령어는 명령어 자체를 한 개의 매개변수로 계산하므로 최소한 한 개 이상의 매개변수를 사용하는 셈입니다. 그러나 보통의 경우에는 명령어 자체를 매개변수로 치지 않습니다. 보는 시각에 따라서 명령어 자체를 매개변수로 보느냐 안 보느냐 하는 차이가 있다는 점을 기억해두기 바랍니다.
물론 컴퓨터는 명령어나 파일 이름 자체를 매개변수로 봅니다. 그리고 컴퓨터에서는 대부분의 숫자가 0번부터 시작하는데 명령어나 파일 이름 자체는 0번 매개변수에 해당합니다.
10.4.2.와일드카드 기호 *와 ?
도스에서는 와일드카드로 * 와 ? 기호가 사용됩니다.
파일 이름은 글판에 표시된 자모(알파벳)과 숫자 몇 가지의 특수기호 등만 사용될 수 있습니다. 예를 들어서 파일 이름과 확장자로 /, ?, =, +, * 등의 특수 기호는 사용할 수 없습니다.
이런 특수 기호는 리눅스 명령어에서 특별한 의미로 사용되기 때문입니다. 이 중에서 *과 ?는 와일드카드로 사용되는 특수기호입니다.
와일드카드는 공동문자 또는 함께글자라고 부릅니다. 와일드카드는 도스에서 어떤 명령어를 사용하기 위해서 파일의 이름을 일일이 치는 것이 너무 어렵기 때문에 여러 개의 파일을 한꺼번에 지정할 수 있도록 하는 특수한 기호입니다. 여기에는 두 가지의 와일드카드가 사용됩니다. 별표(*)와 물음표(?)입니다.
별표(*)는 별표 이후의 모든 글자를 포함하며, 물음표(?)는 그 자리의 한 글자만 대체할 때 사
용합니다.
별표(*) 다음에는 어떤 문자가 오더라도 상관 없이 모두 포함된다는 뜻입니다. 즉 '*.*'이라고 치면 모든 파일을 다 포함한다는 뜻입니다. 물음표는 그 위치의 한 글자만을 대체할 수 있습니다.
예를 들겠습니다. 리눅스에서 파일 목록을 보여주는 명령어는 ls인데 ls 명령어 뒤에 파일을 이름을 적으면 해당 파일을 보여줍니다. 이때 다음과 같이 매개변수로 와일드카드를 사용할 수 있습니다.
[보기1] 와일드카드 사용법
(1) ls *.html
(2) ls kjt.*
(3) ls ki?.html

**사진: 'ls kjt.'의 실행 결과
(1) 번은 파일 이름은 무엇이라도 상관 없으며 확장자가 html 파일을 보여달라는 뜻입니다. (2)번은 kjt이라는 이름을 가지고 확장자는 무엇이라도 상관 없는 파일을 표시하라는 뜻입니다. (3)번은 처음 두 글자는 ki로 시작하고 세 번째 글자는 무엇이라도 상관 없으며 확장자는 html 파일을 표시하라는 뜻입니다.
보기를 좀더 들겠습니다. 디렉토리에 들어있는 파일들을 표시해주는 명령어인 ls을 사용할 때의 보기입니다.
[보기2] 와일드카드 사용 보기
ls 모든 파일을 다 보여줍니다.
ls test.txt test.txt라는 파일 하나만 찾아서 보여줍니다.
ls test.* test라는 이름을 가진(확장자는 어떤 것이라도 좋은) 모든 파일을 보여줍니다.
ls te*.* 파일 이름이 te로 시작하는(te로 시작하는 파일이면 파일 이름이 몇 자이건, 확장자가 무엇이건 상관 없이) 모든 파일을 보여줍니다.
ls *.* 모든 파일을 다 보여줍니다. 어떤 이름이나 어떤 확장자를 가져도 좋다는 뜻입니다.
ls *.txt 파일 이름은 어떤 것이라도 상관 없고 확장자가 txt인 파일을 모두 보여줍니다.
ls tes?.* tes로 시작하고 4번 째 글자는 아무거나 상관 없는 파일을 보여줍니다. 4글자여야 한다는 점에 주의합니다.
ls tes?.??? tes로 시작하는 4자 짜리 파일 이름과 3자 짜리 확장자를 가진 파일을 보여줍니다.
ls ????.?? 파일 이름은 4자, 확장자는 2자로 된 모든 파일들을 보여줍니다.
ls ??st.* 처음 두 자는 모르고 세 번째와 네 번째 글자가 st인 파일을 모두 보여줍니다.
별표가 여러 개의 문자를 대신할 수 있는데 비해 물음표는 특정 위치의 딱 한 글자만을 대신할 수 있습니다. 따라서 여러 개의 문자를 대신하고자 한다면 물음표를 여러번 사용하면 됩니다. 'ls kim?.???'이라고 하면 kim으로 시작하는 4자 짜리 파일 이름을 가지고 있으며 파일 확장자는 세자로 된 파일을 모두 보여달라는 소리입니다. 'ls boo?.*'이라고 하면 boo으로 시작하는 4자 짜리 파일 이름을 가지고, 확장자는 아무거라도 상관 없다는 뜻입니다. 즉 확장자가 한 자 짜리도 좋고, 두 자라도 좋고, 세 글자라도 좋다는 뜻입니다.

**사진: 'ls boo?.html'의 실행 결과
와일드카드는 모든 리눅스 명령어에서 사용 가능한 기호입니다.
물음표는 한 글자만을 나타내기 때문에 여러 개를 써주어야 하는 불편함이 있으나 원하는 특정 위치에 사용할 수 있다는 편리함이 있습니다. 반면 별표는 뒤의 문자를 모두 포함한다는 뜻을 지니기 때문에 앞부분에는 사용할 수 없는 약점을 지니지만, 광범위한 게 사용할 수 있으므로 실제로는 별표가 월등하게 많이 사용됩니다.
와일드카드는 ls 명령에서만 사용하는 것이 아니고 대부분의 리눅스 명령어에서 사용 가능합니다. 와일드카드는 조금만 연습해보면 금방 그 효용성을 느낄 수 있습니다.