Shell编写脚本的笔记
2014-08-06 13:53
134 查看
1.记录命令历史:
预设为记录1000条历史命名;这些命令保存在用户的根目录中的.bash_history文件中;正常退出才会保存运行的命令到.bash_history中;
与命令历史有关的字符:!!表执行上一条指令;!n表示执行命令历史中第n条指令;!字符串 表示执行命令历史最后一次以字符串为开头的命令;
2.别名:
alias [命名别名]=['具体的命令']
3.通配符
用*来匹配零个或多个字符 例如:ls -d test*
用?来匹配一个字符 例如:ls -d test?
4.管道符
| 是报前面的命令运行的结果对给后面的命令;
| :管道符,前面多次说过,它的作用在于将符号前面命令的结果丢给符号后面的命令。这里提到的后面的命令,并不是所有的命令都可以的,一般针对文档操作的命令比较常用,例如cat,
less, head, tail, grep, cut, sort, wc, uniq, tee, tr, split, sed, awk等等,其中grep, sed, awk为正则表达式必须掌握的工具;
5.作业控制
当运行一个进程时候,用ctrl+z暂停,用fg恢复,用bg使它在后台运行,用ctrl+c 终止
6. # :这个符号在linux中表示注释说明的意思,即”#”后面的内容linux忽略掉。
在命令的开头或者中间插入”#” ,linux都会忽略掉的;
7.\ :脱意字符,将后面的特殊符号(例如”*” )还原为普通字符;
8.$ :除了用于变量前面的标识符外,还有一个妙用,就是和’!’结合起来使用
‘!$’表示上条命中中最后一个变量(也许称为变量不合适,总之就是上条命令中最后出现的那个东西)例如上边命令最后是test.txt那么在当前命令下输入!$则代表test.txt
9.grep :过滤一个或多个字符
例如:cat /etc/passwd |grep root
10.cut :截取某一个字段
语法:cut -d “分隔字符” [-cf] n 这里的n是数字
-d :后面跟分隔字符,分隔字符要用双引号括起来
-c :后面接的是第几个字符
-f :后面接的是第几个区块
例如:cat /etc/passwd |cut -d ":" -f 1
或者 cat /etc/passwd |cut -d ":" -f1
-d 后面跟分隔字符,这里使用冒号作为分割字符,-f 1 就是截取第一段,-f和1之间的空格可有可无。
11.sort :用做排序
语法:sort [-t 分隔符] [-kn1,n2] [-nru] 这里的n1 < n2
-t 分隔符 :作用跟cut的-d一个意思
-n :使用纯数字排序
-r :反向排序
-u :去重复
-kn1,n2 :由n1区间排序到n2区间,可以只写-kn1,即对n1字段排序
12.wc :统计文档的行数、字符数、词数,常用的选项为:
-l :统计行数
-m :统计字符数
-w :统计词数
例如:cat test.txt |wc -l
13.uniq :去重复的行,笔者常用的选项只有一个:
-c :统计重复的行数,并把行数写在前面
例如:cat test.txt |uniq
14.tee :后跟文件名,类似与重定向”>”,但是比重定向多了一个功能,在把文件写入后面所跟的文件中的同时,还显示在屏幕上
16.tr :替换字符,常用来处理文档中出现的特殊符号,如DOS文档中出现的^M符号。常用的选项有两个:
-d :删除某个字符,-d 后面跟要删除的字符
-s :把重复的字符去掉
最常用的就是把小写变大写: tr ‘[a-z]’ ‘[A-Z]’
例如:head -n1 /etc/passwd |tr '[a-z]' '[A-Z]'
17.split :切割文档,常用选项:
-b :依据大小来分割文档,单位为byte
例如:split -b 500 /etc/passwd passwd
格式如上例,后面的passwd为分割后文件名的前缀,分割后的文件名为passwdaa, passwdab, passwdac …
-l :依据行数来分割文档
例如:split -l 10 /etc/passwd passwd
18.; :分号。平时我们都是在一行中敲一个命令,然后回车就运行了,那么想在一行中运行两个或两个以上的命令如何呢?则需要在命令之间加一个”;”了;
19.~ :用户的根目录,如果是root则是 /root ,普通用户则是 /home/username
20. & :如果想把一条命令放到后台执行的话,则需要加上这个符号。通常用于命令运行时间非常长的情况;
21.jobs 查看当前shell中后台执行的任务
22.[ ] :中括号,中间为字符组合,代表中间字符中的任意一个
例如;ls -d test[a-c]
23. && 与 || 用于多条命令间的分隔符。另外还有两个可以用于多条命令中间的特殊符号,那就是 “&&”和”||”。下面笔者把这几种情况全列出:
1) command1 ; command2
2) command1 && command2
3) command1 || command2
使用”;”时,不管command1是否执行成功都会执行command2; 使用”&&”时,只有command1执行成功后,command2才会执行,否则command2不执行;使用”||”时,command1执行成功后
command2 不执行,否则去执行command2,总之command1和command2总有一条命令会执行。
【变量】
1.用echo命令显示变量的值
例如: echo $PATH
2.用env 显示环境变量 例如:env
3.用set 把系统预设置的全部变量显示出来 例如:set
【系统环境变量与个人环境变量的配置文件】
上面讲了很多系统的变量,那么在linux系统中,这些变量被存到了哪里呢,为什么用户一登陆shell就自动有了这些变量呢?
/etc/profile :这个文件预设了几个重要的变量,例如PATH, USER, LOGNAME, MAIL, INPUTRC, HOSTNAME, HISTSIZE, umas等等。
/etc/bashrc :这个文件主要预设umask以及PS1。这个PS1就是我们在敲命令时,前面那串字符了,例如笔者的linux系统PS1就是 [root@localhost ~]# ,你不妨看一下PS1的值。
\u就是用户,\h 主机名, \W 则是当前目录,\$就是那个’#’了,如果是普通用户则显示为’$’
除了两个系统级别的配置文件外,每个用户的主目录下还有几个这样的隐藏文件:
.bash_profile :定义了用户的个人化路径与环境变量的文件名称。每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次。
.bashrc :该文件包含专用于你的shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取。例如你可以将用户自定义的alias或者自定义变量写到这个文件中。
.bash_history :记录命令历史用的。
.bash_logout :当退出shell时,会执行该文件。可以把一些清理的工作放到这个文件中。
预设为记录1000条历史命名;这些命令保存在用户的根目录中的.bash_history文件中;正常退出才会保存运行的命令到.bash_history中;
与命令历史有关的字符:!!表执行上一条指令;!n表示执行命令历史中第n条指令;!字符串 表示执行命令历史最后一次以字符串为开头的命令;
2.别名:
alias [命名别名]=['具体的命令']
3.通配符
用*来匹配零个或多个字符 例如:ls -d test*
用?来匹配一个字符 例如:ls -d test?
4.管道符
| 是报前面的命令运行的结果对给后面的命令;
| :管道符,前面多次说过,它的作用在于将符号前面命令的结果丢给符号后面的命令。这里提到的后面的命令,并不是所有的命令都可以的,一般针对文档操作的命令比较常用,例如cat,
less, head, tail, grep, cut, sort, wc, uniq, tee, tr, split, sed, awk等等,其中grep, sed, awk为正则表达式必须掌握的工具;
5.作业控制
当运行一个进程时候,用ctrl+z暂停,用fg恢复,用bg使它在后台运行,用ctrl+c 终止
6. # :这个符号在linux中表示注释说明的意思,即”#”后面的内容linux忽略掉。
在命令的开头或者中间插入”#” ,linux都会忽略掉的;
7.\ :脱意字符,将后面的特殊符号(例如”*” )还原为普通字符;
8.$ :除了用于变量前面的标识符外,还有一个妙用,就是和’!’结合起来使用
‘!$’表示上条命中中最后一个变量(也许称为变量不合适,总之就是上条命令中最后出现的那个东西)例如上边命令最后是test.txt那么在当前命令下输入!$则代表test.txt
9.grep :过滤一个或多个字符
例如:cat /etc/passwd |grep root
10.cut :截取某一个字段
语法:cut -d “分隔字符” [-cf] n 这里的n是数字
-d :后面跟分隔字符,分隔字符要用双引号括起来
-c :后面接的是第几个字符
-f :后面接的是第几个区块
例如:cat /etc/passwd |cut -d ":" -f 1
或者 cat /etc/passwd |cut -d ":" -f1
-d 后面跟分隔字符,这里使用冒号作为分割字符,-f 1 就是截取第一段,-f和1之间的空格可有可无。
11.sort :用做排序
语法:sort [-t 分隔符] [-kn1,n2] [-nru] 这里的n1 < n2
-t 分隔符 :作用跟cut的-d一个意思
-n :使用纯数字排序
-r :反向排序
-u :去重复
-kn1,n2 :由n1区间排序到n2区间,可以只写-kn1,即对n1字段排序
12.wc :统计文档的行数、字符数、词数,常用的选项为:
-l :统计行数
-m :统计字符数
-w :统计词数
例如:cat test.txt |wc -l
13.uniq :去重复的行,笔者常用的选项只有一个:
-c :统计重复的行数,并把行数写在前面
例如:cat test.txt |uniq
14.tee :后跟文件名,类似与重定向”>”,但是比重定向多了一个功能,在把文件写入后面所跟的文件中的同时,还显示在屏幕上
16.tr :替换字符,常用来处理文档中出现的特殊符号,如DOS文档中出现的^M符号。常用的选项有两个:
-d :删除某个字符,-d 后面跟要删除的字符
-s :把重复的字符去掉
最常用的就是把小写变大写: tr ‘[a-z]’ ‘[A-Z]’
例如:head -n1 /etc/passwd |tr '[a-z]' '[A-Z]'
17.split :切割文档,常用选项:
-b :依据大小来分割文档,单位为byte
例如:split -b 500 /etc/passwd passwd
格式如上例,后面的passwd为分割后文件名的前缀,分割后的文件名为passwdaa, passwdab, passwdac …
-l :依据行数来分割文档
例如:split -l 10 /etc/passwd passwd
18.; :分号。平时我们都是在一行中敲一个命令,然后回车就运行了,那么想在一行中运行两个或两个以上的命令如何呢?则需要在命令之间加一个”;”了;
19.~ :用户的根目录,如果是root则是 /root ,普通用户则是 /home/username
20. & :如果想把一条命令放到后台执行的话,则需要加上这个符号。通常用于命令运行时间非常长的情况;
21.jobs 查看当前shell中后台执行的任务
22.[ ] :中括号,中间为字符组合,代表中间字符中的任意一个
例如;ls -d test[a-c]
23. && 与 || 用于多条命令间的分隔符。另外还有两个可以用于多条命令中间的特殊符号,那就是 “&&”和”||”。下面笔者把这几种情况全列出:
1) command1 ; command2
2) command1 && command2
3) command1 || command2
使用”;”时,不管command1是否执行成功都会执行command2; 使用”&&”时,只有command1执行成功后,command2才会执行,否则command2不执行;使用”||”时,command1执行成功后
command2 不执行,否则去执行command2,总之command1和command2总有一条命令会执行。
【变量】
1.用echo命令显示变量的值
例如: echo $PATH
2.用env 显示环境变量 例如:env
3.用set 把系统预设置的全部变量显示出来 例如:set
【系统环境变量与个人环境变量的配置文件】
上面讲了很多系统的变量,那么在linux系统中,这些变量被存到了哪里呢,为什么用户一登陆shell就自动有了这些变量呢?
/etc/profile :这个文件预设了几个重要的变量,例如PATH, USER, LOGNAME, MAIL, INPUTRC, HOSTNAME, HISTSIZE, umas等等。
/etc/bashrc :这个文件主要预设umask以及PS1。这个PS1就是我们在敲命令时,前面那串字符了,例如笔者的linux系统PS1就是 [root@localhost ~]# ,你不妨看一下PS1的值。
\u就是用户,\h 主机名, \W 则是当前目录,\$就是那个’#’了,如果是普通用户则显示为’$’
除了两个系统级别的配置文件外,每个用户的主目录下还有几个这样的隐藏文件:
.bash_profile :定义了用户的个人化路径与环境变量的文件名称。每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次。
.bashrc :该文件包含专用于你的shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取。例如你可以将用户自定义的alias或者自定义变量写到这个文件中。
.bash_history :记录命令历史用的。
.bash_logout :当退出shell时,会执行该文件。可以把一些清理的工作放到这个文件中。
相关文章推荐
- shell笔记-全面总结-强化脚本编写能力
- shell时间,shell创建文件,linux shell编写以日期时间为文件名的脚本学习笔记 (转)
- shell脚本编写学习笔记一
- shell脚本编写小例子——工作笔记
- linux shell编写以日期时间为文件名的脚本学习笔记
- Command Prompt + Perl 脚本编写笔记
- 如何编写一个shell脚本
- 编写shell脚本
- 如何编写一个shell脚本(转贴)
- shell脚本学习笔记(三)mysql与ARP表的绑定源码
- linux shell 编写屏幕产生颜色的脚本学习笔记
- Windows下编写Shell脚本的小经验
- shell 脚本学习指南-笔记
- shell学习笔记三--脚本初步
- 顶嵌学员学习笔记:Shell脚本编程总结
- Shell脚本编写练习——合并行
- 编写启动程序和停止程序的shell脚本
- shell脚本编写技巧
- 如何编写一个shell脚本
- shell学习笔记三--脚本初步