小编Mar*_*ter的帖子

后缀:Maildir 消息的不同文件名格式

我正在使用postfixmaildir 格式。存储在 maildir 中的消息的文件名如下所示:

1386021659.27745_1.alpha:2,S
Run Code Online (Sandbox Code Playgroud)

我知道第一部分是纪元时间,其余部分不确定。但我想要一些对人更友好的名字,比如

2013-12-18__120502.sender_or_subject_of_the_message:2,S
Run Code Online (Sandbox Code Playgroud)

我需要经常操作单个消息/文件(这就是我首先使用 maildir 的原因)。有一些更具描述性的文件名会有所帮助。

我可以设置这个postfix吗?

email postfix maildir

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

shell 脚本中的代码重复

我的 bash 脚本(让我们称之为myscript)从标准输入(管道)获取输入,或者形成一个常规文件(如果文件名作为参数提供)

a) someprog | myscript

   or

b) myscript file.txt
Run Code Online (Sandbox Code Playgroud)

然后,逐行处理数据。目前,我的代码如下所示:

if [ -t 0 ] ; then
    while read LINE
      do
         prog_1
         prog_2
         ...
         prog_n
      done
else
    while read LINE
      do
         prog_1
         prog_2
         ...
         prog_n
      done < $1
fi
Run Code Online (Sandbox Code Playgroud)

这个脚本工作正常,但似乎有太多的口是心非。我想知道是否有更好(更优雅)的方法来做到这一点。所有步骤1n都是一样的。唯一的区别是< $1末尾是否有a 。没有更好的方法吗?

shell bash shell-script

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

ssh 无声无息地失败

我注意到当我通过ssh以下方式执行命令时:

ssh myserver.mydomain.com "w"
Run Code Online (Sandbox Code Playgroud)

并且命令失败,ssh不打印任何错误。可以说,我拼错了我的服务器的主机名并且myserver.mydomain.com不存在。我会期望,ssh报告一些关于unable to connect to server. 但事实并非如此。相反,ssh只是不打印任何内容。现在,我知道我可以使用$?. 但这还不够。我在脚本中使用它,如果ssh更具体,我将不胜感激。其中man ssh有 option -v,但它用于调试并打印太多信息。

有什么办法可以让sshprint成为不成功的原因吗?

ssh

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

grep 中的条件着色

我有一个简单的bash脚本。我的脚本的一行与 grep 匹配“模式”并为匹配颜色

grep -i --color=always -- "$1"
Run Code Online (Sandbox Code Playgroud)

我需要修改它,以便它只为匹配着色,如果该行不是注释(即,如果它不以 开头#)。换句话说:我仍然希望 grep 匹配注释行,但不对其进行着色。

假设我有以下文本文件(添加了行号)

1 aaa PATTERN
2 bbb ccc PATTERN ddd
3 # eee PATTERN
4 fff ggg
Run Code Online (Sandbox Code Playgroud)

我需要 grep 表达式来匹配第 1、2、3 行,但只为未注释的行(1 和 2)着色

grep shell-script text-processing

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

使用 kbdrate 调整键盘灵敏度

我的笔记本电脑上的键盘太敏感(打字时,我经常输入两个字符而不是一个)。

我一直在谷歌搜索并发现kbdrate。但由于某种原因,kbdrate无法正常工作:

# kbdrate
Typematic Rate set to 10.9 cps (delay = 250 ms)

# kbdrate -r 2
Typematic Rate set to 2.0 cps (delay = 250 ms)

# kbdrate
Typematic Rate set to 10.9 cps (delay = 250 ms)
Run Code Online (Sandbox Code Playgroud)

一开始,kbdrate设置为10.9 cps。当我将其更改为 2 时,它会报告已更改,但当我kbdrate再次运行时,它又是旧值10.9 cps

如何修改键盘的灵敏度?我使用 Debian Wheezy 和 LXDE 桌面环境在终端模拟器 Terminator 中运行这些命令。

我应该补充一点,无论我使用什么值,即kbdrate -r 2 -d 500,我看不到任何效果

keyboard x11

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

通知发送不适用于 Debian Wheezy

我已经libnotify-bin安装了,但是当我输入时

notify-send "hello"
Run Code Online (Sandbox Code Playgroud)

没发生什么事。没有错误,没有消息我有必要的包:

# dpkg -l | grep notify
ii  libnotify-bin
ii  libnotify4:amd64
Run Code Online (Sandbox Code Playgroud)

可能是什么问题呢?

我在 Debian Wheezy 上使用 LXDE

更新:

虽然@Anthon 建议的解决方案有效(安装notification-daemon),但我不确定这是否是“最佳”解决方案。我期待,这是足有libnotify-binlibnotify4dbus安装。Inedeed,在我的另一台机器上,notify-send 没有notification-daemon.

有人可以澄清是否notification-daemon有必要吗?

debian lxde libnotify

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

无法启动 Chrome 浏览器 - 绑定失败:权限被拒绝

我正在使用启用的grsecurity内核CONFIG_GRKERNSEC_SOCKET_SERVER

[*] Socket restrictions  
  [ ]   Deny any sockets to group (NEW)  
  [ ]   Deny client sockets to group (NEW)
  [*]   Deny server sockets to group
Run Code Online (Sandbox Code Playgroud)

这可以防止用户创建“服务器”套接字(即启动 Apache),但允许打开客户端套接字(即 Firefox)。

实际上,所有网络客户端都可以正常工作(Firefox、telnet、ssh、nc、w3m 等)。只有 Chrome 浏览器 (Chromium) 不起作用。

从命令行启动 chrome 时,出现以下错误:

ERROR:address_tracker_linux.cc(138)] Could not bind NETLINK socket: Permission denied
libudev: udev_monitor_enable_receiving: bind failed: Permission denied
FATAL:udev_linux.cc(31)] Check failed: 0 == ret (0 vs. -1)
Aborted
Run Code Online (Sandbox Code Playgroud)

在日志中,我看到:

grsec: denied bind() by /usr/lib/chromium/chromium[NetworkChangeNo:3920]
grsec: denied bind() by /usr/lib/chromium/chromium[WorkerPool/3922:3922]
grsec: denied bind() …
Run Code Online (Sandbox Code Playgroud)

udev grsecurity chrome browser socket

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

破折号:将字符串解析为两个变量

我有一个破折号脚本,我需要解析$1,它是一个包含由 ' :'分隔的两部分的字符串,例如foo:123. 我想存入foo$X 和123$Y。

我以为我可以使用read

$ echo "foo:123" | tr ':' ' ' | read X Y
Run Code Online (Sandbox Code Playgroud)

但这不起作用(没有给出错误)

$ echo $X
Run Code Online (Sandbox Code Playgroud)

给出空行作为输出。

为什么我的read构造不起作用?我怎样才能实现我的目标(任何解决方案,都不必使用读取)

dash shell-script

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

使用 stat 时更改文件大小格式

格式化字符%s品牌stat打印以字节为单位的文件大小

# stat -c'%A %h %U %G %s %n' /bin/foo
-rw-r--r-- 1 root root 45112 /bin/foo 
Run Code Online (Sandbox Code Playgroud)

ls可以配置为使用“千分隔符”打印字节大小数字,即45,112代替通常的45112.

# BLOCK_SIZE="'1" ls -lA 
-rw-r--r-- 1 root root 45,112 Nov 15  2014
Run Code Online (Sandbox Code Playgroud)

我可以类似地格式化 stat 的输出,以便文件大小有千位分隔符吗?

stat首先使用的原因是,我需要输出 like ls,但没有时间,因此-c'%A %h %U %G %s %n'.

或者有没有其他方法可以在ls没有时间的情况下打印类似输出?

command-line ls coreutils stat files

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

对除一个应用程序以外的所有应用程序禁用插入键

我想禁用insert键盘上的键,因为我在打字时经常不小心碰到它,它会弄乱我的文字。

我发现我可以用来xmodmap完全禁用插入键:

xmodmap -e "keycode 106 ="
Run Code Online (Sandbox Code Playgroud)

这有效,但还有另一个问题。事实证明,midnight commanderinsert密钥用于完全不同的目的。不是为了像在文本编辑器中那样切换改写,而是为了选择多个文件。

这个功能mc实际上很有用,我经常使用它。

有什么方法可以禁用insert文本编辑器中的键作为改写 ON/OFF 的角色,但将其保留为“选择文件”的第二个角色mc

keyboard-shortcuts keyboard xmodmap

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