当我管道到gzip它不能接受 stdin 我应该使用xargs将 stdin 转换为参数
$ls
1.txt
$ls |xargs gzip && ls
1.txt.gz
Run Code Online (Sandbox Code Playgroud)
一切都好 。但是当我想压缩 cpio 存档文件时
$ls | cpio -ov | gzip > archive.cpio.gz
Run Code Online (Sandbox Code Playgroud)
也没关系,这ls | cpio -ov | xargs gzip 不起作用。为什么在第二种情况下gzip接受标准输入而不能接受参数?
我知道,Shell 变量不可用于父壳或子壳,而壳环境可用于子壳。
当我想将当前目录永久添加到 PATH 时,我可以通过两种方式进行:
1-正常方式:
[sinoosh@localhost ~]$ vi ~/.bash_profile
Run Code Online (Sandbox Code Playgroud)
2-不带导出命令
然后注销我看到与正常方式相同的结果
"1"&"2" 之间没有区别。我们可以说该export命令在我们不想永久添加到环境变量的时候有用吗?
这里发生了什么事?
我学会了如何在 find 命令中使用通配符,但今天我看到了一个奇怪的行为。
当我在搜索位置以外的任何地方时,我不需要单引号或双引号进行通配
$ pwd
/home
$ find / -name *c
...
it is ok
Run Code Online (Sandbox Code Playgroud)
但
$ pwd
/
$ find / -name *c
find: paths must precede expression: proc
Usage: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]
Run Code Online (Sandbox Code Playgroud)
发生什么事?
我有一个文件:
$ cat file
1 c
8 a
1 b
5 f
Run Code Online (Sandbox Code Playgroud)
我认为sort开头的命令比较所有行的第一个字段并对它们进行排序,然后对于这些行具有相同的第一个字段,然后再次开始对第二个字段进行排序,如下所示:
$sort file
1 b
1 c
5 f
8 a
Run Code Online (Sandbox Code Playgroud)
我读到了选项k 1和k 1,1:之间的区别:k 1排序键可能会继续到行尾,但k 1,1它应该只对第一个字段进行排序而不考虑其他字段,但是:
$sort -k 1 file
1 b
1 c
5 f
8 a
$sort -k 1,1 file
1 b
1 c
5 f
8 a
Run Code Online (Sandbox Code Playgroud)
为什么的输出sort= sort k 1=sort k 1,1等于?
我认为输出sort k 1,1 file应该是
1 …Run Code Online (Sandbox Code Playgroud)