小编Ern*_*t A的帖子

Grep 行,但让第一行通过

考虑以下来自 的输出df

Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        23G  6.1G   16G  29% /
udev             10M     0   10M   0% /dev
tmpfs           397M  420K  397M   1% /run
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           1.8G  904K  1.8G   1% /run/shm
/dev/sda6       890G  324G  521G  39% /home
/dev/sdb1       459G  267G  169G  62% /home/user/mnt
none            4.0K     0  4.0K   0% /sys/fs/cgroup
Run Code Online (Sandbox Code Playgroud)

我怎样才能只显示"/dev"以标题开头并保留标题的行,而过滤掉其他所有内容。我还想不必诉诸于使用临时文件或变量?注意:标题取决于语言环境,因此您无法使用正则表达式捕获它。

shell grep pipe text-processing

30
推荐指数
4
解决办法
3万
查看次数

GLOBIGNORE 如何运作?

根据 bash 的手册页:

   GLOBIGNORE
          A colon-separated list of patterns defining the set of filenames
          to be ignored by pathname expansion.  If a filename matched by a
          pathname  expansion  pattern also matches one of the patterns in
          GLOBIGNORE, it is removed from the list of matches.
Run Code Online (Sandbox Code Playgroud)

然而在实践中...

$ bash --noprofile --norc
bash-4.2$ touch .bar
bash-4.2$ echo .*
. .. .bar
bash-4.2$ GLOBIGNORE=.
bash-4.2$ echo .*
.bar
Run Code Online (Sandbox Code Playgroud)

为什么..从匹配列表中删除?据我所知,模式 .不匹配..,是吗?

shell bash filenames wildcards

16
推荐指数
1
解决办法
8922
查看次数

扩展为点文件但不扩展为“..”的 Shell 文件名模式?

最近我遇到了一个小事故,这是由一个以意想不到的方式扩展的贝壳图案造成的。我想更改/root目录中一堆点文件的所有者,所以我做了

chown -R root .*
Run Code Online (Sandbox Code Playgroud)

自然,.*扩大到..这有点灾难。

我知道bash可以通过调整一些 shell 选项来改变这种行为,但是在默认设置下,是否有任何模式可以扩展到目录中的每个点文件,但不能扩展到...

shell filenames wildcards dot-files

14
推荐指数
2
解决办法
2392
查看次数

如何找到 ext4 文件系统的偏移量?

我的硬盘出现故障,无法写入或读取磁盘的第一个扇区。它只会给出 I/O 错误,仅此而已。磁盘上还有其他区域(大部分)看起来不错。我正在尝试挂载一个分区 (ext4),看看我是否可以访问一些我想要恢复的文件。由于该mount命令支持一个offset选项,即使分区表不可读和不可写,我也应该能够挂载文件系统。问题是如何找到偏移量。ext4 工具似乎都没有这个特殊功能。

filesystems partition ext4 data-recovery

12
推荐指数
2
解决办法
2万
查看次数

邮件假脱机的目的是什么?

如果我理解正确,线轴是一个临时存储位置。传统上,邮件存储在“邮件池”中,即/var/spool/mail目录中的一个邮箱,用户应该在那里取走它。因此,根据这种观点,一旦邮件被阅读,就应该将其删除或移动到其他地方——很可能是在用户主目录的某个地方。

这种处理邮件的方式对我来说似乎效率不高。诸如此类的程序在哪里procmail适合该计划?如果您有一个 MDA 可以自动将您的邮件存储到您的主目录中的文件夹中,那么为什么还要保留一个邮件假脱机呢?

email

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

为什么 Xft 忽略字体设置?

如下所示,我的 Xft 设置与我的 fontconfig 设置完全匹配:

$ xrdb -query | grep -i xft
Xft.antialias:  1
Xft.autohint:   1
Xft.dpi:    96
Xft.hinting:    1
Xft.hintstyle:  hintmedium
Xft.lcdfilter:  lcddefault
Xft.rgba:   none

$ fc-match --verbose :family=Mono:size=12 | grep '^.\(hint\|anti\|auto\|dpi\|rgba\|lcd\)'
    antialias: True(w)
    hintstyle: 2(i)(w)
    hinting: True(w)
    autohint: True(w)
    dpi: 96(f)(w)
    rgba: 5(i)(w)
    lcdfilter: 1(i)(w)
Run Code Online (Sandbox Code Playgroud)

不幸的是,Xft 似乎忽略了这些设置,并且根本没有做任何暗示。我可以在 GUI Emacs 或运行命令中看到这一点

pango-view --backend=xft --font='Mono, 12' -t 'Xft - X FreeType interface library'
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

将渲染与开罗后端生成的渲染进行比较:

pango-view --backend=cairo --font='Mono, 12' -t 'Xft - X FreeType interface library'
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

fonts fontconfig xft

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

如何在awk中使用^#$作为记录分隔符?

你如何告诉 awk#在一行中单独使用一个字符作为记录分隔符?问题是你不能说RS="^#$"因为^匹配文件的开头,而RS="#\n"不是行的开头,并且也不起作用,因为它匹配#不在行开头的字符。

$ data='#
first record, first field
first record, second field
#
second record, first field#
second record, second field
'
Run Code Online (Sandbox Code Playgroud)

然后打印每条记录的第一个字段,使用RS="#\n"

$ printf "%s" "$data" | awk '
  BEGIN { RS="#\n"; FS="\n" }
  /./ {print $1}
  '
first record, first field
second record, first field
second record, second field
Run Code Online (Sandbox Code Playgroud)

最后一行是错误的,因为它不是第一个字段而是第二个字段。预期的输出是

first record, first field
second record, first field#
Run Code Online (Sandbox Code Playgroud)

awk

8
推荐指数
1
解决办法
4437
查看次数

如何在终端中生成序列“\e[Z”?

它绑定到menu-completeGNU readline。

$ bind -p|grep menu
"\e[Z": menu-complete
# menu-complete-backward (not bound)
# old-menu-complete (not bound)
Run Code Online (Sandbox Code Playgroud)

我觉得是Meta-东西。

terminal keyboard escape-characters

4
推荐指数
1
解决办法
440
查看次数

查看 fontconfig 设置

有没有办法可以查看 fontconfig 当前使用的设置?

我试图弄清楚为什么字体在 XFCE 会话中看起来更好,而不是在我启动裸 X 会话时(没有窗口管理器,没有 Xsettings 守护程序,只是一个终端)。

xorg fontconfig

4
推荐指数
1
解决办法
2452
查看次数

awk - 从标准输入读取程序和输入?

awk 是否可以从标准输入读取程序和输入?

我希望能够将文件通过管道传输到以下函数。

process_data () {
  awk -f - <<EOF
{print}
EOF
}
Run Code Online (Sandbox Code Playgroud)

注意:实际程序较长,不能作为命令行参数传递,我宁愿不使用临时文件。

目前它不输出任何东西。

$ yes | head | process_data 
$ 
Run Code Online (Sandbox Code Playgroud)

shell io-redirection awk here-document

2
推荐指数
1
解决办法
2281
查看次数

如何使用 \n 作为分隔符将数据附加到变量?

新行字符似乎丢失了,即使它们出现在引号中。

foo=
for i in 1 2 3; do
    foo="$foo$(printf '\n')$i"
done

echo "$foo"
123
Run Code Online (Sandbox Code Playgroud)

现在在实践中,我不想\n在第一个元素之前添加 a ,所以我会使用 a${foo:+$(printf '\n')}代替,但首先我必须弄清楚为什么上面的代码不起作用。

shell

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

`du` 的输出是什么意思?

我做了一个目录的递归副本,但根据du这两个目录有不同的大小。

$ cp -r site2 site
$ du site
838048  site/ca.oslin.org
276108  site/hts-cache
1114196 site
$ du site2
838360  site2/ca.oslin.org
276116  site2/hts-cache
1114516 site2
$ du -b site
582078187   site/ca.oslin.org
282724514   site/hts-cache
864830213   site
$ du -b site2
582393579   site2/ca.oslin.org
282724514   site2/hts-cache
865145605   site2
$ ls -a site2/ca.oslin.org/|wc -l
103060
$ ls -a site/ca.oslin.org/|wc -l
103060
$ diff -r site site2
$
Run Code Online (Sandbox Code Playgroud)

disk-usage

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