Tag: bash

如何grep 2或3行,一行包含我想要的文本,以及其他正下方的行?

这是错误日志的快照: 06:16:29,933 ERROR EmailRMManager$:45 – Exception In get Message com.rabbitmq.client.AlreadyClosedException: clean connection shutdown; reason: Attempt to use closed channel at com.rabbitmq.client.impl.AMQChannel.ensureIsOpen(AMQChannel.java:195) at com.rabbitmq.client.impl.AMQChannel.rpc(AMQChannel.java:222) at com.rabbitmq.client.impl.AMQChannel.rpc(AMQChannel.java:208) at com.rabbitmq.client.impl.AMQChannel.exnWrappingRpc(AMQChannel.java:139) at com.rabbitmq.client.impl.ChannelN.basicGet(ChannelN.java:645) 我执行以下命令: cat foo.log | grep ERROR cat foo.log | grep ERROR获取OP为: 06:16:29,933 ERROR EmailRMManager$:45 – Exception In get Message 我应该执行什么命令来获得输出 06:16:29,933 ERROR EmailRMManager$:45 – Exception In […]

如何将bc的结果传递给变量

我正在写一个脚本,我想将bc的结果传递给变量。 我已经声明了2个变量( var1和var2 )并给它们赋值。 在我的脚本中,我想将结果从bc传递到另一个变量说var3以便我可以使用var3进行其他计算。 到目前为止,我已经能够将结果写入一个不是我正在寻找的文件,而且我已经能够在终端中回显结果,但我只想将结果传递给变量,以便我可以使用该变量。 echo “scale=2;$var1/var2” | bc

如何检查$ 1和$ 2是否为空?

我正在运行一些传递字符串参数的脚本,如果else语句如下所示我想做: if [ $1 != ” ] && [ $2 != ” ] then do something….. 但它显示Error too many argument 。 为什么?

如何将’git’别名为’g’以便保留bash-completion规则?

如果我这样做: alias g=’git’ 我放弃了所有完成规则(即在打字后点击TAB时,分支和遥控器不再自动完成,例如g push o )。

如何为终端设置代理?

我期待为终端设置代理。 我需要的是我想通过代理将所有终端通信发送到互联网,比如tor。 我尝试设置系统范围的代理设置。 但终端不遵守系统范围的代理配置。 有没有其他方法可以做到这一点?

区分交互式登录和非交互式非登录shell

我试图区分这四个术语登录,非登录,交互和非交互 : 交互式 – 登录shell 交互式 – 非登录shell 非交互式 – 登录shell 非交互式 – 非登录shell 我认为 交互式 – 非登录shell :启动系统,登录系统并打开终端和 非交互式 – 登录shell :telnet到系统并登录 但是交互式登录shell呢? 它是否登录系统,打开虚拟终端并登录? 和 非交互式 – 非登录shell,是否在crontab中运行自动脚本?

如何将管道输入定向到ls命令?

当我输入类似的内容时: find . -name *foo* | ls -lah 它返回与plain ls命令相同的结果,就好像它没有输入一样。 然而: ls -lah $( find . -name *foo* ) 效果很好,但只有当find命令有结果时才有效。 管道到ls有可能吗?

获取系统中使用的默认文本编辑器

我一直在搜索和浏览很长时间,但一直无法找到我的问题的答案。 我使用了select-edito r,我注意到我正在使用/usr/bin/nano 。 这是我使用的默认文本编辑器吗? 当我打开文本文件时,它打开gedit 必须指定终端中的哪个命令才能获取我正在使用的默认文本编辑器,并将其返回到终端中的e?

如何替换多个文本文件的第5行上的字符串?

我想使用单个终端命令将字符串“Good Morning”替换为多个文本文件的第5行( file1.txt,file2.txt,file3.txt,file4.txt )。 所有文本文件都位于我的~/Desktop 。 注意:我的桌面包含6个.txt文件。我想将更改仅应用于上述4个文本文件。

shell以什么顺序执行命令和流重定向?

我今天试图将stdout和stderr重定向到一个文件,我遇到了这个: > file.txt 2>&1 这显然首先将stderr重定向到stdout ,然后将生成的stdout重定向到file.txt 。 但是,为什么不是命令 2>&1 > file.txt ? 人们自然会将此读作(假设从左到右执行)首先执行的命令,将stderr重定向到stdout然后,将生成的stdout写入file.txt 。 但上面只将stderr重定向到屏幕。 shell如何解释这两个命令?