Linux高级笔记

Linux高级
[
一、高级
1、Linux系统概述和安装
1.1Linux系统
1.2

1.6登录并查看IP地址
ifconfig
1.7Linux连接工具CRT使用CRT
1.7.4文件上传:
一:基于CRT的alt+p
二:使用linux的上传工具进行上传
1)安装上传工具:yum -y install lrzsz
2) 输入上传命令:rz
1.7.5文件下载
1)sz 文件
2、Linux基础命令
2.1终端命令格式
command [-optitions] [parameter]
说明:
command:命令名,相应功能的英文单词或缩写
options:选项,可用来对命令进行控制,也可以省略
parameter :传入参数
2.2技巧
2.2.2曾经使用过的命令
1、使用上/下 光标可以在曾经使用过的命令之间来回切换
2,退出,并且不想执行当下前命令,可以按ctrl+C

	2.3显示文件类表命令
		ls是英文单词list的缩写,其功能为列出目录的内容
		ls如果只使用ls命令只能看到当前目录下非隐藏文件
		-a 显示指定目录下所有子目录与文件,包含隐藏文件
		-l 以列表方式显示文件的详细信息
		-h 配合 -l 以人性化的方式显示文件大小
		常见使用命令:
			ls #查看当前目录内容(缺点:隐藏文件看不到,开头的文件)
			ls -a 包括隐藏文件
			ls -al 查看文件类型,权限,大小
			ls -lh 以K,M,G方式显示文件大小
			ls /root #查看/root目录下内容
			ll #等价于ls -l 
	2.4目录查看、目录创建和目录删除
		2.4.1 pwd
		2.4.2 mkdir命令  该命令用于创建目录
			注意:新建的目录的名称不能与当前目录中  已有的目录或文件 同名
			1)创建没有层级的关系目录
				mkdir 目录名
			2)创建有层级的目录
				mkdir -p 目录1/目录2/目录3
				mkdir -p /root/aaa/bbb
		2.4.3 rm命令
			该命令用于删除文件或者目录
			-f force(强制) 强制删除,忽略不存在的文件或目录,无需提醒
			-r recursive(递归) 递归地删除目录下的内容,删除目录时必须加持删除
			使用方法:
				rm -r 目录 #删除目录有提醒
				rm -fr 目录 #直接删除目录(不管有没有内容)
				rm -f 文件名 #强制删除一个文件
	2.5目录切换 cd
	2.6 文件操作命令
		2.6.1 touch 命令
			touch命令创建文件
			touch a.txt #在当前目录创建a.txt文件
			touch /root/a.txt #在/root目录创建a.txt文件
		2.6.2mv命令	
			通过mv 命令可以用来移动文件或目录,也可以给文件 活目录重命名
			1)将文件移动另一个目录中:
				mv 文件 目录/
				touch a.txt	
				mkdir dir
				mv a.txt dir
			2)重命名
				mv 旧文件名 新文件名
				mv a.txt b.txt #重命名文件
				mv  dir1 dir2  #重命名目录
			3)将目录移动 到 另一个目录中
				mv 被移动目录 目标目录
				mv dir  /
		2.6.3 cat/more/less 命令
			cat命令
				cat 文件路径
			more命令
				分页显示文件内容,还支持直接跳转行等功能
			语法:more 文件路径
			相关操作:
				Enter:向下n行,需要定义,默认1行
				空格键:向下滚动一屏 或 Ctrl +F
				B键:返回上一屏或Ctrl + B
				q:退出more
			less
				分页显示文件内容,还支持直接跳转等功能
				语法:more filePath
					空格键: 前进一页 或 page down
					b : 后退一页 或 page up
					d : 前进半页
					u : 后退半页

		2.6.4 cp命令
			cp a.txt dir  # 将a.txt复制到dir1目录
			cp a.txt b.txt #将a.txt复制到b.txt
	2.7 文件查找命令
		2.7.1 find指令
			用于查找符合条件的文件
			示例:
				find / -name 'ins*' #查找/目录下以文件名ins开头的文件
				find / -type f -size +100M # 查找/目录下文件大小大于100M的文件
		2.7.2 grep 命令
			grep命令可对文件文本查询
			grep hello  anaconda-ks.cfg#在文件中查到lang
	2.8 压缩和解压缩命令tar
		查数解释:
		参数	解释
		-c	创建一个新的tar文件
		-v	显示运行过程的信息
		-f	指定文件名
		-z 	调用gzip压缩命令进行压缩
		-x	解开tar文件
		2.8.1解压
			tar -zxvf 压缩文件 [-C][指定解压目录]
			示例:
				tar -zxvf redis-3.2.8.tar.gz # 将文件解压到当前目录
				tar -xvf redis-3.2.8.tar # 将文件解压到当前目录 (非压缩文件)
				tar -zxvf redis-3.2.8.tar.gz # 将文件解压到指定明目录
		2.8.2 压缩
			tar -c[z]vf 压缩文件 目录
				tar -cvf test.tar /root/test # 打包
				tar -czvf test.tar.gz /root/test #打包并压缩
	2.9 系统管理命令
		2.9.1 ps命令
			ps命令用来列出系统中当前运行的哪些进程
			ps -ef #查看所有进程
		2.9.2 kill命令
			kill命令用于终止执行中的程序
			kill -9 12345 #杀死pid为12345的进程
		2.9.3管道命令
			ps -ef | grep java #查询名称中包含java的进程
	2.10 用户的创建和删除命令
		2.10.1 用户创建和密码设置
			useradd 用户名
			passwd 用户密码
		2.10.2 用户删除
			user -r 用户名
			userdel -r iz
	2.11 权限管理命令
		2.11.1文件权限概述
			-rwxrwxr-- ;r:读取权4;w:写入权2;x:执行权1
			文件类型 属主权限 属组权限 其他用户权限
		2.11.3 chmod命令
			chmod 666 a.txt 
			chmod u+x a.txt
			chmod u =rwx,g=rw,o=x a.txt
	2.12 网络和服务管理命令
		2.12.1.ifconfig命令
			查看主机ip地址
		2.12.2 systemctl命令
			systemctl命令是用来控制系统服务的实用工具,启动,停止,重新启动和关闭系统服务,还可以显示当前服务的当前状态
			服务管理命令	功能
				systemctl start 服务名	开启服务
				systemctl stop 服务名	关闭服务
				systemctl status 服务名	显示服务状态
				systemctl enable 服务名	设置开机自启动
				systemctl disable 服务名	关闭开机自启动


	2.13磁盘管理命令
		df -h	disk free显示磁盘剩余空间
		du -h [目录名] disk usage 显示目录下的目录大小
		free -h 查看内存使用率
	2.14 时间和日期
		命令	作用
		date	查看系统时间(默认)
		date +“%Y-%m-%d %H:%M:%S” 查看系统时间(指定格式)
		date -s "时间字符串" 设置系统时间
	2.15其他命令
		2.15.1.ln 命令
		ln命令可以用来创建软连接,类似于创建快捷方式
		命令格式:
			ln[参数][源文件或目录][目标文件或目录]	
			实例:
			ln -s 2.txt 1.txt
		2.15.2 clear命令
			清屏命令,还可以使用快捷键:ctrl+l
		2.15.3关机重启
			reboot :重启
			shutdown -h now:马上关机(断电关机)
			halt:立刻关机(centos)(不断电关机)
		
	2.16vi编辑器vim编辑器
		2.16.1命令行模式常用命令
		2.16.2 vim编辑器
		2.16.4 命令行模式常用命令
		2.16.5 低行模式常用命令
			:w 文件 另存为
			:w 保存(ctrl+s)
			:q 退出,如果没有保存,不允许退出
			:q! 强行退出,不保存退出
			:wq 保存并退出
			:x 保存并退出
			:set nu 设置行号
			:%s/旧文本/新文本/g  文本替换
		2.16.6 异常处理
			如果vi异常退出,在磁盘上可能会保存有交换文件
			下次再使用vi编辑文件时,会看到以下屏幕信息,按下字母d删除交换文件即可	
			然后,回到文件编辑目录,删除生成的隐藏文件,如
			rm .Hello.java.swp -fr

Linux 高级命令
4.1重定向 >
Linux 允许将命令执行结果重新定向到一个文件,本应显示在终端上的内容保存到指定文件中。如:
ls >test.txt (test.txt如果不存在,则创建,存在则覆盖其内容)
重定向 >>
这个是将输出内容追加到目录文件中,如果文件不存在就创建文件,如果文件存在,则将新的内容追加到那个文件的末尾,该文件中的原有内容不受影响
4.2cut命令
cut:文件内容查看命令,cut命令可以从一个文本文件或者文本流中提取文本列
cut命令参数解释
-b 按照直接选取 忽略多字节字符边界
-c 仅显示行中指定范围的字符
-d 自定义分割符,默认为制表符
-f 与-d一起使用,指定显示哪个区域
-n 与-b选项连用,不分割多字节字符
–complement 补足被选择的字节,字符或字段
–out -delimiter=<字段分割符> 指定输出内容是的字段分割符;
–help 显示指定的帮助信息
–version 显示指定的版本信息
如果有一个学生报表信息文件stu.txt 包含id name age score

		d name age score
		tom 18 78
		jack 20 85
	1)使用-d和-f显示文件中的指定的列
		cut -d  " " -f 1 stu.txt
			id
			01
			02
		cut -d " " -f 2,3 stu.txt
			name age
			tom	18
			jack 	20
		解释:
			-d  " ": 用来指定文件字段之间的分隔符,如果文件的分隔符是制表符则不需要指定该参数
			-f 数字:用来指定哪一列
	2)--complement 选项提取指定字段之外的列(打印除了第二列之外的列)
		[root@node1 shell]# cut -d " " -f 2 --complement stu.txt
			id age score
			01 18 78
			02 20 85
	3)指定字段的字符或者字节范围
		cut命令可以将一串字符作为列来显示,字符字段的记法
			N-:从第N个字节、字符、字段到结尾;
			N-M:从第N个字节、字符、字段到第M个(包括M在内)字节、字符、字段;
			-M:从第1个字节、字符、字段到第M个(包括M在内)字节、字符、字段。
		#打印第一个到第4个字符
			cut -c 1-4 stu.txt
				id n
				01 t
				02 j

			#打印前2个字符:
			cut -c -2 stu.txt
				id
				01
				02
			#打印从第5个字符开始到结尾
			cut -c 5- stu.txt
				ame age score
				om 18 78
				ack 20 85

	4.3 sort命令
		4.3.1可以对文本文件的内容,以行为单位来排序
			4.3.2路径
			第一步:对字符串排序
			第二步:去重排序
			第三步:对数值排序
			第四步:对成绩排序
		# sort  sort_demo1.txt
			-u unique 去掉重复的
				sort -u sort_demo1.txt 
			-n numeric-sort 按照数值大小排序
			-r reverse 使次序颠倒
				升序
					sort -n sort_demo2.txt 
				降序
					sort -n -r sort_demo2.txt  
			-t field-separator 指定字段分隔符
			-k key 根据那一列排序
				# cat sort_demo3.txt | sort -t ' ' -k 2 -n -r 排序以空格符为分割符,按照第2列进行降序排列
	4.4uniq命令
		uniq 命令用于检查及删除文本文件中重复出现的行,一般与 sort 命令结合使用,通过sort排序将相同的行放在一起,然后实现去重。
			实现1:简单去重,必须要加sort
				 cat uniq_demo.txt  |sort| uniq  
			实现2: 实现去重效果(按照成绩排序,降序,去重)
				cat uniq_demo.txt | sort -t ' ' -k 2 -n -r | uniq 
		
			4.4.3.2.第二步:不但去重,还要统计出现的次数
				-c	count	统计每行内容出现的次数
					 cat uniq_demo.txt |sort| uniq -c
	4.5wc命令
		wc命令:统计行数 单词数 字节数
			在默认的情况下,wc将计算指定文件的行数,字数以及字节数
				命令使用格式为:
				wc 文件名
				-l	统计行数
				-c 	统计字节数
				-w	统计单词数
				-m	统计字符数
			1)统计指定文件行数、字数、字节数
				wc test_wc.txt 
				6 21 85 test_wc.txt
				#行数为6, 单词数为21, 字节数为85
			2)查看跟目录下有多少个文件
				ls / | wc -w
				
	4.6awk命令
		awk是一种处理文本文件的命令,是一个强大的文本分析工具,它支持分段,默认每行空格或TAB分割。简单来说awk就是把文件逐行读入,以空格为默认分割符将每行切片,切开的部分再进行各种分析处理
简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。
		语法:
			awk [-F field-separator] 'commands' input-file(s) 
			或
			awk -F|-f|-v 'BEGIN{ } / / {comand1;comand2} END{ }' file
			-F 定义列分隔符
			-f 指定调用脚本
			-v 定义变量
			' '引用代码块,awk执行语句必须包含在内
			BEGIN{ } 初始化代码块,在对每一行进行处理之前,初始化代码,主要是引用全局变量,设置FS分隔符
			{ } 命令代码块,包含一条或多条命令
			// 用来定义需要匹配的模式(字符串或者正则表达式),对满足匹配模式的行进行上条代码块的操作
			END{ }  结尾代码块,在对每一行进行处理之后再执行的代码块,主要是进行最终计算或输出结尾摘要信息
		脚本方式
			将所有的awk命令插入到一个文件,并使awk程序可执行,然后awk命令解释器作为脚本的首行,通过键入脚本名称来调用。相当于shell脚本首行的:#!/bin/sh可以换成#!/bin/awk.
		变量分配:
			$0 代表整个文本行;
			$1 代表文本行中的第 1 个数据字段;
			$2 代表文本行中的第 2 个数据字段;
			$n 代表文本行中的第 n 个数据字段。
			实例:
				案例1: 打印test_awk.txt第1段
					awk '{print $1}' test_awk.txt
				案例2: 打印出test_awk.txt的第1,2,3段
					awk '{print $1,$2,$3}' test_awk.txt
				案例3:打印出1.txt的第1,2,3段,并且使用#号连接
					awk '{print $1"#"$2"#"$3}' test_awk.txt
			段之间的连接符OFS	
				OFS用来指定输出记录分隔符
					案例1::打印1,2,3段,指定#为连接符
						awk '{OFS="#"}{print $1,$2,$3}' test_awk.txt
		4.6.1指定分割符
			-F 来指定分割符
				准备工作,现在有个test_awk2.txt,内容如下:	aaa:111:333
					案例1: 打印出test_awk2.txt的第1段
						awk -F ':' '{print $1}' test_awk2.txt
					案例2: 打印出test_awk2.txt的所有段
						awk -F ':' '{print $0}' test_awk2.txt
					案例3: 打印出test_awk2.txt的第1,3段
						awk -F ':' '{print $1,$3}' test_awk2.txt
		4.6.2内容匹配
			这里的内容匹配需要使用正则表达式,常用的正则表达式规则如下:
				  	1、^linux 以linux开头的行

2、$php 以php结尾的行
  3、. 匹配任意单字符
   4、.+ 匹配任意多个字符
   5、 .* 匹配0个或多个字符(可有可无)
   6、 [0-9a-z] 匹配中括号内任意一个字符
   7、 (linux)+ 出现多次Linux单词
   8、 (web){2} web出现两次以上
9、\ 屏蔽转义
实例:
案例1: 匹配test_awk2.txt中包含cc的内容
awk ‘/cc/’ test_awk2.txt
案例2: 匹配test_awk2.txt中第1段包含cc的内容
awk -F ‘:’ ‘$1 ~ /cc/’ test_awk2.txt
案例3: 匹配test_awk2.txt中第1段包含至少连续两个c的内容
awk -F ‘:’ ‘$1 ~ /cc+/’ test_awk2.txt
案例4: 在test_awk2.txt中如果匹配到aaa就打印第1,3段,如果匹配到ccc,就打印第1,3,4段
awk -F ‘:’ ‘/aaa/ {print $1,$3} /ccc/ {print $1,$3,$4}’ test_awk2.txt
案例5: 在test_awk2.txt中如果匹配到aaa或者ddd,就打印全部内容
awk -F ‘:’ ‘/aaa|ddd/ {print $0}’ test_awk2.txt

		4.6.3段内容判断
			在awk命令中,支持很多运算符,使用这些运算符可进行段内容判断
				案例1:在test_awk2.txt中如果第3段等于222就打印所有内容
					awk -F ':' '$3==222 {print $0}' test_awk2.txt
				案例2:在test_awk2.txt中如果第3段等于333就打印第一段
					awk -F ':' '$3==333 {print $1}'  test_awk2.txt
				案例3:在test_awk2.txt中如果第5段不等于cccc就打印全部
					awk -F ':' '$5!="cccc" {print $0}' test_awk2.txt
				案例4:在test_awk2.txt中如果第1段等于ccc,并且第2段大于300就打印全部
					awk -F ':' '$1=="ccc" && $2>300 {print $0}' test_awk2.txt
				案例5:在test_awk2.txt中如果第1段等于ccc,并且第2段匹配666就打印全部
					awk -F ':' '$1=="ccc" && $2==666 {print $0}' test_awk2.txt
		4.6.8NR行号和NF段数
				NF 一条记录的字段的数目
				NR 已经读出的记录数,就是行号,从1开始
			案例1:打印test_awk2.txt全部内容显示行号
				awk -F ':' '{print NR " : " $0}' test_awk2.txt 
			案例2:打印test_awk2.txt全部内容显示段数
				awk -F ':' '{print NF " : " $0}' test_awk2.txt 
			案例3: 从test_awk2.txt的前3行中匹配出第2段等于 666,并显示行号
				awk -F ':' 'NR<=3 && $2==666 {print $0}' test_awk2.txt

		4.6.9分段求和
			awk 中还可以指定脚本命令的运行时机。awk会从输入中读取一行文字,然后针对该行的数据执行程序脚本,但有时可能需要在处理数据前运行一些脚本命令,这就需要使用begin关键字。

BEGIN 会强制awk在读取数据前执行该关键字后指定的脚本命令。

			案例1:  对test_awk2.txt中的第2段求和
				awk -F ':' 'BEGING{total=0}{total=total+$2}END{print total}' test_awk2.txt 
		综合案例
			案例1:  统计当前目录下所有文本文件的大小
					$5 为ll命令结果的第五列,该列刚好是显示文件的大小
						ll | awk 'BEGIN{total=0}{total=total+$5} END{print(total)}'
			案例2:求总成绩
					awk的代码还可以放在一个脚本中,脚本的后缀是.awk,执行脚本的语法: awk -f 脚本名 源文件
				需求:
					有个文件score.txt,记录每个学生的成绩,要计算学生总成绩和平均成绩,文件内容如下:
					(名字, 学号,数学成绩,英语成绩、计算机成绩)
					代码:
					cal.awk
					#!/bin/awk -f
					#运行前
					BEGIN {
							math = 0
						 english = 0
						 computer = 0
							printf "NAME    NO.   MATH  ENGLISH  COMPUTER   TOTAL\n"
							printf "---------------------------------------------\n"
							}
					#运行中
						{
								math+=$3
	  						english+=$4
								computer+=$5
								printf "%-6s %-6s %4d %8d %8d %8d\n", $1, $2, $3,$4,$5, $3+$4+$5
							}
					#运行后
						END {
								printf "---------------------------------------------\n"
								printf "  TOTAL:%8d %8d %8d \n", math, english, computer
								printf "AVERAGE:%8.2f %8.2f %8.2f\n", math/NR, english/NR, computer/NR
						}
				
					执行脚本并查看结果:	
						[root@node1 shell]# awk -f cal.awk score.txt 
								NAME    NO.   MATH  ENGLISH  COMPUTER   TOTAL
								---------------------------------------------
								Marry  2143     78       84       77      239
								Jack   2321     66       78       45      189
								Tom    2122     48       77       71      196
								Mike   2537     87       97       95      279
								Bob    2415     40       57       62      159
								---------------------------------------------
								TOTAL:       319      393      350 
								AVERAGE:     63.80    78.60    70.004

]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

章鱼哥TuNan&Z

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值