笔录软件在linux系统,[Linux笔录]Linux/Shell笔记

Shell中的$几种含义

$# 是传给脚本的参数个数

$0 是脚本本身的名字

$1 是传递给该shell脚本的第一个参数

$2 是传递给该shell脚本的第二个参数

$@ 是传给脚本的所有参数的列表eg: “1” “2” “3”

$* 是以一个单字符串显示所有向脚本传递的参数,与位置变量不同 eg:”1 2 3″

$$ 是脚本运行的当前进程ID

$- 显示Shell使用的当前选项,与set命令功能相同 |

$显示最后命令的退出状态,0表示没有错误,其他表示有错误

文件测试运算符

-e (equal) filename, 判断文件是否存在

-d (directory) filename,判断文件是否为目录

-f (file) filename,判断文件是否为常规文件

-L (link) filename,判断文件是否问链接文件

-r (read) filename,判断文件是否可读

-w (write) filename,判断文件是否可写

-x (exec) filename,判断文件是否可执行

-s filename,判断文件长度是否为0

-h filename,判断文件是否为硬链接文件

filename1 -nt (newer than) filename2,判断文件1是否比文件2新

filename1 -ot (older than) filename2,判断文件1是否比文件2旧

${}高级用法

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:0:5} 提取最左边的 5 个字节:/dir1

$ {file:5:5} 提取第 5 个字节右边的连续 5 个字节:/dir2

也可以对变量值里的字符串作替换:

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

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

a8816592caf7

image.png

$(),$(()),$[],$[[]],${}

$()和“都是用来做命令替换

$(())和$[],$[[]]是用来作整数运算

${} 变量替换

文本三剑客(grep,sed,awk)

grep -rin “关键字” 循环遍历,忽略大小写,显示行 的查找

sed -n ‘/关键字/p’ 显示包含“关键字”的行

sed -n ‘/^$/g’显示空行

sed -n ‘1p,10p’ 打印1~10行

sed -n ‘1p;10p’打印第1行和第10行

sed -n ‘1~2p’ 打印奇数行

sed -n ‘2~2p’打印偶数行

sed -n ‘$p’ 打印最后一行

正则表达式

单字符

特定字符 具体某个字符

范围字符 [0-9][a-z][A-Z]

反向字符 [^0-9][^a-z][^A-Z]

任意字符 . [.]=.

边界字符 ^ 起始字符, $ 结尾字符

^$ 空行

元字符 w 匹配任意字类字符|W匹配任意非字类字符 |b(单词的分隔) [0-9a-zA-Z]|[^0-9a-zA-Z]

grep “bYb”

:Y;匹配这个

aYbbbb

重复字符

‘*’ 匹配0或多个字符·等价于{0,}grep -rin ‘yang*’

‘+’ 匹配1或多个字符等价于{1,}“grep -rin ‘yang+’“`

‘匹配0个或1个字符`等价于{0,1}“grep -rin ‘yang“

逻辑匹配

grep

sed定位行

定位1行nl file_name| sed -n “line_number p”打印出第几行

定位多行 nl file_name|sed -n ‘/line_start,/ /line_end/p

行取反 nl file_name | sed -n ‘10,20!p’打印除了10~20行之间的行

间隔行输出 nl file_name | sed -n ‘start_line~line_step p’从start_line开始间隔line_step 输出每行

sed行处理

a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~nl passwd | sed ‘10,20a add_string’

i :插入i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行)nl passwd | sed ‘10,20i add_string’;

c :替换 c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!nl passwd | sed ‘10,20c replace_string’

p 打印 打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~

awk文本分析处理

待学习。。。

文章知识点与官方知识档案匹配,可进一步学习相关知识CS入门技能树Linux入门初识Linux25392 人正在系统学习中 相关资源:万能五笔软件-专业指导文档类资源

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年4月2日
下一篇 2021年4月2日

相关推荐