小编Cod*_*ome的帖子

为什么我的 grep 表达式需要使用 $'string' 来匹配制表符?

如果您使用此代码:

echo -e '\t\t\tString' | grep '^[\t]*String'
Run Code Online (Sandbox Code Playgroud)

结果是空白,因为它不匹配,但是:

echo -e '\t\t\tString' | grep $'^[\t]*String'
Run Code Online (Sandbox Code Playgroud)

作品。我发誓我一定在我的脚本和终端中使用了第一行的代码一百次,从来没有使用过这样的“$”字符,而且它似乎总是有效。最近有什么变化吗?为什么需要“$”字符?还是我做错了什么?

bash quoting regular-expression

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

是否可以用八进制值表示 +X 符号权限?

是否可以用八进制值表示 +X 符号权限?chmod(1) 手册页说:

仅当文件是目录或已对某些用户具有执行权限时才执行/搜索

这意味着chmod -R g+X仅当已经为用户、组或其他设置了执行位时才会添加组执行权限。您当然可以使用 find 以艰难的方式做到这一点:

find . -perm /ugo=x -exec chmod g+x {} \;
Run Code Online (Sandbox Code Playgroud)

然而,在不使用findtest首先检查文件权限的情况下,如何用八进制模式做同样的事情并不明显。这是可能的,还是有些区域符号和八进制权限不重叠?

permissions chmod

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

如何在 X.org 中自动禁用笔记本电脑的内置键盘?

发行版和 X.org 版本信息

我正在使用 Ubuntu 12.10 和 xserver-xorg/quantal 1:7.7+1ubuntu4。

在 X11 中禁用内置键盘

我有一台带有内置键盘的笔记本电脑,无法识别某些字母。我目前正在通过打开终端并运行以下 shell 函数来禁用内置键盘:

disable_keyboard () {
  xinput --set-int-prop $(
    xinput --list |
    ruby -ane 'if /AT.*keyboard/ then puts $_.match(/(?<==)\d+/) end'
  ) "Device Enabled" 8 0
}
Run Code Online (Sandbox Code Playgroud)

这通过禁用内置的AT Translated Set 2 键盘同时允许我的外部Chicony USB 键盘继续工作来工作(尽管是手动的)。但是,我真的希望在 X11 会话期间自动发生这种情况。

我尝试如下修改我的 X.org 配置:

# /etc/X11/xorg.conf.d/disable_keyboard
Section "InputClass"
    Identifier      "disable built-in keyboard"
    MatchIsKeyboard "on"
    MatchProduct    "AT Translated Set 2 keyboard"
    Option          "Ignore"    "on"
EndSection
Run Code Online (Sandbox Code Playgroud)

然而,这要么不是 X11 启动时的来源,要么不是正确的咒语。如何正确配置 X11 以仅 …

xorg keyboard x11

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

如何防止 iptables 计算空链上的字节和数据包?

背景

我偶尔会有需要在维护窗口中使用的防火墙规则,但不希望在其余时间处于活动状态(因此会消耗 CPU 周期或减慢网络接口速度)。我在需要时添加规则,然后想要将其清除并阻止 iptables 对流经过滤器链的数据包和字节进行计数

问题:过滤器表仍然在计数

我第一次在详细模式下检查 iptables 时,数据包和字节计数始终为零。例如:

$ sudo iptables -L -n -v
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
Run Code Online (Sandbox Code Playgroud)

然而,一旦过滤器表被初始化,刷新表或重置计数器并不会阻止表继续对数据包和字节进行计数。例如:

$ sudo iptables -F; sleep 5; sudo iptables -L -n …
Run Code Online (Sandbox Code Playgroud)

iptables kernel-modules

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