小编Mar*_*ter的帖子

邮件:从命令行发送带有附件的电子邮件

我知道如何从命令行(脚本)发送电子邮件

echo "body" | mail -s "subject" my@email.com
Run Code Online (Sandbox Code Playgroud)

是否也可以从命令行(脚本)发送附件?

heirloom-mailx在 Debian Wheezy 上使用。

linux bash email

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

着色 bash_completion

当我键入grep然后按TAB两次时,bash_completion将列出当前目录中的文件和目录。当我输入首字母时,它也会完成文件名。这一切都很好,唯一的问题是当目录包含许多文件和子目录时,它可能会非常混乱和无序。

如果bash_completion至少可以对目录进行不同的颜色处理,这将非常有帮助,类似于什么ls -lA

这可能吗?

编辑:

这是我的示例bash_completion配置文件的样子:

if [[ ${cur} == -* ]] ; then
    COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
    return 0

else
    _filedir
fi
Run Code Online (Sandbox Code Playgroud)

colors bash

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

dmesg 充斥着防火墙日志

在我的 iptables 中,我有一个记录丢弃数据包的规则:

-A INPUT -i eth0       -j   LOG  --log-prefix "FW: " --log-level 7
-A INPUT -i eth0       -j   DROP
Run Code Online (Sandbox Code Playgroud)

/etc/rsyslog.conf,我有另一个规则将这些日志发送到一个专用文件/var/log/firewall.log

:msg, contains, "FW: "                    -/var/log/firewall.log
& ~
Run Code Online (Sandbox Code Playgroud)

& ~立即删除日志,因此它们不会淹没syslog或其他日志文件。

这很有效,除了它充斥dmesg着那些防火墙日志(不是/var/log/dmesgcommand 的输出dmesg)。

有没有办法防止这些日志显示在dmesg

logs iptables rsyslog

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

Debian:防止特定文件在软件包升级期间被覆盖

我知道一个包有两个组成部分:configdata文件。在软件包升级(即安全升级)期间,data文件可以被覆盖,但config文件应始终保持不变。同时config文件通常/etcdata/usr。然而,有时,这种区别是模糊的。

就我而言,我修改了Icedove(Thunderbird)的图标文件:

/usr/share/applications/icedove.desktop
Run Code Online (Sandbox Code Playgroud)

现在,每次有Icedove(Thunderbird) 更新时,我的更改都会被默认文件覆盖(即使它在更新之间没有更改)。

有什么办法可以防止这个特定的文件被覆盖?

将其设置为不可变chattr +i icedove.desktop的并不是一个好主意,因为它会在包升级期间产生错误。

dpkg package-management

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

直接退出LXDE的命令

要注销 LXDE,我可以单击“开始”菜单,单击“注销”,然后在弹出菜单时再次单击“注销”。

或者我可以输入lxde-logout我的终端,当菜单打开时,点击“注销”。

这两种选择都太麻烦了。我需要一个可以立即注销的命令,没有菜单,也没有其他选项。

这可能吗 ?

我在 Debian Wheezy 上使用 LXDE

openbox debian logout lxde

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

降低内核引导日志详细级别

当我的内核启动时,除了有用的重要信息外,它还会打印大量调试信息,例如

....
kernel: [0.00000] BIOS-e820: [mem 0x0000000000000000-0x000000000009d3ff] usable
kernel: [0.00000] BIOS-e820: [mem 0x000000000009d400-0x000000000009ffff] reserved
kernel: [0.00000] BIOS-e820: [mem 0x00000000000e0000-0x00000000000fffff] reserved
...
kernel: [0.00000] MTRR variable ranges enabled:
kernel: [0.00000]   0 base 0000000000 mask 7E00000000 write-back
...
kernel: [0.00000] init_memory_mapping: [mem 0x00100000-0xcf414fff]
kernel: [0.00000]  [mem 0x00100000-0x001fffff] page 4k
kernel: [0.00000]  [mem 0x00200000-0xcf3fffff] page 2M
kernel: [0.00000]  [mem 0xcf400000-0xcf414fff] page 4k
....
kernel: [0.00000] ACPI: XSDT 0xD8FEB088 0008C (v01 DELL CBX3 01072009 AMI 10013)
kernel: [0.00000] ACPI: FACP 0xD8FFC9F8 0010C (v05 DELL …
Run Code Online (Sandbox Code Playgroud)

boot logs kernel rsyslog dmesg

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

在 /bin/sh 中的冒号上拆分字符串

我的dash脚本采用 形式的参数hostname:port,即:

myhost:1234
Run Code Online (Sandbox Code Playgroud)

而端口是可选的,即:

myhost
Run Code Online (Sandbox Code Playgroud)

我需要将主机和端口读入单独的变量。在第一种情况下,我可以这样做:

HOST=${1%%:*}
PORT=${1##*:}
Run Code Online (Sandbox Code Playgroud)

但这在第二种情况下不起作用,当端口被省略时;echo ${1##*:}只返回主机名,而不是空字符串。

在 Bash 中,我可以这样做:

IFS=: read A B <<< asdf:111
Run Code Online (Sandbox Code Playgroud)

但这在dash.

能否在拆分字符串:在仪表板,而无需调用外部程序(awktr,等)?

shell dash string

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

程序需要访问 /proc/self/mem 的合法原因是什么?

我注意到 Linux 上的 Firefox 和 Chromium 浏览器都会打开该文件/proc/self/mem进行阅读。据我所知,我的系统上没有其他程序读取此文件。

/proc/self/mem因成为无休止的权限升级漏洞利用的载体而臭名昭著,其中内存通常被恶意代码覆盖,程序执行被劫持。

这更令人悲伤,因为浏览器是最暴露的程序,具有最大的攻击面,因为它们从互联网获取不可信的输入。

现代浏览器需要阅读是否有正当理由/proc/self/mem

process

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

文件中段落的倒序

我有一个包含段落文本的文件(文本行由一个或多个空行分隔)。我想颠倒段落的顺序(即最后一段将成为第一段,...),最好使用 sed。

我正在寻找一个 sed 命令,它可以对一个段落文件tac执行什么操作,对一个行文件执行什么操作。

sed text-processing

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

增加 FIFO 大小限制

感谢我的另一个问题的答案,我现在明白 Linux 上的 FIFO,即/dev/xconsole缓冲区限制为 64 KB。

如何将此限制增加到 128 KB?

显然,我需要重新编译我的内核。没关系,但是我必须在哪里更改内核源代码中的大小限制?

更改它是否安全,或者它是否会对其他组件产生一些副作用?

我正在使用内核 3.18。

buffer linux-kernel fifo

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