linux基础02-bash特性

时间:2022-04-17 20:51:13

Linux的行结束符是:[$]

Windows的行结束符是:[$+回车]

目录管理:
ls、cd、pwd、mkdir、rmdir、tree

文件管理:
touch、stat、file、rm、cp、mv、nano

日期时间:
date、clock、hwclock、cal

查看文本:
cat、tac、more、less、head、tail

(21)
cat:连接并显示
-n :在显示时,对每一行编号
-E :显示结束符。
例:cat /etc/issue
cat -n /etc/issue

(22)
分屏显示:
more、less

more: 向后翻
less: 向前翻

(23)
head:查看前n行
tail:查看后n行
-n :默认值为10.
其实-n 可以直接用 -2等数字代替。

tail -f: 查看文件尾部,不退出,等待显示后续追加至此文件的新内容;(非常有用的命令)
解释:如果另一个程序在文件末尾追加了内容,会直接在当前程序显示。

(24)
文本处理:
cut、join、sed、awk
(sed awk grep号称文本处理三大利器)

cut:
-d: 指定字段分隔符,默认是空格
-f: 指定要显示的字段
-f 1,3 :显示第一个和第三个。
-f 1-3 :显示第一个到第三个。
例:
cut -d : -f 1 /etc/passwd

(25)
文本排序:sort 默认按照ascii码表顺序排序。
-n:数值排序
-r: 降序
-t: 字段分隔符
-k: 以哪个字段为关键字进行排序
-u: 排序后相同的行只显示一次
-f: 排序时忽略字符大小写

(26)

uniq:
-c: 显示文件中行重复的次数
-d: 只显示重复的行
例:uniq -c test.txt

(27)文本统计:wc (word count)
-l :只显示行数
-w :只显示单词数
-c :只显示 字节数
-L :最长的一行,包含多少个字符。

(28)字符处理命令:tr —— 转换或删除字符
tr [OPTION]... SET1 [SET2]
-d: 删除出现在字符集中的所有字符
例:
tr 'ab' 'AB' //替换输入的两个字符串中a 替换为A;b替换为B。
tr 'ab' 'AB' < /etc/passwd //对文件/etc/passwd执行字符替换。
tr 'a-z' 'A-Z' //把所有小写字符换成大写字符。

(29) 命令行编辑:
光标跳转:
Ctrl+a:跳到命令行首
Ctrl+e:跳到命令行尾
Ctrl+u: 删除光标至命令行首的内容
Ctrl+k: 删除光标至命令行尾的内容
Ctrl+l: 清屏

(30) 命令历史:
查看命令历史:history
-c:清空命令历史
-d OFFSET [n]: 删除指定位置的命令
-w:保存命令历史至历史文件中
例:
history -d 100 10 //删除第100个命令开始10个历史命令。

(31)环境变量
PATH:命令搜索路径
HISTSIZE: 命令历史缓冲区大小(即:可以表示的命令历史的条目数,默认是1000.)

(32)命令历史的使用技巧:
!n:执行命令历史中的第n条命令;
!-n: 执行命令历史中的倒数第n条命令;
!!: 执行上一条命令;
!string:执行命令历史中最近一个以指定字符串开头的命令

引用前一个命令的最后一个参数:有以下三个方法:
① !$: 引用前一个命令的最后一个参数;
② Esc, . //按下esc 松开再按.
③ Alt+. //按下Alt再按.

(33)命令别名
alias CMDALIAS='COMMAND [options] [arguments]'
在shell中定义的别名仅在当前shell生命周期中有效;别名的有效范围仅为当前shell进程;
例:alias clear=cls

撤销别名:ualias cls
显示命令自身:\CMD
例如系统自建别名:ls = ls -i, 可以使用:\ls

(34)命令替换:

$(COMMAND), 或者反引号:`COMMAND`
把命令中某个子命令替换为其执行结果的过程.
例如:创建当前时间的文件
touch ./file-$(date+%F-%H-%M-%S).txt
file-2013-02-28-14-53-31.txt

  

(35)bash支持的引号种类:
反引号 `` : 命令替换
双引号 "" : 弱引用,可以实现变量替换
单引号 '' : 强引用,不完成变量替换

(36)文件名通配, globbing
通配符不能表达所有情况,有时需要借助正则表达式。
*: 任意长度的任意字符
?:任意单个字符
[]:匹配指定范围内的任意单个字符
[abc], [a-m], [a-z], [A-Z], [0-9], [a-zA-Z], [0-9a-zA-Z]
[:space:]:空白字符 //使用时需要再加一层中括号[]
[:punct:]:标点符号 //使用时需要再加一层中括号[]
[:lower:]:小写字母 //使用时需要再加一层中括号[]
[:upper:]: 大写字母 //使用时需要再加一层中括号[]
[:alpha:]: 大小写字母 //使用时需要再加一层中括号[]
[:digit:]: 数字 //使用时需要再加一层中括号[]
[:alnum:]: 数字和大小写字母 //使用时需要再加一层中括号[]

获取上面这些特殊表示方式的帮助:
# man 7 glob

脱字符[^]: 匹配指定范围之外的任意单个字符

例:字母开头,中间有空格,非字母结尾:
[[:alpha:]]*[[:space:]]*[^[:alpha:]]