Linux系统编程Day02

1.Linux基础命令

1.1 grep命令
	Linux系统中grep命令是一种强大的文本搜索工具,grep允许对文本文件进行模式查
找。如果找到匹配模式, grep打印包含模式的所有行。

grep一般格式为:

	grep [-选项] ‘搜索内容串’ 文件名

在grep命令中输入字符串参数时,最好引号或双引号括起来。例如:grep ‘a ’1.txt。

常用选项说明:
		选项			含义
		-v			显示不包含匹配文本的所有行(相当于求反)
		-n			显示匹配行及行号
		-i			忽略大小写
 	
命令:grep -r + “查找的关键字” + 路径
搜索目录需要添加参数: -r

查找 /home/test下包含“hello,world“字符串的文件:	
	grep -r "hello,world" /home/test
	
示例:
1.grep -a hello /bin/ls 将二进制文件以文本文件的方式搜索hello 
2.grep -i hello /etc/passwd 在/etc/passwd文件里找hello并且忽略大小写查找 
3.grep -n hello /etc/passwd 搜索hello结果并显示在文件里出现的行号 
4.grep -w hello /etc/passwd 搜索完全匹配hello单词的行 
5.grep -v hello /etc/passwd 显示出在/etc/passwd文件里没有hello的行 
6.grep -r hello /etc/ 在/etc/目录里所有文件里找hello并显示结果 
7.grep -i hello /etc/passwd --color=auto 在/etc/passwd文件中找hello并
且忽略大小写,然后高亮显示匹配的关键字

1.2 管道
	管道(|):一个命令的输出可以通过管道做为另一个命令的输入。
	这里“ | ”的左右分为两端,左端塞东西(写),右端取东西(读)。

1.3 压缩包管理
1 tar
	tar使用格式:		
		tar [选项] 打包文件名 文件
	tar命令很特殊,其选项前面可以使用“-”,也可以不使用。
	
	常用参数:
	参数		含义
	-c		生成档案文件,创建打包文件
	-v		列出归档解档的详细过程,显示进度
	-f		指定档案文件名称,f后面一定是.tar文件,所以必须放选项最后
	-t		列出档案中包含的文件
	-x		解开档案文件
	注意:除了f需要放在参数的最后,其它参数的顺序任意。
		1.tar -cvf 创建归档文件			
		2.tar -xvf 解除归档文件(还原)			
		3.tar -tvf 查看归档文件内容

2 gzip
	tar与gzip命令结合使用实现文件打包、压缩。

	tar只负责打包文件,但不压缩,用gzip压缩tar打包后的文件,其扩展名一般用xxxx.tar.gz。

	gzip使用格式如下:	
		gzip [选项] 被压缩文件

常用选项:	
	选项			含义
	-d			解压
	-r			压缩所有子目录
	注:1.一次性压缩多个文件: gzip后面不能跟目录
	2.tar这个命令并没有压缩的功能,它只是一个打包的命令,但是在tar命令中增加
	一个选项(-z)可以调用gzip实现了一个压缩的功能,实行一个先打包后压缩的过程。
常见用法:		
	1.压缩用法:tar -cvzf 压缩包包名 文件1 文件2 ...
	2.解压用法: tar -zxvf 压缩包包名
	参数	含义
	-z	指定压缩包的格式为:file.tar.gz
	3.解压到指定目录:-C (大写字母“C”)
	例:tar -xvf new.tar.gz -C ./test/ 将 new.tar.gz 解压到当前目录下的 test 目录下

3.bzip2
	tar与bzip2命令结合使用实现文件打包、压缩(用法和gzip一样)。
	tar只负责打包文件,但不压缩,用bzip2压缩tar打包后的文件,其扩展名一般用
xxxx.tar.bz2。
	在tar命令中增加一个选项(-j)可以调用bzip2实现了一个压缩的功能,实行一个先
打包后压缩的过程。
	压缩用法:tar jcvf 压缩包包名 文件...(tar -jcvf bk.tar.bz2 *.c)
	解压用法:tar jxvf 压缩包包名 (tar -jxvf bk.tar.bz2)
 
常见格式:
	tar -czvf		
	tar -cjvf		
	tar -xzvf		
	tar -xjvf		
	tar -xvf 万能解压 (gzip bzip2)

4.zip和unzip
	1.通过zip压缩文件的目标文件不需要指定扩展名,默认扩展名为zip。	
	2.压缩文件:zip -r 目标文件(没有扩展名) 源文件	
	3.解压文件:unzip -d 解压后目录文件 压缩文件

2.文件权限管理

2.1 文件权限
	文件权限就是文件的访问控制权限,即哪些用户和组群可以访问文件以及可以执行
什么样的操作。
	在 Unix/Linux中的每一个文件或目录都包含有访问权限,这些访问权限决定了谁能
访问和如何访问这些文件和目录。

2.2 访问用户分类
	通过设定权限可以从以下三种访问方式限制访问权限:

	1)只允许用户自己访问(所有者)
	所有者就是创建文件的用户,用户是所有用户所创建文件的所有者,用户可以允许
	所在的用户组能访问用户的文件。

	2)允许一个预先指定的用户组中的用户访问(用户组)	
	用户都组合成用户组,例如,某一类或某一项目中的所有用户都能够被系统管理员
	归为一个用户组,一个用户能够授予所在用户组的其他成员的文件访问权限。

	3)允许系统中的任何用户访问(其他用户)
	用户也将自己的文件向系统内的所有用户开放,在这种情况下,系统内的所有用户
	都能够访问用户的目录或文件。在这种意义上,系统内的其他所有用户就是 other 
	用户类

2.3 访问权限说明
	用户能够控制一个给定的文件或目录的访问程度,一个文件或目录可能有读、写及
执行权限:
	1.读权限(r)
	对文件而言,具有读取文件内容的权限;对目录来说,具有浏览目录的权限。
	
	2.写权限(w)
	对文件而言,具有新增、修改文件内容的权限;对目录来说,具有删除、移动目录
	内文件的权限。
	
	3.可执行权限(x)
	对文件而言,具有执行文件的权限;对目录了来说该用户具有进入目录的权限。

注意:通常,Unix/Linux系统只允许文件的属主(所有者)或超级用户改变文件的读写权限。

2.4 chmod
	chmod 修改文件权限有两种使用格式:字母法与数字法。
1.字母法:chmod u/g/o/a +/-/= rwx 文件

	[ u/g/o/a ]			含义
	u			user 表示该文件的所有者
	g			group 表示与该文件的所有者属于同一组( group )者,即用户组
	o			other 表示其他以外的人
	a			all 表示这三者皆是
	
	[ +-= ]			含义
	+				增加权限
	-				撤销权限
	=				设定权限
	
	rwx			含义
	r	read 表示可读取,对于一个目录,如果没有r权限,那么就意味着不能通过ls查看这个目录内部的内容。
	w	write 表示可写入,对于一个目录,如果没有w权限,那么就意味着不能在目录下创建新的文件。
	x	excute 表示可执行,对于一个目录,如果没有x权限,那么就意味着不能通过cd进入这个目录。
	
	例:1.chmod o+w file 给文件file的其它用户增加写权限
		2.chmod u-r file 给文件file的拥有者减去读的权限
		3.chmod u=rwx,g=rx,o=r file 给文件file的拥有者设置读写执行的权限,文件file的组用户设置读执行权限,给其他用户设置读权限

2.数字法:“rwx” 这些权限也可以用数字来代替

	r	读取权限,数字代号为 "4"
	w	写入权限,数字代号为 "2"
	x	执行权限,数字代号为 "1"
	-	不具任何权限,数字t代号为 "0"

例:
	chmod 751 file**:**
	1.文件所有者:读、写、执行权限	
	2.同组用户:读、执行的权限	
	3.其它用户:执行的权限
	
注意:如果想递归所有目录加上相同权限,需要加上参数“ -R ”。
如:chmod 777 test/ -R 递归 test 目录下所有文件加 777 权限

2.5 chown
	chown用于修改文件所有者
使用方法:chown 用户名 文件或目录名
	1.将文件所属者修改为root用户
	sudo chown root file 将文件file的文件所属者修改为root用户
	
	2.将文件所属者改为test 所属组改为root
	sudo chown test:root file .将文件所属者改为test,所属组改为root
	
	3.单独只修改文件所属组
	sudo chown :root file .将文件所属组改为root
	
2.6 chgrp
	chgrp用于修改文件所属组
使用方法:chgrp 用户组名 文件或目录名

3.其他命令

3.1 重定向

 标准输入 代码 0 默认设备为键盘
​ 标准输出 代码 1 默认设备为屏幕
​ 错误输出 代码 2 默认设备为屏幕

1.ls /etc/passwd > output.txt 标准正确输出重定向到output.txt​ 
2.ls /etc/shadow >> output.txt 标准正确输出追加重定向到output.txt​ 
3.ls dddddd 2> error.txt 标准错误输出重定向到error.txt​ 
4.ls ddddd 2>> error.txt 标准错误输出重定向到error.txt,追加的方式​ 
5.ls dddddd 2> /dev/null 标准错误输出重定向到黑洞​ 
6.ls ddddd /etc/passwd &> /dev/null 标准正确输出标准错误输出全都重定向到黑洞​ 
7.ls ddddd /etc/passwd &>> txt 标准正确输出标准错误输出以追加的方式全都重定向到txt
8.cat < file 标准输入重定向,file作为cat输入的内容

3.2 tree
tree 以树状形式查看指定目录内容,使用该命令需要安装软件 tree:	
	sudo apt install tree

常用选项:	
	-L n		查看n层目录

3.3 ln
	ln命令主要用于创建链接文件。Linux链接文件类似于Windows下的快捷方式。
链接文件分为软链接和硬链接:	
	软链接:软链接不占用磁盘空间,源文件删除则软链接失效。
	硬链接:硬链接只能链接普通文件,不能链接目录。
使用格式:	
	ln 源文件 链接文件	
	ln -s 源文件 链接文件

	如果没有-s选项代表建立一个硬链接文件,两个文件占用相同大小的硬盘空间,即
使删除了源文件,链接文件还是存在,所以-s选项是更常见的形式。

注意:1.如果软链接文件和源文件不在同一个目录,源文件最好要使用绝对路径,不要使
用相对路径。
	2.readlink命令读取符号链接文件的内容(存储目标文件的路径)

4.VI编辑器

vi有三种基本工作模式: 命令模式、文本输入模式(编辑模式)、末行模式

4.1命令模式
	任何时候,不管用户处于何种模式,只要按一下ESC键,即可使vi进入命令模式。我们在
shell环境(提示符为$)下输入启动vim命令,进入编辑器时,也是处于该模式下。
	在命令模式下,用户可以输入各种合法的vi命令,用于管理自己的文档。此时从键
盘上输入的任何字符都被当做编辑命令来解释,若输入的字符是合法的vi命令,则vi在
接受用户命令之后完成相应的动作。

4.2 编辑模式
	在命令模式下输入插入命令i(I)、附加命令a(A) 、打开命令o(O)、替换命
s(S)都可以进入文本输入模式,此时vi窗口的最后一行会显示“插入”。

4.3 末行模式
	1.末行模式下,用户可以对文件进行一些附加处理。尽管命令模式下的命令可以完成很
多功能,但要执行一些如字符串查找、替换、显示行号等操作还是必须要进入末行模式的。
	2.在命令模式下,输入冒号即可进入末行模式。此时vi窗口的状态行会显示出冒号,等
待用户输入命令。用户输入完成后,按回车执行,之后vi编辑器又自动返回到命令模式
下。

4.4 vim基本操作
1. 打开文件
	vim filename:打开或新建文件,并将光标置于第一行行首,如果文件不存在,
	则会新建文件。

2 编辑文件
	如果通过vi打开一个已经存在的文件,首先进入命令模式,此时输入的任何字符都被
视为命令,不能输入内容。
	在命令模式输入i

3.保存文件
	一定要先退出插入模式(按Esc进入命令模式),然后(小写状态下),shift + zz
 (按住 “shift” + 按两下“z”键),或者(大写状态下:ZZ) 即可保存退出当
 前文件。
	第一步:进入命令模式(ESC)		
	第二步:shifit + z z

4. 命令模式下的操作
	1)切换到编辑模式
	按键			功能
	i		光标位置当前处插入文字
	I		光标所在行首插入文字
	o(字母)	光标下一行插入文字(新行)
	O(字母)	光标上一行插入文字(新行)
	a		光标位置右边插入文字
	A		光标所在行尾插入文字
	s		删除光标后边的字符,从光标当前位置插入
	S		删除光标所在当前行,从行首插入
	 
	
	2) 光标移动		
	按键				功能
	Ctrl + f	向前滚动一个屏幕
	Ctrl + b	向后滚动一个屏幕
	gg			到文件第一行行首
	G(大写)		到文件最后一行行首,G必须为大写
	mG或mgg		到指定行,m为目标行数
	0(数字)		光标移到到行首(第一个字符位置)
	$			光标移到到行尾
	l(小写L)		向右移动光标
	h			向左移动光标
	k			向上移动光标
	j			向下移动光标
	^			光标移到到行首(第一个有效字符位置)	 
	
	3)复制粘贴		
	按键			功能
	[n]yy	复制从当前行开始的 n 行
	p		把粘贴板上的内容插入到当前行
	 
	
	4)删除		
	按键				功能
	[n]x		删除光标后 n 个字符
	[n]X		删除光标前 n 个字符
	D			删除光标所在开始到此行尾的字符
	[n]dd		删除从当前行开始的 n 行(准确来讲,是剪切,剪切不粘贴即为删除)
	dG			删除光标所在开始到文件尾的所有字符
	dw			删除光标开始位置的字,包含光标所在字符
	d0(0为数字)	删除光标前本行所有内容,不包含光标所在字符
	dgg			删除光标所在开始到文件首行第一个字符开始的所有字符
	 
	
	5)撤销恢复	
	按键				功能
	.(点)		执行上一次操作
	u			撤销前一个命令
	ctrl+r		反撤销
	100 + .		执行上一次操作100次
	 
	
	6)保存退出
	按键				功能
	ZZ(shift+z+z)	保存退出
	 
	
	7)查找		
	按键			功能
	/字符串	从当前光标位置向下查找(n,N查找内容切换)
	?字符串	从当前光标位置向上查找(n,N查找内容切换)
	 
	
	8)替换		
	按键			功能
	r		替换当前字符
	R		替换当前行光标后的字符(ESC退出替换模式)
	 
	
	9)可视模式	
	按键					功能
	v			按字符移动,选中文本,可配合h、j、k、l选择内容,使用d删除,使用y复制
	Shift + v	行选(以行为单位)选中文本,可配合h、j、k、l选择内容,使用d删除,使用y复制
	Ctrl + v	列选 选中文本,可配合h、j、k、l选择内容,使用d删除,使用y复制

5. 末行模式下的操作
	all :表示所有
	1)保存退出
	按键			 功能
	:wq			保存退出
	:x(小写)		保存退出
	:w filename	保存到指定文件
	:q			退出,如果文件修改但没有保存,会提示无法退出
	:q!			退出,不保存	 	 

	
	2)替换		
	按键						功能
	:s/abc/123/			光标所在行的第一个abc替换为123
	:s/abc/123/g		光标所在行的所有abc替换为123
	:1,10s/abc/123/g	将第一行至第10行之间的abc全部替换成123
	:%s/abc/123/g		当前文件的所有abc替换为123
	:%s/abc/123/gc		同上,但是每次替换需要用户确认
	:1,$s/abc/123/g		当前文件的所有abc替换为123
	 		
	3)分屏		
	按键						功能
	:sp					当前文件水平分屏
	:vsp				当前文件垂直分屏
	: sp 文件名			当前文件和另一个文件水平分屏
	: vsp 文件名			当前文件和另一个文件垂直分屏
	ctrl-w-w			在多个窗口切换光标
	:wall/:wqall/:qall	保存/保存退出/退出所有分屏窗口
	vim -O a.c b.c		垂直分屏
	vim -o a.c b.c		水平分屏
	 
	
	4) 其它用法(扩展)
	按键									功能
	:!man 3 printf					在vim中执行命令 (q退出)
	:r !ls -l						将ls -l执行的结果写入当前文件中
	:r /etc/passwd					将/etc/passwd文件中的内容写入到当前文件中
	:w /tmp/txt						将当前文件内容写入到/tmp/txt文件中
	:w! /tmp/txt					强制将当前文件内容写入到/tmp/txt文件中
	:1,10s/^/\/\//g					将第1行到10行行首添加// (^表示行首) /\/\转移字符
	:1,10s#^#//#g					将第1行到10行行首添加// (#可以临时代替/ 分隔)
	:%s/;/\r{\r\treturn0;\r}\r/g	将;替换成{ return 0; }
	:1,10s#//##g					将第1行到10行行首去掉// (#可以临时代替/ 分隔)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值