2013-05-24 3 views
1

내 홈 디렉토리에 "ls * s *"라고 입력하면 터미널에 이름과 함께 모든 폴더와 파일이 표시됩니다 (예 : 음악). 하지만 "ls * si *"를 입력하면 아무 것도 표시되지 않습니다 (음악이 나열되어 있어야한다고 생각합니다). 왜 그런가요?와일드 카드 KornShell (ksh)

+1

그것은 음악 속에서 당신을 보여주고 있습니다. 아마도 당신은 아무 것도 가지지 않았을 것입니다.'* si *'는 * i si *에 대해'ls Music /'do '로 번역되고 있습니다; do echo $ i; 완료 '그들에게 – abasu

답변

5

이것은 환상입니다. 와일드 카드는 명령이 실행되기 전에 확장되며, "ls"가 표시하는 내용은 확장 결과 단어 수에 따라 다릅니다. "ls"는 여러 항목을 나열 할 때 목록에있는 각 폴더의 이름을 표시합니다. "ls"는 단 하나의 폴더를 나열 할 때 이름이없는 내용 만 표시합니다.

"ls * s *"를 입력하면 문자열에 "s"가 포함 된 이름이 두 개 이상 있으므로 문자열이 두 개 이상의 이름으로 확장됩니다. 결과는 "ls Desktop Music"과 같은 형식을 입력 한 것과 같습니다. 당신은 "LS * 실리콘 *"문자열 팽창을 입력하면

Desktop: 
foo 

Music: 
iTunes 

: "LS는"여러 가지를 나열 할 때 목록 등을 얻을 수 있도록,이 디렉토리 이름과 각 디렉토리의 내용을 보여줍니다 "si"가 포함 된 디렉토리의 유일한 이름이 "Music"이기 때문에 하나의 이름으로 만 변경됩니다. 결과는 "ls Music"을 입력 한 것과 같습니다. ,

iTunes 

하는 "LS"를 만들기 위해 목록과 일치하는 경우에만 일을하지 자신을 "LS는"하나 개의 폴더를 나열 할 때 같은 목록을 얻을 수 있도록, 그것은, 이름없이 폴더의 내용을 보여줍니다 내용을 보려면 "ls -d * si *"를 사용하십시오. "-d"는 파일을 나열하는 것과 동일한 방식으로 디렉토리를 나열하고 내용을 나열하지는 않습니다.

+0

감사, 나는 그것을 얻었다. 하지만 한 가지 더 질문이 있습니다. 내가 ls -d를 입력하면 나에게 "."을 표시합니다. 무슨 뜻이에요? 모든 폴더 만 표시하면 안됩니까? – CuriousGuy

+1

@CuriousGuy : 단일 마침표 "."는 현재 디렉터리의 이름입니다. "ls"명령에서 내용 목록을 비워두면 기본적으로 "ls."를 입력 한 것처럼 현재 디렉토리가 나열됩니다. 일반적으로 현재 디렉토리의 내용을 나열합니다. "ls -d"를 입력하면 "ls -d"를 입력 한 것처럼 "ls"에 현재 디렉토리의 이름을 나열하도록 요청합니다. –

+0

정말 고마워요. :) – CuriousGuy