我想知道我应该在哪里使用useradd -m或useradd -d创建一个新的主目录?我没明白-m和-d标志的目的useradd?
我正在寻找sh与以下内容等效的内容(是的,真的。)
#!/bin/bash
exe1='filepath'
n=1
var=exe${n}
echo ${!var}
Run Code Online (Sandbox Code Playgroud)
回声应该输出的地方filepath。我想使用普通的 sh。
我已经玩了很多代码,但到目前为止我没有设法得到正确的输出。
我想实现一个类似数组的结构,我只想使用循环迭代已知数量的变量的变量名。
对于数组,我在符合 POSIX 的 shell 中找到了Arrays,但出于好奇,我仍在寻找问题的答案;)
这是我未能掌握的一般主题的具体示例。
多年来,我一直使用 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 中尝试了我的正则表达式
我认为我对将有效的正则表达式从调试器转换为在 …
我想按年、月和日对下面的输出进行排序。我尝试了一些似乎不起作用的组合。
在下面的输出中,第 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) 我可以创建一系列文件,例如:
touch file{A..Z}.txt
Run Code Online (Sandbox Code Playgroud)
那么将输出引导到这个范围的最简单的解决方案是什么?
例如:echo 'hello, world'到 . 范围内的所有文件{A..Z}。
我目前正在使用rsync将 73GB 文件从三星便携式 SSD T7 复制到 HPC 集群。
rsync -avh path/to/dataset me@server.somewhere:/path/to/dest
Run Code Online (Sandbox Code Playgroud)
以下适用:
问题是,9个小时后,移动仍然没有完成。根据1,使用cp空目录更好(第一次)。我不明白这一点,也不明白这是否属实。有人可以解释一下吗?
如果dd我的磁盘和压缩图像lzma或lzo图像仍然很大。分区已用 10GB,可用 90GB。但图像仍然在20GB左右。我相信这是因为我已经复制并删除了该磁盘上的许多文件,并且文件系统不会将这些删除中未使用的块归零。
如何将未使用的块归零以最小化磁盘映像?所以脏字节不会在我的图像上加起来。我正在使用 ext4。
尝试对目录中以 .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)
不起作用。它只是列出所有文件和目录。
我正在使用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当文件被截断时不关心的标志?