디렉토리의 크기를 가져와 변수에 저장

디렉토리의 크기를 가져와 변수에 저장

서버 B의 디렉터리 크기를 가져오기 위해 서버 A에서 명령을 실행하려고 합니다.

이 명령을 사용하여 빈 결과를 얻었습니다.

ssh root@remoteIP -t "size=$(du -hs /var/www/somesite.com/dir1/dir2/uploads/ |
                             awk '{print $2}'); echo ${size} ; bash --login"

답변1

방금 로컬에서 테스트했습니다. size=$(ssh xxx@yyy "du -hs ./.config | cut -f 1") ; echo $size

내 터미널에서 올바른 출력을 얻었습니다.

size=$(ssh xxx@yyy "du -hs ./.config | cut -f 1") ; echo $size
8.0K

답변2

명령에 전달하려는 줄은 다음 SSH과 같습니다.

size=$(du -hs /some/dir | awk '{print $1}'; echo ${size} ; bash --login

당신은해야합니다보호하다일부수치이 줄은 처음부터 시작됩니다설명했다:$그리고'.

  • 좋은 방법보호하다$이다간단한 인용문을 사용하세요 ', 큰따옴표는 "작동하지 않기 때문입니다.

    'blah blah "blah blah" blah' # sounds easy
    
  • 간단한 인용문을 보호하세요줄을 둘러싸기 위해 간단한 따옴표를 사용하는 경우에는 조금 더 까다롭습니다. 한 가지 방법은 간단한 따옴표 앞에 닫는 간단한 따옴표(예)를 넣은 다음둘러 싸다간단한 인용문큰따옴표 "마지막으로 간단한 인용문으로 다시 엽니다.

    'blah blah '"'"'blah blah'"'"' blah' # mmh well
    

또한 당신이 원하는 것은 인쇄하는 것입니다첫 번째field awk, 두 번째 필드가 아닙니다. 그래서 print $1아니야 print $2.

다음은 잘 보호된 라인입니다.

ssh root@remoteIP -t 'size=$(du -hs /some/dir | awk '"'"'{print $1}'"'"')
                      echo ${size} ; bash --login'

관련 정보