我想运行time
命令来测量几个命令的时间。
我想做的是:
time
输出写入文件STDERR
从我正在测量的命令中写入STDERR
我确实不希望做的是
到目前为止我尝试过的:
/usr/bin/time --output=outtime -p echo "a"; echo "b";
不起作用,time
仅在第一个上运行。
/usr/bin/time --output=outtime -p ( echo "a"; echo "b"; )
不起作用,(
是意外令牌。
/usr/bin/time --output=outtime -p { echo "a"; echo "b"; }
不起作用,“没有这样的文件或目录”。
/usr/bin/time --output=outtime -p ' echo "a"; echo "b";'
不起作用,“没有这样的文件或目录”。
time ( echo "a"; echo "b"; ) 2>outtime
不起作用,因为它全部重定向STDERR
到outtime
; 我只想要time
那里的输出。
而且当然,
time --output=outime echo "a"; …
我有这个输入:
sdkxyosl 1
safkls 2
asdf--asdfasxy_asd 5
dkd8k jasd 29
sdi44sw 43
asasd afsdfs 10
rklyasd 4
Run Code Online (Sandbox Code Playgroud)
我需要这个输出:
sdi44sw 43
dkd8k jasd 29
asasd afsdfs 10
asdf--asdfasxy_asd 5
rklyasd 4
safkls 2
sdkxyosl 1
Run Code Online (Sandbox Code Playgroud)
所以我需要按最后一列对行进行排序。
我不知道一行有多少列。
我只是想不通,该怎么做。我没有“perl 权限”。我只有 sed、awk、cut 等的平均脚本能力。
有人知道怎么做吗?
我正在学习 Docker,我非常喜欢它。
但是,我不明白,为什么docker需要root权限来制作容器、读取日志等。
我读过一些像这样的文章
https://docs.docker.com/articles/security/
但我所看到的只是“docker需要根权限,因为它可以访问根文件夹”。好吧,我不介意以非 root 用户身份运行 docker,并让他们只能访问外部系统中非 root 用户拥有的文件夹。
为什么这是一个问题?
是否有任何版本的tree
命令将文件结构显示为树结构,但以一种我可以交互方式遍历的方式?
为什么我需要它 - 我正在尝试使用左侧的“交互式”vim
和分屏来模拟 TextMate 项目抽屉。但如果有比这更好的方法,我也想听听。screen
tree
Sort 的排序与我预期的不同。我有这个文件,叫它text.txt
:
a 1
A 1
a 11
Run Code Online (Sandbox Code Playgroud)
(空间总是一\t
)
我想按第一列的字母顺序对它们进行排序。但是,当我这样做时
sort -k 1 text.txt
我得到的只是 text.txt 文件,没有排序。如果我用已弃用的+ -
符号来做,意思是
sort +0 -1 text.txt
它可以正常工作,这意味着我得到了这个输出:
a 1
a 11
A 1
Run Code Online (Sandbox Code Playgroud)
只有当我的行仅因大小写而异时,才会发生这种奇怪的行为。我究竟做错了什么?
我有一个命令,它为我提供了一个文件列表,每行一个。文件名是“正常的” - 没有空格,不需要转义括号等。
现在我想将该命令通过管道传递给类似的东西,test -f
并且当且仅当所有文件都存在时才返回 true 。(带有 0 行的行为可能是未定义的,我不在乎。)
所以,像
make_list_of_files | test -f
Run Code Online (Sandbox Code Playgroud)
但实际上工作。
“Bashisms”是允许的,因为我在 Bash 中需要它。
这些文件不在同一目录中,但它们在当前目录的子目录中,并且路径中有目录名称,例如
dir/file1
dir/file2
dir2/file3
Run Code Online (Sandbox Code Playgroud) 当我尝试ssh
从带有 debian 的 linux 计算机访问我的服务器时,我得到了
Host key verification failed.
我在网上找到的唯一帮助是从~/.ssh/known_hosts
...中删除密钥,我不仅如此,我删除了整个~/.ssh
只是为了确定,它也没有帮助,我仍然有Host key verification failed.
错误。
我想 grep 一个文件,我想获取所有具有特定环境变量的行(准确地说,$PWD
)。
当然,只用
cat file | grep '/'$PWD'/'
Run Code Online (Sandbox Code Playgroud)
不工作,因为$PWD
包含斜线。
我试图弄清楚如何正确地做到这一点,但我只提出了奇怪且过于复杂的解决方案。有什么简单的方法可以做到这一点?
我有一个像这样的简单 Dockerfile
FROM ubuntu:latest
ADD run.sh /run.sh
CMD /run.sh
Run Code Online (Sandbox Code Playgroud)
在 run.sh 中,我有这个(也非常简单)
#!/bin/bash
nohup awk 'BEGIN { while (c++<50) print "y" }' &
sleep 10
Run Code Online (Sandbox Code Playgroud)
当我在 docker 中从 bash 运行脚本时(即,在交互模式下运行 bash 命令并在那里运行脚本),它工作正常——它进入“nohup 模式”并且输出正确地在 nohup.out 中。
但是,如果我使用/run.sh
默认命令运行 docker 容器,则输出仍为 STDOUT。
我究竟做错了什么?为什么它可以在 docker 和 bash 中工作,但只能在交互模式下运行?
我看到 Linux 手册页中有两个不同的实用程序,但我不明白其中的区别。
有sync(1)和sync(8),它们看起来出奇的相似。
https://linux.die.net/man/8/sync
https://linux.die.net/man/1/sync
我可能错过了一些明显的东西。它们有何不同?(我知道sync(2)是一个系统调用。但是sync(1)和sync(8)看起来基本相同?)