Linux下shell编程基础知识(3)

每个用户的主目录下还有几个这样的隐藏文件:
.bash_profile :定义了用户的个人化路径与环境变量的文件名称。每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次。
.bashrc :该文件包含专用于你的shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取。例如你可以将用户自定义的alias或者自定义变量写到这个文件中。
.bash_history :记录命令历史用的。
.bash_logout :当退出shell时,会执行该文件。可以把一些清理的工作放到这个文件中。


Linux shell中的特殊字符
*    代表零个或多个任意字符
?    代表一个任意字符
#    代表注释说明的意思,#号后面的内容忽略掉;
\    脱意字符,将后面的特殊字符(* $)还原为普通字符;
|    管道符,讲前面命令执行的结果作为后面命令的输入;
$    引用变量
;    分隔2个命令,2个命令都执行,不管前面命令是否错误 ls a.txt ; cat a.txt
&    把命令放到后台运行
&&    命令的连接符,第一个执行成功才会执行第二个;
||    分隔命令,只有前面命令运行不成功,才会执行后面的命令;


cut    截取某一个字段、字符
-d    指定分隔符,分割字符用单引号 ' ' 括起来
-f    指定第哪个区间
-c    指定第几个字符;指定多个字符 -c 1,5 ;可以指定一个区间 -c 1-4 ;


列出以:号分隔列出第7列的内容,只显示前3行;
[root@localhost ~]# cut -d: -f 7 passwd | head -3 
/bin/bash
/sbin/nologin
/sbin/nologin
[root@linuxidc ~]# head -3 passwd |cut -c 1-4
root
bin:
daem

sort    排序输出    默认按首字母升序的顺序排列;
-t    指定分隔符
-k    指定以哪个区间进行排序
-r    逆序排列
-u    删除重复的
-n    按照数字大小排序
-f    忽略大小写
按:号分隔,按第3列uid排序;
[root@localhost ~]# sort -t: -n -k 3 passwd |head -3
root:x:0:0:root:/root:/bin/bash
ROOT:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin

wc    统计行数、单词数、字节数
wc -l      统计行数
wc -w    统计单词数
wc -c    统计字符数(wc -m 一样的功能)
[root@linuxidc ~]# wc -l /etc/passwd
24 /etc/passwd
[root@linuxidc ~]# wc -w /etc/passwd
32 /etc/passwd
[root@linuxidc ~]# wc -c /etc/passwd
1041 /etc/passwd
[root@linuxidc ~]# wc /etc/passwd
  24  32 1041 /etc/passwd

uniq    去除重复的行
针对数字的话,需要先进行sort排序,再去除重复的行。
-c    统计重复的行数,并写在最前面;
[root@linuxidc tmp]# uniq 1.txt 
111
222
111
333
[root@linuxidc tmp]# sort 1.txt | uniq -c
      2 111
      1 222
      1 333
[root@linuxidc tmp]# sort test.txt |uniq -c
      2 12345     
      1 67899     
      2 abc     
      1 helloworld

tee    重定向文件,并且同时还在屏幕上显示;
类似与重定向 “>”, 但是比重定向多了一个功能,在把文件写入后面所跟的文件中的同时,还显示在屏幕上。
12 [root@linuxidc ~]# echo 'abcdefg' | tee test.txt
abcdefg

tr    替换字符
常用来处理文档中出现的特殊符号,如DOS文档中出现的^M符号;
-d    删除某个字符

把小写字母变成大写字母
123 [root@linuxidc ~]# head -2 passwd | tr '[a-z]' '[A-Z]'
ROOT:X:0:0:ROOT:/ROOT:/BIN/BASH
BIN:X:1:1:BIN:/BIN:/SBIN/NOLOGIN

替换一个字符
[root@linuxidc ~]# head -2 passwd | tr 'r' 'R'
Root:x:0:0:Root:/Root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin

split    切割文档

-b    依据大小来分割文档,单位为byte
-l    依据行数来分割文档。

示例一,按b大小分割
[root@linuxidc ~]# ls -lb passwd
 -rw-r--r--. 1 root root 1076 Apr  9 15:14 passwd
[root@linuxidc ~]# split -b 500 passwd
[root@linuxidc ~]# ls -l
-rw-r--r--. 1 root root  500 Apr  9 15:17 xaa
-rw-r--r--. 1 root root  500 Apr  9 15:17 xab
-rw-r--r--. 1 root root  76 Apr  9 15:17 xac

示例二,按l行数分割

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/5595799b2467a04d371ab2413de8428a.html