小编str*_*gee的帖子

如何将输出重定向与 here-documents 和 cat 结合使用?

假设我有一个脚本,我想通过管道传输到另一个命令或重定向到一个文件(sh示例中通过管道传输到该文件)。假设我正在使用 bash。

我可以使用echo

echo "touch somefile
echo foo > somefile" | sh
Run Code Online (Sandbox Code Playgroud)

我也可以使用cat以下方法做几乎相同的事情:

cat << EOF
touch somefile
echo foo > somefile
EOF
Run Code Online (Sandbox Code Playgroud)

但是如果我用“EOF | sh”替换“EOF”,它只会认为它是heredoc的一部分。

我怎样才能使它cat从标准输入输出文本,然后将其通过管道传输到任意位置?

shell io-redirection cat here-document

101
推荐指数
2
解决办法
7万
查看次数

sudo 的内部结构如何工作?

sudo内部如何运作?不像 ,它怎么可能在没有 root 密码的情况下成为 root 用户su?该过程涉及哪些系统调用等?这难道不是 Linux 中一个巨大的安全漏洞(例如,为什么我不能编译一个打了很多补丁的补丁sudo,它只是做了常规操作sudo,但没有要求非特权用户的密码)?

我已阅读login 和 su internals。我还阅读了如何使用 sudo?但尽管标题,他们主要是处理之间的差异susudo

root sudo privileges

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

为什么 Linux 允许 'init=/bin/bash'?

我最近发现,如果我在启动前编辑 GRUB 并添加,rw init=/bin/bash我最终会得到一个 root shell。

处于一种我想了解一切的状态,我想知道为什么会发生这种情况。我的意思是这是一个错误吗?它是一个功能吗?是否可以帮助管理员解决问题,因为它仅在您可以物理访问计算机时才有效?

它是由 GRUB 提供还是由实际内核提供?

linux boot grub2

58
推荐指数
5
解决办法
8万
查看次数

内核 oops 和内核恐慌之间有什么区别?

我知道什么是内核恐慌,但我也见过“内核 oops”这个词。我一直以为他们是一样的,但也许不是。所以:

什么是内核 oops,它与内核恐慌有何不同?

kernel kernel-panic

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

为什么没有人使用真正的 Bourne shell 作为 /bin/sh?

我注意到基本上我曾经使用过的系统都没有/bin/sh真正的可执行文件。它总是一个符号链接dashbash在POSIX模式,或者类似的东西。

为什么?使用真正的、原始的有/bin/sh什么缺点?(速度?许可?)

shell dash history

55
推荐指数
4
解决办法
8803
查看次数

bsdtar 和 GNU tar 有什么区别?

我一直使用 GNU tar。但是,我见过的所有 GNU/Linux 发行版都bsdtar在它们的存储库中发布。我什至看到它默认安装在某些 IIRC 中。我确信 Arch GNU/Linux 需要它作为basedevel(也许base,但我不确定)的一部分,正如我在 PKGBUILDs 中看到的那样。

为什么要使用bsdtar而不是 GNU tar?有哪些优势?

请注意,我是问BSD 和 GNU/Linux 用户空间之间的主要区别是什么的人.

tar bsd gnu

55
推荐指数
3
解决办法
5万
查看次数

dd 代表什么?

我非常清楚该命令的作用,但是man dd,请info dd告诉我:“转换和复制文件”,GNU Coreutils 也是如此

谷歌说它是医学和网络聊天俚语之间一切的缩写;除了有人说这意味着“数据破坏者”,在 PC 取证中使用的东西 - 如果我的 dd 破坏了我的数据,我会感到震惊!

任何见解?:-)


更新:当然我必须检查行话文件

Unix dd(1) 设计有一个奇怪的、明显非 Unixy 关键字选项语法,让人联想到 IBM System/360 JCL(它有一个针对 I/O 设备的精心设计的 DD 'Dataset Definition' 规范)

听起来仍然很模棱两可,但它说:

尽管命令满足了需求,但界面设计显然是个恶作剧。

呵呵:-)

dd command-names

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

BSD 和 GNU/Linux 用户空间之间的主要区别是什么?

我在 Unix 和 Linux 上阅读了很多关于 BSD 和 GNU 等的书。但我仍然不明白 BSD 和 GNU 用户空间之间有什么实际的、实际的区别,尽管它们经常被提及。有人可以详细说明吗?

在回答时,请充分解释历史联系,记住我还没有经历过 GNU/Linux 不是主流 UNIX(OS X 除外)的时期。

bsd gnu

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

什么是 .in 文件?

有时在项目源中我会看到“*.in”文件。例如,一堆“Makefile.in”。它们是什么和/或“.in”部分是什么意思?我认为这与autoconfmake或类似的事情有关,但我不确定。

我试过搜索“.in 文件扩展名”、“autoconf .in 文件扩展名”、“autoconf .in”、“autoconf dot in”和其他变体,但没有成功。

compiling make configure autoconf

36
推荐指数
3
解决办法
5万
查看次数

设置环境变量的最佳发行版/外壳不可知方式是什么?

问题说明了一切。我目前使用 Arch Linux 和 zsh,但我想要一个(至少)既适用于 VT 又适用于 xterm 的解决方案,并且(希望最好)在我切换发行版或 shell 时仍能继续工作。

我在不同发行版的文档中听到了对这个问题截然不同的答案。Ubuntu 说“使用 .pam_environment”。我认为在 Arch 中,他们推荐的内容取决于您的外壳。目前,我将所有内容都放在.profile 中,如果由于某种原因 shell 没有提供它(例如,如果 .bash_profile 存在则为 bash),我会通过手动获取它来覆盖它。但似乎必须有更好的方法。

shell login environment-variables

35
推荐指数
1
解决办法
7171
查看次数