Bash select 명령을 사용하여 다른 디렉토리 내용을 표시하는 방법은 무엇입니까?

Bash select 명령을 사용하여 다른 디렉토리 내용을 표시하는 방법은 무엇입니까?

지금까지 몇 가지 Bash 예제를 찾았습니다.선택하다기능 사용법 및논리적 구성 옵션또는별표 하나(즉 select s in *).마지막 항목에는 실제 디렉터리 내용이 모두 나열됩니다.

그래서 다음 사항을 알고 싶습니다.

  1. 무슨 뜻이에요 *?

  2. 다른 디렉토리의 내용을 표시하는 방법은 무엇입니까?
    (시도했지만 opt=$( ls path )실패 select s in "$opt[@]")

관련 링크나 예시를 환영합니다.

답변1

이것은 *... 불리운다"전반적인 상황” 그리고 bash에 의해 “현재 디렉터리의 모든 파일”로 확장되므로 기본적으로 현재 디렉터리에 있는 모든 파일의 공백으로 구분된 목록으로 확장됩니다(이것은 일반적으로 많은 bash 내장 파일에서 예상되는 형식 구조입니다. 흐름 제어).

Globs는 그 자체로 사용할 수 있을 뿐만 아니라 표현식의 일부로도 사용할 수 있으므로 bash 변수에 디렉토리가 저장되어 있다고 가정합니다 $searchdir(bash 변수 이름을 지정할 때 실수로 중요한 환경 변수를 덮어쓰지 않도록 주의하세요. 예를 들어 $PATH)

select s in "$searchdir"/*

"의 모든 파일"로 확장됩니다 $searchdir.

노트그러나 디렉토리가 비어 있으면 표현식은 다음과 같습니다.문자 그대로의 의미 *(또는 말 그대로 /the/actual/value/pointed/to/by/searchdir/*) 설정하지 않는 한nullglob옵션통과하다

shopt -s nullglob

그런 다음 디렉터리가 비어 있으면 glob 구성이 일반적으로 원하는 빈 목록으로 확장됩니다.

관련 정보