小编Arc*_*mar的帖子

删除带有文本和大括号的多行

我有多个文件,其中包含以下内容:

this is a test1
 {
test 123
test 456
test 789
}

this is a test2
 {
test 123
test 456
test 789
}

this is a test3
 {
test 123
test 456
test 789
}
Run Code Online (Sandbox Code Playgroud)

需要删除一段:

this is a test2
 {
test 123
test 456
test 789
}
Run Code Online (Sandbox Code Playgroud)

大括号之间的行可能不同(更少或更多行)我尝试过类似的方法:

sed -i 's|This is a test2 *.* !}||g' *
Run Code Online (Sandbox Code Playgroud)

sed -i 's|This is a test2, !}||g' *
Run Code Online (Sandbox Code Playgroud)

但没有成功

sed awk

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

自动验证课堂练习的密码?

我正在尝试编写一个 bash 脚本,除其他外,它将以用户身份“登录”(如果可能,最好使用 su),而无需与密码提示交互,即,将自动输入密码。我只需要它来执行一个命令,然后会话就可以结束了。

这是用于我正在教授的介绍性 Linux 课程的“自动检查器”。学生们有一个练习,他们在他们的 Raspberry Pi(运行 Raspbian)上创建具有特定密码的用户名,我希望这个脚本能够自动验证密码是否正确。学生们在他们的 Pi 上运行“自动检查器”,我验证输出,所以他们有机会在提交之前修复任何错误。由于这是使用虚拟密码的课堂练习,因此这些密码的安全性完全无关紧要。

我知道已经有一些关于自动登录的问题,但没有一个对我有用。我最接近解决方案的是让 su 命令说需要一个终端。使用“expect”是行不通的,因为它需要在学生的 Pis 上安装软件包。

如果还有其他方法可以验证密码是否正确,那么我愿意接受这些方法。由于盐的原因,我认为我无法进行散列密码比较。

password shell-script hashsum raspberry-pi raspbian

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

复制线条并使它们独一无二?

我有以下文本行结构:

3923 001    L05 LV,L05 RM
3923 002    L12 RA,L12 LA
3923 003    I06 ALL
3923 004    G04 RV,Z09 ALL
Run Code Online (Sandbox Code Playgroud)

但我需要这个:

3923 001    L05 LV
3923 001    L05 RM
3923 002    L12 RA
3923 002    L12 LA
3923 003    I06 ALL
3923 004    G04 RV
3923 004    Z09 ALL
Run Code Online (Sandbox Code Playgroud)

这可以用正则表达式吗?

基本上,我需要将每一行复制包含“,”的次数,然后从第 10 个字符开始制作唯一的;如果我能完成第一部分,那么只需复制每一行 x 逗号的数量,我就可以手动清理其余部分

text-processing regular-expression csv text

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

Fish 将所有命令包装在一个函数中

我有一个设置为向 anybar 发送状态更新的功能。

function e --description 'Run command' \
           --argument-names command
  anybar yellow; eval $command; anybar green;
end
Run Code Online (Sandbox Code Playgroud)

我试图找到一种方法来包装我通过 cli 给出的所有命令以在这个函数中钓鱼。

有谁知道这是否可能?

fish

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

如何在 Linux 上删除损坏的目录

我有一台机器,它的目录似乎已损坏。的输出ls -lah类似于:

???????????  ? ?        ?           ?            ? dir_name
Run Code Online (Sandbox Code Playgroud)

这曾经是 SSD 上 CentOS 7 VM 中的有效目录。我不知道发生了什么,但现在我只想删除它,但这似乎不可能:

$sudo rm -rf dir_name 
rm: cannot remove ‘dir_name’: Is a directory
Run Code Online (Sandbox Code Playgroud)

而且stat也读不懂:

stat dir_name
stat: cannot stat ‘dir_name’: No such device
Run Code Online (Sandbox Code Playgroud)

安全删除此目录的最简单方法是什么?

linux filesystems directory rm

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

为什么这个重命名操作不起作用?

这有效:

$ touch abcdefg
$ mv -v abcdefg abc[de]fg
‘abcdefg’ -> ‘abc[de]fg’
Run Code Online (Sandbox Code Playgroud)

但这不起作用:

$ touch abcdefg
$ mv -v abcdefg abc[d]efg
mv: ‘abcdefg’ and ‘abcdefg’ are the same file
Run Code Online (Sandbox Code Playgroud)

为什么?

bash patterns mv

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

如何为所有非系统 Linux 用户打印 --comment?

到目前为止我发现

awk -F'[/:]' '{if ($3 >= 1000 && $3 != 65534) print $1}' /etc/passwd
Run Code Online (Sandbox Code Playgroud)

打印所有非系统用户。接下来,我希望它的用户名显示在我创建用户时使用 -c 选项添加的用户评论。

如何在用户名旁边打印评论?

users shell-script

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

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

意外标记“iptables”附近的语法错误

我在脚本中有这个错误iptable

./iptables-firewall.sh line 4: syntax error near unexpected token 'iptables'

./iptables-firewall.sh line 4: iptables -A OUTPUT -p udp -s $SERVER_IP --sport 1024:65535 -d $ip --dport 53 -m state -- state NEW, ESTABLISHED -j ACCEPT
Run Code Online (Sandbox Code Playgroud)

在此代码上:

SERVER_IP="ppp"
DNS_SERVER="8.8.8.8"
for ip in $DNS_SERVER do
iptables -A OUTPUT -p udp -s $SERVER_IP --sport 1024:65535 -d $ip --dport 53 -m state -- state NEW, ESTABLISHED -j ACCEPT
iptables -A INPUT -p udp -s $ip --sport 53 -d $SERVER_IP --dport 1024:65535 -m state …
Run Code Online (Sandbox Code Playgroud)

shell

-3
推荐指数
1
解决办法
440
查看次数