이 와일드 카드가 예상대로 작동하지 않는 이유는 무엇입니까?


11

내 사용자 폴더에, 나는 같은 폴더가 D의 ropbox, D의 ocuments를, D ownloads & D UMP.

ls a*이름이로 시작하는 모든 파일을 나열해야합니다 a. 권리? 그러나 명령을 ls d*표시 dump하면 그냥 표시하는 대신 ls of dump 디렉토리가 표시됩니다. 그리고 명령을로 주면 D로ls D* 시작하는 모든 접기의 ls가 표시됩니다.

그래서 내가 이해하지 못한 부분은 무엇입니까?

편집 : 스크린 샷 첨부 ls 스크린 샷

답변:


17

bash 맨 페이지에 따르면 :

bash는 각 단어에서 *,? 및 [문자를 검색합니다. 이러한 문자 중 하나가 나타나면 단어는 패턴으로 간주되고 패턴과 일치하는 알파벳순으로 정렬 된 파일 이름 목록으로 대체됩니다.

그리고 정보 노드에서 ls

`ls '프로그램은 파일에 대한 정보 (디렉토리를 포함한 모든 유형의)를 나열합니다. 옵션과 파일 인수는 평소와 같이 임의로 혼합 할 수 있습니다.

디렉토리 인 옵션이 아닌 명령 줄 인수의 경우 기본적으로 'ls'는 디렉토리의 내용을 재귀 적으로 나타내지 않으며 이름이 '.'로 시작하는 파일은 생략합니다. 옵션이 아닌 다른 인수의 경우 기본적으로`ls '는 파일 이름 만 나열합니다. 옵션이 아닌 인수를 지정하지 않으면 'ls'는 현재 디렉토리의 내용을 나열합니다.

따라서 yo give ls d*이면 d * 는 d로 시작하는 모든 파일 / 디렉토리 이름의 정렬 된 목록으로 확장됩니다. 그래서 당신은 명령이됩니다

ls dump

덤프 디렉토리 이름 그대로 당신은 디렉토리 '덤프'하지만 줄 때 모든 파일의 목록을 얻을 수 있도록 ls D*, D * 로 확대된다 " 데스크톱 문서 다운로드 보관 명령이가되도록을"

ls Desktop Documents Downloads Dropbox

이들 모두가 디렉토리이므로 개별 디렉토리에 파일 목록이 표시됩니다. 현재 디렉토리에 D 로 시작하는 파일이 있으면 별도로 나열되었을 것입니다.


2
사소한 추가 사항 : 둘 이상의 디렉토리가 인수로 제공되면 ls는 컨텐츠를 나열하기 전에 각 디렉토리의 이름을 표시합니다. 단일 디렉토리에는 적용되지 않습니다.
— Marcel Stimberg 16:10에

감사! 그것은 나의 의심을 없애었다. 나는 p으로 시작 ls p*하는 파일이 없기 때문에 존재하고 a ls P*는 Pictures Public 폴더를 보여 주기 때문에 파일을 표시했습니다 . 내가 디렉토리 이름을 만들 때 그리고 똥을 , 그것은에 나타났다ls p*
— Ashfame

7

ls d *와 D *는 각각 d *와 D *와 일치하는 파일과 폴더를 나열합니다. 동작은 동일합니다. 테스트에 실수가 있었을 것입니다.

폴더 내용이 아닌 폴더 이름 만 나열하려면 "-d"를 사용해야합니다.

ls -d D*

내가 스크린 샷을 첨부 한보고를 확인하시기 바랍니다
— Ashfame

0

위에서 제안했듯이 -d옵션은 갈 길입니다. 첨가

alias ld='ls -d'

내 ~/.bashrc파일에 잘 작동합니다.


3
이 별칭을 사용하면에 대한 액세스를 쉽게 차단 ld - The GNU linker하여 OP가 프로그램을 컴파일하고 연결하지 못하게합니다. alias lsd='ls -d'대신 사용하십시오 . 로 뭔가 별명을하기 전에 foo항상 type foo있는지 확인하기 위해 foo이미 무언가의 이름으로 사용하고, 결정하는 경우 별칭 재정의 이전에 대한 접근의 손실의 편의foo
— waltinator
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.