我们可以使用语法${var##pattern}
和${var%%pattern}
提取 IPv4 地址的最后和第一部分:
IP=109.96.77.15
echo IP: $IP
echo 'Extract the first section using ${var%%pattern}: ' ${IP%%.*}
echo 'Extract the last section using ${var##pattern}: ' ${IP##*.}
Run Code Online (Sandbox Code Playgroud)
我们如何使用参数扩展提取 IPv4 地址的第二或第三部分?
这是我的解决方案:我使用一个数组并更改 IFS 变量。
:~/bin$ IP=109.96.77.15
:~/bin$ IFS=. read -a ArrIP<<<"$IP"
:~/bin$ echo ${ArrIP[1]}
96
:~/bin$ printf "%s\n" "${ArrIP[@]}"
109
96
77
15
Run Code Online (Sandbox Code Playgroud)
此外,我已经写了使用一些解决方案awk
,sed
以及cut
命令。
现在,我的问题是:是否有基于不使用数组和 IFS 更改的参数扩展的更简单的解决方案?
我最近注意到许多脚本/usr/bin/env
在他们的shebang中使用。我已经看到主要使用Bash和Python,但迄今为止从未与POSIX sh
( ash
, dash
,... )结合使用。
我想知道为什么,如果我的本意是高度可移植的POSIX shell 脚本可能会从这种env
方法中受益?
关于是否使用:是否存在普遍共识:
标准:
#!/bin/sh
Run Code Online (Sandbox Code Playgroud)环境:
#!/usr/bin/env sh
Run Code Online (Sandbox Code Playgroud)让我足够强调这一点:
我从来没有见过这个sh
。
Linux 内核是否为其数据结构(页表、描述符等)使用虚拟内存?进一步来说:
内核空间地址是否在 MMU 中进行了转换(页表遍历)?
内核内存可以被换出吗?
对内核数据结构的内存访问会导致页面错误吗?
linux和其他unix在这方面有什么区别吗?
一个答案到这个问题提到了OSX的UNIX 03认证。现在 AFAIK OSX 的标准文件系统是/曾经是HFS,它“保存了创建或重命名但在操作中不区分大小写的文件的情况”(即它保留大小写但不区分大小写)。
UNIX 认证或 POSIX 是否需要区分大小写的文件系统?
我只是注意到我的大部分记忆都被我最近杀死的几个进程的核心转储所占据。我为每个崩溃的进程运行了一个 systemd-coredump 进程(通常这些进程是 google-chrome,我强制退出,这解释了大量内存消耗)。
我想知道的是,为什么不是将崩溃进程的核心转储到磁盘,而是启动一个将整个核心保存在 ram 中的新进程。
我的配置有问题还是应该这样?如果是这样,我该如何改变行为?
现在我已经通过链接/dev/null
到禁用了核心转储的存储/etc/sysctl.d/coredump.conf
,虽然我没有看到核心转储,但仍然希望保持启用状态。任何想法/提示将不胜感激。
(该问题也发布在:https : //bbs.archlinux.org/viewtopic.php?pid=1246237)
我rsnapshot
以 root 身份运行,但出现以下错误。为什么会发生这种情况?什么是.gvfs
?
rsnapshot weekly slave-iv
rsync: readlink_stat("/home/griff/.gvfs") failed: Permission denied (13)
IO error encountered -- skipping file deletion
rsync: readlink_stat("/home/xenoterracide/.gvfs") failed: Permission denied (13)
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1042) [sender=3.0.7]
Run Code Online (Sandbox Code Playgroud) 我目前在一家在工作站(大约 200 台计算机)上运行 Linux(openSUSE 12.1)的公司工作。
我正在寻找一种工具或方法,可以让我远程监控它们,为所有人升级系统。我正在考虑创建自己的存储库,然后让计算机通过它来升级自己。
有没有人使用这些工具?或者可以分享他/她的经验吗?
我想获取依赖于请求包的包列表。例如,我想获取所有依赖于telnet
. 我想出了这个脚本:
for i in `rpm -qa | sort`;
do rpm -qR $i | grep telnet > /dev/null;
if [ $? -eq 0 ]; then
echo $i;
fi;
done
Run Code Online (Sandbox Code Playgroud)
有更好的方法吗?
谢谢。
我有一个带有二维码行的文件,我只想grep
为那些子序列长度不增加的文件。例子:
这个很好,因为下一个序列与前一个序列更少或相同:
####### ###### ### ### ## # # #
Run Code Online (Sandbox Code Playgroud)
这个是错的:
### ## ## ### ### ### ###### ##
Run Code Online (Sandbox Code Playgroud)
我是这样开始的:
egrep "[^#](####)+[ ]+(##)+" qr.txt
Run Code Online (Sandbox Code Playgroud)
但后来我意识到不可能继续了..
有2个Debian的装置-一个是关于稳定测试,另-在两台不同的机器,我注意到版本铬测试是47.0.2526.80-1〜deb8u1(测试在Debian软件包网站),而一个稳定的为48.0 .2564.116-1~deb8u1(在 debian pakage 网站上稳定)。所以测试似乎落后于稳定。
因为测试应该有相同包的更新版本,或者至少是相同的版本,为什么会发生这种情况?我对测试分布有什么误解吗?
编辑:测试跳过一个版本似乎很奇怪,我已经注意到这种差异至少 24 小时。我原以为这次测试会更新。是否有人弄乱/篡改包裹?