mkdir -p将创建一个目录;它还将根据需要创建父目录。
文件是否存在类似的命令,它将根据需要创建文件和父目录?
我有一些测试输出,看起来像
PASS: tests/test_mutex_rmw
PASS: tests/test_mutex_trylock
PASS: tests/test_malloc_irreg
FAIL: tests/ARMCI_PutS_latency
FAIL: tests/ARMCI_AccS_latency
PASS: tests/test_groups
PASS: tests/test_group_split
PASS: tests/test_malloc_group
FAIL: tests/test_accs
FAIL: tests/test_accs_dla
Run Code Online (Sandbox Code Playgroud)
我想过滤输出以仅查看失败。只需从屏幕复制文本并粘贴到 stdin 中以传递到 grep 会很方便,例如
grep FAIL
Run Code Online (Sandbox Code Playgroud)
和 Shift-Ctrl-V(或鼠标中键)复制文本。
我想看到的只是
FAIL: tests/ARMCI_PutS_latency
FAIL: tests/ARMCI_AccS_latency
FAIL: tests/test_accs
FAIL: tests/test_accs_dla
Run Code Online (Sandbox Code Playgroud)
但相反,粘贴的输入会显示在屏幕上,并且由于缓冲,输入会与最终输出混合:
$ grep FAIL
PASS: tests/test_mutex_rmw
PASS: tests/test_mutex_trylock
PASS: tests/test_malloc_irreg
FAIL: tests/ARMCI_PutS_latency
FAIL: tests/ARMCI_AccS_latency
PASS: tests/test_groups
PASS: tests/test_group_split
PASS: tests/test_malloc_group
FAIL: teFAIL: tests/ARMCI_PutS_latency
sts/test_accs
FAIL: tests/test_accs_dla
FAIL: tests/ARMCI_AccS_latency
FAIL: tests/test_accs
FAIL: tests/test_accs_dla
Run Code Online (Sandbox Code Playgroud)
对我来说,首先将输入提供给 cat 然后传递给 grep, 是有意义的cat | grep FAIL …
我的问题不是每个字段的含义,我的问题是如何确定每个字段的含义。
手册页只是说明 -l 使用长列表格式,而没有描述长列表格式的含义。
考虑这个脚本:
function alfa(bravo, charlie) {
if (charlie)
return "charlie good"
else {
return "charlie bad"
}
}
BEGIN {
print alfa(1, 1)
print alfa(1, 0)
print alfa(1, "")
print alfa(1)
}
Run Code Online (Sandbox Code Playgroud)
结果:
charlie good
charlie bad
charlie bad
charlie bad
Run Code Online (Sandbox Code Playgroud)
awk 是否有办法判断何时没有提供参数?
支撑扩展,例如 {a,b,c}不是由 POSIX 定义的。我想在 POSIX 模式下运行我的 shell。使用 Debian 这很简单:
$ bash -c 'echo {a,b,c}'
a b c
$ sh -c 'echo {a,b,c}'
{a,b,c}
Run Code Online (Sandbox Code Playgroud)
但是 Fedora 的行为有所不同:
$ bash -c 'echo {a,b,c}'
a b c
$ sh -c 'echo {a,b,c}'
a b c
Run Code Online (Sandbox Code Playgroud)
我尝试使用--posix选项,但没有效果:
$ sh --posix -c 'echo {a,b,c}'
a b c
Run Code Online (Sandbox Code Playgroud)
Bash 可以强制在 POSIX 模式下运行吗?
我想检查如下所示的情况。行不应以#
符号开头:
if[ ! ["$Line" == "#*"] ]; then
Run Code Online (Sandbox Code Playgroud)
但这是行不通的。
当然,符号链接确实占用空间,但只是存储名称和目标所需的空间以及用于其他元数据的几个字节
我的问题是,我们能确定一个符号链接占用了多少字节吗?
$ touch alfa.txt
$ ln -s alfa.txt bravo.txt
Run Code Online (Sandbox Code Playgroud)
du 和 ls 都报告 8,即“alfa.txt”:
$ du -b bravo.txt
8 bravo.txt
$ ls -l bravo.txt
lrwxrwxrwx 1 Steven None 8 Mar 8 18:17 bravo.txt -> alfa.txt
Run Code Online (Sandbox Code Playgroud)
是否有一些命令可以打印包含“其他元数据的几个字节”的符号链接的真实大小?
以前,数字转换可以通过添加零 (+0)、一元加 (+) 或一元减 (-) 来触发:
$ gawk --version
GNU Awk 4.1.4, API: 1.1 (GNU MPFR 3.1.6-p1, GNU MP 6.1.2)
$ gawk 'BEGIN {print "01" + 0}'
1
$ gawk 'BEGIN {print +"01"}'
1
$ gawk 'BEGIN {print -"01"}'
-1
Run Code Online (Sandbox Code Playgroud)
但是,现在转换只发生在添加零和一元减号时:
$ gawk --version
GNU Awk 4.2.0, API: 2.0 (GNU MPFR 3.1.6-p1, GNU MP 6.1.2)
$ gawk 'BEGIN {print "01" + 0}'
1
$ gawk 'BEGIN {print +"01"}'
01
$ gawk 'BEGIN {print -"01"}'
-1
Run Code Online (Sandbox Code Playgroud)
有谁知道在哪里提到了这个变化或者为什么要这样做?
http://pubs.opengroup.org/onlinepubs/9699919799/utilities/awk.html
我一直在使用 Puppy Linux 来满足基本的 Linux 需求,但是现在我更喜欢包含 Ruby 的一个,这样就不必下载它了。
我更喜欢可以从 CD 运行的小型发行版,更喜欢较小的发行版以减少启动时间。什么是这个的好选择?
鉴于此文件
$ cat hello.txt
hello doge world
Run Code Online (Sandbox Code Playgroud)
我想删除一系列字节以结束这个
$ cat hello.txt
heorld
Run Code Online (Sandbox Code Playgroud)
dd如果可能的话,我想这样做。原因是因为我已经使用dd这种方式覆盖字节
printf '\x5E' | dd conv=notrunc of=hello.txt bs=1 seek=$((0xE))
Run Code Online (Sandbox Code Playgroud)
我更喜欢写回同一个文件,但不同的输出文件也可以。