我分配了一个这样的变量:
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
对我的口味来说太宽了。
我想做两件事:
1) 将接口恢复为旧的经典名称:eth0 而不是 ens33。
2)以我想要的方式重命名接口,例如,我可以将接口 eth0 称为 wan0 或分配 eth1、eth2 等我想要的 mac 地址。
我有以下问题,我的 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 内,请提供一个替代方案
我尝试在 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) 我想知道 linux bash 中的命令或函数来获取目录中最后修改的文件的时间戳(并可能格式化其输出)。
假设我有 /path/mydir 并且这个目录里面有一大堆文件。鉴于其路径,我想输出最近修改过的文件的时间戳。
我想该过程可以递归地执行 foreach 文件,检查所有文件并在每次找到更新的变量时使用最近的时间更新变量。
编辑:抱歉造成混乱,但我想使用 Epoch 时间戳:)
在 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 的实际工作示例)
Microsoft 中有一个命令cmd
,称为color
. 我知道,在 中bash
,有一些特殊字符可以让您在回声期间更改文本颜色。我也知道在 ubuntu 中你可以编辑终端的参数,在配置中设置一个“样式”,编辑它并在菜单下用鼠标应用它。
我要问的是,如果在 debian、ubuntu 和 centOS 下存在一些非常简单的东西,例如:
color 1b
Run Code Online (Sandbox Code Playgroud)
以便控制台从:
到
我想设置一个简单的绑定服务器,它能够充当 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)
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) 我正在尝试为我的局域网设置一个基本的 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...
我在 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 配置中的设置不同,我找不到通知我上次更新命令何时发生的时间戳文件。