当两个命令每个都做你想做的一件事但都不做时,你难道不喜欢它吗?
这就是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) 我可以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 中,按下会Tab调用可编程完成功能,并且 (a) 扩展为唯一路径或与键入的内容匹配的命令或 (b) 可能选项的列表。
是否可以通过按来撤消整个扩展Tab?
例子:
ls application/views/
.helpers/
和scripts/
. helpers/
.scripts
。我通常只是在整个路径上退格(helpers/
在这种情况下),因为我发现醒目的 readline undo Control+_乏味。我想要的是删除扩展的完整匹配的单个键序列,而不管我最初输入的任何字符以及末尾添加的任何空格或斜杠。
运行注释或我自己阅读的GNU 参考建议的键序列列表。这些都没有达到目标:
/
或
,但不删除。ls …
我想禁用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) 两个函数定义,唯一的区别是第一个将local
storage 关键字与赋值组合在一起,而第二个将它们分开:
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 会这样?
我需要计算时差
文件:
$ 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)
它只得到前两行之间的差异,我怎样才能让它也得到其余行之间的差异?