假设我有一个脚本,我想通过管道传输到另一个命令或重定向到一个文件(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从标准输入输出文本,然后将其通过管道传输到任意位置?
sudo内部如何运作?不像 ,它怎么可能在没有 root 密码的情况下成为 root 用户su?该过程涉及哪些系统调用等?这难道不是 Linux 中一个巨大的安全漏洞(例如,为什么我不能编译一个打了很多补丁的补丁sudo,它只是做了常规操作sudo,但没有要求非特权用户的密码)?
我已阅读login 和 su internals。我还阅读了如何使用 sudo?但尽管标题,他们主要是处理之间的差异su和sudo。
我最近发现,如果我在启动前编辑 GRUB 并添加,rw init=/bin/bash我最终会得到一个 root shell。
处于一种我想了解一切的状态,我想知道为什么会发生这种情况。我的意思是这是一个错误吗?它是一个功能吗?是否可以帮助管理员解决问题,因为它仅在您可以物理访问计算机时才有效?
它是由 GRUB 提供还是由实际内核提供?
我知道什么是内核恐慌,但我也见过“内核 oops”这个词。我一直以为他们是一样的,但也许不是。所以:
什么是内核 oops,它与内核恐慌有何不同?
我注意到基本上我曾经使用过的系统都没有/bin/sh真正的可执行文件。它总是一个符号链接dash,bash在POSIX模式,或者类似的东西。
为什么?使用真正的、原始的有/bin/sh什么缺点?(速度?许可?)
我一直使用 GNU tar。但是,我见过的所有 GNU/Linux 发行版都bsdtar在它们的存储库中发布。我什至看到它默认安装在某些 IIRC 中。我确信 Arch GNU/Linux 需要它作为basedevel(也许base,但我不确定)的一部分,正如我在 PKGBUILDs 中看到的那样。
为什么要使用bsdtar而不是 GNU tar?有哪些优势?
请注意,我是问BSD 和 GNU/Linux 用户空间之间的主要区别是什么的人?.
我非常清楚该命令的作用,但是man dd,请info dd告诉我:“转换和复制文件”,GNU Coreutils 也是如此。
谷歌说它是医学和网络聊天俚语之间一切的缩写;除了有人说这意味着“数据破坏者”,在 PC 取证中使用的东西 - 如果我的 dd 破坏了我的数据,我会感到震惊!
任何见解?:-)
更新:当然我必须检查行话文件:
Unix dd(1) 设计有一个奇怪的、明显非 Unixy 关键字选项语法,让人联想到 IBM System/360 JCL(它有一个针对 I/O 设备的精心设计的 DD 'Dataset Definition' 规范)
听起来仍然很模棱两可,但它说:
尽管命令满足了需求,但界面设计显然是个恶作剧。
呵呵:-)
我在 Unix 和 Linux 上阅读了很多关于 BSD 和 GNU 等的书。但我仍然不明白 BSD 和 GNU 用户空间之间有什么实际的、实际的区别,尽管它们经常被提及。有人可以详细说明吗?
在回答时,请充分解释历史联系,记住我还没有经历过 GNU/Linux 不是主流 UNIX(OS X 除外)的时期。
有时在项目源中我会看到“*.in”文件。例如,一堆“Makefile.in”。它们是什么和/或“.in”部分是什么意思?我认为这与autoconf或make或类似的事情有关,但我不确定。
我试过搜索“.in 文件扩展名”、“autoconf .in 文件扩展名”、“autoconf .in”、“autoconf dot in”和其他变体,但没有成功。
问题说明了一切。我目前使用 Arch Linux 和 zsh,但我想要一个(至少)既适用于 VT 又适用于 xterm 的解决方案,并且(希望最好)在我切换发行版或 shell 时仍能继续工作。
我在不同发行版的文档中听到了对这个问题截然不同的答案。Ubuntu 说“使用 .pam_environment”。我认为在 Arch 中,他们推荐的内容取决于您的外壳。目前,我将所有内容都放在.profile 中,如果由于某种原因 shell 没有提供它(例如,如果 .bash_profile 存在则为 bash),我会通过手动获取它来覆盖它。但似乎必须有更好的方法。