[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

https://blog.csdn.net/SeaSky_Steven/article/details/103281133

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  “\bY\b” 
:Y;匹配这个
aYbbbb

重复字符

  • '*' 匹配0或多个字符·等价于{0,}grep -rin 'yang*'
  • '+' 匹配1或多个字符等价于{1,}``grep -rin 'yang+'```
  • '?' 匹配0个或1个字符`等价于{0,1}``grep -rin 'yang?'```

逻辑匹配

grep

sed流文本编辑器

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文本分析处理

待学习。。。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,657评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,889评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,057评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,509评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,562评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,443评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,251评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,129评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,561评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,779评论 3 335
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,902评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,621评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,220评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,838评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,971评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,025评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,843评论 2 354

推荐阅读更多精彩内容

  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,381评论 0 5
  • Shell简介 Shell会执行用户输入的命令,并且在屏幕上显示执行的结果。 单从字面的意思上理解,Shell的本...
    故事狗阅读 1,738评论 2 10
  • Linux Shell 基本语法 一. Linux基本命令 1.1. cp命令 该命令的功能是将给出的文件或目录拷...
    M_Baron阅读 2,593评论 0 1
  • shell简介 shell 脚本的优势在于处理偏操作系统底层的业务,例如,linux内容的很多应用都是使用shel...
    张国立_0695阅读 343评论 0 0
  • shell脚本 1,字符串的操作1)若打印时有空格,则应“$变量名”;若字符串赋值时,若值中有空格,变量名 = “...
    酸菜牛肉阅读 176评论 0 1