小编Mar*_*ter的帖子

在 bash 中禁用作业控制 (CTRL-Z)

有时我会发生这种情况,我不小心按了CTRL+ Z,我的应用程序消失在后台。我知道,我可以把它带回来fg,所以这没什么大不了的。但我想知道job control无论如何都要关闭它。在我的一生中,我无法记住一个我需要它的实例,它在我看来只是过去的遗物。

job control完全禁用可以吗?或者我遗漏了什么,这个功能很有用?我将如何在我的.bashrc

更新:

我已经set +m按照@Falsenames 的建议进行了尝试。但是,这仅在我在终端中输入时才有效。添加set +m到我的.bashrc没有效果。

bash job-control bashrc

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

从管道检查 md5sum

我很困惑应该如何md5sum --check工作:

$ man md5sum
-c, --check
    read MD5 sums from the FILEs and check them
Run Code Online (Sandbox Code Playgroud)

我有一个文件,我可以通过管道将其发送到md5sum

$ cat file | md5sum
44693b9ef883e231cd9f90f737acd58f  -
Run Code Online (Sandbox Code Playgroud)

当我明天想检查文件的完整性时,如何检查 md5sum 是否仍然存在44693b9ef883e231cd9f90f737acd58f

笔记

cat file可能是一个流。所以我想在我的例子中使用管道,而不是md5sum file.

pipe hashsum

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

防止 bash 中的多行粘贴

我经常使用ctrl+c鼠标右键单击菜单和粘贴从某些 gui 应用程序复制文本,然后将其粘贴到我的终端模拟器(终结器)中。有时我会忘记剪贴板包含几行,当粘贴到 bash 时会导致每一行都被“执行”

是否有一些解决方案可以完全防止多行粘贴?

command-line bash terminal-emulator x11 clipboard

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

将输出发送到 /dev/stderr vs. >&2

在脚本中,错误通常用 发送到文件描述符 2 &2,即:

echo "error" >&2
Run Code Online (Sandbox Code Playgroud)

有时/dev/stderr改为使用:

echo "error" > /dev/stderr 
Run Code Online (Sandbox Code Playgroud)

看着/dev/stderr,我看到它只是到 的符号链接/proc/self/fd/2,而后者又是到/dev/pts/5(在我当前的终端上)的符号链接。

看起来有点过于复杂了。这背后有什么逻辑吗?

使用/dev/stderr&2等效吗?

其中任何一个都比另一个更受欢迎吗?

portability stderr

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

软件包升级后无法重新挂载/恢复为只读

我正在使用 Debian Stretch。我的根分区已挂载read-only。只有当我安装或升级包时,才会/重新挂载到read-write(通过使用 apt 钩子),然后重新挂载回ro.

有时在软件包升级后,我无法重新安装/为只读:

mount -o remount,ro /
mount: / is busy
Run Code Online (Sandbox Code Playgroud)

在较旧的 Debian 版本 (Wheezy) 上,我可以列出已取消链接的打开文件lsof

 lsof +L1
Run Code Online (Sandbox Code Playgroud)

或者,更具体地说,阻止/重新挂载回 ro 的文件:

{ lsof +L1 ; lsof|sed -n '/SYSV/d; /DEL|(path /p;' ; } | grep -Ev '/(dev|home|tmp|var)'
Run Code Online (Sandbox Code Playgroud)

但是,在 Debian Stretch 上,lsof +L1不会列出任何文件。

我没有看到任何改变+|-Lman lsof这可以解释为什么它停止工作。

为什么 lsof +L1 不再列出已取消链接的打开文件?

如何列出那些阻止 / 重新挂载为只读的文件?

更新

我已经停止了所有可以停止的进程,并且只有init并且getty仍在运行,但我仍然无法重新挂载/ …

debian apt lsof files readonly

13
推荐指数
1
解决办法
1140
查看次数

sed:匹配两行

我有一个文本文件,其中记录分为两行。我想把它们放在一条线上。记录看起来像这样:

2013-07-29
 apt-get install git
2013-07-29
 apt-get install rsync
2013-07-31
 apt-get install nmap
2013-08-02
 apt-get install cifs-utils
2013-08-05
 apt-get install telnet
Run Code Online (Sandbox Code Playgroud)

我想得到以下内容:

2013-07-29 apt-get install git
2013-07-29 apt-get install rsync
2013-07-31 apt-get install nmap
2013-08-02 apt-get install cifs-utils
2013-08-05 apt-get install telnet
Run Code Online (Sandbox Code Playgroud)

我试过sed,但我无法匹配两行。有什么技巧sed吗,或者有什么更好的工具?

sed text-processing

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

使用空行作为 grep 的上下文“组分隔符”

我需要带有上下文、颜色和空白行作为组分隔符的 grep 输出。在这个问题中,我学会了如何定义 custom group-separator,并且我已经像这样构建了我的 grep 命令:

grep --group-separator="" --color=always -A5
Run Code Online (Sandbox Code Playgroud)

但组分隔符实际上不是空的,而是仍然包含颜色代码(即[[36m[[K[[m[[K)。这是因为我正在使用--color=always. 但是我需要在我的 grep 命令中使用颜色,并且我需要将分隔符设为空行(以便进一步处理)

我怎样才能结合这两个条件?

grep colors perl

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

/bin/dash: 检查 $1 是否为数字

检查 $1 是否为 /bin/dash 整数的最佳方法是什么?

在 bash 中,我可以这样做:

[[ $1 =~ ^([0-9]+)$ ]]
Run Code Online (Sandbox Code Playgroud)

但这似乎不符合 POSIX 标准,而且 dash 不支持

shell dash string regular-expression

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

我什么时候可以编辑可执行二进制文件中的字符串?

我有一个可执行的二进制文件;让我们称之为a.out。我可以看到二进制文件包含字符串

$ strings a.out
...
/usr/share/foo
....
Run Code Online (Sandbox Code Playgroud)

我需要将字符串更改/usr/share/foo/usr/share/bar. 我可以用sed?替换字符串吗?:

sed -i 's@/usr/share/foo@/usr/share/bar@' a.out
Run Code Online (Sandbox Code Playgroud)

这看起来是一件安全的事情。当字符串长度不同时,这也能工作吗?

programming string executable elf binary

11
推荐指数
1
解决办法
8064
查看次数

无文件恶意软件如何在 linux 上工作?

我理解无文件恶意软件的定义:

不基于文件而仅存在于内存中的恶意代码……更具体地说,无文件恶意代码……将自身附加到内存中的活动进程中……

有人可以解释一下这个附加到内存中的活动进程是如何工作的吗?

此外,针对此类攻击有哪些(内核)保护/强化可用?

process malware linux-kernel

11
推荐指数
1
解决办法
1823
查看次数