考虑以下脚本:
#! /bin/bash
line="confusing"
if [[ $line =~ [[:lower:]]* ]]
then
echo "matches!"
else
echo "does not match."
fi
Run Code Online (Sandbox Code Playgroud)
虽然以上产生了预期的结果,但以下不会:
#! /bin/bash
line="CoNfUsInG"
if [[ $line =~ [[:lower:]]* ]]
then
echo "matches!"
else
echo "does not match."
fi
Run Code Online (Sandbox Code Playgroud)
这会打印“匹配!”
我很迷惑; 正则表达式不是[[:lower:]]*
表示零个或多个小写字母吗?
当以下内容也打印“matches!”时,它会变得更加混乱。
#! /bin/bash
line="CoNfUsInG"
if [[ $line =~ [[:digit:]]* ]]
then
echo "matches!"
else
echo "does not match."
fi
Run Code Online (Sandbox Code Playgroud)
任何人都可以解释为什么会发生这种情况?
我在我的个人笔记本电脑和我的系统上使用 Ubuntu,每当我使用rm
文件时,它就消失了。好的。
问题出在我的大学服务器上。
我正在尝试从我的主目录中删除一个文件夹:environment/tests。令我大吃一惊的是,当我使用 rm environment/tests(出于某种奇怪的原因,rm 不需要 -R 选项来删除大学服务器上的文件夹...)时,这就是我得到的:
u2 **** 114 : rm environment/tests
/bin/mv: cannot move `environment/tests/' to `/u/stud/****/../TrashCan/****/tests': File exists
u2 **** 115 :
Run Code Online (Sandbox Code Playgroud)
(**** 代替我的用户名)
所以我试图将它从垃圾桶中删除,但意识到这是一个递归调用...... :)
u2 **** 157 : rm ~/../TrashCan/****/tests
/bin/mv: `/u/stud/****/../TrashCan/****/tests' and `/u/stud/****/../TrashCan/****/tests' are the same file
u2 **** 158 :
Run Code Online (Sandbox Code Playgroud)
首先,mv在这里有什么作用?(注意这是一个 /bin/mv 错误)
其次,我怎样才能一劳永逸地删除这个文件夹?
事实上,当我在做的时候,我想完全清空垃圾桶。但是,这个:
u2 **** 169 : rm * ~/../TrashCan/
Run Code Online (Sandbox Code Playgroud)
不起作用。
服务器运行以下版本:
u2 **** 170 : uname -a
Linux u2 2.6.32-504.8.1.el6.x86_64 #1 SMP Wed Jan 28 21:11:36 …
Run Code Online (Sandbox Code Playgroud)