小编bis*_*hop的帖子

使用 ncal 或 cal 以某种格式显示周数

当两个命令每个都做你想做的一件事但都不做时,你难道不喜欢它吗?

这就是cal它的作用。格式不错。虽然缺少周数:

$ cal
    January 2012      
Su Mo Tu We Th Fr Sa  
 1  2  3  4  5  6  7  
 8  9 10 11 12 13 14  
15 16 17 18 19 20 21  
22 23 24 25 26 27 28  
29 30 31              
Run Code Online (Sandbox Code Playgroud)

这就是ncal它的作用。奇怪的格式,但有周数:

$ ncal -w
    January 2012      
Su  1  8 15 22 29   
Mo  2  9 16 23 30   
Tu  3 10 17 24 31   
We  4 11 18 25      
Th  5 12 …
Run Code Online (Sandbox Code Playgroud)

command-line bash terminal calendar

23
推荐指数
4
解决办法
2万
查看次数

在函数中调用作业时无法 grep 作业列表

我可以grep输出jobs,我可以grep输出 a function。但是为什么我不能jobs在函数中grep 输出呢?

$ # yes, i can grep jobs
$ jobs
[1]+  Running          vim
[2]+  Stopped          matlab

$ jobs | grep vim
[1]+  Running          vim

$ # yes, of course i can grep a function
$ type mockjobs
mockjobs is a function
mockjobs ()
{
    echo '[1]+ Running         vim banjo'
}
$ mockjobs | grep vim
[1]+ Running         vim banjo

$ # now put those two together and surely …
Run Code Online (Sandbox Code Playgroud)

bash pipe function jobs subshell

7
推荐指数
1
解决办法
718
查看次数

撤消标签扩展?

在 bash 中,按下会Tab调用可编程完成功能,并且 (a) 扩展为唯一路径或与键入的内容匹配的命令或 (b) 可能选项的列表。

是否可以通过按来撤消整个扩展Tab

例子:

  1. 我目前的命令是ls application/views/.
  2. 该命令有两种可能的扩展:helpers/scripts/.
  3. 我输入heTab,它扩展到helpers/.
  4. 我意识到我的意思是另一个 scripts
  5. 现在我必须删除整个扩展“helpers/”。

我通常只是在整个路径上退格(helpers/在这种情况下),因为我发现醒目的 readline undo Control+_乏味。我想要的是删除扩展的完整匹配的单个键序列,而不管我最初输入的任何字符以及末尾添加的任何空格或斜杠。


运行注释或我自己阅读的GNU 参考建议的键序列列表。这些都没有达到目标

  • Meta+ b-- 移回上一个/,但不删除。
  • Meta+ Del-- 删除一个字符,而不是整个单词。
  • Meta+ Backspace-- 向后移动一个字符而不删除。
  • Control+ W-- 删除整个路径,而不仅仅是扩展。因此,在我的示例中,按下 后Tab,bash 将其扩展为ls …

command-line bash keyboard-shortcuts

5
推荐指数
1
解决办法
692
查看次数

如何禁用 at 作业的邮件输出?

我想禁用at某类工作的邮件通知。例如,在测试下面的用例时(在中途杀死一个 at 作业)我想要输出,但生产中的相同代码我确实想要邮寄输出:

$ at now <<<'/usr/bin/timeout 15s nc -l 20242'
job 71 at 2016-05-16 15:03
$ pidof /usr/bin/timeout
11853
$ kill 11853
$ mail
Heirloom Mail version 12.4 7/29/08.  Type ? for help.
"/var/spool/mail/bishop": 1 message 1 new
>N  1 bishop@trencher  Mon May 16 15:03  16/920   "Output from your job       71"
& 1
Message  1:
From bishop@trencher  Mon May 16 15:03:30 2016
Date: Mon, 16 May 2016 15:03:30 -0400
From: bishop@trencher
Subject: Output from your …
Run Code Online (Sandbox Code Playgroud)

linux at

5
推荐指数
1
解决办法
2132
查看次数

为什么本地 fn=$(...) 掩盖了 $?状态码

两个函数定义,唯一的区别是第一个将localstorage 关键字与赋值组合在一起,而第二个将它们分开:

function foo {
    local fn=$(mktemp -p /path/does/not/exist 2>/dev/null)
    echo $?
}

function bar {
    local fn
    fn=$(mktemp -p /path/does/not/exist 2>/dev/null)
    echo $?
}

foo
bar
Run Code Online (Sandbox Code Playgroud)

这与“0”然后“1”相呼应。我希望它回声“1”然后是“1”。似乎的值$?是分配给 local 的结果,而不是命令替换的结果。

为什么 bash 4.2.46(1)-release 会这样?

bash

5
推荐指数
1
解决办法
533
查看次数

计算时间差

我需要计算时差

文件:

$ cat time.log
06:12:23
06:12:54
06:14:18
06:15:38
$
Run Code Online (Sandbox Code Playgroud)

我期望结果如下:

0:00:31
0:01:20
Run Code Online (Sandbox Code Playgroud)

我试过这个

#!/bin/sh
cat "$@" |
tr : ' ' |
  dc -e '
[60+Lm1-Sm]SS
[60+Lh1-Sh]SM
[24+]SH
?SsSmSh
?SsSmSh
LsLs- d0>S Ss
LmLm- d0>M Sm
LhLh- d0>H Sh
[
]Ls[:]Lm[:]Lh
nnnnnn
'
Run Code Online (Sandbox Code Playgroud)

但结果如下

$ ./calculate_time.sh time.log 
0:0:31
$ 
Run Code Online (Sandbox Code Playgroud)

它只得到前两行之间的差异,我怎样才能让它也得到其余行之间的差异?

bash

3
推荐指数
1
解决办法
489
查看次数