标签: bash

从 cron 脚本运行时找不到“/usr/bin/env bash”

我的 crontab 中有这个:

PATH=/usr/bin:/usr/local/bin:$PATH
*/1 * * * * /usr/bin/env bash > ~/cron.log 2>&1
Run Code Online (Sandbox Code Playgroud)

中的输出cron.log如下:

/usr/bin/env bash: No such file or directory
Run Code Online (Sandbox Code Playgroud)

/usr/bin/env以及/bin/bash两者都存在。我还可以从该 crontab 所属的同一用户运行此命令,不会出现任何错误。我也尝试添加

SHELL=/bin/bash
Run Code Online (Sandbox Code Playgroud)

到 crontab 的顶部。没有效果。不知道发生了什么事。还有这个:

*/1 * * * * which bash > ~/cron.log 2>&1
Run Code Online (Sandbox Code Playgroud)

日志文件中根本没有显示任何内容。这就是我在 crontab 中为该用户提供的所有内容,仅此而已。

bash cron computing-environment

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

命令行 scp 不使用不区分大小写的自动完成

TAB当我使用scp.

我的 中有以下行.inputrc

set completion-ignore-case on
Run Code Online (Sandbox Code Playgroud)

并且不区分大小写的自动完成功能在其他 shell 程序上运行良好。

例子

<TAB>这里的意思是按下TAB按键。

正确的行为

目前,不区分大小写的自动完成功能可以在其他 shell 程序上正常工作,如下所示cp

$ cp my<TAB>
Run Code Online (Sandbox Code Playgroud)

正如预期的那样,产生:

$ cp MyFile
Run Code Online (Sandbox Code Playgroud)

不正确的行为

使用 时scp,不区分大小写的自动完成功能不起作用。在这条线上,什么也没有发生:

$ scp my<TAB>
Run Code Online (Sandbox Code Playgroud)

我必须恢复使用繁琐的区分大小写的自动完成功能,如下所示:

$ scp My<TAB>
Run Code Online (Sandbox Code Playgroud)

正如预期的那样,产生:

$ scp MyFile
Run Code Online (Sandbox Code Playgroud)

可能的解决方法

由于这是一个“最近”的问题(即这种情况只发生了几年左右),我的猜测是这与某些程序具有自动完成开关和其他参数的方式有关,从某些版本开始bash,但我无法找到如何解决这个特定问题。

linux bash scp

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

如何手动发送ARP请求

我最近用Tcpdump嗅探了一个数据包“ARP,请求谁-有192.168.2.3告诉192.168.2.2,长度28”。

我想重现此消息,并将 ARP 请求从我的笔记本电脑发送到我决定的任何 IP。我怎样才能做到这一点 ?

我也有兴趣强制刷新整个 ARP 表。我知道删除该表会更新它,但只有笔记本电脑此操作非常慢,并且可能需要长达 1/2/5 分钟才能重建完整的 ARP 表。有没有办法通过发送广播 ARP 请求来强制重建表?

我使用的是最新操作系统 Yosemite 10.10.4 的 Mac

谢谢。

mac bash tcp arp macos

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

如何在终端中显示彩色文本?

我想在终端(bash shell)中显示彩色文本。尝试过这种方法:

echo -e "\e[1;31m This is red text \e[0m"
Run Code Online (Sandbox Code Playgroud)

但它不会将文本颜色更改为红色。

linux bash shell-script macos

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

从 Linux 子 shell 捕获特定的环境变量

我试图找出一种方法来从脚本 A 运行 shell 脚本 B,在脚本 B 中设置或导出一个变量,并且能够在脚本 B 完成并且其子 shell 返回后将该值存储在脚本 A 中。

我不是要获取脚本 B。我只想要 1 个特定变量。我可以向脚本 A 添加内容,但我不希望脚本 B 中可能设置的任何变量覆盖脚本 A 中的任何内容,除了我专门尝试捕获的内容。

我确定有一些丑陋的方法,比如将我在 A 中关心的所有变量写出到一个文件,源脚本 B,然后从文件中读回所有内容并恢复 A 中的变量,除了 B 中设置的变量我想要的。我正在寻找一种相对干净和直接的方式,如果存在的话。

linux bash shell environment-variables

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

在脚本中更改目录不会更改目录——为什么?

自从搜索这个以来,我已经看到了这个答案,但最初我写了这个脚本:

for i in `seq 1 $1`; 
   do cd ../;
done;
Run Code Online (Sandbox Code Playgroud)

它不会更改目录。这是为什么,运行为

./updir.sh 5
Run Code Online (Sandbox Code Playgroud)

bash bash-scripting

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

如何使用 SED 删除两个字符之间的所有内容?

如何使用 sed 删除两个字符之间的所有文本...

例如:

00arbez+15611@hotmail.com
00aryapan+kee45j@rediffmail.com
asghrsha+hfcdedd@yahoo.com
Run Code Online (Sandbox Code Playgroud)

我想删除电子邮件中的文本 + 到 @。(连+都需要删掉,@符号要保留)

我使用了以下命令:

sed -e 's/\(+\).*\(@\)/\1\2/' FILE.txt > RESULT.txt
Run Code Online (Sandbox Code Playgroud)

但是文件的输出中包含“+”号。例如:asghrsha+@yahoo.com

我想要以下输出:

00arbez@hotmail.com
00aryapan@rediffmail.com
asghrsha@yahoo.com
Run Code Online (Sandbox Code Playgroud)

有人可以帮我修改上面的 sed 命令吗?

linux bash sed

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

我可以为空字符串取别名吗?

在 bash 中,您可以将空命令别名为某些东西吗?换句话说,是否识别出用户Enter在 shell 提示符下只按下了键?例如,如果你想用一个空白的 shell 条目清除屏幕,你如何Enterclear命令设置别名?

bash alias command-line

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

为什么这个使用变量值的 mkdir 命令不起作用?

我想创建一个以变量值给出的目录。首先让我们确保可以通过最简单的命令创建目录:

$ mkdir ~/opt
[ec2-user@ip-172-31-15-193 ~]$ ls ~/opt
[ec2-user@ip-172-31-15-193 ~]$ ls -l ~/opt
total 0
Run Code Online (Sandbox Code Playgroud)

使用变量代替硬编码路径的语法是什么?这是已经尝试过的:

$ BDIR="~/opt"
$ mkdir $BDIR
mkdir: cannot create directory ‘~/opt’: No such file or directory
Run Code Online (Sandbox Code Playgroud)

还:

$ mkdir "$BDIR"
mkdir: cannot create directory ‘~/opt’: No such file or directory
Run Code Online (Sandbox Code Playgroud)

bash

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

WSL Ubuntu bash:操作超时,因为未收到来自虚拟机或容器的响应

我使用的是 Windows 10 Pro 10.0.21337(Windows Insider 程序)并在 Ubuntu 和 Windows 终端上安装了 WSL。固件更新后,ubuntu bash 将不再启动。在 cmd.exe 中,响应是:

The operation timed out because a response was not received from the virtual machine or container.
Run Code Online (Sandbox Code Playgroud)

我在 www 上的几页中发现了这条消息,但它们主要与 docker 容器有关。

bash ubuntu windows-subsystem-for-linux wsl2

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