标签: bash

\d 是否等于 sed 中的 [0-9]?

7
00:00:30,008 --> 00:00:30,066
by line
8
00:00:31,038 --> 00:00:34,050
or later in the nineteen seventies it was usually a
9
00:00:34,005 --> 00:00:38,634^M
video consul but the council was not capable of displaying arbitrate graphics
10
Run Code Online (Sandbox Code Playgroud)

以上几行在一个名为 2.txt 的文件中。我想要不以数字开头的行。在实践中,sed -i '/^[0-9]+/d' 2.txt效果很好。然而,没有sed -i '/^\d+/d' 2.txt。\d 在正则表达式中不应该等于 [0-9] 吗?

linux bash sed

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

有什么方法可以向后运行grep,即从文件末尾开始?

我有一个 70G+ 的日志文件,我想要与模式匹配的最新条目(apache 日志在末尾追加新项目)。我可以:

run grep | tail
Run Code Online (Sandbox Code Playgroud)

或者

run tail | grep
Run Code Online (Sandbox Code Playgroud)

选项 1 将永远存在。选项 2 可能什么都不返回,然后我将不得不增加 tail 的计数并继续运行直到我得到一些东西。

如果我可以从最后一行到第一行 grep,那将是理想的。但是我在 grep 的手册页上找不到任何选项。

有什么技巧可以做到这一点吗?单独使用 grep 还是与任何其他 linux 工具组合?

linux bash grep command-line

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

为什么“source <(cmd)”有效但“$(cmd)”无效

我想要一个脚本来调用 params,它会向我当前的 shell 添加一些别名。必须根据调用参数和我启动它的当前目录来构建别名。如果可能,我不想获取脚本的源代码,只需像任何其他脚本一样运行它即可。

这是我迄今为止所做的:

我写了一个小的 shell 脚本来生成一些别名,比如

echo 'alias foo="$1"'
Run Code Online (Sandbox Code Playgroud)

并将其保存为具有 +x 权限的文件“myscript”。然后我通过控制台执行它来设置别名

$(myscipt hello)
Run Code Online (Sandbox Code Playgroud)

效果很好

当我改变我的shell脚本时

echo 'alias foo="bar $1 -param"'
Run Code Online (Sandbox Code Playgroud)

并像上面一样再次执行,结果是

bash: alias hello" not found
bash: alias -param" not found
Run Code Online (Sandbox Code Playgroud)

???。我已经摆脱了 bar 和 -param 之间的空白,但无法让它工作。

当我执行

source <(myscript hello)
Run Code Online (Sandbox Code Playgroud)

一切都像预期的一样好(这是我现在的解决方案,但不确定它是否是最好的)。

一些想法如何获得更好的解决方案?

linux bash shell command-line

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

在 bash 脚本中处理顺序和并行作业

我知道在 bash 编程中,comamnd1;command2;command3将按顺序command1&&command2&&command3运行它们,同时将它们并行运行。然而,当我结合会发生什么;&&在一起,例如command1 ; command2 && command 3?bash;&&bash之间的优先级是什么?以上命令是否等同于 (command1;commmand2) && command3(command1);(command2 && command3)

bash shell

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

如何在 bash 中比较这些(日期)值

我需要比较以下格式的 2 个字符串:

2013-12-31T00:00:00
2014-11-19T15:40:30
Run Code Online (Sandbox Code Playgroud)

它是一种自定义日期时间格式。我尝试了不同的事情,没有奏效:

if [ ${val1} < ${val2} ] || [ ${val1} == ${val2} ]; then ...
Run Code Online (Sandbox Code Playgroud)

或者

if [ ${val1} <= ${val2} ]
Run Code Online (Sandbox Code Playgroud)

或者

if [[ ${val1} -el ${val2} ]]
Run Code Online (Sandbox Code Playgroud)

谢谢你们!

bash comparison

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

在终端中将字符添加到第 n 行的末尾

我正在尝试从命令行在文件的第N行末尾添加一些空格。

谁能告诉我怎么做?

linux bash command-line

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

Linux:如何通过参数名称杀死 root 拥有的进程?

我想知道如何根据 root 的参数信息杀死 root 拥有的进程:

root      3176  0.0  0.8   3604  2252 ?        S    21:33   0:00 sudo python main.py
root      3191 65.4  4.6  96820 11744 ?        Rl   21:33  10:00 python main.py
Run Code Online (Sandbox Code Playgroud)

我正在尝试这样但没有成功:

pi@raspberrypi ~ $ ps aux | grep main.py | awk '{print $2}' | xargs kill
pi@raspberrypi ~ $ sudo pkill -u root main.py
Run Code Online (Sandbox Code Playgroud)

linux bash grep kill raspbian

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

为什么 'export $Path=$Path:dir' 不起作用?

我只是想知道为什么我们需要使用这个命令

export Path=$Path:dir
Run Code Online (Sandbox Code Playgroud)

为什么命令看起来不像

export $Path=$Path:dir/dir'
Run Code Online (Sandbox Code Playgroud)

linux bash path environment-variables

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

Thunar 自定义命令:保持终端打开

当我使用命令为 Thunar 制作自定义命令时xfce4-terminal -x,有时我想查看命令的终端输出。如何在命令运行后防止终端关闭?

我试过这些:

xfce4-terminal -x COMMAND &
xfce4-terminal -x COMMAND && read -p
xfce4-terminal -x COMMAND && read -p '' foo
Run Code Online (Sandbox Code Playgroud)

他们没有工作。奇怪的是,它不会运行read命令。它说:

无法执行子进程“读取”(没有这样的文件或目录)

linux terminal bash thunar xfce4

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

用于批处理文件中命令链的多行 &amp;&amp; 组合运算符

我看到这个运算符在 Windows(可能是 Linux?)中用于在一行中链接/组合多个命令。只要前面的命令成功完成(退出代码 0),就会一个接一个地执行命令。

但是,我不明白它是否可以在批处理文件中使用,您可以一个接一个地指定命令,每行一个命令。在这种情况下,您如何实现相同的效果?你如何cmd1 && cmd2 && cmd3分成多行?你如何终止

cmd1
cmd2
cmd3
Run Code Online (Sandbox Code Playgroud)

一旦第一个命令失败?

我也想知道接线员的名字,以便以后自己找到类似问题的答案。

bash command-line newlines batch-file cmd.exe

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