复习(今日无答疑,笔记可以不写)

八、Linux shell基础知识

8.1 shell介绍

每个用户都有自己的shell;

Bourne人名,为了纪念他;

搜索zsh命令,#yum list | grep zsh

搜索ksh命令,#yum list | grep ksh

逻辑判断if,for等等;

8.2 命令历史

输入过的命令,会记录下来,上下键进行查看;

历史命令存在.bash_history里面,最大1000条;

查看变量HISTSIZE条数,#echo $HISTSIZE

查看目前的历史命令内容,#history;

设置记录历史命令和所运行时间,#HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S";

清空内存历史命令,#history -c ;.bash_history不会被清空,上下键也没有了历史命令,

环境变量修改,#vi /etc/profile;修改后生效命令,#source /etc/profile;

只能追加命令,#chattr +a ~/.bash_history;

#!!表示上一条历史命令;

#!n表示执行第n条历史命令;

#!word表示执行以关键词word开头的历史命令;

8.3 命令补全和别名

tab键补全,敲一下补全,敲两下显示以关键字开头的所有命令;

参数补全安装,#yum install -y bash-completion

别名设置,#alias restartnet='systemctl restart network.service'

列出所有别名,#alias

别名存在的目录,家目录/.bashrc 和 /etc/profile.d/

8.4 通配符

*表示通配,前后都可以,不分字符和字符数目;

?表示一个任意的字符;

【0-9】表示范围内,任意一个数字;【0123456789】范围内任意一个数字;

{1,2}表示范围内,任意一个数字,比【】里面数字多了逗号划分开;

8.5 输入输出重定向

输出重定向

>表示执行前面命令得到的内容输出到后面文件,会覆盖;正确

>>表示追加内容;正确

2>表示前面命令执行产生的错误信息输入到文件中;

2>>表示追加执行的错误信息;

&>表示错误和正确的信息都输入进去;

&>>表示追加错误和正确的信息;

command >1.txt 2>a.txt表示正确的写入1.txt,错误的写入a.txt;

输入重定向

wc -l 查看文本文档行数

wc -l < 1.txt表示将后边的1.txt输入到前面命令里面去;

8.6 管道符和作业控制

管道符|,前面命令的结果给到后面命令处理;

fg把任务调到前台;bg丢到后台并运行;

#vmstat 1不停的显示系统的状态

sleep 1000暂停1000秒

8.7/8.8 shell变量

PATH环境变量;

#env获取到系统变量,系统内置;

#set查看系统及用户变量

有特殊符号的要用单引号;

全局变量,其他连接的用户也可以查看到这个变量;其他用户看不到;

#w查看当前主机连接的用户信息;

pstree命令安装,#yum install psmisc

全局变量设置b=2,命令为#export b=2

取消变量,#unset 变量名

8.9 环境变量配置文件

系统层次

/etc/profile

/etc/bashrc

用户层次

~/.bashrc

~/.bash_profile

~/.bash_history历史命令

~/.bash_logout定义用户退出时做的操作

#source ~/.bash_profile,加载使生效;

PS1,定义执行路径;#vi /etc/bashrc配置文件;

扩展

bashrc和bash_profile的区别 http://ask.apelearn.com/question/7719

【故】若要配置环境变量之类,最保险是写在 .bashrc 文件中。因为不管是登陆还是不登陆,该文件总会被调用!

简易审计系统: http://www.68idc.cn/help/server/linux/2014042190951.html

关于PROMPT_COMMAND环境变量的含义 http://www.linuxnote.org/prompt_command-environment-variables.html

8.10 shell特殊符号cut命令

c='$a$b',c就等于$a$b字符,也相当于c=\$a\$b

cut,截取字符串;-d指定分隔符;

8.11 sort_wc_uniq命令

sort排序;

特殊符号排在最前,然后数字,然后字母顺序

-n的话,字母表示为0;

wc -l统计行数,-m统计全部字符数(含隐藏字符);-w word单词;

uniq去重复;#uniq 2.txt;

需要先排序,再去重,命令为#sort 2.txt | uniq -c

以上操作,不会更改文件内容,只是处理显示结果;

8.12 tee_tr_split命令

tee 表示>;

tee -a 表示追加>>;

tr 'a' 'A'将a替换为A;

split切割,大文件切割成小文件,比如日志文件;

-b指定大小切割,默认B字节为单位,100M就以兆为单位;

-l指定行数切割;

切割并指定前缀#split -b 100k a.txt abc

查看切割后的每个文件大小#du -sh x*

删除所有小文件#rm -f x*

8.13 shell特殊符号下

||表示或;&&表示与,命令都执行;

相关测验题目:http://ask.apelearn.com/question/5437

扩展

1. source exec 区别 http://alsww.blog.51cto.com/2001924/1113112

2. Linux特殊符号大全http://ask.apelearn.com/question/7720

3. sort并未按ASCII排序 http://blog.csdn.net/zenghui08/article/details/7938975

九、正则

9.1 正则介绍_grep上

egrep是grep的扩展,具有所有grep功能;

grep是用来过滤关键词的;

-r遍历所有子目录

-v取反,意思是除了关键词所在行,其他行显示出来;

9.2 grep中

'【0-9】'表示从0到9任意一个数字;

'【^0-9】'表示非0到9任意数字;

'^#'表示以#开头的行;

^放到中括号里面'[^关键词]',表示非;

^放到关键词前面‘^关键词’表示以关键词开头;

9.3 grep下

‘r.o’中,字符“.”表示任意一个字符;

‘r*o’中,字符“*”表示任意N个字符;

‘.*’表示所有字符;

\脱意字符;

{}花括号表示前面字符的重复范围;

‘o\{2\}’表示两个o;

grep -E相当于egrep;

grep 'o\{2\}' passwd相当于egrep  'o{2}' passwd或grep -E 'o{2}' passwd;

+表示前面字符的1次或多次出现;

?表示前面字符的0次或1次;'o?t'就表示t或ot;

|表示或者;

()表示一个组合字符串;

扩展

把一个目录下,过滤所有*.php文档中含有eval的行

grep -r --include="*.php" 'eval' /data/

9.4/9.5 sed

sed也能够实现grep功能,没有颜色显示,强项为替换功能;

sed '/关键词/'p 文件名;p为print打印显示;

sed匹配的行,重复一遍显示出来,如果不需要显示其他行,加-n;#sed -n '/root/'p test.txt;

同时,也支持"."    "*"     "+"   "[]" "{}";

直接打印指定的行,#sed -n '2'p test.txt;

‘2,5’表示2到5行;

‘1,$’表示1到最尾行,就是全部行打印出来;

sed不区分大小写,加I,#sed -n '/bus/'Ip test.txt

sed删除过期日志内容,不显示1到100行内容,加d,命令为#sed '1,100'd test.txt,并没有删除内容,真正删除需再加-i,命令为#sed -i '1,100'd test.txt;

d为delete删除;

将1到2行,内ot替换为to,g表示global全局替换,命令为#sed '1,2s/ot/to/g' test.txt;

9.6/9.7 awk

支持分段,passwd文件内容,很有规律,冒号分段;按段匹配;

-F指定分割符,‘{print $1}’表示打印第一段;不会更改文件内容;

‘{print $0}’表示打印所有段;

#awk '{jprint $0}' test.txt也可以打印所有段,相当于cat;

‘{print $1,$3,$4}’表示打印第一,第三,第四段;中间加逗号;

‘{print $1“#”$3“#”$4}’表示打印第一,第三,第四段,中间以#分隔;

查找oo的行并列出来,awk “/oo/”test.txt ;

第一段匹配oo的列出来,awk -F ':' '$1 ~/oo/' test.txt;

包含root或user的指定段列出来,awk -F ':' '/root/ {print $1,$3} /user/ {print $1,$3,$4}' test.txt;

显示包含root或user的行,#grep -E 'root | user' test.txt;#awk -F ':' '/root | user/ {print $0}' test.txt;

‘$3==0’表示第三段等于数字0的;

‘$3=="0"’表示第三段等于ASCII的0,字符0;

<表示小于;&&表示与;||表示或;==表示等于;

~表示匹配;

'{OFS="#"}'表示显示时用#分隔段; 写在print及条件前面;

NR表示行号,NF表示段数;

打印前10行,#awk -F ':' 'NR<=10' test.txt;

扩展

把这里面的所有练习题做一下

http://www.apelearn.com/study_v2/chapter14.html

转载于:https://blog.51cto.com/12059818/2094532

Linux学习笔记第八周七次课(4月3日)相关推荐

  1. Cty的Linux学习笔记(八)

    Linux学习笔记--第八篇 命令(command): groupadd: 新增组的命令 格式:groupadd [-g GID] groupname 不加-g,按照系统默认的gid创建组,gid也是 ...

  2. Linux 学习笔记(八):时间片轮转调度

    看这篇文章前可以先了解一下时间片:Linux 学习笔记(七):时间片_Amentos的博客-CSDN博客 一.基本概念 时间片轮转调度算法(Round-Robin,RR)主要用于分时操作系统中的进程调 ...

  3. 软件构造学习笔记-第八周

    本周重点是Liskov可替换原则.它要求父类和子类的行为一致性,子类要有更强的不变量.更弱的前置条件.更强的后置条件.在该原则的要求下,每个子类都可以对父类进行替换.这在开发过程中会带来极大的便利,在 ...

  4. linux脚本执行过程中被挂起,Linux学习笔记(八)——脚本执行的过程控制

    一.脚本执行过程中的控制 之前的内容中,运行编写好的脚本时都是在命令行上直接确定运行的,并且运行的脚本是实时的,这并不是脚本唯一的运行方式,下面的内容是脚本的其他运行方式.例如在Linux系统中如何控 ...

  5. LINUX学习笔记—SAMBA使用篇 smb 文件共享--学习篇

    LINUX学习笔记-SAMBA使用篇 smb 文件共享 (转) Linux学习笔记-Samba使用篇 前言:半个月前开始安装.学习redhat LINUX7.0.作为一个Linux新手,不可避免的遇上 ...

  6. Linux学习笔记(七):文件压缩、打包与备份

    Linux学习笔记(七):文件压缩.打包与备份 常见的压缩指令 gzip, zcat/zmore/zless/zgrep bzip2, bzcat/bzmore/bzless/bzgrep xz, x ...

  7. Cty的Linux学习笔记(七)

    Linux学习笔记--第七篇 Linux常见的文件类型: 普通文件(regular file):即一般类型文件,ls -l命令查看时开头为"-"的文件,可分为纯文本文件(ASCII ...

  8. 最热网友收藏:写得蛮好的linux学习笔记(2007年第10周)

    2007年第10周最热网友收藏 上班人员必读:"五险一金"详解!(130),共376人收藏,liukang520236首先收藏 写得蛮好的linux学习笔记-(96),共159人收 ...

  9. Linux学习笔记(十八) -- 运行程序,出现Failed to load module canberra-gtk-module错误的解决方案

    1.错误内容 错误描述 执行程序时,提示如下错误: Failed to load module "canberra-gtk-module" 2.解决方案 (1)执行语句: sudo ...

最新文章

  1. tomcat与IIS服务器集成
  2. python pygame模块怎么写游戏_使用 Python 和 Pygame 模块构建一个游戏框架
  3. ASCII码与字符串的相互转换
  4. Error: org.apache.hadoop.hdfs.BlockMissingException: Could not obtain block: BP-965200530-172.21.
  5. python-cx_oracle报错“DatabaseError: DPI-1047: 64-bit Oracle Client library cannot be loaded: “
  6. Deeplink(深度链接)唤起App,怎样实现无缝跳转
  7. Kubernetes学习笔记之Calico CNI Plugin源码解析(二)
  8. python 之禅_Python 之禅
  9. python+selenium,实现带有验证码的自动化登录功能
  10. 软件部署——nvidia-docker的学习笔记
  11. c++ builder 存储过程 mysql mssql_C++ Builder实现Microsoft SQL Server 2000 的扩展存储过程...
  12. Android Studio 导入安卓源码步骤
  13. java基本数据类型存放在哪?
  14. fins协议握手信号服务器响应,欧姆龙OMRON PLC之HostLink通讯协议(四)-FINS命令工作模式篇...
  15. 苹果尝试支持AdobeFlash,结果尴尬了
  16. 证明:DES解密算法是DES加密算法的逆
  17. 区块链报告会心得体会3000_实习心得体会3000字篇【优秀篇】
  18. 深陷退款门危机,淘集集想跟拼多多抢五环外的野望破灭?
  19. excel提取身份证出生日期_EXCEL教学:通过身份证号码提取所有信息
  20. 把踢毽子的寒冷过程和心理描写出来

热门文章

  1. vue头像加白边_Vue头像处理方案小结
  2. java的io流的file类_java IO流 (一) File类的使用
  3. c语言 字符串 正序再倒序_python字符串
  4. stm32的rxne和idle中断_STM32 HAL CubeMX 串口IDLE接收空闲中断+DMA
  5. javascript表格可以输入数据_最火8套测量自动计算表格,输入数据直接得结果,效率提升80%...
  6. 解码(五):sws_getContext和sws_scale像素格式和尺寸转换函数详解
  7. 与ceph的区别_Ceph分布式存储高性能设计
  8. keyshot9怎么导入材质_你知道硬质合金刀片是怎么来的吗?讲解直观!
  9. python `__str__`
  10. Flask Oauth