Fedora 25를 사용하고 있으며 내 bash 프로필에 다음 별칭을 추가했습니다.
alias releasenotes="dnf updateinfo --refresh info `dnf check-update | cut -d '.' -f 1 | xargs` | less"
( https://bugzilla.redhat.com/show_bug.cgi?id=1405191dnf updateinfo info
때문에 스트레이트 업을 사용할 수 없습니다 )
내 별칭은 작동하지만 명령을 실행하는 데 약 10 초가 걸리며, bash는 프로파일이 소스 될 때 모든 별칭을 구문 분석하고 유효성 검증하므로 새 쉘을 작성하면 10 초가 정지됩니다. 이것은 성가신 일입니다.
bash가 별칭을 구문 분석하고 유효성을 검사하지 않도록 할 수있는 방법이 있습니까?
답변
가장 좋은 추측은 별칭 정의 주위에 작은 따옴표 를 사용해야한다는 것입니다 .
큰 따옴표를 사용할 때 셸 변수는 별칭 정의 단계 (구문 분석 및 유효성 검사와 같은)와 백틱 또는 $ (명령)과 같은 셸 대체로 내용으로 대체됩니다.
더 나은 설명은이 유닉스 SE 질문에 있습니다 !
그래도 프롬프트가 다시 빠르게로드되지 않으면 별명 대신 쉘 함수를 정의하십시오.
편집 : 컷 인수를 언급 한 빠른 인용과 같이 큰 따옴표로 바꾸는 것을 잊지 마십시오.
답변
bash
인용 된 문자열을 해석 중이며 해당 해석은 내장 dnf check-update
명령을 실행합니다 . 이 실행은 별명을 지정하는 기본 dnf updateinfo
명령이 아니라 별명 정의 중에 시간이 걸리는 것 입니다. 다음을 기반으로 한 훌륭한 예를 시도 sleep
하고 alias
그 자체가 5 초가 걸리는 방법에 주목하십시오 .
alias sleep5="echo 'wake' ; `sleep 5` ; echo 'done'"
해석을 피하려면 작은 따옴표를 사용하십시오.
alias releasenotes='dnf updateinfo --refresh info `dnf check-update | cut -d "." -f 1 | xargs` | less'
cut
인수를 큰 따옴표 로 바꾸는 것을 잊지 마십시오 .