小编Sco*_*ott的帖子

了解 Bash 的 Read-a-File 命令替换

我试图了解 Bash 是如何处理以下行的:

$(< "$FILE")
Run Code Online (Sandbox Code Playgroud)

根据 Bash 手册页,这相当于:

$(cat "$FILE")
Run Code Online (Sandbox Code Playgroud)

我可以按照第二行的推理思路。Bash 对 执行变量扩展$FILE,进入命令替换,传递$FILEto的值cat,cat 将内容$FILE输出到标准输出,命令替换通过用内部命令产生的标准输出替换整行来完成,Bash 尝试执行它一个简单的命令。

但是,对于我上面提到的第一行,我理解为:Bash 在 上执行变量替换$FILE,Bash 打开$FILE以读取标准输入,以某种方式将标准输入复制到标准输出,命令替换完成,并且 Bash 尝试执行生成的标准输出。

有人可以向我解释如何$FILE从标准输入到标准输出的内容吗?

shell bash io-redirection command-substitution

14
推荐指数
3
解决办法
9947
查看次数

强制为每个命令添加一个“添加”别名

是否可以在bash.

例如,我希望有一个特定的用户,无论何时运行命令,它总是用datebefore 和 after 或time.

这是可能的,如果是,如何?

bash monitoring alias date time

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

Linux 源路由,强端系统模型/强主机模型?

多宿主 Linux 机器能否实现真正的强 ES 模型

特定用例

我有一个系统,有五个不同的接口,每个接口都连接到同一个子网,因此连接到 Internet 的网关相同。

  • 我想在同一个端口上分别监听每个接口,并确保数据包总是从它们进来的同一接口出去,并确保试图进入“错误”接口的数据包被丢弃。
  • 我希望能够绑定到每个接口,并与始终来自我绑定到的相同源 IP 的 Internet 目的地建立传出连接。例如,
    curl --interface interface_ip http://ipecho.net/plain
    应该始终显示与我绑定的相同 IP 地址--interface
  • 由于在这些接口之一上使用 DHCP,静态路由可能会出现问题。

RFC 1122

来自RFC 1122 - 互联网主机要求 - 通信层,第 3.3.4.2 节 - 多宿主要求

Internet 主机实现者使用了两种不同的多宿主概念模型,在以下讨论中进行了简要总结。本文件不支持首选哪种型号;每个似乎都有一个位置。这种矛盾反映在问题(A)和(B)是可选的。

  • ??强ES模型

      强 ES(终端系统,即主机)模型强调主机/网关 (ES/IS) 的区别,因此在上述问题 (A) 和 (B) 中将 MUST 替换为 MAY。它倾向于将多宿主主机建模为同一物理主机中的一组逻辑主机。

      关于 (A),Strong ES 模型的支持者指出,自动 Internet 路由机制无法将数据报路由到与目标地址不对应的物理接口。

      在强 ES 模型下,传出数据报的路由计算是映射:

         route(src IP addr, dest IP addr, TOS) -> gateway
    
    Run Code Online (Sandbox Code Playgroud)

    此处源地址作为参数包括在内,以便选择在相应物理接口上可直接访问的网关。请注意,此模型在逻辑上要求每个 IP 源地址通常至少有一个默认网关,最好有多个默认网关。


  • ??弱ES模型

      这种观点不强调 …
  • linux freebsd networking routing

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

    为什么非特权用户可以执行`sync`命令?

    目前在 Ubuntu Linux 上,但我在其他操作系统上也注意到了这一点。显然任何用户都可以执行该sync命令——但这是为什么呢?我只能看到缺点:由于不必要的磁盘写入,系统速度变慢。

    为什么每个用户都可以执行sync

    hard-disk synchronization authorization privileges

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

    为什么“find -exec cmd {} +”需要以“{} +”结尾?

    前言:我理解-exec {} \;&之间的区别-exec {} +。我也没有问题,因为这样,我只是好奇的语义find


    -exec+而不是结束参数时;,我们需要以 结束{} +,例如:

    # FreeBSD find
    $ find . -type f -exec cp {} /tmp +
    find: -exec: no terminating ";" or "+"
    
    # GNU find is even more cryptic:
    $ find: missing argument to `-exec'
    
    Run Code Online (Sandbox Code Playgroud)

    ;在这些示例中使用而不是+工作正常(但显然做了其他事情)。

    POSIX

    -exec utility_name [argument ...] ;
    -exec utility_name [argument ...] {} +

    ... …

    find history posix

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

    删除文本中字母之间多余空格的脚本

    我有一个文本文档,其中包含大量文本,每个字母后都添加了一个额外的空格!

    例子:

    T h e  b o o k  a l s o  h a s  a n  a n a l y t i c a l  p u r p o s e  w h i c h  i s  m o r e  i m p o r t a n t…
    
    Run Code Online (Sandbox Code Playgroud)

    视觉上:

    T␣h␣e␣␣b␣o␣o␣k␣␣a?l?s?o??h?a?s??a?n??a?n?a?l?y?t?i ?c?a?l??p?u?r?p?o?s?e??w?h?i?c?h??i?s??m?o?r?e??i? m?p?o?r?t?a?n?t…

    请注意,每个字母后面都有一个额外的空格,因此连续单词之间有两个空格。

    有没有办法获得awksed删除多余的空格?(不幸的是,这个文本文档很大,需要很长时间手动完成。)  我很欣赏这可能是一个更复杂的问题,只需一个简单的 bash 脚本即可解决,因为还需要某种文本识别。

    我该如何解决这个问题?

    scripting sed awk text-processing

    12
    推荐指数
    5
    解决办法
    3403
    查看次数

    在没有 while 循环的情况下使用 bash 的 read 内置

    我已经习惯了 while 循环中bash的内置read函数,例如:

    echo "0 1
          1 1
          1 2
          2 3" |\
    while read A B; do
        echo $A + $B | bc;
    done
    
    Run Code Online (Sandbox Code Playgroud)

    我一直在做一些make项目,拆分文件和存储中间结果变得谨慎。因此,我经常最终将单行分解为变量。虽然下面的例子效果很好,

    head -n1 somefile | while read A B C D E FOO; do [... use vars here ...]; done
    
    Run Code Online (Sandbox Code Playgroud)

    这有点愚蠢,因为 while 循环永远不会运行超过一次。但没有while,

    head -n1 somefile | read A B C D E FOO; [... use vars here ...]
    
    Run Code Online (Sandbox Code Playgroud)

    当我使用它们时,读取变量总是空的。我从未注意到 的这种行为read,因为通常我会使用 while 循环来处理许多类似的行。如何在没有 while 循环的情况下使用 …

    bash pipe shell-script subshell read

    10
    推荐指数
    1
    解决办法
    4925
    查看次数

    在 Chrome OS 中的 Secure Shell 中禁用哔哔声/提示音

    如何禁用 Chrome 操作系统中 Secure Shell 发出的哔声/铃声?当某些命令失败时,例如在空命令行或失败的选项卡自动完成上按退格键,我会听到非常响亮且烦人的声音。这似乎是一个愚蠢的问题,但我一直在使用 Secure Shell,而且声音经常发生。

    我在这里谈论的是 Secure Shell,当 Chrome OS 处于开发人员模式时,可以通过按Ctrl+ Alt+T然后输入“shell”来访问它。

    audio chrome-os

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

    对使用 SIGSTOP 停止的服务的请求会发生什么

    如果您向 Web 服务器发送 SIGSTOP,内核是否只是告诉网络堆栈阻止/休眠与该服务器套接字的所有连接,直到它继续?服务器超时值似乎无关紧要;它会无限期地等待,但是如何呢?

    请求会无限期地位于套接字缓冲区中吗?如果 Web 服务器收到大量请求怎么办?当套接字缓冲区填满时会发生什么?

    linux networking signals socket

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

    为什么Linux不允许用户级网络端口权限?

    每隔一段时间,我就会搜索如何在 Linux 中为网络端口访问设置用户级权限,结果相当枯燥。例如,如果你有一台机器运行一个监听端口 5080 的关键进程,我觉得应该有一种方法只允许一组特定的可信用户访问该端口——就像任何其他合理的权限进程一样完成,如文件系统权限。

    但似乎所有用户都可以使用高端口,而低端口仅对 root 可用,只有像 authbind 和使用 iptables 转发这样的粗略黑客才能允许其他用户使用低端口。这似乎是一个非常奇怪的情况,所以我想知道,为什么它是这样设计的,为什么人们觉得没有必要改变这种情况?

    networking permissions

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