小编Ste*_*nny的帖子

mkdir -p 用于文件

mkdir -p将创建一个目录;它还将根据需要创建父目录。

文件是否存在类似的命令,它将根据需要创建文件和父目录?

shell directory mkdir

36
推荐指数
5
解决办法
1万
查看次数

干净地复制并粘贴到 grep 等命令中,而不会导致终端 echo 使输出混乱?

我有一些测试输出,看起来像

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 …

shell grep clipboard

14
推荐指数
4
解决办法
2917
查看次数

如何查找 ls -l 中的字段的含义

我的问题不是每个字段的含义,我的问题是如何确定每个字段的含义。

手册页只是说明 -l 使用长列表格式,而没有描述长列表格式的含义。

ls

9
推荐指数
1
解决办法
2294
查看次数

检测可选函数参数(标量)

考虑这个脚本:

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 是否有办法判断何时没有提供参数?

awk function arguments

8
推荐指数
2
解决办法
614
查看次数

强制POSIX模式

支撑扩展,例如 {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 模式下运行吗?

shell bash posix

7
推荐指数
1
解决办法
1875
查看次数

如何检查 if 语句中不以条件开头?

我想检查如下所示的情况。行不应以# 符号开头:

if[ ! ["$Line" == "#*"] ]; then
Run Code Online (Sandbox Code Playgroud)

但这是行不通的。

shell-script

7
推荐指数
1
解决办法
1万
查看次数

符号链接的大小

当然,符号链接确实占用空间,但只是存储名称和目标所需的空间以及用于其他元数据的几个字节

符号链接实际上对磁盘使用有影响吗?

我的问题是,我们能确定一个符号链接占用了多少字节吗?

$ 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)

是否有一些命令可以打印包含“其他元数据的几个字节”的符号链接的真实大小?

disk-usage symlink ln

7
推荐指数
1
解决办法
5643
查看次数

一元加回归

以前,数字转换可以通过添加零 (+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

awk string gawk

7
推荐指数
1
解决办法
178
查看次数

使用 Ruby 的小型 Linux 发行版

我一直在使用 Puppy Linux 来满足基本的 Linux 需求,但是现在我更喜欢包含 Ruby 的一个,这样就不必下载它了。

我更喜欢可以从 CD 运行的小型发行版,更喜欢较小的发行版以减少启动时间。什么是这个的好选择?

linux livecd distribution-choice ruby small-distribution

6
推荐指数
1
解决办法
1254
查看次数

dd 删除字节范围

鉴于此文件

$ 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)

我更喜欢写回同一个文件,但不同的输出文件也可以。

dd shell-script

6
推荐指数
2
解决办法
2886
查看次数