Unix & Linux

Linux,FreeBSD和其他类似Un * x的操作系统用户的问答

3
是什么使Unix进程死于管道中断?
这是我想到的一些选项,不确定哪个是正确的。 从管道读取I / O错误。 写入管道另一端的进程因失败而终止。 可以写入管道的所有进程均已将其关闭。 管道的写缓冲区已满。 对等方已关闭双工管道的另一方向。 写入失败,因为没有可以从管道读取的进程。 系统调用返回了EPIPE错误,并且没有安装错误处理程序。
30 pipe 

6
通过SSH转发的X客户端“无法打开显示:localhost:11.0”
我已在运行SSH服务器的远程计算机上启用了X转发: # grep -i forward /etc/ssh/sshd_config X11Forwarding yes # 在本地计算机上,我已启动带有-X标志的SSH客户端,该标志指示在远程计算机上运行的SSH服务器设置X服务器代理。此外,它创建$DISPLAY指向该代理的变量,并调用xauth来安装代理密钥,该密钥对远程计算机上的此X服务器代理进行身份验证: # echo "$DISPLAY" localhost:11.0 # xauth list | grep 11 A58/unix:11 MIT-MAGIC-COOKIE-1 39324086672d1ae35e373476c3891a77 # 但是,远程计算机上的X客户端无法正常启动: # wireshark (wireshark:10083): Gtk-WARNING **: cannot open display: localhost:11.0 # xterm Warning: This program is an suid-root program or is being run by the root …
30 ssh  x11  sshd 



4
为什么set -e在带括号()后跟OR列表||的子外壳中不起作用?
我最近遇到了一些这样的脚本: ( set -e ; do-stuff; do-more-stuff; ) || echo failed 在我看来,这很好,但是不起作用!将set -e不适用,当你添加的||。没有它,它就可以正常工作: $ ( set -e; false; echo passed; ); echo $? 1 但是,如果添加||,则将set -e被忽略: $ ( set -e; false; echo passed; ) || echo failed passed 使用真实的独立外壳可以按预期工作: $ sh -c 'set -e; false; echo passed;' || echo failed …

7
列出文本中包含特定单词的文件
我想递归且唯一地列出包含给定单词的文件。 例子:检查单词“ check”,我通常是grep $ grep check * -R 但是由于这个词的出现次数很多,所以我得到了很多输出。因此,我只需要列出包含给定搜索词的文件名。我猜有些招用find和xargs会在这里就够了,但不知道。 有任何想法吗?
30 find  grep  file-search 

6
从子外壳退出外壳脚本
请考虑以下代码段: stop () { echo "${1}" 1>&2 exit 1 } func () { if false; then echo "foo" else stop "something went wrong" fi } 通常,当func被调用时,它将导致脚本终止,这是预期的行为。但是,如果它是在子外壳中执行的,例如 result=`func` 它不会退出脚本。这意味着调用代码必须每次检查函数的退出状态。有办法避免这种情况吗?这set -e是为了什么?


6
命令替换:在换行符上分割,但不分割空格
我知道我可以通过几种方法解决此问题,但是我想知道是否有一种方法可以仅使用bash内置函数来实现,否则,最有效的方法是什么。 我有一个内容如下的文件 AAA B C DDD FOO BAR 我的意思是说它只有几行,每行可能有也可能没有空格。我想运行类似的命令 cmd AAA "B C DDD" "FOO BAR" 如果我使用cmd $(< file)我得到 cmd AAA B C DDD FOO BAR 如果我用cmd "$(< file)"我得到 cmd "AAA B C DDD FOO BAR" 我如何让每行都被正确地对待一个参数?

6
陷阱,ERR和回显错误行
我正在尝试使用陷阱创建一些错误报告,以针对所有错误调用函数: Trap "_func" ERR 是否有可能获得发送ERR信号的线路?外壳是bash。 如果这样做,我可以阅读和报告使用了什么命令,并记录/执行一些操作。 或者,也许我错了吗? 我测试了以下内容: #!/bin/bash trap "ECHO $LINENO" ERR echo hello | grep "asdf" 并$LINENO返回2。不起作用。




2
如何查看PCIe卡使用了多少个通道?
主板上的PCI Express插槽可以比连接的通道数更宽。例如,母板可以具有仅连接x1通道的x8插槽。 另一方面,您只能使用ex插入卡。主板上x16插槽的4条通道,他们将协商仅使用那些x4通道。 如何从运行的系统检查插入的PCIe卡使用了多少个通道?
30 pci 

7
我应该使用哪个shell-tcsh vs bash?[关闭]
我已经使用tcsh了很长时间了。但是,每当我搜索某些内容时,我常常会发现指定的方法是bash特定的。甚至Shell脚本的语法对于这两者来说都是不同的。 从我在Internet上搜索和学习的经验来看,bash似乎是最常用的shell。甚至这个网站上标记bash的问题数量也比标记的问题数量多(当前多五倍)tcsh。 因此,我想知道是否应该切换到bash。你怎么看? 我为什么要坚持tcsh或为什么要继续前进bash?
30 linux  shell  bash  fedora  tcsh 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.