저는 NAS(WD-MBL)에서 OpenWRT를 실행하고 있으며 명령줄을 통해 유지 관리를 더 쉽게 하기 위해 일련의 별칭을 함께 모으고 있습니다.
예상대로 작동합니다.
alias shutdown='sync && wait && sudo hdparm -Y /dev/sda && wait && sudo halt'
NAS를 정상적으로 종료합니다.
daemon='sudo /etc/init.d/rsyncd status'
rsync
데몬의 상태를 알려주세요 .
drivechk='sudo dmesg | grep -i ext4-fs | grep -i sda'
잘못된 종료로 인한 파일 시스템 문제에 대해 경고합니다 e2fsck
. 필수 .
tempchk='sudo smartctl -d ata -A /dev/sda | grep Temperature | cut -c 5-8,87-89'
드라이브 온도를 알려주세요.
하지만 제가 일할 수 없는 것이 하나 있습니다:
fschk='df -h | grep -vE '^Filesystem|/dev/root|tmpfs'| awk '{ print $5 " " $1}'
명령줄에서 스탠자를 실행하면 예상대로 작동합니다.
~$ df -h | grep -vE '^Filesystem|/dev/root|tmpfs'| awk '{ print $5 " " $1}'
53% /dev/sda1
37% /dev/sda3
~$
이것을 파일에 추가하고 /etc/profile.d/custom.sh
로그아웃했다가 다시 로그인하면 터미널에 다음이 표시됩니다.
~$ ssh [email protected]
--- snip ---
BusyBox v1.33.2 (2022-02-16 20:29:10 UTC) built-in shell (ash)
alias: }' not found
~$
그런 다음 별칭을 실행하면 다음과 같은 결과를 얻습니다.
~$ fschk
>
명령줄에서 목록을 쿼리 하면 alias
추가한 목록이 인쇄물에 다르게 나타나는 것을 볼 수 있습니다.
~$ alias
--- snip ---
fschk='df -h|grep -vE '"'"'^/dev/root|tmpfs'"'"'|awk '"'"'{print '
--- snip ---
:~$
하지만 내 입력 파일에는 없습니다.
~$ cat /etc/profile.d/custom.sh
--- snip ---
alias fschk="df -h|grep -vE '^/dev/root|tmpfs'|awk '{print $5 " " $1}'"
--- snip ---
~$
ash
다른/단순화된 버전이 있는 것 같지만 alias
알아낼 수 없습니다.
어떤 조언이라도 대단히 감사하겠습니다.
미리 감사드립니다.
최고,
폴리카프로락톤
답변1
당신의 별칭,
alias fschk="df -h|grep -vE '^/dev/root|tmpfs'|awk '{print $5 " " $1}'"
큰따옴표로 묶인 문자열입니다. 따라서 쉘은 별칭을 정의할 때 문자열의 합계를 확장합니다 $5
. $1
이를 방지하려면 달러 기호를 피하십시오.
별칭에는 큰따옴표도 포함되어 있으며, 문자열이 깨지지 않도록 하려면 이스케이프해야 합니다.
alias fschk="df -h | grep -vE '^/dev/root|tmpfs' | awk '{ print \$5 \" \" \$1}'"
또는 단순화하려면 다음을 수행하십시오.
alias fschk="df -h | awk '!/^\/dev/root|tmpfs/ { print \$5, \$1 }'"
또는 쉘 함수로(이 경우 인용에 전혀 문제가 없습니다):
fschk () {
df -h | awk '!/^\/dev/root|tmpfs/ { print $5, $1 }'
}
df
또는 다음 정보 가 추출되지 않도록 파일 시스템 목록을 허용하는 기능으로 :
fschk () {
df -h | (
IFS='|'
pat="${*:+^($*)}" awk 'ENVIRON["pat"] == "" || $0 !~ ENVIRON["pat"] { print $5, $1 }'
)
}
이렇게 사용하시면 될 것 같아요
fschk tmpfs /dev/root
실제로 모든 별칭을 셸 함수로 다시 작성하는 것이 좋습니다. 별칭은 사소한 일에만 유용합니다.