小编use*_*548的帖子

如何在bash“未触及”中回显带有多个空格的字符串?

我分配了一个这样的变量:

MYCUSTOMTAB='     '
Run Code Online (Sandbox Code Playgroud)

但是在 echo 中使用它:

echo $MYCUSTOMTAB"blah blah"
Run Code Online (Sandbox Code Playgroud)

或者

echo -e $MYCUSTOMTAB"blah blah"
Run Code Online (Sandbox Code Playgroud)

只返回一个空格和字符串的其余部分:

 blah blah
Run Code Online (Sandbox Code Playgroud)

如何原封不动地打印完整的字符串?我想用它来自定义缩进,因为\t对我的口味来说太宽了。

shell bash shell-script

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

如何在 debian 9 stretch 中显示旧的 eth0 名称并重命名网络接口?

我想做两件事:

1) 将接口恢复为旧的经典名称:eth0 而不是 ens33。

2)以我想要的方式重命名接口,例如,我可以将接口 eth0 称为 wan0 或分配 eth1、eth2 等我想要的 mac 地址。

networking debian network-interface

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

获取脚本当前目录(这样我就可以在没有相对路径的情况下包含文件并从任何地方运行脚本)

我有以下问题,我的 shell 脚本包含如下内容:

mydir=''

# config load
source $mydir/config.sh

.... execute various commands
Run Code Online (Sandbox Code Playgroud)

我的脚本放在我的用户目录中..让我们说 /home/bob/script.sh

如果我在/home/bob目录中并运行./script.sh一切正常。

如果我在外面并想使用绝对路径/home/bob/script.sh,则无法正确调用 config.sh 文件。

$mydir为了使脚本可以从每条路径运行而无需费力,我应该分配什么值?

mydir=$(which command?)
Run Code Online (Sandbox Code Playgroud)

PS:作为奖励,如果脚本目录在 $PATH 内,请提供一个替代方案

bash shell-script

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

在 debian 9 上安装 zfs

我尝试在 debian 9.1 上安装 zfs,但是我遇到了一些错误。

我的第一次安装只是 zfs-dkms 但是我在网上读到 zfs-dkms 也需要 spl-dkms 才能运行。


我的步骤是更改我的sources.list添加非免费contrib如下:

/etc/apt/sources.list

deb http://ftp.nl.debian.org/debian/ stretch main contrib non-free
deb-src http://ftp.nl.debian.org/debian/ stretch main contrib non-free

deb http://security.debian.org/debian-security stretch/updates main contrib non-free
deb-src http://security.debian.org/debian-security stretch/updates main contrib non-free

# stretch-updates, previously known as 'volatile'
deb http://ftp.nl.debian.org/debian/ stretch-updates main contrib non-free
deb-src http://ftp.nl.debian.org/debian/ stretch-updates main contrib non-free
Run Code Online (Sandbox Code Playgroud)

完成了经典的 apt-get 更新,然后尝试使用以下命令安装 zfs:

apt-get install spl-dkms
Run Code Online (Sandbox Code Playgroud)

并且只有在

apt-get install zfs-dkms
Run Code Online (Sandbox Code Playgroud)

结果,我有这些错误:

root@debian:/etc/apt# apt-get install zfs-dkms
Reading package …
Run Code Online (Sandbox Code Playgroud)

zfs debian apt

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

目录“递归”上次修改日期

我想知道 linux bash 中的命令或函数来获取目录中最后修改的文件的时间戳(并可能格式化其输出)。

假设我有 /path/mydir 并且这个目录里面有一大堆文件。鉴于其路径,我想输出最近修改过的文件的时间戳。

我想该过程可以递归地执行 foreach 文件,检查所有文件并在每次找到更新的变量时使用最近的时间更新变量。

编辑:抱歉造成混乱,但我想使用 Epoch 时间戳:)

bash shell-script timestamps files

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

在前一个回声的同一位置在控制台中打印一些东西,带有一种负面回声

在 bash 中,您可以投射一个名为clear清除所有屏幕命令的命令。

并与echo您可以打印你想要的任何屏幕上..

在我的简单脚本中,我经常需要打印我的命令所做的工作的百分比。

所以我可以做类似的事情..

echo "89%"
echo "90%"
echo "91%"
Run Code Online (Sandbox Code Playgroud)

等等..

我讨厌的是让屏幕充满百分比更新......

89%
90%
91%
...
Run Code Online (Sandbox Code Playgroud)

我想知道是否有一个特殊的字符组合(例如“\033[01;31m”)可以用 bash 或 php echo 回显并告诉控制台“删除最后一个打印的字符..”

通过使用类似的东西来做到这一点:(php示例)

echo str_repeat($neg_character, strlen($last_percentage_update_string));
echo $new_percentage_update_string;
Run Code Online (Sandbox Code Playgroud)

我会在前一个的确切位置打印新字符串,而不会让屏幕充满线条

否则,我会寻找一种方法,以其他方式始终使用 bash 和 php 脚本(请至少包含 debian9 控制台和 php7 的实际工作示例)

linux bash php console

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

bash 是否有颜色命令,如 MS-Windows CMD 中所示?

Microsoft 中有一个命令cmd,称为color. 我知道,在 中bash,有一些特殊字符可以让您在回声期间更改文本颜色。我也知道在 ubuntu 中你可以编辑终端的参数,在配置中设置一个“样式”,编辑它并在菜单下用鼠标应用它。

我要问的是,如果在 debian、ubuntu 和 centOS 下存在一些非常简单的东西,例如:

color 1b
Run Code Online (Sandbox Code Playgroud)

以便控制台从:

在此处输入图片说明

在此处输入图片说明

linux bash

7
推荐指数
2
解决办法
1067
查看次数

将 BIND 配置为简单转发器(无根服务器查询)

我想设置一个简单的绑定服务器,它能够充当 OpenDNS 服务器的简单转发器。

我不希望我的绑定能够查询根服务器,我希望所有流量只流向 OpenDNS,并且可能充当它的“缓存”。

如何实现?我应该以某种方式禁用根服务器提示吗?这是正确的程序吗?

我的猜测是注释掉区域“。” 由named.conf.default-zones文件中的根服务器提供服务。然而,我读到非查询根服务器也可以通过禁用递归来实现,但是禁用递归似乎导致服务器也无法利用转发器......我的 conf 哪里错了?

Conf如下:

命名文件

// This is the primary configuration file for the BIND DNS server named.
//
// Please read /usr/share/doc/bind9/README.Debian.gz for information on the
// structure of BIND configuration files in Debian, *BEFORE* you customize
// this configuration file.
//
// If you are just adding zones, please do that in /etc/bind/named.conf.local

include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";
Run Code Online (Sandbox Code Playgroud)

命名.conf.options

acl "trusted" {
        127.0.0.1/8;
        10.0.0.0/8;
        172.16.0.0/12;
        192.168.0.0/16;
        ::1;
}; …
Run Code Online (Sandbox Code Playgroud)

debian bind

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

用于将大量域和一些 TLD 列入黑名单的 DNS 服务器

我正在尝试为我的局域网设置一个基本的 DNS 服务器,它能够放入一个空路由或 127.0.0.1 多个域。

我想阻止的域来自一个列表,但我也想使用正则表达式阻止一些域(这对我的设置来说是必须的)。

我做这项业务的候选软件似乎是 Unbound,这是一个递归缓存安全 DNS 服务器,具有各种有用的功能。

但是 Unbound 似乎不支持任何正则表达式!

此外,在区域重复方面,Unbound 非常挑剔。我的域列表是从许多混合来源构建的,因此我可以使用一些脚本过滤掉许多重复项,但也可以过滤列表中的域,例如:

aaah.very.this.com

但是也

非常.this.com

这导致未绑定的错误尖叫,因为有一个区域重复。

虽然这是一个小问题,我可以通过更好地清理域列表来删除它,但我的主要问题是缺少用于处理域请求的正则表达式。

我可以以某种方式阻止所有 *.com 或 *.biz 或类似的东西吗?

[\w\.\-]+.com A 127.0.0.1
[\w\.\-]+.com AAAA ::1
Run Code Online (Sandbox Code Playgroud)

我的正则表达式就是一个例子,我可以使用更复杂的......

奖金

我可以做一些更讨厌的事情吗?是否所有指向 nullroute 或 127.0.0.1 且仅域的白名单通过转发到外部 DNS 得到解析?

如果回复请不要忘记这个额外的问题,因为我很想知道答案。

我可以去干嘛?Bind9、dnsmasq、未绑定、pdns-recursor...

dns debian adblock rpz

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

仅当它早于特定时间时才更新 apt-get 缓存

我在 debian 上。仅当自上次更新以来的时间大于或小于特定数量时我才想执行 apt-get 更新(可能还有其他内容),并且使用直接命令,没有 cron 技巧或类似的

假设我对 apt-get previous state 一无所知,自安装操作系统以来可能从未发布过更新,或者在 2 分钟前手动触发,或者由无人值守升级服务自动发布。

例如。

if(time > 30 min) apt-get update
if(time > 2 days) something else
Run Code Online (Sandbox Code Playgroud)

这个问题类似于我在 askubuntu 中发现的另一个问题,但由于 debian 配置中的设置不同,我找不到通知我上次更新命令何时发生的时间戳文件。

scripting debian apt

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