CentOS Linux 默认允许所有用户使用命令halt和reboot.
如何配置我的系统,以便只有 root 用户有权访问halt/reboot系统?
以下规则按预期工作:
{ rule = { class = "Firefox" },
properties = { tag = tags[2][2] } },
Run Code Online (Sandbox Code Playgroud)
也就是说,Firefox 实例在第二个屏幕的第二个标签上启动。但是,我无法在下一行使用此规则对 jEdit 执行相同操作:
{ rule = { class = "jedit" },
properties = { tag = tags[2][3] } },
Run Code Online (Sandbox Code Playgroud)
jEdit 实例总是在第一个屏幕的第一个标签上弹出。该窗口类看起来是正确的:
$ xprop | grep "^WM_CLASS\|^WM_NAME"
WM_CLASS(STRING) = "sun-awt-X11-XFramePeer", "jedit"
WM_NAME(STRING) = "jEdit - Untitled-1"
Run Code Online (Sandbox Code Playgroud)
除了大写外,它与 Firefox 的结果非常相似:
$ xprop | grep "^WM_CLASS\|^WM_NAME"
WM_CLASS(STRING) = "Navigator", "Firefox"
WM_NAME(STRING) = "How to place jEdit window in Awesome WM? - Unix …Run Code Online (Sandbox Code Playgroud) 我有 2 个几乎相同的greps:
[Alex@localhost tmp]$ grep /bin/bash /etc/passwd
root:x:0:0:root:/root:/bin/bash
AlexL:x:500:500::/home/AlexL:/bin/bash
user1:x:501:501:user1 12345:/home/user1:/bin/bash
Run Code Online (Sandbox Code Playgroud)
对比
[AlexL@localhost tmp]$ grep /bin/*sh /etc/passwd
/etc/passwd:root:x:0:0:root:/root:/bin/bash
/etc/passwd:AlexL:x:500:500::/home/AlexL:/bin/bash
/etc/passwd:user1:x:501:501:user1 12345:/home/user1:/bin/bash
Run Code Online (Sandbox Code Playgroud)
在第二个查询中,我得到了每一行匹配的文件名前缀。我知道要获得相同的结果,我需要将-h选项放在 2nd 中grep,但我的问题是:
为什么他们返回不同的输出? 我应该添加更多东西吗?
该任务包括从/etc/passwd真实用户(无守护进程和系统用户)中检索。
使用:CentOS 6.4, grep gnu 2.6.3 版本
在大多数 Linux 文件系统上,NUL ( \0) 是路径中唯一的无效字符(并/保留为路径分隔符)。Windows 有一套复杂的有效路径规则。与其自动修复路径(危险,可能导致文件覆盖另一个文件),我如何才能找到与 Windows 不兼容的目录中的所有路径?
最初的问题是我的Google Drive文件夹位于使用ext2fs挂载的驱动器上,但官方 Gdrive 客户端告诉我无法同步数千个文件。我找不到任何错误消息,当我要求它向我展示文件时,它只会无限期地挂起。重新启动客户端或操作系统并没有帮助,但我有一种预感,修复任何非 Windows 兼容的路径都会解除 Gdrive。好像成功了……
I noticed a weird antipattern in some CI scripts I've taken over, which basically boils down to this code checking whether a particular file is present in a package:
dpkg --contents some.deb > contents.txt
grep --quiet foo contents.txt
Run Code Online (Sandbox Code Playgroud)
I tried the obvious refactor of dpkg --contents some.deb | grep --quiet foo, but I keep getting this error:
dpkg-deb: error: tar subprocess was killed by signal (Broken pipe)
From some more investigation, this is definitely a timing issue. If I …
正如其他人所指出的,颜色代码PS1应该用括号括起来\[,\]以避免它们占用水平空间。我已将必要的代码添加到.bashrc:
highlight()
{
if [ -x /usr/bin/tput ]
then
printf '\['
tput bold
printf '\]'
printf '\['
tput setaf $1
printf '\]'
fi
shift
printf -- "$@"
if [ -x /usr/bin/tput ]
then
printf '\['
tput sgr0
printf '\]'
fi
}
highlight_error()
{
highlight 1 "$@"
}
Run Code Online (Sandbox Code Playgroud)
最后一个函数用于PS1普通和转义命令替换中,以便能够根据前一个命令的结果更改字符串:
# Exit code
PS1="\$(exit_code=\${?#0}
highlight_error \"\${exit_code}\${exit_code:+ }\")"
...
if [ "$USER" == 'root' ]
then
PS1="${PS1}$(highlight_error '\u')"
else
PS1="${PS1}\u"
fi …Run Code Online (Sandbox Code Playgroud) 我想imapfilter在 Mutt 检查新电子邮件时运行一个命令(特别是),以避免收到有关=INBOX尚未过滤的电子邮件的“错误”消息。
我定义了以下服务来在挂起之前启动屏幕锁定器:
\n\n$ cat /etc/systemd/system/screenlock.service\n[Unit]\nDescription=Lock X session using slock\nBefore=sleep.target\n\n[Service]\nUser=my_user\nEnvironment=DISPLAY=:0\nExecStart=/usr/bin/xautolock -locknow\n\n[Install]\nWantedBy=sleep.target\nRun Code Online (Sandbox Code Playgroud)\n\n启动时加载:
\n\n$ systemctl status screenlock.service \n\xe2\x97\x8f screenlock.service - Lock X session using slock\n Loaded: loaded (/etc/systemd/system/screenlock.service; enabled)\n Active: inactive (dead)\nRun Code Online (Sandbox Code Playgroud)\n\n它在触发 RAM 挂起和恢复工作之间的某个时刻运行:
\n\n$ systemctl status screenlock.service \n\xe2\x97\x8f screenlock.service - Lock X session using slock\n Loaded: loaded (/etc/systemd/system/screenlock.service; enabled)\n Active: inactive (dead)\n\nSep 17 08:22:22 machine systemd[1]: Starting Lock X session using slock...\nSep 17 08:22:22 machine systemd[1]: Started Lock X session using slock.\n …Run Code Online (Sandbox Code Playgroud) 我想检查命令打印的行是否包含错误消息,但我还想打印命令的所有输出(用于make日志)。有没有办法根据该输出的内容获取命令的所有输出(未修改)和退出代码?我能想到的最接近的解决方法是my_command | grep -C 99999999 '^Error'.
这与此问题相似但不同,因为我关心退出代码并且不想着色。