BASH:想从桌面获取大小吗
我在用iMac,我想从桌面上得到它的尺寸 文件:/Users/admin/Desktop 我使用以下命令:BASH:想从桌面获取大小吗,bash,macos,terminal,Bash,Macos,Terminal,我在用iMac,我想从桌面上得到它的尺寸 文件:/Users/admin/Desktop 我使用以下命令: du -h -d1 /Users/admin/Desktop > temp 2> /dev/null | tail -1 temp 当我使用这个管道时,它不工作,但是当我一个接一个地使用这两个命令时,它工作。现在我的问题是,有人知道为什么管道不工作,但这两个代码一个接一个工作吗?重定向>temp将标准输出保存在文件temp(当前目录)中 因此,去掉管道(因为du的STDOUT
du -h -d1 /Users/admin/Desktop > temp 2> /dev/null | tail -1 temp
当我使用这个管道时,它不工作,但是当我一个接一个地使用这两个命令时,它工作。现在我的问题是,有人知道为什么管道不工作,但这两个代码一个接一个工作吗?重定向
>temp
将标准输出保存在文件temp
(当前目录)中
因此,去掉管道(因为du
的STDOUT和STDERR(to/dev/null
)已经被使用),直接在文件上使用tail
:
tail -1 temp
一起使用代码>作为命令分隔符:
du -h -d1 /Users/admin/Desktop >temp 2>/dev/null; tail -1 temp
只有在du
成功的情况下,才能使用短路操作符&&
运行tail
:
du -h -d1 /Users/admin/Desktop >temp 2>/dev/null && tail -1 temp
另外,您可以不使用标准输出,使用管道将其传递到tail
的标准输入:
du -h -d1 /Users/admin/Desktop 2>/dev/null | tail -1 temp
最简单的选项:
您只需使用s选项即可:
du -hs /Users/admin/Desktop
这将为您提供作为参数传递的文件夹的总和
以前的答案:
这对于您试图实现的目标来说有点太复杂了,即获取以下输出的最后一行:
du -h -d1 /Users/admin/Desktop
我会像这样将其导入sed
以使其正常工作(许多选项之一):
如果您确实想使用tail
,这将变成:
du -h -d1 /Users/admin/Desktop | tail -1
这里不需要管道,用分号代替。你到底想做什么?我正在做一个小任务,我必须从几个文件夹中获取大小,当我使用“du-h-d1/Users/admin/Desktop”时,我会收到多行输出,我只想获取桌面大小的行。谢谢你的回复,但即使我使用你的解决方案,我仍然不能只得到一行作为输出。
du -h -d1 /Users/admin/Desktop | tail -1