Unix & Linux

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


4
bash案例声明结尾处的“ esac”是什么意思?需要吗?
我发现在bash case语句的末尾出现了多个“ esac”的示例,但是我没有找到任何有关其用法的清晰文档。手册页使用了它,甚至在单词上有一个索引(https://www.gnu.org/software/bash/manual/bashref.html#index-esac),但没有定义它的用法。是结束案例陈述,最佳实践还是纯技术的必需方法?
55 bash  case 




5
如何区分忽略注释的文件(以#开头的行)?
我有两个配置文件,一个是来自软件包管理器的原始文件,另一个是我自己修改的自定义文件。我添加了一些注释来描述行为。 如何diff在配置文件上运行而跳过注释?带注释的行由以下方式定义: 可选的前导空格(制表符和空格) 井号(#) 其他任何字符 跳过第一个要求的(最简单)正则表达式将是#.*。我尝试了GNU diff 3.0 的--ignore-matching-lines=RE(-I RE)选项,但无法在RE中使用它。我也尝试过.*#.*,.*\#.*没有运气。从字面上看,将(Port 631)放在RE任何地方都不匹配,将RE放在斜线之间也无济于事。 如“ diff”工具中所建议的那样,似乎缺少正则表达式?,我尝试过grep -G: grep -G '#.*' file 这似乎与注释匹配,但不适用于diff -I '#.*' file1 file2。 那么,该选项应如何使用?如何diff跳过某些行(在我的情况下为评论)?请不要建议grep文件和比较临时文件。

7
如何重新连接逻辑断开的USB设备?
USB存储设备可能会在逻辑上断开连接:该设备仍处于插入状态,但在操作系统中不可见(例如,未在下方列出/proc/bus/usb)。也许其他USB或其他可移动设备也可能发生这种情况。例如,这可能发生: Nautilus卸载USB存储设备后 ; 在VirtualBox声明使用USB存储设备后(将其连接到来宾中时,该设备将从Linux主机中消失,如果从来宾中分离,则该设备不会自动重新出现)。 驱动程序或硬件中发生了什么,最重要的是,(如何)可以在逻辑上重新连接设备(无需物理上将其插拔再插入)? 请注意,此问题与安装无关。在“逻辑断开”状态下,内核认为USB总线上没有任何内容(因此当然也没有条目/dev)。
55 linux  usb  usb-drive 

5
将当前日期从变量追加到文件名
我正在尝试将当前日期附加到文件名的末尾,如下所示: TheFile.log.2012-02-11 这是我到目前为止的内容: set today = 'date +%Y' mkdir -p The_Logs & find . -name The_Logs -atime -1 -type d -exec mv \{} "The_Logs_+$today" \; & 但是,我得到的只是文件的名称,它不附加任何内容。如何将当前日期附加到文件名?
55 bash  shell  rename  date 

6
如何以与pipefail类似的方式让bash在反补失败时退出?
因此,我想尽可能地加强bash脚本(并且在无法委托给Python / Ruby这样的语言时),以确保不会出错。 在这种情况下,我有一个strict.sh,其中包含如下内容: set -e set -u set -o pipefail 并以其他脚本来源。但是,尽管pipefail会加速: false | echo it kept going | true 它不会拾起: echo The output is '`false; echo something else`' 输出将是 输出为'' False返回非零状态和no-stdout。在管道中,该方法将失败,但此处未捕获该错误。当实际上是将计算结果存储在变量中以供以后使用,并且该值设置为空时,这可能会导致以后出现问题。 所以-有没有办法让bash将反引号内的非零返回码视为足以退出的原因?


3
为什么我不能用叉子炸弹使系统崩溃?
最近,我一直在挖掘有关GNU / Linux中进程的信息,并且遇到了臭名昭著的fork炸弹: :(){ : | :& }; : 从理论上讲,它应该无限地自我复制,直到系统用尽资源为止。 但是,我尝试在CLI Debian和GUI Mint发行版上进行测试,并且似乎对系统影响不大。是的,这里创建了无数的进程,过了一会儿我读到控制台消息,例如: bash:fork:资源暂时不可用 bash:fork:重试:没有子进程 但是一段时间后,所有进程都被杀死,一切恢复正常。我读过ulimit设置了每个用户的最大进程数,但是我似乎无法真正提高它。 对叉弹有哪些系统保护措施?它为什么不复制自身,直到一切冻结或至少滞后很多?有没有办法用叉子炸弹使系统真正崩溃?
54 linux  process  fork  ulimit 

2
为什么printf“缩小”变音符号?
如果我执行以下简单脚本: #!/bin/bash printf "%-20s %s\n" "Früchte und Gemüse" "foo" printf "%-20s %s\n" "Milchprodukte" "bar" printf "%-20s %s\n" "12345678901234567890" "baz" 它打印: Früchte und Gemüse foo Milchprodukte bar 12345678901234567890 baz 也就是说,带有变音符号的文字(例如ü)会被每个变音符号“缩小”一个字符。 当然,我在某个地方有一些错误的设置,但是我无法弄清楚可能是哪个。 如果文件的编码为UTF-8,则会发生这种情况。 如果我将其编码更改为latin-1,对齐方式是正确的,但是变音符号却被错误地呈现: Fr�chte und Gem�se foo Milchprodukte bar 12345678901234567890 baz
54 bash  unicode  printf 

6
将top的排序更改回CPU
一位前同事做了什么top,每当它以root身份运行时,数据将按MEM使用情况而不是默认的CPU使用情况进行排序。根据多次搜索,手册页,甚至顶部控制台本身的选项(O),只需按k一下就应该按CPU进行排序,但是当我点击k它时,它会要求我输入一个pid来杀死它。 那么如何将默认排序返回到CPU?
54 top 

7
sshd日志中“由xxx [preauth]关闭的连接”的含义
我们有一个Windows批处理脚本,该脚本通过PLINK(putty)自动连接到linux服务器。没有公共私钥认证,用户和密码在脚本中。 在我们的linux服务器上,我们有几个sshd日志条目(/ var / log / messages): sshd[7645]: Connection closed by xxx [preauth] 发出此消息的原因可能是什么? “ preauth”可能意味着“ pre authentication”? 有时,在条目“ closed by”中具有Windows客户端的IP地址,而在另一个条目中,Linux服务器的IP地址位于“ closed by”中。有人知道消息中客户端IP地址和主机IP地址之间的区别吗?

10
bash:测试是否设置了$ WORD
我正在寻找中的构造bash,以确定变量$WORD是否为已定义单词之一。我需要这样的东西: if "$WORD" in dog cat horse ; then echo yes else echo no fi bash有这样的构造吗?如果没有,最接近的是什么?

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.