Articles of bash

./a.out的redirect不捕获分段错误

我运行命令 ./a.out <in&> output.txt 我也想把错误放在output.txt 。 命令的exit状态是139,在terminal输出的是: 分割故障(核心转储) 和output.txt文件是空的。

如何遍历Bash中的所有ASCII字符?

我知道如何遍历字母: for c in {a..z}; do …; done 但我不知道如何遍历所有的ASCII字符。 有谁知道如何?

从键盘发送SIGINT到bash中的pipe道命令

如果在bash中运行a | b | c | d a | b | c | d a | b | c | d在命令行上,然后按^ C ,哪个进程得到信号?

为什么unix读取时不读最后一行?

我的脚本 export IFS=":" cat hello | while read abcd; do echo $a,$b,$c,$d done 我的文件hello 1:1:1:1 2:2:2:2 3:3:3:3 我的输出 1,1,1,1 2,2,2,2 如果我在3:3:3:3之后input一个空行,那么输出就变成了 1,1,1,1 2,2,2,2 3,3,3,3 任何人都知道我可以如何解决这个问题,所以我不需要在你最后一个空行?

如何处理shell脚本中的错误/exception?

下面是我在bash中执行的脚本。 它工作正常。 fileexist=0 for i in $( ls /data/read-only/clv/daily/Finished-HADOOP_EXPORT_&processDate#.done); do mv /data/read-only/clv/daily/Finished-HADOOP_EXPORT_&processDate#.done /data/read-only/clv/daily/archieve-wip/ fileexist=1 done 问题陈述:- 在我上面的shell脚本中必须每天使用cron job运行,我没有任何error/exception handling mechanism 。 假设有什么不对的地方,我不知道发生了什么事情? 在执行上面的脚本之后,还有some other scripts that will be dependent on the data provided by above script ,所以我总是从其他依赖脚本数据的人那里投诉,发生了错误。 那么有什么办法可以get notified if anything wrong has happened在我的脚本中get notified if anything wrong has happened了get notified if anything wrong has […]

grep与正则expression式:空格不匹配,除非我添加一个断言

GNU grep 2.5.4在Ubuntu 10.04的bash 4.1.5(1)上 这匹配 $ echo "this is a line" | grep 'a[[:space:]]\+line' this is a line 但是这不是 $ echo "this is a line" | grep 'a\s\+line' 但是这也匹配 $ echo "this is a line" | grep 'a\s\+\bline' this is a line 我不明白为什么#2不匹配(而#1)和#3也显示匹配。 这里有什么区别?

Bash在参数中完成path(带有等号)

我曾经可以键入以下内容: $> ./foo –arg = <TAB> foo是我写的任何程序,它会给我一个当前目录中的文件列表,就像tab-completion通常一样。 我不必对/ etc / bash_completion进行任何更改。 然而,最近,这已经消失,原因不明。 有谁知道如何重新启用此function? FWIW,这仍然做正确的事情(注意缺乏等号): $> ./foo –arg <TAB>

sudoers NOPASSWD:sudo:没有tty礼物,也没有askpass计划

我已经添加了这样的用户: $ adduser –system –home /no/home –no-create-home –group –disabled-password –disabled-login testuser 将用户添加到组中: $ adduser testuser testgroup 添加到sudoers(visudo)的行数: testuser ALL=(ALL) NOPASSWD: ALL %testgroup ALL=(ALL:ALL) NOPASSWD: ALL 当我尝试运行带有以下内容的bash脚本时: #!/bin/sh sudo -u testuser /usr/bin/php /usr/local/bin/script.php 但是当我运行这个脚本时,我得到了日志中的错误: sudo: no tty present and no askpass program specified 编辑: requiretty不在sudoers文件中。

在bash中使用前面的命令的输出

在Mathematica中,通过使用%可以重复使用前一个命令的输出。 是什么类似的可能为bash(或其他一些shell)? 例如,我运行了一个警告,但我想find所有的警告。 所以,我input make | grep "warning" 但是我无法看到make的输出。 我想input这样的东西,而不是: make % | grep "warning"

将文件从Windows复制到Ubuntu子系统

我启用了开发者模式,并Bash on Ubuntu on Windows安装了Bash on Ubuntu on Windows 。 我的主目录可以在%localappdata%\Lxss\home\<ubuntu.username>\ ,我创build了一个叫做Pictures的子目录,这样完整的path应该是 在Windows上: C:\Users\<windows.username>\AppData\Local\lxss\home\<ubuntu.username>\Pictures 在bash上:/ /home/<ubuntu.username>/Pictures 如果我从bash使用命令touch hello.txt创build一个文件,我可以自由地在Windows用户界面中看到这个文件,并将其复制到我的桌面。 但是,如果我从Windows用户界面创build一个新的文本文件并将其保存在C:\Users\<windows.username>\AppData\Local\lxss\home\<ubuntu.username>\Pictures ,即使我重新启动bash或窗口,当我做ls -l时文件不可见。 为什么不能在自己的主目录中看到从Windows端创build的文件? 编辑使用/mnt/c是不是一个解决scheme,我想了解为什么它不会看到这些文件,如果有补救措施,以便它将能够看到UI创build的文件,而不是尝试使用terminal复制粘贴或移动文件。