zoukankan      html  css  js  c++  java
  • day07---系统命令

    课程知识概述--系统命令
    seq
    cat
    less
    more
    head
    tail
    grep
    tr
    alias
    复习
    
    1.echo
    	 -e  激活特殊的意义
    	 
      表示回车
    	 	  tab键
    	 
    
    	 [root@oldboy~]#echo "oldboy	alex"
    	oldboy	alex
    	[root@oldboy~]#
    	[root@oldboy~]#echo -e "oldboy	alex"
    	oldboy  alex
    	
    	[root@oldboy~]#echo   "oldboy
    alex"  
    	oldboy
    alex
    	[root@oldboy~]#
    	[root@oldboy~]#
    	[root@oldboy~]#echo  -e  "oldboy
    alex"
    	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
    222222233333333"
    	1111111111
    222222233333333
    	[root@oldboy~]#echo -e "1111111111
    222222233333333"
    	1111111111
    	222222233333333
    	[root@oldboy~]#
    	[root@oldboy~]#echo -e "1111111111
    2222222
    33333333"
    	1111111111
    	2222222
    	33333333
    	[root@oldboy~]#
    	[root@oldboy~]#echo -e "1111111111
    2222222
    33333333" >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 "
    " "+" < 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~]#
    m 1.txt
    	
    	第三个里程碑 如何设置别名
    	格式:
    		alias  别名的名称(随便定义见名字知道其意思)='系统可执行的命令'
    		
    		[root@oldboy~]#alias rm='echo command bny....'
    		[root@oldboy~]#
    m 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   
    
    
  • 相关阅读:
    ISAPI_Rewrite规则写法
    用Windows 2003配置邮件服务器
    如何保护.net中的dll文件(防破解、反编译)
    The Tao Of Programming 编程之道
    Request.ServerVariables (server environment variable)
    Windows下搭建Subversion 服务器
    邮件服务器反解析退信问题分析
    关于公网和内网之间Socket的通信
    .net安装部署中添加卸载程序简单方法
    构建高性能ASP.NET站点 剖析页面处理过程
  • 原文地址:https://www.cnblogs.com/weiweivip666/p/14180498.html
Copyright © 2011-2022 走看看