记录日常遇到的命令
目录
[1 sed -i](#1 sed -i)
[2 cat](#2 cat)
[3 $ 参数](#3 $ 参数)
1 sed -i
(1)sed -i 's/\.\.\/\.\.\//\.\.\//g' design.f 含义
命令 sed -i 's/\.\.\/\.\.\//\.\.\//g' design.f
使用 sed
编辑器来直接修改文件 design.f
中的内容。具体来说,它会查找文件中所有出现的 ../../
字符串,并将其替换为 ../
。
这里的命令解释如下:
-
sed
: 是 stream editor 的缩写,用于对文本进行过滤和转换。 -
-i
: 表示直接修改文件内容,而不是输出到标准输出。 -
's/\.\.\/\.\.\//\.\.\//g'
: 是sed
的替换命令。s
: 表示替换操作。\.\.\/\.\.\/
: 是被替换的文本,即../../
。注意,.
在正则表达式中是一个特殊字符,表示任意单个字符,因此需要用\
进行转义。\.\.\/
: 是替换后的文本,即../
。同样,.
也被转义了。g
: 表示全局替换,即替换行中的所有匹配项。
-
design.f
: 是要修改的文件名。
执行这个命令后,design.f
文件中所有的 ../../
都会被替换为 ../
。
(2)sed -i 's/\-f/\/\/\-f/g' design.f 含义
命令 sed -i 's/\-f/\/\/\-f/g' design.f
使用 sed
编辑器来直接修改文件 design.f
中的内容。具体来说,它会查找文件中所有出现的 -f
字符串,并将其替换为 //-f
。
这里的命令解释如下:
-
sed
: 是 stream editor 的缩写,用于对文本进行过滤和转换。 -
-i
: 表示直接修改文件内容,而不是输出到标准输出。 -
's/\-f/\/\/\-f/g'
: 是sed
的替换命令。s
: 表示替换操作。\-f
: 是被替换的文本,即-f
。注意,-
在正则表达式中是一个特殊字符,表示范围(例如[a-z]
),因此需要用\
进行转义。/\/\/-f
: 是替换后的文本,即//-f
。这里/
字符没有被用作正则表达式中的特殊字符,所以不需要转义。但是,为了清晰起见,通常建议对正则表达式中的所有斜杠进行转义,以避免混淆,尽管在这个特定情况下不是必需的。g
: 表示全局替换,即替换行中的所有匹配项。
-
design.f
: 是要修改的文件名。
执行这个命令后,design.f
文件中所有的 -f
都会被替换为 //-f
。这种替换通常用于修改配置文件、脚本或源代码中的参数、选项等。
2 cat
(1)cat ../sim/design.f >> design.f 含义
命令 cat ../sim/design.f >> design.f
在 Linux 和 Unix 系统中用于将 ../sim/design.f
文件的内容追加到当前目录下的 design.f
文件的末尾。
这里,cat
是 concatenate(连接)的缩写,用于连接文件并打印到标准输出设备上。但是,在这个命令中,我们使用了 >>
重定向操作符,它表示将输出追加到指定的文件中,而不是覆盖文件或输出到屏幕。另外, > 代表覆盖文件文件,使用要特别注意。
../sim/design.f
:这是一个相对路径,指向当前目录的上一级目录(..
)中的sim
目录下的design.f
文件。>> design.f
:这表示将输出追加到当前目录下的design.f
文件的末尾。
执行这个命令时,cat
会读取 ../sim/design.f
文件的内容,并将其追加到当前目录下的 design.f
文件的末尾。如果 design.f
文件不存在,它会被创建。如果 design.f
文件已经存在,它的内容会被保留,并且 ../sim/design.f
的内容会被添加到它的末尾。
3 $ 参数
$# -eq 1 代表输入的参数数量为1,$1 代表输入的第一个变量。
perl
if [ $# -eq 1 ]; then
# 如果参数数量为1,执行这里的代码
case "$1" in
pattern1)
# 如果 $1 匹配 pattern1,执行这里的代码
;;
pattern2)
# 如果 $1 匹配 pattern2,执行这里的代码
;;
*)
# 如果 $1 不匹配任何模式,执行这里的代码
;;
esac
else
# 如果参数数量不为1,执行这里的代码
fi