小编roa*_*ima的帖子

useradd -m 和 useradd -d 有什么区别?

我想知道我应该在哪里使用useradd -museradd -d创建一个新的主目录?我没明白-m-d标志的目的useradd

linux ubuntu

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

如何在shell脚本中动态设置变量名?

我正在寻找sh与以下内容等效的内容(是的,真的。)

#!/bin/bash

exe1='filepath'
n=1
var=exe${n}
echo ${!var}
Run Code Online (Sandbox Code Playgroud)

回声应该输出的地方filepath。我想使用普通的 sh。

我已经玩了很多代码,但到目前为止我没有设法得到正确的输出。

我想实现一个类似数组的结构,我只想使用循环迭代已知数量的变量的变量名。

对于数组,我在符合 POSIX 的 shell 中找到了Arrays,但出于好奇,我仍在寻找问题的答案;)

shell scripting shell-script variable

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

在 sed 中使用正则表达式(regex)

这是我未能掌握的一般主题的具体示例。

多年来,我一直使用 regex 和 sed 递归地查找/替换目录中所有文件中出现的所有字符串,使用如下所示:

#FIND $GLOBALS['timechecks'] and REPLACE with completely_different_string
shopt -s globstar dotglob;
for file in /var/www/**/*; do
  if [[ -f $file ]] && [[ -w $file ]]; then
    sed -i -- 's/\$GLOBALS\['\''timechecks'\''\]/completely_different_string/g' "$file"
  fi
done
Run Code Online (Sandbox Code Playgroud)

问题是,在我不知道的情况下,在 bash 中使用 Regex 有一些基本的东西。结果,我无法找出特定示例的解决方案。

目标字符串我被卡住的地方

$GLOBALS['timechecks']=addTimeCheck_sparky($GLOBALS['timechecks'], number_format(microtime(true),6,'.',''), __LINE__, basename(__FILE__));
Run Code Online (Sandbox Code Playgroud)

正则表达式我想出了不工作

这只是我的脚本中的 sed 行以及我想出的搜索正则表达式,但无济于事。

\$GLOBALS\['\''timechecks'\''\]=addTimeCheck_sparky[(]$GLOBALS\['\''timechecks'\''\][,][ ]number_format[(]microtime[(]true[)][,]6[,]'\''\.'\''[,]'\'''\''[)][,][ ]__LINE__[],[ ]basename[(]__FILE__[)][)][;]
Run Code Online (Sandbox Code Playgroud)

正则表达式调试器

我在这个例子中使用了一个正则表达式调试器,它显示了正则表达式找到我的目标字符串,但它对我不起作用。调试器位于此链接。这是它显示的查找我的目标字符串的正则表达式:

\$GLOBALS\['timechecks\'\]=addTimeCheck_sparky\(\$GLOBALS\[\'timechecks\'\], number_format\(microtime\(true\),6,\'\.\',''\), __LINE__, basename\(__FILE__\)\)
Run Code Online (Sandbox Code Playgroud)

正则表达式调试器的输出问题:

首先,我在 de 中尝试了我的正则表达式

  1. 我不知道为什么调试器的正则表达式在那里运行时有效,但在我的 bash 脚本中无效。
  2. 与我在 bash 中使用 sed 所学的正则表达式相比,正则表达式看起来“错误”
  3. 当我将调试器的正则表达式插入用于执行此任务的脚本时,它不起作用。
  4. 由于我不明白,我无法修复它

我认为我对将有效的正则表达式从调试器转换为在 …

bash sed find regular-expression replace

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

按年月日对输出进行排序

我想按年、月和日对下面的输出进行排序。我尝试了一些似乎不起作用的组合。

在下面的输出中,第 2 列是日期,第 3 列是月份,第 4 列是年份。

我尝试以sort这种方式应用命令:

sort -nk2 -Mk3 -nk4
Run Code Online (Sandbox Code Playgroud)

但它没有用,因为我收到了错误

sort: options '-Mn' are incompatible
Run Code Online (Sandbox Code Playgroud)

这是我的示例数据文件

adcblz01 14 Mar 2018  
adcblz03 23 Nov 2018  
aktestlb02 26 Aug 2019    
ckicbrwlz1 23 Mar 2018   
ckilabbrwlb1 23 Mar 2018   
bhuiflz28 09 Mar 2017  
bhuiflz47 09 Mar 2017  
bhuiflz48 09 Mar 2017  
olkeflb24 23 Jul 2019  
olkeflz46t2 09 Mar 2017  
rrjugflb7 03 Jul 2019
Run Code Online (Sandbox Code Playgroud)

linux shell-script date sort

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

进程背景本身可以吗?

进程背景本身可以吗?

什么是 Perl 和/或 C 实现?

linux glibc

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

在 shell 中输出到一系列文件的最简单解决方案

我可以创建一系列文件,例如:

touch file{A..Z}.txt 
Run Code Online (Sandbox Code Playgroud)

那么将输出引导到这个范围的最简单的解决方案是什么?

例如:echo 'hello, world'到 . 范围内的所有文件{A..Z}

shell-script

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

第一次运行时 cp 比 rsync 快吗?

我目前正在使用rsync将 73GB 文件从三星便携式 SSD T7 复制到 HPC 集群。

rsync -avh path/to/dataset me@server.somewhere:/path/to/dest
Run Code Online (Sandbox Code Playgroud)

以下适用:

  1. 我的本地计算机(连接 T7 的地方)是运行 Ubuntu 20 的 VirtualBox VM。
  2. T7 传输速度应高达约。1000MB/秒。
  3. 网络给我的上传速度大约为 7.9Mbps。
  4. 根据这个答案,Rsync 传输速度可能会成为 1-5MB/s 的瓶颈。

问题是,9个小时后,移动仍然没有完成。根据1,使用cp空目录更好(第一次)。我不明白这一点,也不明白这是否属实。有人可以解释一下吗?

ubuntu large-files ssd cp rsync

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

如何将文件系统上未使用的块归零以最小化压缩磁盘映像的大小?

如果dd我的磁盘和压缩图像lzmalzo图像仍然很大。分区已用 10GB,可用 90GB。但图像仍然在20GB左右。我相信这是因为我已经复制并删除了该磁盘上的许多文件,并且文件系统不会将这些删除中未使用的块归零。

如何将未使用的块归零以最小化磁盘映像?所以脏字节不会在我的图像上加起来。我正在使用 ext4。

filesystems ext4 dd disk

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

bash:如果条件问题

尝试对目录中以 .c 结尾的所有文件(C 文件)进行一些操作。代码是:

#!/bin/sh
clear
for file in *
do
    if [ $file="*.c" ]
    then
        echo $file
    fi
done
exit 0
Run Code Online (Sandbox Code Playgroud)

不起作用。它只是列出所有文件和目录。

bash

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

文件截断时 tail -f 中断

我正在使用tail -f(在 Mac OS X el capan 上的终端中)查看对我的文件的实时更改(使用 PERL 脚本从数据库中提取数据的结果)。但是,有时,Perl 脚本会截断文件并向其中添加新数据。有时,当这种情况发生时,它会给我这样的信息:

tail: test.txt: file truncated
Run Code Online (Sandbox Code Playgroud)

然后之后不显示文件的任何内容。这似乎只发生在我用比以前更少的行替换文件时。当新行比运行脚本之前更长时,我不会收到此错误并且tail -f继续工作。我已经确认,事实上,文件中的数据在tail -f收到此(错误?)消息后没有显示。

我见过类似的问题:Suppress 'file truncated' messages when using tail

tail -f test.txt 2> /dev/null
Run Code Online (Sandbox Code Playgroud)

但这只是抑制消息并仍然中断,它不会继续向我显示较短的截断文件内容。

是否有更好的命令可用于实时查看文件的更改?或者tail -f当文件被截断时不关心的标志?

osx tail

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