小编mur*_*uru的帖子

如何添加 X 天日期并获取新日期?

我有 Linux ( RH 5.3 ) 机器

我需要添加/计算 10 天加上日期,这样我就会得到新的日期(到期日期))

例如

 # date 
 Sun Sep 11 07:59:16 IST 2012
Run Code Online (Sandbox Code Playgroud)

所以我需要得到

     NEW_expration_DATE = Sun Sep 21 07:59:16 IST 2012
Run Code Online (Sandbox Code Playgroud)

请建议如何计算新的到期日期(使用 bash 、 ksh 或操纵日期命令?)

linux bash shell-script date

154
推荐指数
4
解决办法
37万
查看次数

Linux 如何处理多个连续的路径分隔符(/home////username//file)?

我正在处理将文件位置传递给 scp 子进程的 python 脚本。这一切都很好,但我处于这样一种情况,我可能最终将一个路径与一个文件名连接起来,这样路径中就有一个双 ' /。我知道 bash 不关心您是否有多个文件分隔符,但我想知道如何纠正它。是 bash 去掉了额外的/s 还是真的无关紧要?

我问是因为它会为我节省几行代码来/在连接时检查额外的s。我知道这没什么大不了的,但我也很好奇。我有一个包含行cd //usr(而不是cd /usr)的 bash 脚本,这似乎暗示/在路径中使用多个s可能很重要

directory slash filenames

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

$* 和 $@ 有什么区别?

考虑以下代码:

foo () {
    echo $*
}

bar () {
    echo $@
}

foo 1 2 3 4
bar 1 2 3 4
Run Code Online (Sandbox Code Playgroud)

它输出:

1 2 3 4

1 2 3 4

我正在使用 Ksh88,但我也对其他常见的 shell 感兴趣。如果您碰巧知道特定 shell 的任何特殊性,请务必提及它们。

我在 Solaris 上的 Ksh 手册页中找到了以下内容:

$* 和 $@ 的含义在不引用或用作参数赋值或文件名时是相同的。然而,当用作命令参数时,$* 等价于 ``$1d$2d...'',其中 d 是 IFS 变量的第一个字符,而 $@ 等价于 $1 $2 ....

我尝试修改IFS变量,但它不会修改输出。也许我做错了什么?

shell ksh quoting arguments

119
推荐指数
6
解决办法
4万
查看次数

为什么我的以太网接口被称为 enp0s10 而不是 eth0?

当我运行时ifconfig -a,我只得到lo和enp0s10接口,而不是经典的eth0

enp0s10是什么意思?为什么没有eth0?

linux networking udev ethernet

114
推荐指数
4
解决办法
14万
查看次数

为什么在bash中合法的命令之前设置变量?

我刚刚遇到了几个答案,例如解析一个分隔的文本文件......使用构造:

while IFS=, read xx yy zz;do
    echo $xx $yy $zz
done < input_file
Run Code Online (Sandbox Code Playgroud)

其中IFS变量设置在read命令之前。

我一直在阅读bash 参考,但无法弄清楚为什么这是合法的。

我试过

$ x="once upon" y="a time" echo $x $y
Run Code Online (Sandbox Code Playgroud)

从 bash 命令提示符,但没有得到任何回应。有人可以指出我在引用中定义该语法的位置,该引用允许以这种方式设置 IFS 变量吗?这是特殊情况还是我可以用其他变量做类似的事情?

shell bash environment-variables

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

为什么 SIGINT 在发送到其父进程时没有传播到子进程?

给定一个 shell 进程(例如sh)及其子进程(例如cat),如何使用 shell 的进程 ID模拟Ctrl+的行为C?


这是我尝试过的:

运行sh然后cat:

[user@host ~]$ sh
sh-4.3$ cat
test
test
Run Code Online (Sandbox Code Playgroud)

发送SIGINT到cat从另一终端:

[user@host ~]$ kill -SIGINT $PID_OF_CAT
Run Code Online (Sandbox Code Playgroud)

cat 收到信号并终止(如预期)。

向父进程发送信号似乎不起作用。为什么信号cat在发送到其父进程时没有传播到sh?

这不起作用:

[user@host ~]$ kill -SIGINT $PID_OF_SH
Run Code Online (Sandbox Code Playgroud)

shell process signals

77
推荐指数
4
解决办法
6万
查看次数

从文件中读取 grep 模式

我有几个大文本文件,在文件中UNIQS.txt我有一个grep来自另一个文件的字符串列表。我使用的代码是

grep -f UNIQS.txt EEP_VSL.uniqs.sam > UNIQ_templates.sam
Run Code Online (Sandbox Code Playgroud)

什么都不做 - 生成的文件是空的。但是当我这样做时

grep -F -f UNIQS.txt EEP_VSL.uniqs.sam > UNIQ_templates.sam
Run Code Online (Sandbox Code Playgroud)

它工作正常。这让我感到困惑,因为我认为grep不会将条目解释UNIQS.txt为没有引号和斜杠等的正则表达式模式在文件中(没有)。一般来说,如果您从文件中获取模式,那么它会自动认为它们是正则表达式模式吗?

编辑:在UNIQS.txt文件中,有表单的换行符分隔字符串

HWI-ST365:215:D0GH0ACXX:2:1101:10034:186783
Run Code Online (Sandbox Code Playgroud)

(称为模板名称)和文件EEP_VSL...制表符分隔的列,大约有14列,第一列是模板名称,所以基本上我想提取文件中每个模板对应的行。

grep

73
推荐指数
1
解决办法
17万
查看次数

$_ 与 !$。前面命令的最后一个参数和输出重定向

问题是关于特殊变量。文档说:

!!:$

指定前面命令的最后一个参数。这可以缩短为!$.


( $_, 下划线。) 在 shell 启动时,设置为绝对路径名,用于调用在环境或参数列表中传递的正在执行的 shell 或 shell 脚本。随后,扩展到扩展后上一个命令的最后一个参数。还设置为用于调用在导出到该命令的环境中执行和放置的每个命令的完整路径名。

一定有一些我无法理解的差异,因为:

$ echo "hello" > /tmp/a.txt
$ echo "!$"
echo "/tmp/a.txt"
/tmp/a.txt

$ echo "hello" > /tmp/a.txt
$ echo $_
hello
Run Code Online (Sandbox Code Playgroud)

有什么不同?

shell bash history-expansion

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

[0-9], [[:digit:]] 和 \d 之间的区别

在正则表达式维基百科的文章,似乎[[:digit:]]= [0-9]= \d。

它们不相等的情况是什么?有什么不同?

经过一些研究,我认为一个区别是括号表达式[:expr:]依赖于语言环境。

regular-expression wildcards

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

为什么 Unix 时间从 1970-01-01 开始?

为什么 Unix 时间从 1970-01-01 开始?为什么不是 1971-01-01 或任何其他日期?

history time

57
推荐指数
3
解决办法
8万
查看次数