获取目录的大小并将其存储到变量中

获取目录的大小并将其存储到变量中

我尝试从服务器 A 运行命令来获取服务器 B 上目录的大小。

我使用此命令得到了空白结果:

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
    

另外你想要的是打印第一的字段awk,而不是第二个字段。所以print $1,不是print $2

这是您受到良好保护的线路:

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

相关内容