그것을 사용할 때
df -h | grep /dev/root | awk '{print $5}'
Pi에서 SD 카드 사용량을 얻었습니다.78%
하지만 내가 사용할 때
/usr/bin/ssh -i /path/to/key user@server "df -h | grep /dev/root | awk '{print $5}'"
다른 컴퓨터에서 다음을 얻습니다.
/dev/root 7.2G 5.3G 1.6G 78% /
가득한 df -h
:
Filesystem Size Used Avail Use% Mounted on
/dev/root 7.2G 5.3G 1.6G 78% /
devtmpfs 364M 0 364M 0% /dev
tmpfs 368M 68K 368M 1% /dev/shm
tmpfs 368M 5.2M 363M 2% /run
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 368M 0 368M 0% /sys/fs/cgroup
/dev/mmcblk0p1 60M 21M 40M 35% /boot
tmpfs 74M 4.0K 74M 1% /run/user/1000
답변1
인용 문제가 있습니다. $5
잘못된 시간에 해석되고 있습니다. 적어도 두 가지 해결책이 있습니다:
\
예를 들어$
;/usr/bin/ssh -i /path/to/key user@server "df -h | grep /dev/root | awk '{print \$5}'"
원격으로 실행
df
하지만grep
로컬로 실행합니다awk
. 예를 들어/usr/bin/ssh -i /path/to/key user@server df -h | grep /dev/root | awk '{print $5}'
FWIW, 두 번째 옵션의 버전을 실행하지만 병합 grep
하고awk
/usr/bin/ssh -i /path/to/key user@server df -h | awk '/\/dev\/root/ {print $5}'
답변2
이것은 작동합니다:
/usr/bin/ssh -i /path/to/key user@server "df -h | grep /dev/root | awk '{print \$5}'"
\
이전 포함에 주의하십시오 $
. 이것이 없으면 로컬 쉘은 빈 변수를 확장하여 $5
원격 서버로 보냅니다. 기본적으로 전체 줄을 인쇄합니다.
답변3
$n
완전성을 위해 또 다른 접근 방식은 in이 쉘과 같은 구문의 특별한 경우가 아니라 awk
정수 표현식에 적용되는 연산자라는 사실을 사용하는 것입니다 .$variable
$
(ssh key&remote) "df -h | grep /dev/root | awk '{print $ 5}'"
또는 다음과 같이 결합
(ssh key&remote) "df -h | awk '/\\/dev\\/root/ {print $ 5}'"
# can use [/] instead of ugly \\/ in gawk, but maybe not others
아니면 변수로 더 좋을 수도 있습니다.
(ssh key&remote) "df -h | awk -vm=/dev/root '$ 0 ~ m {print $ 5}'"
그러나 개인적으로 나는 현지에서 활동하는 것을 선호하는 Stephen Harris의 의견에 동의합니다 awk
.