我想要一个简单的命令(可能使用find
)来查找所有文件 > 某种大小(以字节、千字节、兆字节或千兆字节为单位),并在找到它们时打印它们的大小。
例如,此命令查找所有大于 10 MB 的文件,但遗憾的是不显示其大小:
find . -size +10M
Run Code Online (Sandbox Code Playgroud)
ls
格式,主要答案可能不适用于空格ncdu
在 Linux 上,以下是NCurses 磁盘使用工具的一些示例输出:
命令:
ncdu /boot
Run Code Online (Sandbox Code Playgroud)
ncdu 1.14.1 ~ Use the arrow keys to navigate, press ? for help
--- /boot -----------------------------------------------------
100.2 MiB [##########] initrd.img-5.13.0-28-generic
100.2 MiB [######### ] initrd.img-5.13.0-27-generic
11.2 MiB [# ] vmlinuz-5.11.0-46-generic
9.7 MiB [ ] vmlinuz-5.13.0-28-generic
9.7 MiB [ ] vmlinuz-5.13.0-27-generic
9.7 MiB [ ] vmlinuz-5.13.0-25-generic
8.0 MiB [ ] /grub
5.7 MiB [ ] System.map-5.13.0-28-generic
5.7 MiB [ ] System.map-5.13.0-27-generic
5.7 MiB [ ] System.map-5.13.0-25-generic
5.6 MiB [ ] System.map-5.11.0-46-generic
252.0 KiB …
Run Code Online (Sandbox Code Playgroud) man time
显示它有一些选项,例如,将输出写入time
文件而不是stderr
:
-o FILE, --output=FILE
Run Code Online (Sandbox Code Playgroud)
所以,我尝试使用它
$ time -o out.txt ls
-o: command not found
real 0m0.081s
user 0m0.070s
sys 0m0.012s
Run Code Online (Sandbox Code Playgroud)
这不行!它说-o: command not found
。
证明out.txt
不存在:
$ cat out.txt
cat: out.txt: No such file or directory
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
我如何使用像-o somefile.txt
with这样的选项time
?
我使用 Linux Ubuntu 18.04bash
作为我的终端。
相关但不重复:
alias ll='ls -alF'
在 Ubuntu 18.04 和 20.04(Ubuntu在 中定义)上,我看到“软盘驱动器”~/.bashrc
设备的以下输出:/dev/fd
为了ls
:
Run Code Online (Sandbox Code Playgroud)$ ls /dev/fd 0 1 2 3
为了ll
:
Run Code Online (Sandbox Code Playgroud)$ ll /dev/fd lrwxrwxrwx 1 root root 13 Nov 5 11:46 /dev/fd -> /proc/self/fd/
我可以看到/dev/fd
是 的符号链接/proc/self/fd/
,所以我ll
看到:
Run Code Online (Sandbox Code Playgroud)$ ll /proc/self/fd/ total 0 dr-x------ 2 username username 0 Nov 8 19:01 ./ dr-xr-xr-x 9 username username 0 Nov …
显然 MacOsping
有一个-o
选项,意思是“收到第一个成功响应后返回”或类似的东西。请参阅:https ://stackoverflow.com/a/6119327/4561887 。
Linux Ubuntu 上有等效的吗?我们怎样才能最好地达到同样的结果?
我的版本是ping utility, iputils-s20161105
,由返回的ping -V
。
更新:我在这里找到了 MacOs 文档: https: //ss64.com/osx/ping.html
Run Code Online (Sandbox Code Playgroud)-o Exit successfully after receiving one reply packet.
在 bash 脚本的顶部eu
之后是什么意思#!/bin/bash -eu
?
通常我用这个hashbang/shebang开始我的 bash 脚本:
#!/bin/bash
Run Code Online (Sandbox Code Playgroud)
但我只是遇到了一个
#!/bin/bash -eu
Run Code Online (Sandbox Code Playgroud)
我不知道为什么有一个-eu
那里。阅读这些man bash
页面似乎对我没有帮助,但也许我忽略了一些东西。
不是重复的:
这不是使用 `set -eu` 时 EXIT 和 ERR 陷阱的正确行为的重复。
在这个问题下面的评论中引用@ilkkachu,直接解决这个问题:
... -e 和 -u 如何处理陷阱或其他任何东西与它们和其他单字符选项在命令行上的给出方式完全无关。
我同意这一点。这些是不同的问题和答案,背后有着不同的动机。这个问题是如此不同,我什至在尝试理解我自己的问题的答案时,都不会想通过查看它的标题或描述来点击它,而且答案也大不相同。