1. shell基础
-
1 别名
输入alias可以显示系统别名 alias l.='ls -d .* --color=auto' alias ll='ls -l --color=auto' alias ls='ls --color=auto' alias vi='vim' alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde' 配置别名: alias word=clear 可以使用指定的字符串代替命令
1.2 通配符
通配符用 * 表示匹配多个字符,用?表示匹配一个字符
[test1]$ ls test? test1 test2 [test1]$ ls test* test1 test123 test2
1.3 输入输出重定向
> 表示输入重定向,表示将信息输入文件 >> 表示追加重定向 < 输出重定向,一般在做while循环时候会用到
1.4 管道命令
| 表示将上一个命令的结果的输出作为下一个命令的输入
1.5 shell中的特殊符号
如果不懂linux中的特殊符号,经常会被shell脚本搞晕,所以下面我做简单介绍
! 是与历史命令相关的符号,该字符常用的方法有下面3个 !! 连续两个! 表示执行上一条命令 !n 表示执行历史命令中的第n条命令,ps:历史命令都有编号 !字符串 表示执行匹配字符串的历史命令 !$ 表示条命令的最后一个变量 & 表示将命令后台执行 sleep 30 & 表示在后台休眠30秒 使用jobs 命令可以看见后正在台执行的程序 `` 表示在字符串中加入命令 []中括号中为字符组合,表示字符数组中的任意一个 command1; command2 表示两条命令无关,第一条命令执行成功否都会执行下条命令 command1 && command2 表示两条命令的串行,在第一条命令执行成功,才会执行第二条命令 command1 || command2 表示两条命令的互斥,在第一条命令执行成功,不执行第二条命令 第一条命令执行失败,执行第二条命令 ~ 表示家目录,当前用户的home目录,如果是root用户,就会切回到root目录下 | 管道字符 \ 转义字符 * 表示通配符,匹配零个或者多个任意字符 ? 表示匹配一个任意字符 # 表示注释
1.6 命令cut
cut 命令用来截取某个字段,有下三个参数 -d 后面跟分隔符,分割符用单引号引起来 -c 后面接的是第几个字符 -f 后面接的是第几个区块 例子:1. head -5 /etc/passwd | cut -d ':' -f 1 读取passwd文件,前5行,用:切割取每行第一部分内容,角标从1开始 2. head -5 /etc/passwd | cut -c2 读取passwd文件,前5行,取每行的第二个字符,角标从1开始 3. head -5 /etc/passwd | cut -c1-10 读取passwd文件,前5行,取每行的第1到第10个字符内容,范围读取 4. head -5 /etc/passwd | cut -c1,3,5 读取passwd文件,前5行,取每行的第1,3,5位的字符内容,部分读取
1.7 命令wc
wc 命令比较简单,用来统计文档的行数,字符数,词数,参数如下
-l 统计行数
-m 统计字符数
-w 统计词数
例子: wc /etc/passwd 不加参数分别显示行数,次数,字符数
1.8 命令tr
命令tr 用来替换字符,和文本命令模式中:n2,n2 s/word1/word2/g 命令类似
这个命令参数功能比较差,可以直接使用命令
head -5 /etc/passwd | tr '[a-z]' '[A-Z]' 前5行大小写转换
head -5 /etc/passwd | tr '[r]' '[s]' 将前5行的r替换为s
1.9 命令sort
命令sort用来排序,有如下参数
-t 跟分隔符,和cut的-d选项一样
-n 表示用纯数字排序
-r 表示反向排序
-u 表示去除重复
-kn1 表示切割符后的第n1个区间的内容进行排序
-kn1,n2 表示切割符后的第n1-n2区间的内容进行排序
1. head -5 /etc/passwd | sort
从首字符后依次按照ASCII码值进行比较,升序
2. head -5 /etc/passwd | sort -t: -k3 -n
用:切割,取切割后第三部分,按照数字排序
2. head -5 /etc/passwd | sort -t: -k3,5 -r
用:切割,取切割后取第三部分到第五部分,按照字符串降序排序