day07---系统命令

课程知识概述--系统命令
seq
cat
less
more
head
tail
grep
tr
alias
复习

1.echo
	 -e  激活特殊的意义
	 \n  表示回车
	 \t  tab键
	 

	 [root@oldboy~]#echo "oldboy\talex"
	oldboy\talex
	[root@oldboy~]#
	[root@oldboy~]#echo -e "oldboy\talex"
	oldboy  alex
	
	[root@oldboy~]#echo   "oldboy\nalex"  
	oldboy\nalex
	[root@oldboy~]#
	[root@oldboy~]#
	[root@oldboy~]#echo  -e  "oldboy\nalex"
	oldboy
	alex
	
	例子:在/oldboy目录下创建 oldboy1/01stu..02stu oldboy2/01stu..02stu oldboy3/01stu..02stu oldboy10/01stu..02stu
	
	结果如下:
	/oldboy/oldboy1/01stu
	/oldboy/oldboy1/02stu
	
	/oldboy/oldboy2/01stu
	/oldboy/oldboy2/02stu
	....
	/oldboy/oldboy10/01stu
	/oldboy/oldboy10/02stu
	
	例子2: 在/oldboy目录下创建 test01/blog test01/bbs test01/www  test10/blog test10/bbs test10/www
	结果:
	在/oldboy下有10个目录 test01..test10
	在10个目录下分别有三个目录 bbs blog www
	[root@oldboy~]#echo /oldboy/oldboy{01..10}
	/oldboy/oldboy01 /oldboy/oldboy02 /oldboy/oldboy03 /oldboy/oldboy04 /oldboy/oldboy05 /oldboy/oldboy06 /oldboy/oldboy07 /oldboy/oldboy08 /oldboy/oldboy09 /oldboy/oldboy10
	[root@oldboy~]##mkdir /oldboy/oldboy{01..10}
	[root@oldboy~]#
	[root@oldboy~]#mkdir oldboy01 oldboy02 oldboy03
	[root@oldboy~]#ll
	总用量 468972
	-rw-r--r--.  1 root root        23 4月  27 10:25 1.txt
	-rw-r--r--.  1 root root  89782552 3月  20 17:23 360safe+267791+n498d041f99.exe
	-rw-r--r--.  1 root root 389758391 8月  22 2018 gitlab-ce-10.2.2-ce.0.el7.x86_64.rpm
	drwxr-xr-x.  2 root root         6 5月   8 08:52 oldboy01
	drwxr-xr-x.  2 root root         6 5月   8 08:52 oldboy02
	drwxr-xr-x.  2 root root         6 5月   8 08:52 oldboy03
	-rw-r--r--.  1 root root       201 5月   7 11:39 passwd
	-rw-r--r--.  1 root root    670293 5月   7 11:17 services
	drwxr-xr-x. 12 root root       136 5月   7 11:56 test
	-rw-r--r--.  1 root root        94 4月  29 11:51 test.sh
	[root@oldboy~]#mkdir /oldboy/oldboy1 /oldboy/oldboy2 /oldboy/oldboy3
	
	[root@oldboy~]#echo /oldboy/oldboy{01..2}/01stu
	/oldboy/oldboy01/01stu /oldboy/oldboy02/01stu
	[root@oldboy~]#
	[root@oldboy~]#
	[root@oldboy~]#echo /oldboy/oldboy{01..2}/{01..02}stu
	/oldboy/oldboy01/01stu /oldboy/oldboy01/02stu /oldboy/oldboy02/01stu /oldboy/oldboy02/02stu
	
	tree 以树形结构显示
	yum -y install tree
	
	-d 只显示所有的目录
	[root@oldboy~]#tree -d /oldboy/
	/oldboy/
	├── oldboy01
	│   ├── 01stu
	│   └── 02stu
	├── oldboy02
	│   ├── 01stu
	│   └── 02stu
	├── oldboy03
	│   ├── 01stu
	│   └── 02stu


​	

	-L 深度等级 PS: -L 1 之间有空格
	[root@oldboy~]#tree -L 1 /oldboy/
	/oldboy/
	├── oldboy01
	├── oldboy02
	├── oldboy03
	├── oldboy04
	├── oldboy05
	├── oldboy06
	├── oldboy07
	├── oldboy08
	├── oldboy09
	└── oldboy10


	[root@oldboy~]#tree --du -h /root/
	/root/
	├── [  23]  1.txt
	├── [ 86M]  360safe+267791+n498d041f99.exe
	├── [372M]  gitlab-ce-10.2.2-ce.0.el7.x86_64.rpm
	├── [   6]  oldboy01
	├── [   6]  oldboy02
	├── [   6]  oldboy03
	├── [ 201]  passwd
	├── [655K]  services
	├── [ 196]  test
	│   ├── [   6]  stu01
	│   ├── [   6]  stu02
	│   ├── [   6]  stu03
	│   ├── [   6]  stu04
	│   ├── [   6]  stu05
	│   ├── [   6]  stu06
	│   ├── [   6]  stu07
	│   ├── [   6]  stu08
	│   ├── [   6]  stu09
	│   └── [   6]  stu10
	└── [  94]  test.sh
	
	 458M used in 14 directories, 6 files



	[root@oldboy~]#tree --du -h gitlab-ce-10.2.2-ce.0.el7.x86_64.rpm 
	gitlab-ce-10.2.2-ce.0.el7.x86_64.rpm
	 372M used in 0 directories, 0 files
	[root@oldboy~]#tree  gitlab-ce-10.2.2-ce.0.el7.x86_64.rpm        
	gitlab-ce-10.2.2-ce.0.el7.x86_64.rpm [error opening dir]
	
	0 directories, 0 files


	例子2: 在/oldboy目录下创建 test01/blog test01/bbs test01/www  test10/blog test10/bbs test10/www
	结果:
	在/oldboy下有10个目录 test01..test10
	在10个目录下分别有三个目录 bbs blog www
	
	echo {} 序列中输出不规范的字符串或者数字 1 10 20 35
	 [root@oldboy~]#echo stu01 stu10 stu15 stu22 stu33
	stu01 stu10 stu15 stu22 stu33
	[root@oldboy~]#
	[root@oldboy~]#
	[root@oldboy~]#echo stu{01,10,15,22,33}
	stu01 stu10 stu15 stu22 stu33 
	
	[root@oldboy~]#echo {a,r,u}oldboy
	aoldboy roldboy uoldboy
	[root@oldboy~]#echo {a,r,u}-oldboy
	a-oldboy r-oldboy u-oldboy
	[root@oldboy~]#
	[root@oldboy~]#echo oldboy{www,bbs,blog}
	oldboywww oldboybbs oldboyblog
	[root@oldboy~]#
	[root@oldboy~]#
	[root@oldboy~]#echo oldboy/{www,bbs,blog}
	oldboy/www oldboy/bbs oldboy/blog


​	

	[root@oldboy~]#echo A-www A-blog B-www B-blog
	A-www A-blog B-www B-blog
	[root@oldboy~]#
	[root@oldboy~]#echo {A,B}{www,blog}
	Awww Ablog Bwww Bblog
	[root@oldboy~]#
	[root@oldboy~]#
	[root@oldboy~]#echo {A,B}-{www,blog}
	A-www A-blog B-www B-blog
	
	[root@oldboy~]#mkdir -p /oldboy/test{01..10}/{www,bbs,blog}
	[root@oldboy~]#
	[root@oldboy~]#tree /oldboy/
	/oldboy/
	├── test01
	│   ├── bbs
	│   ├── blog
	│   └── www
	├── test02
	│   ├── bbs
	│   ├── blog
	│   └── www


	错误的书写方式:
	[root@oldboy~]#echo /oldboy/test{01..02}/www bbs blog   
	/oldboy/test01/www /oldboy/test02/www bbs blog
	[root@oldboy~]#mkdir /oldboy/test{01..02}/www bbs blog    
	mkdir: 无法创建目录"/oldboy/test01/www": 没有那个文件或目录
	mkdir: 无法创建目录"/oldboy/test02/www": 没有那个文件或目录
	[root@oldboy~]#mkdir -p /oldboy/test{01..02}/www bbs blog
	[root@oldboy~]#
	[root@oldboy~]#tree /oldboy/
	/oldboy/
	├── test01
	│   └── www
	└── test02
		└── www
	
	4 directories, 0 files
	[root@oldboy~]#ll bbs/  blog/
	bbs/:
	总用量 0
	
	blog/:
	总用量 0

2.seq 序列
	-w   输出规范的数字 echo {01..10}
	-s   指定分隔符 默认回车分隔
	[root@oldboy~]#seq -s + 10
	1+2+3+4+5+6+7+8+9+10

3.cat 查看文件内容
    -n  显示行号
	

	1)输出内容到屏幕		shell编程 打印菜单
	[root@oldboy~]#cat <<EOF
	> oldboyedu
	> EOF
	oldboyedu
	
	[root@oldboy~]#cat <<AAA
	> test
	> alex
	> AAA
	test
	alex
	2)内容输入到文件中 > 先清空后写入
	[root@oldboy~]#cat 1.txt 
	test
	test
	oldboy
	alex
	lidao
	[root@oldboy~]#cat >1.txt<<EOF
	> hehe
	> hehe
	> hehe
	> EOF
	[root@oldboy~]#cat 1.txt 
	hehe
	hehe
	hehe
	
	3)内容追加到文件中 >> 追加内容
	
	[root@oldboy~]#cat 1.txt 
	hehe
	hehe
	hehe
	[root@oldboy~]#cat >>1.txt<<EOF
	> oldboy
	> oldboy
	> EOF
	[root@oldboy~]#cat 1.txt 
	hehe
	hehe
	hehe
	oldboy
	oldboy
	
	4)合并文件 将多个文件的内容合并到同一个文件 方便统计计算
	[root@oldboy~]#cat 1.txt 2.txt 3.txt     
	hehe
	hehe
	hehe
	oldboy
	oldboy
	[root@oldboy~]#echo 11111111 >1.txt
	[root@oldboy~]#echo 22222222 >2.txt
	[root@oldboy~]#echo 33333333 >3.txt
	[root@oldboy~]#cat 1.txt 2.txt 3.txt
	11111111
	22222222
	33333333
	[root@oldboy~]#cat 1.txt 
	11111111
	[root@oldboy~]#cat 2.txt 
	22222222
	[root@oldboy~]#cat 3.txt 
	33333333
	[root@oldboy~]#cat 1.txt 2.txt 3.txt > all.txt
	[root@oldboy~]#
	[root@oldboy~]#cat all.txt 
	11111111
	22222222
	33333333
	
	PS: 只要能在屏幕上显示的内容 就可以定向到文件中 > >>


​	

	[root@oldboy~]#cat {1..3}.txt 
	11111111
	22222222
	33333333
	[root@oldboy~]#echo "1111111111\n2222222\33333333"
	1111111111\n2222222\33333333
	[root@oldboy~]#echo -e "1111111111\n2222222\33333333"
	1111111111
	2222222\33333333
	[root@oldboy~]#
	[root@oldboy~]#echo -e "1111111111\n2222222\n33333333"
	1111111111
	2222222
	33333333
	[root@oldboy~]#
	[root@oldboy~]#echo -e "1111111111\n2222222\n33333333" >all.txt
	[root@oldboy~]#
	[root@oldboy~]#
	[root@oldboy~]#cat all.txt 
	1111111111
	2222222
	33333333


​	
4.less  一页一页的查看文件内容
​	 运行一个文件 程序 系统加载到内存中运行
​	 如果一个文件较大 加载到内存的速度较慢
​	 vim  当前所有的文件内容加载到内存中
​	 PS:在Linux中查看大文件不用vim和cat
​	 

	参数选项:
	       -N  显示行号
		   f    往下翻页
		   空格 往下翻页
		   b    往上翻页
		   100g 快速移动到100行
		   gg   移动到文件的开头
		   1g   移动到文件的开头
		   G    文件的结尾
		   /    搜索字符串
		   n    往下查找
		   N    往上查找
		   q    退出

5.more    一页一页的查看文件内容  建议使用less
		  f
		  b
		  到文件的末尾自动退出



6.head   从文件的第一行开始显示  默认显示前10行  包含空行
       -n 5 显示文件的前5行
	   -5   简写
	   -c   显示文件的前n个字符
		[root@oldboy~]#head -5 services
		# /etc/services:
		# $Id: services,v 1.55 2013/04/14 ovasik Exp $
		#
		# Network services, Internet style
		# IANA services version: last updated 2013-04-10
		[root@oldboy~]#head -2 services
		# /etc/services:
		# $Id: services,v 1.55 2013/04/14 ovasik Exp $
		[root@oldboy~]#head services 
		# /etc/services:
		# $Id: services,v 1.55 2013/04/14 ovasik Exp $
		#
		# Network services, Internet style
		# IANA services version: last updated 2013-04-10
		#
		# Note that it is presently the policy of IANA to assign a single well-known
		# port number for both TCP and UDP; hence, most entries here have two entries
		# even if the protocol doesn't support UDP operations.
		# Updated from RFC 1700, ``Assigned Numbers'' (October 1994).  Not all ports


		-c  了解
		
		[root@oldboy~]#head -c 3 services  
		# /[root@oldboy~]#


​	

7. tail  默认显示尾部的10行内容
       -n5  显示最后5行内容
   	-5   简写
   	-f   实时显示文件内容的变化 follow 跟随
   	tailf  简写
   	-F   时时显示文件内容的变化 如果查看的文件不存在 则会等待 监控此文件
   	

   	1)[root@oldboy~]#tail -n 2 services 
   	iqobject        48619/udp               # iqobject
   	matahari        49000/tcp               # Matahari Broker
   	[root@oldboy~]#tail -2 services   
   	iqobject        48619/udp               # iqobject
   	matahari        49000/tcp               # Matahari Broker
   	
   	例子:  head tail
   		1.复制/etc/passwd 到当前家目录
   		2.显示当前passwd的第15行 如何显示?
   	  
   		[root@oldboy~]#head -16 passwd |tail -1
   		polkitd:x:999:998:User for polkitd:/:/sbin/nologin
   	  
   	管道:可以把管道前的命令的结果 作为后面命令来使用
   	
   	2)-f  时时显示文件内容的变化 tail -f  简写 tailf
   	[root@oldboy~]#tailf /var/log/messages
   	May  8 11:04:36 oldboy systemd: Starting firewalld - dynamic firewall daemon...
   	May  8 11:04:37 oldboy systemd: Started firewalld - dynamic firewall daemon.
   	May  8 11:04:37 oldboy kernel: ip_tables: (C) 2000-2006 Netfilter Core Team	
   	
   	3)-F 时时显示文件内容的变化 如果查看的文件不存在 则会等待 监控此文件
   	[root@oldboy~]#tail -F oldboy.txt
   	tail: 无法打开"oldboy.txt" 读取数据: 没有那个文件或目录
   	tail: "oldboy.txt" 已被建立,正在跟随新文件的末尾
   	test
   	test
   	test
   	test
   	test
   	test

8. grep 查找过滤字符串	awk sed grep
   	选项参数:
   		     -n     显示过滤到内容的行号
   			 -v     取反
   	语法格式:   三剑客中 单引号 双引号 不加引号 意义不同
   	grep 'root' file
   	cat passwd|grep root
   	

   	方法1:
   	[root@oldboy~]#grep 'root' passwd 
   	root:x:0:0:root:/root:/bin/bash
   	operator:x:11:0:operator:/root:/sbin/nologin
   	
   	方法2:
   	[root@oldboy~]#cat passwd |grep root
   	root:x:0:0:root:/root:/bin/bash
   	operator:x:11:0:operator:/root:/sbin/nologin


   ​	

   	方法3: -n
   	
   	[root@oldboy~]#grep -n root passwd 
   	1:root:x:0:0:root:/root:/bin/bash
   	10:operator:x:11:0:operator:/root:/sbin/nologin
   	
   	[root@oldboy~]#grep -n . passwd 
   	25:oldboy1:x:1002:1002::/home/oldboy1:/bin/bash
   	26:oldboy2:x:1003:1003::/home/oldboy2:/bin/bash
   	
   	PS: . 代表了单个任意字符 *所有  ^ 以任意字符开头 $ 以任意字符结尾  ^$ 空行
   	<    标准输入 常和tr配合使用
   	
   	方法4: -v  取反
   	[root@oldboy~]#cat 1.txt
   	oldboy
   	alex
   	goudan
   	gousheng
   	erma
   	[root@oldboy~]#grep oldboy 1.txt
   	oldboy
   	[root@oldboy~]#grep -v oldboy 1.txt
   	alex
   	goudan
   	gousheng
   	erma
   	
   	方法5: 配置文件都有注释  只想查看生效的配置
   	
   	[root@oldboy~]#grep -v '#' config 
   	SELINUX=disabled
   	SELINUXTYPE=targeted 


   ​	

   	[root@oldboy~]#grep '^$' config 



		[root@oldboy~]#grep -v '^$' config 
		# This file controls the state of SELinux on the system.
		# SELINUX= can take one of these three values:
		#     enforcing - SELinux security policy is enforced.
		#     permissive - SELinux prints warnings instead of enforcing.
		#     disabled - No SELinux policy is loaded.
		#SELINUX=enforcing
		SELINUX=disabled
		# SELINUXTYPE= can take one of three two values:
		#     targeted - Targeted processes are protected,
		#     minimum - Modification of targeted policy. Only selected processes are protected. 
		#     mls - Multi Level Security protection.
		SELINUXTYPE=targeted 
		[root@oldboy~]#grep -v '^$' config |grep -v '#'
		SELINUX=disabled
		SELINUXTYPE=targeted 


		扩展:
		[root@oldboy~]#egrep -v '^$|#' config 
		SELINUX=disabled
		SELINUXTYPE=targeted 


9.tr  内容替换  1对1的替换 不能替换字符串 (oldboy alex 错误的) sed替换
		特殊符号的替换

		PS: 有些命令不能直接对文件进行操作
		[root@oldboy~]#tr ":" "#" 1.txt
		tr: 额外的操作数 "1.txt"
		Try 'tr --help' for more information.
	
		方法1:
		[root@oldboy~]#cat 1.txt |tr ":" "#"
		root#x#0#0#root#/root#/bin/bash
		bin#x#1#1#bin#/bin#/sbin/nologin
		daemon#x#2#2#daemon#/sbin#/sbin/nologin
		
		方法2:
		[root@oldboy~]#tr ":" "#" < 1.txt          
		root#x#0#0#root#/root#/bin/bash
		bin#x#1#1#bin#/bin#/sbin/nologin
		daemon#x#2#2#daemon#/sbin#/sbin/nologin
		
		[root@oldboy~]#tr "/" "+" < 1.txt   
		root:x:0:0:root:+root:+bin+bash
		bin:x:1:1:bin:+bin:+sbin+nologin
		daemon:x:2:2:daemon:+sbin:+sbin+nologin
		[root@oldboy~]#
		[root@oldboy~]#
		[root@oldboy~]#tr "\n" "+" < 1.txt  
		root:x:0:0:root:/root:/bin/bash+bin:x:1:1:bin:/bin:/sbin/nologin+daemon:x:2:2:daemon:/sbin:/sbin/nologin+[root@oldboy~]#
		
		方法3: 无意义的替换
		
		[root@oldboy~]#cat 2.txt 
		aabbcc
		aabbcc
		aabbcc
		oldboy
		[root@oldboy~]#tr "oldboy" "alex" < 2.txt
		aaxxcc
		aaxxcc
		aaxxcc
		xlexxx

9. alias  别名  系统安全设置
       周玉强  强哥 小强 强强 钢炮
   	冉xx    oldboy 
   	

       mv --->别名---> mv -i
       rm --->别名---> rm -i
       cp --->别名---> cp -i
       ll --->别名---> ls -l

   [root@oldboy~]#rm -i 1.txt			# -i 和用户交互 提高安全性
   rm:是否删除普通文件 "1.txt"?

     rm='rm -i'
     执行rm命令 其实是执行了 rm -i


	第一个里程碑 如何查看系统设定好的别名
	[root@oldboy~]#alias 
	alias cp='cp -i'
	alias egrep='egrep --color=auto'
	alias fgrep='fgrep --color=auto'
	alias grep='grep --color=auto'
	alias l.='ls -d .* --color=auto'
	alias ll='ls -l --color=auto'
	alias ls='ls --color=auto'
	alias mv='mv -i'
	alias rm='rm -i'
	  
	第二个里程碑 临时取消别名 \ 转译 还原本来的意义  脱掉了马甲
	
	[root@oldboy~]#\rm 1.txt
	
	第三个里程碑 如何设置别名
	格式:
		alias  别名的名称(随便定义见名字知道其意思)='系统可执行的命令'
		
		[root@oldboy~]#alias rm='echo command bny....'
		[root@oldboy~]#\rm 2.txt 
		
	   例子:
	   [root@oldboy~]#alias vieth0='vim /etc/sysconfig/network-scripts/ifcfg-eth0'
		[root@oldboy~]#vieth0


	第四个里程碑 取消别名
		[root@oldboy~]#unalias rm
		
	第五个里程碑 永久生效
		写入 /etc/profile
		source /etc/profile 
	
	PS:工作中上吧的时候一定要注意查看 alias   

上一篇:Python学习之数据类型的使用及内置方法Day07


下一篇:Python基础 day07--集合