考虑以下来自 的输出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"以标题开头并保留标题的行,而过滤掉其他所有内容。我还想不必诉诸于使用临时文件或变量?注意:标题取决于语言环境,因此您无法使用正则表达式捕获它。
根据 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)
为什么..从匹配列表中删除?据我所知,模式
.不匹配..,是吗?
最近我遇到了一个小事故,这是由一个以意想不到的方式扩展的贝壳图案造成的。我想更改/root目录中一堆点文件的所有者,所以我做了
chown -R root .*
Run Code Online (Sandbox Code Playgroud)
自然,.*扩大到..这有点灾难。
我知道bash可以通过调整一些 shell 选项来改变这种行为,但是在默认设置下,是否有任何模式可以扩展到目录中的每个点文件,但不能扩展到.和..?
我的硬盘出现故障,无法写入或读取磁盘的第一个扇区。它只会给出 I/O 错误,仅此而已。磁盘上还有其他区域(大部分)看起来不错。我正在尝试挂载一个分区 (ext4),看看我是否可以访问一些我想要恢复的文件。由于该mount命令支持一个offset选项,即使分区表不可读和不可写,我也应该能够挂载文件系统。问题是如何找到偏移量。ext4 工具似乎都没有这个特殊功能。
如果我理解正确,线轴是一个临时存储位置。传统上,邮件存储在“邮件池”中,即/var/spool/mail目录中的一个邮箱,用户应该在那里取走它。因此,根据这种观点,一旦邮件被阅读,就应该将其删除或移动到其他地方——很可能是在用户主目录的某个地方。
这种处理邮件的方式对我来说似乎效率不高。诸如此类的程序在哪里procmail适合该计划?如果您有一个 MDA 可以自动将您的邮件存储到您的主目录中的文件夹中,那么为什么还要保留一个邮件假脱机呢?
如下所示,我的 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)
你如何告诉 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) 它绑定到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-东西。
有没有办法可以查看 fontconfig 当前使用的设置?
我试图弄清楚为什么字体在 XFCE 会话中看起来更好,而不是在我启动裸 X 会话时(没有窗口管理器,没有 Xsettings 守护程序,只是一个终端)。
awk 是否可以从标准输入读取程序和输入?
我希望能够将文件通过管道传输到以下函数。
process_data () {
awk -f - <<EOF
{print}
EOF
}
Run Code Online (Sandbox Code Playgroud)
注意:实际程序较长,不能作为命令行参数传递,我宁愿不使用临时文件。
目前它不输出任何东西。
$ yes | head | process_data
$
Run Code Online (Sandbox Code Playgroud) 新行字符似乎丢失了,即使它们出现在引号中。
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')}代替,但首先我必须弄清楚为什么上面的代码不起作用。
我做了一个目录的递归副本,但根据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)