내가 원하는 것은 bash 명령/별칭에 대한 사용자 정의 플래그를 정의할 수 있는 것입니다. 예를 들어 다음과 같습니다.
alias ll='ls -Alh'
alias la='ls -A'
alias l='ls -lh'
ls -d */
그러나 위 명령을 실행할 때마다 실행되는 -d와 같은 사용자 정의 플래그를 설정하여 ll -f
자세한 목록에 숨겨진 디렉터리만 나열하려고 합니다.
답변1
마지막 문장에서 무엇을 원하시는지 잘 모르겠습니다. 죄송합니다;)
나는 당신이 ll
다음과 같은 기능을 원한다고 가정합니다.ls -Alh
와는 별개로호출될 때 ll -f
- 이 경우 숨겨진 디렉토리만 나열되어야 합니다. 이것이 원하는 것이 아니라면 상대적으로 조정하기가 쉽습니다. 특별한 의미를 갖는 모든 플래그를 명령에 추가 getopts
하고 각 플래그에 대한 사례를 작성하면 됩니다. 기본값은 항상 break
함수에 특별한 의미가 없는 플래그를 전달하면 ls -Alh
실행되도록 해야 합니다.
어쨌든, 여기에 호출된 함수를 정의할 수 있는 스크립트가 있습니다 ll
(별칭은 원하는 작업을 수행할 만큼 강력하지 않습니다). 당신은해야합니다원천, 즉 source <script>
스크립트이므로 함수가 정의됩니다. unalias ll
스크립트를 받기 전에 주의하세요. 그렇지 않으면 예상치 못한 일이 발생할 수 있습니다.
#!/usr/bin/env bash
ll() {
while getopts ":f" opt; do
case $opt in
f)
command ls -Ald .*/
return 0
;;
\?)
break;
esac
done
command ls -Alh "$@"
}
ll -f
이렇게 하면 동작이 ls -Ald .*/
다음과 같이 모든 숨겨진 디렉터리를 나열하게 됩니다 . ll
사인을 주면아니요 -f
이는 기본적으로 호출됩니다 ls -Alh "$@"
( $@
간단히 "모든 인수"를 나타냄). 예를 들어 ll -d Desktop
이라고 쓰면 ls -Alhd Desktop
실행됩니다. 플래그가 전달되지 않은 경우 ll
에만 실행됩니다 ls -Alh "$@"
.