小编cha*_*aos的帖子

Grep 查找字符串,但忽略带有字符串的注释掉的项目

我正在寻找单词gmailoutlook目录。尽管其中有一些行被注释掉gmailoutlookgrep我该怎么办?

我尝试了很多东西,但我想它会是这样的:

grep "^[^#;]" | egrep -i "gmail|outlook" *.ksh  > a.log
Run Code Online (Sandbox Code Playgroud)

shell grep scripting text-processing

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

从 chown -R / 恢复

我今天使用 root 用户在我的服务器上犯了最大的错误:

chown -R 33:33 /
Run Code Online (Sandbox Code Playgroud)

而不是chown -R 33:33 .在某个 webroot 文件夹中。

嗯,这被ssh打倒了。我做了这么远让它再次工作,到目前为止apachemysql并且php仍在工作,但我不知道我是否曾经重新启动它们,或者服务器是否会在重新启动时失败。

是否有任何“索引”或包可以将这些权限恢复为正确的/以前的权限?

这是帮助我实现并中止该操作的控制台输出:

chown 错误

我能做些什么来恢复吗?

filesystems permissions recursive chown

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

使用 SED 在每行的第 7 个字符后剪切

只是试图在文本的每一行的第 7 个之后剪切任何字符。

我最初尝试过这个:

sed 's/(.{7}).*/\1/' TestText.txt 
Run Code Online (Sandbox Code Playgroud)

但得到了这样的回应:

sed: 1: "s/(.{7}).*/\1/": \1 not defined in the RE
Run Code Online (Sandbox Code Playgroud)

然后尝试了这个:

$ sed 's/./&#/7' TestText.txt 
Ballbou#nce
Latllma#tattjsdf
dsfase,#d,
adfadfj#jen
asdfjov#moeo
$ sed -e 's/#.*//' TestText.txt 
Ballbounce
Latllmatattjsdf
dsfase,d,
adfadfjjen
asdfjovmoeo
Run Code Online (Sandbox Code Playgroud)

但它所做的只是删除了#. 我只想删除第 7 个字符之后的任何字符。

sed text-processing

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

允许所有用户调用 sudo -l

在我的 debian 服务器上,当对 sudoers 文件或任何包含目录没有任何权限的用户调用 时sudo -l,他会获得标准的“责任标头”并提示输入密码。

是否可以允许系统上的所有用户调用该sudo -l命令而无需指定其密码?最好,如果用户没有权限,它应该只报告。

debian sudo

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

FNR 和 NR 变量问题

我有两个文件,其中一个有 10 条记录,另一个有 15 条记录,问题是当我将cat它们放在一起时,总是FNR=NR.

例如,考虑以下文件:

文件1:

1,boo
2,foo
3,boo
Run Code Online (Sandbox Code Playgroud)

文件2:

1,boo
2,foo
3,boo
4,foo
Run Code Online (Sandbox Code Playgroud)

应用以下代码时:

cat File1 File2 | awk -F, '{print FNR}'
Run Code Online (Sandbox Code Playgroud)

结果应该是:

1
2
3
1
2 
3
4
Run Code Online (Sandbox Code Playgroud)

但我实际上拥有的是FNR= 1 到 7。

awk text-processing files

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

使用提示将所有输出重定向到文件

重定向:$PROMPT上次执行的命令stdout并重定向stderr到单个文件的最短方法是什么?

当然,我们可能会使用&>重定向stdoutstderr进入单个文件,然后分别在文件的开头和结尾添加$PROMPT$!!

我想将我的日志文件视为:

$PROMPT: $LAST_EXECUTED_COMMAND
$STOUD_STDERR
$PROMPT
Run Code Online (Sandbox Code Playgroud)

bash prompt io-redirection

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

为什么 $1 的值在 `{$total=$total+$1}` 中发生了变化?

我写了一个awk命令尝试计算特定列的总值,但发生了意想不到的事情:

# THE CONTENT OF TEST FILE
1
2
3
4

# MY AWK COMMAND
awk 'BEGIN {total=0} {print $1; $total=$total+$1; print $1, $total} END {print $total}' test

# RESULT
1
2 2
2
4 4
3
6 6
4
8 8
8
Run Code Online (Sandbox Code Playgroud)

显然, 的值在$1之后发生了变化$total=$total+$1
但我想我没有为 重新分配值$1,为什么它意外改变了,如何解决?

awk text-processing

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

找到所有 [filename].mp4 并重命名 [filename].audio

所以我有一个脚本,它使用$1.audio文件中的音频将 2 部电影添加到一起。我想做的是重命名目录中的任何文件:

*.mp4 
Run Code Online (Sandbox Code Playgroud)

到:

*.audio 
Run Code Online (Sandbox Code Playgroud)

保留原始文件名。

find rename files

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

如何将涉及变量的多行附加到 bash 脚本的末尾?

我想补充:

function ps_mem {
   python /home/vagrant/ps_mem/ps_mem.py -p $@
}
Run Code Online (Sandbox Code Playgroud)

~/.bashrc从命令行结束。我试过使用:

printf "function ps_mem {\n python /home/vagrant/ps_mem/ps_mem.py -p $@ \n}" >> ~/.bashrc
Run Code Online (Sandbox Code Playgroud)

虽然它几乎起作用了,但输入字段$@被忽略了,使得:

function ps_mem {
 python /home/vagrant/ps_mem/ps_mem.py -p
}
Run Code Online (Sandbox Code Playgroud)

而是添加到~/.bashrc.

shell-script bashrc printf

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

如何添加返回整数计数的shell中传递的两个变量?

在我的脚本中,我使用了 2 个变量:

integer CCD_COUNT1= `grep '.CCD' $TMP_RPT_FILE1 | wc-l`
Run Code Online (Sandbox Code Playgroud)

它返回整数值假设47

另一个变量:

integer CCD_COUNT=`grep '.CCD' $TMP_RPT_FILE | wc -L `
Run Code Online (Sandbox Code Playgroud)

它还返回整数值假设1

如何添加整数$CCD_COUNT1$CCD_COUNT,以便它给出48

shell shell-script

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