linux cmd

Shll 脚本中的$常见用法:

$0:Shell 的命令本身
$(1-9):表示 Shell 的第几个参数
$? :显示最后命令的执行情况
$#:传递到脚本的参数个数
$$:脚本运行的当前进程 ID 号
$*:以一个单字符串显示所有向脚本传递的参数
$@ 以单个参数的形式向脚本传递所有参数
$!:后台运行的最后一个进程的 ID 号
$-:显示 Shell 使用的当前选项

* , ##* , %* , %%* 的用法

file=/dir1/dir2/dir3/my.file.txt
${file#/}:删掉第一个 / 及其左边的字符串:dir1/dir2/dir3/my.file.txt
${file##
/}:删掉最后一个 / 及其左边的字符串:my.file.txt
${file#.}:删掉第一个 . 及其左边的字符串:file.txt
${file##
.}:删掉最后一个 . 及其左边的字符串:txt
${file%/}:删掉最后一个 / 及其右边的字符串:/dir1/dir2/dir3
${file%%/
}:删掉第一个 / 及其右边的字符串:(空值)
${file%.}:删掉最后一个 . 及其右边的字符串:/dir1/dir2/dir3/my.file
${file%%.
}:删掉第一个 . 及其右边的字符串:/dir1/dir2/dir3/my

${file/dir/path}:将第一个dir 替换为path:/path1/dir2/dir3/my.file.txt
${file//dir/path}:将全部dir 替换为path:/path1/path2/path3/my.file.txt

1)今天:
today=date +%Y-%m-%d
2)昨天:
yesterday=date -d '1 days ago' +%Y-%m-%d
OR
yesterday=date -d yesterday +%Y-%m-%d

3)今天是本周的第几天:
whichday=date -d $today +%w

4)本周一:
monday=date -d "$today -$[${whichday}-1] days" +%Y-%m-%d

5)本周日:
sunday=date -d "$monday+6 days" +%Y-%m-%d

6)当月第一天:
firstdate=date +%Y%m01

7)当月最后一天:
lastdate=date -d"$(date -d"1 month" +%Y%m01) -1 day" +%Y-%m-%d

在Linux下用split进行文件分割:
模式一:指定分割后文件行数
对与txt文本文件,可以通过指定分割后文件的行数来进行文件分割。
命令:split -l 300 large_file new_file_prefix

模式二:指定分割后文件大小
命令:split -b 10m large_file new_file_prefix

对二进制文件我们同样也可以按文件大小来分隔。

在Linux下用cat进行文件合并:
命令:cat small_files* > large_file

mktemp -t 在系统的临时目录/tmp下建立临时文件,文件名参数必须是以"自订名称.XXXXXX"的格式。
mktemp -d 建立临时目录

typeset 无选项的执行typeset,则显示所有变量
typeset -u可以将一个变量的字符变成大写
typeset -l将一个变量的字符变成小写
typeset的-L选项把变量变成一个左对齐的4个字符串
typeset的-R选项把变量变成一个右对齐的4个字符串

eval 会先扫描命令进行所有置换然后再执行命令。

if [ "X$str = "Xabc"]
X的作用是防止当str=""时,$str为空,从而导致判断条件会变成 [ == "abc" ]时语法错误。

posted @ 2022-10-10 14:16  yuexiuping  阅读(30)  评论(0编辑  收藏  举报