Linux命令大全(超详细版)

发布时间:2024年01月24日

一、Linux基本介绍

1、基本简介

Linux 是一个基于Linux 内核的开源类Unix 操作系统,Linus Torvalds于 1991 年 9 月 17 日首次发布的操作系统内核。Linux 通常打包为Linux 发行版。

Linux 最初是为基于Intel x86架构的个人计算机开发的,但此后被移植到的平台比任何其他操作系统都多。由于基于 Linux 的Android在智能手机上的主导地位,截至 2022 年 5 月,Linux(包括 Android)在所有通用操作系统中拥有最大的安装基础。

Linux 也可以在嵌入式系统上运行,即操作系统通常内置在固件中并针对系统高度定制的设备。这包括路由器、自动化控制、智能家居设备、视频游戏机、电视(三星和 LG智能电视分别使用Tizen和WebOS)

Linux 是免费和开源软件协作最突出的例子之一。任何人都可以根据其各自的许可条款,例如GNU 通用公共许可证(GPL) ,以商业或非商业方式使用、修改和分发源代码。例如,Linux 内核在 GPLv2 下获得许可,但系统调用有一个特殊例外,因为没有系统调用例外,任何调用内核的程序都将被视为衍生程序,因此 GPL 必须适用于该程序。

2、Linux文件系统

2.1 核心

1.Linux一切皆文件
2.只有一个顶级目录,不像windows分C盘、D盘、E盘

2.2 目录结构

在这里插入图片描述

2.3 文件含义

Linux含义windows
/bin所有用户可用的基本命令存放的位置windows没有固定的命令存放目录
/sbin需要管理员权限才能使用的命令
/bootlinux系统启动的时候需要加载和使用的文件
/dev外设连接linux后,对应的文件存放的位置类似Windows中的U盘,光盘的符号文件。
/etc存放系统或者安装的程序的配置文件,注册服务等类似windows中的注册表,
/home家目录,linux中每新建一个用户,会自动在home中为该用户分配一个文件夹类似windows中的"我的文档",每个用户有自己的目录。
/rootroot账户的家目录,仅供root账户使用类似windows中的Administrator账户的"我的文档"
/liblinux的命令和系统启动,需要使用一些公共的依赖,放在lib中,类似我们开发的代码执行需要引入的jdk的jar
/usr很多系统软件的默认安装路径类似windows中的C盘下的Program Files目录。
/var系统和程序运行产生的日志文件和缓存文件放在这里

二、Linux常用命令

1. 文件管理命令

注意事项:命令区分大小写

1.1 命令格式

命令格式 :命令 [-选项] [参数]
	例 : ls -la /etc
	

说明:

  • 1、个别命令使用不遵循此格式
  • 2、当有多个选项时,可以写在一起
  • 3、简化选项与完整选项-a 等于 --all

1.2 列出目录的内容:ls 命令

# 2. 查看文件列表
	ls [-参数1参数2] [目标文件夹]
		命令所在路径:/bin/ls 
		执行权限:所有用户
		功能描述:显示目录文件
		语法:ls  选项[-ald]  [文件或目录] 
		-a    显示所有文件,包括隐藏文件
		-l     详细信息显示
		-d    查看目录属性
	
	# 查看当前目录下的文件列表
		ls
	# 查看指定目录下的文件
		ls /
	# 查看详细信息,元数据信息(用户、组、大小、创建时间、权限信息、文件类型)
		ls -l
	# 查看隐藏文件
		ls -a 
	# 参数并用
		ls -la

# 当使用ls -l会显示文件的详细信息,包含权限信息:
	-rw-r--r-- 
	- 文件类型(- 文件 d 目录 l 软链接文件)
	rw- r-- r-- 
	u g o 
	u:所有者 g:所属组 o:其他人
	r:读 w:写 x:执行

1.3 切换工作目录:cd 命令

# 5. 切换目录
	cd 目标文件夹
		命令所在路径:shell内置
		命令执行权限:所有用户
		语法:cd [目录] 
		功能描述:切换目录
		范例: $ cd  /tmp/zhang/test1     切换到指定目录
		 	  $ cd  ..        回到上一级目录

	# 绝对路径切换
		cd 绝对路径
	# 相对路径切换
		cd 相对路径
	# 例子:切换到/etc/sysconfig/networks-scripts 目录下
	

1.4 显示当前路径:pwd 命令

# 4. 查看当前命令所在的目录
	命令所在路径:/bin/pwd 
	执行权限:所有用户
	语法:pwd 
	功能描述:显示当前目录
	范例 :
		[root@rhwbilla network-scripts]# pwd
		/etc/sysconfig/network-scripts
	
	# 特殊目录符号
		~ 当前用户的home目录
		. 当前目录
		.. 上一级目录

1.5 创建目录:mkdir 命令

# 5. 新建文件夹及文件
	命令所在路径:/bin/mkdir 
	执行权限:所有用户
	语法:mkdir -p  [目录名] 
	功能描述:创建新目录-p  递归创建
	范例: $ mkdir -p /tmp/zhang/test
	      $ mkdir /tmp/zhang/test1 /tmp/zhang/test2


	# 在当前位置新建文件夹
		mkdir 文件夹名
	# 在指定目录位置,创建文件夹,并创建父文件夹
		mkdir -p /a/b/文件夹名
	# 在当前目录下新建文件
		touch 文件名

1.6 删除空目录:rmdir 命令

# 6. 删除文件夹
	命令名称:rmdir 
	命令所在路径:/bin/rmdir 
	执行权限:所有用户
	语法:rmdir [目录名] 
	功能描述: 删除空目录
	范例: $ rmdir /tmp/zhang/test
	

1.7 删除文件:rm 命令

# 7. 删除文件
	命令所在路径:/bin/rm 
	执行权限:所有用户
	语法:rm  -rf   [文件或目录] 
	-r  删除目录
	-f  强制执行
	功能描述:删除文件
	范例:$ rm  /tmp/yum.log 
	     删除文件/tmp/yum.log 
	     
	     $ rm -rf  /tmp/zhang/test2
	     删除目录/tmp/zhang/test2


	# 删除文件
		rm 文件
	# 删除文件夹
		rm -r 文件夹
	# 强制删除不询问
		rm -rf 文件

1.8 拷贝文件:cp 命令

# 8. 拷贝文件
	命令所在路径:/bin/cp 
	执行权限:所有用户
	语法:cp  -rp  [原文件或目录] [目标目录] 
	-r  复制目录
	-p  保留文件属性
	功能描述:复制文件或目录
	范例:$ cp  -r /tmp/zhang/test1  /root   
	     将目录/tmp/zhang/test1复制到目录/root下
	 
	     $ cp  -rp /tmp/zhang/test2 /tmp/zhang/test2 /root
	     将/tmp/zhang目录下的test1和test2目录复制到/root下,保持目录属性


	# 拷贝文件
		cp 原文件  新文件
	# 拷贝文件夹
		cp -r 源文件夹 新文件夹

1.9 移动文件:mv 命令

# 9. 移动文件或修改文件名

	# 移动源文件到目标文件夹中
		mv 文件  文件夹
	# 修改文件A的名字为文件B
		mv 文件A 文件B

1.10 获取文件的md5指纹:md5sum 命令

# 8. 获取文件的md5指纹(数字签名)
	md5sum 文件名

	# 简介
	1. 数字签名,又称数字指纹
	2. 可以验证文件是否被修改
	3. 一个文件通过计算得到的一串字符串,文件内容的唯一标记(文件内容不变,指纹不会变)
		

2.文本内容(查看|处理)命令

2.1 创建文件:touch 命令

#1 创建文件命令名称:touch 
 
	命令所在路径:/bin/touch 
	执行权限:所有用户 
	语法:touch  [文件名]                 
	功能描述:创建空文件 
	范例: 
		$ touch test

2.2 显示文件内容:cat 命令


# 查看文件中的全部信息(适合查看小文档)
	cat 文件名

	命令所在路径:/bin/cat 
	 
	执行权限:所有用户 
	语法:cat [文件名] 
	功能描述:显示文件内容            
	   -n  显示行号 
	范例: 
		$ cat  /etc/issue              
		$ cat  -n /etc/services
	

2.3 分屏显示:more 命令

# 分屏显示命令名称:more 
 
	命令所在路径:/bin/more 
	执行权限:所有用户 
	语法:more  [文件名]                  
	   (空格) 或f           翻页               
	   (Enter)             换行                 
	   q或Q                退出 
	功能描述:分页显示文件内容 
	 
	范例:   
		$ more  /etc/services
		

2.4 分屏显示:less 命令


# 以分页的方式浏览文件信息(适合查看大文档),进入浏览模式
	less 文件名
# 浏览模式快捷键#上一行#下一行
    G #最后一页
    g #第一页
    空格 #下一页
    /关键词 #搜索关键词
# 退出浏览模式,回到Linux命令行模式
    q #退出

	命令所在路径:/usr/bin/less 
	执行权限:所有用户 
	语法:less  [文件名] 
	功能描述:分页显示文件内容(可向上翻页) 
	 
	范例:  
		$  less  /etc/services
	tips: 按下 / 后可以搜索 会反显高亮  按q退出(more也可以)
	
    

2.5 取首n行:head 命令

# 取首n行命令名称:head
 
	命令所在路径:/usr/bin/head 
	执行权限:所有用户 
	语法:head  [文件名] 
	功能描述:显示文件前面几行    
	    -n 指定行数 
	 
	范例:  
		$ head -n 20 /etc/services
		

2.6 取尾n行:tail 命令


# 取尾n行 命令名称:tail

	命令所在路径:/usr/bin/tail 
	执行权限:所有用户 
	语法:tail  [文件名] 
	功能描述:显示文件后面几行    
	    -n 指定行数    
	    -f  动态显示文件末尾内容 
	 
	范例:   
		$ tail -n 18 /etc/services


	# 实时滚动显示文件的最后10行信息(默认10行)
		tail -f 文件名
	# 显示文件的最后20行信息
		tail -n 20 文件名
		tail -n -20 文件名
	# 显示文件信息从第20行至文件末尾
		tail -n +20 文件名

3、文件搜索命令

3.1 查找文件:find 命令

# 查找文件 命令名称:find 
 
	命令所在路径:/bin/find 
	执行权限:所有用户 
	语法:find  [搜索范围]  [匹配条件] 
	功能描述:文件搜索

	# 语法
		find 搜索路径 -name "文件名关键词"
	# 例子
		find / -name "passwd"
		find / -name "ifcfg-*"
 
	范例:
		$ find  /etc  -name  init           
		在目录/etc中查找文件init       
		-iname 不区分大小写        
		$ find /etc -name *init*
		在目录/etc中查找文件名包含init     
		$ find /etc -name init???
		在目录/etc中查找文件名init开头并有3个字符的   
		$ find /etc -name init*
		在目录/etc中查找文件名init开头的   
		tips:* 匹配任意字符,?匹配单个字符
		$ find  /  -size  +204800           
		在根目录下查找大于100MB的文件        
		  +n  大于   -n 小于   n 等于        
		$ find  /home  -user  shenchao         
		在根目录下查找所有者为shenchao的文件       
		 -group  根据所属组查找
		$ find  /etc  -cmin  -5         
		在/etc下查找5分钟内被修改过属性的文件和目录
		       -amin  访问时间 access   
		       -cmin  文件属性 change     
			   -mmin 文件内容 modify
 
		$ find  /etc -size  +163840 -a -size  -204800          
		在/etc下查找大于80MB小于100MB的文件          
			-a 两个条件同时满足         
		 	-o 两个条件满足任意一个即可        
		$ find /etc -name inittab -exec ls -l {} \;         
		在/etc下查找inittab文件并显示其详细信息          
			-exec/-ok 命令 {} \;  对搜索结果执行操作
		tips:-exec直接执行,ok会询问操作
			-type 根据文件类型查找                  
				f 文件    d 目录    l 软链
			-inum  根据i节点查找

3.2 文件资料库查找:locate 命令

# 文件资料库查找命令名称:locate 
 
	命令所在路径:/usr/bin/locate 
	执行权限:所有用户 
	语法:locate  文件名 
	功能描述:在文件资料库中查找文件 
	 
	范例:
		$ locate inittab
		tips:新建文件locate不到,可以updatedb,更新文件资料库后查找[tmp不在文件资料库内]
		$  locate -i text01 // -i 作用你不区分大小写类似 -iname
		

3.3 查看命令位置:which 命令

#查看命令位置命令名称:which 
 
	命令所在路径:/usr/bin/which
	执行权限:所有用户 
	语法:which  命令 
	功能描述:搜索命令所在目录及别名信息 
	 
	范例:
		$ which ls
		

3.4 查看命令位置:whereis 命令

#查看命令位置命令名称:whereis
 
	命令所在路径:/usr/bin/whereis 
	执行权限:所有用户 
	语法:whereis  [命令名称]  
	功能描述:搜索命令所在目录及帮助文档路径 
	 
	范例:
		$ whereis ls
		

3.5 文本搜索:grep 命令

# 文本搜索命令名称:grep 
	 
	命令所在路径:/bin/grep 
	执行权限:所有用户 
	语法:grep  -iv [指定字串] [文件] 
	功能描述:在文件中搜寻字串匹配的行并输出             
		-i  不区分大小写             
	 	-v 排除指定字串

	# 语法
		grep -参数 要查找的目录范围
		# 参数
			-n 显示查找结果所在行号
			-R 递归查找目录下的所有文件
	# 例子
		grep aries /etc
		grep aries /etc/passwd

	 
	范例:
		# grep  mysql  /root/install.log
		# grep -v ^# /etc/inittab 去除以#开头的所有行信息,^表示以XXX开头
	

4. 文件链接

4.1、Linux文件管理

# 文件链接 命令名称:ln 
 
	命令所在路径:/bin/ln 
	执行权限:所有用户 
	语法:ln  -s  [原文件]  [目标文件]                 
	 	-s  创建软链接 
	功能描述:生成链接文件
	 
	范例:
		#创建文件/etc/issue的软链接/tmp/issue.soft         
			$ ln -s  /etc/issue  /tmp/issue.soft        
		#创建文件/etc/issue的硬链接/tmp/issue.hard        
			$ ln  /etc/issue  /tmp/issue.hard        
	 
	 
  • 模型图

在这里插入图片描述

  • 说明
# 文件名
	该文件的名字
# inode
	该文件的元数据
# datablock
	该文件真正保存的数据
  • 注意:

1、inode中保存的是文件的元数据
2、ls命令查看的都是linux的元数据信息
3、数据块中才是文件的真正数据

4.1.1、硬链接

硬链接特征:
1、拷贝cp -p + 同步更新
2、可通过i节点识别
3、不能跨分区
4、不能针对目录使用

在这里插入图片描述

  • 命令
 ln 源文件 硬链接文件

4.1.2、软连接

软链接特征:类似Windows快捷方式

  • 1、lrwxrwxrwx l 软链接
    软链接文件权限都为:rwxrwxrwx
  • 2、文件大小-只是符号链接
  • 3、/tmp/issue.soft -> /etc/issue 箭头指向原文件

在这里插入图片描述

  • 命令
 ln -s 目标文件或文件夹 软连接名字

5、 权限管理命令

5.1、用户组

在这里插入图片描述

  • 相关命令
1. 创建组
  `groupadd 组名`
2. 删除组
  `groupdel 组名`
3. 查找系统中的组
  `cat /etc/group | grep -n “组名”`
  说明:系统每个组信息都会被存放在/etc/group的文件中

5.2、用户

1. 创建用户
  `useradd -g 组名 用户名`
2. 设置密码
  `passwd 用户名`
3. 查找系统账户
  说明:系统每个用户信息保存在`/etc/passwd`文件中
4. 切换用户
  `su 用户名`
5. 删除用户
  `userdel -r 用户名`

5.3、权限管理命令

  • 问题

linux系统未来可能有程序员、用户、数据库管理员、项目经理等各种角色各种级别人使用,甚至还有身份不明的人链接到linux,控制不好权限容易导致系统崩溃、数据丢失等问题。

  • 权限含义
权限字母含义对文件代表命令对文件夹代表命令
R?查看文件内容和复制文件more cat less cp head tail查看文件夹下的文件ls
W(w)编辑文件vi在文件夹内创建和删除文件rm touch
X(x)执行执行该文件(执行必须具备r权限)-切换到文件夹cd
  • 权限访问控制列表(ACL access controll list)

在这里插入图片描述

5.3.1 修改文件权限:chmod 命令

# 修改文件权限 命令名称:chmod 
 
	命令所在路径:/bin/chmod 
	执行权限:所有用户 
	语法:chmod  [{ugoa}{+-=}{rwx}] [文件或目录]                         
	     [mode=421 ]  [文件或目录]                          
	     -R  递归修改 
	功能描述:改变文件或目录权限
	 
	权限的数字表示      
	r  ---- 4      w ---- 2      x  ---- 1
	rwxrw-r--    7   6    4
	 
	范例:      
		赋予文件testfile所属组写权限  
			$ chmod  g+w  testfile         
		修改目录testfile及其目录下文件为所有用户具有全部权限     
			$ chmod  -R 777  testdir         
	

# 权限设置1
	语法:chmod u±rwx,g±rwx,o±rwx 文件名
	运算符:
		- 删除权限
		+ 添加权限
		= 赋值权限
		
	## 给文件的所有者添加执行权限
		chmod u+x 文件名
	## 给文件的其他人删除所有权限
		chmod o-rwx 文件名
	## 给文件的所属组设置读写权限
		chmod g=wx 文件名

# 权限设置2

在这里插入图片描述

# 文件的每个归属方的权限的值使用rwx之和计算出来的。
	# 语法
		`chmod [-R] nnn 文件` 
		-R 递归设置文件夹内所有文件
	# 设置文件的权限为(所有者可读可写可执行,所属组可读可写,其他人可读)
		chmod 764 文件名
		
5.3.2 修改文件所有者:chown 命令
# 设置文件所有者
	语法:chown [-R] user名:group名 文件名
	参数:-R 如果是文件夹,需要使用这个参数,可以将文件夹及其内部所有文件的所有者和组全部修改
	注意:命令权限需要root
	
	命令所在路径:/bin/chown 
	执行权限:所有用户 
	语法:chown  [用户] [文件或目录]  
	功能描述:改变文件或目录的所有者 

 
	范例:
		改变文件test的所有者为zhang
			$ chown  zhang test  

		## 修改文件所有者
			chown 用户名 文件名
		## 修改文件所属组
			chown :组名 文件名
		## 修改文件所有者和所属组
			chown 用户名:组名 文件名
		## 修改文件夹的所有者和所属组
			chown [-R] 用户名:组名 文件夹
 
             
	 
5.3.3 修改文件所属组:chgrp 命令
命令名称:chgrp
 
	命令所在路径:/bin/chgrp
	执行权限:所有用户
	语法:chgrp [用户组] [文件或目录]
	功能描述:改变文件或目录的所属组
	 
	范例:
		改变文件text01的所属组为group01
			$ chgrp group01 text01
	
5.3.4 默认权限:umask 命令
命令名称:umask 
 
	命令所在路径:Shell内置命令 
	执行权限:所有用户 
	语法:umask [-S]             
		-S   以rwx形式显示新建文件缺省权限 
	功能描述:显示、设置文件的缺省权限 
	 
	范例:
		tips: 新建文件是默认没有x权限(比如:防止木马病毒攻击) 
			$ umask -S
		
5.3.5 查看权限:ll 命令
# 查看权限
	ls -la 文件
	ll 文件

6、帮助命令

6.1 帮助:man 命令

命令名称:man
 
	命令所在路径:/usr/bin/man 
	执行权限:所有用户 
	语法:man  [命令或配置文件] 
	   (空格) 或f           翻页               
	   (Enter)             换行                 
	   q或Q                退出 
	功能描述:获得帮助信息
	 
	范例: 
		$ man ls                
		查看ls命令的帮助信息             
		$ man services                
		查看配置文件services的帮助信息

6.2 获取简介:whatis 命令

命令:whatis
	语法:whatis 命令
	功能描述:获得命令的简单介绍信息
	 
	范例:whatis ls

6.3 获取帮助:help 命令

命令名称:help
 
	命令所在路径:Shell内置命令 
	执行权限:所有用户 
	语法:help 命令 
	功能描述:获得Shell内置命令的帮助信息 
	 
	范例: 
		$ help umask                
		查看umask命令的帮助信息

7、用户管理命令

7.1 添加用户:useradd 命令

命令名称:useradd 
 
	命令所在路径:/usr/sbin/useradd 
	执行权限:root 
	语法:useradd 用户名 
	功能描述:添加新用户 
	
	范例:
		$ useradd zhangdapao
		

7.2 修改密码:passwd 命令

命令名称:passwd 
 
	命令所在路径:/usr/bin/passwd 
	执行权限:所有用户 
	语法:passwd 用户名 
	功能描述:设置用户
	 
	范例:
		$ passwd zhangdapao
		

7.3 查看登录用户:who 命令

命令名称:who 
 
	命令所在路径:/usr/bin/who 
	执行权限:所有用户 
	语法:who 
	功能描述:查看登录用户信息 
	 
	范例: 
		$ who
		显示所有登录用户信息

7.4 w 命令

命令名称:w 
 
	命令所在路径:/usr/bin/w 
	执行权限:所有用户 
	语法:w 
	功能描述:查看登录用户详细信息 
	 
	范例: 
		$ w

7.5 切换用户:su 命令

命令含义
su切换到root用户
su root切换到root用户
su -切换到root用户,同时切换目录到/root
su - root切换到root用户,同时切换目录到/root
su 普通用户切换到普通用户
su - 普通用户切换到普通用户,同时切换普通用户所在的目录

8、压缩解压缩命令

8.1 压缩:gzip 命令

命令名称:gzip 
 
	命令所在路径:/bin/gzip 
	执行权限:所有用户 
	语法:gzip [文件]  
	功能描述:压缩文件 
	压缩后文件格式:.gz
	 
	范例:
		gzip text01
		

8.2 解压缩:gunzip 命令

命令名称:gunzip  [= gzip -d]
 
	命令所在路径:/bin/gunzip 
	执行权限:所有用户 
	语法:gunzip [压缩文件] 
	功能描述:解压缩.gz的压缩文件 
	 
	范例: 
		$ gunzip text01.gz
		tips:只能压缩文件不能压缩目录

8.3 归档管理:tar 命令

压缩语法:tar -zcvf 压缩后文件名 被压缩文件
解压缩语法 tar -zxvf 压缩文件名 -C 解压后文件所在目录

  • 参数1
参数描述
-z操作tar.gz文件需要使用
-x解压缩
-c压缩
-v显示压缩或者解压缩的执行过程信息
-f要处理的文件file,必须放在最后

参数2:-C 指定解压后的文件存放的位置

tar与gzip命令结合使用实现文件打包、压缩。 tar只负责打包文件,但不压缩,用gzip压缩tar打包后的文件,其扩展名一般用xxxx.tar.gz。

命令名称:tar 
 
	命令所在路径:/bin/tar 
	执行权限:所有用户 
	语法:tar  选项[-zcf] [压缩后文件名] [目录]                                   
		-c    打包                 
		-v    显示详细信息                 
		-f     指定文件名            
		-z     打包同时压缩 
	功能描述:打包目录 压缩后文件格式:.tar.gz
	 
	范例:        
		$ tar  -zcf   Japan.tar.gz  Japan        
		将目录Japan打包并压缩为.tar.gz文件
	 
	tar命令解压缩语法:           
		-x     解包           
		-v    显示详细信息           
		-f     指定解压文件           
		-z     解压缩 
	范例:
		$ tar  -zxvf  Japan.tar.gz

8.4 zip 命令

命令名称:zip 
 
	命令所在路径:/usr/bin/zip 
	执行权限:所有用户 
	语法:     
		zip  选项[-r]  [压缩后文件名]  [文件或目录]            
		-r    压缩目录 
	功能描述:压缩文件或目录 
	压缩后文件格式:.zip
	 
	范例:          
		$ zip  text01.zip  text01             
	压缩文件          
		$ zip  -r  zhang.zip  zhang             
	压缩目录
		tips:会保留原文件

8.5 unzip 命令

命令名称:unzip 
 
	命令所在路径:/usr/bin/unzip 
	执行权限:所有用户 
	语法:unzip  [压缩文件] 
	功能描述:解压.zip的压缩文件 
	范例:$ unzip text01.zip
	

9、 网络命令

9.1 write 命令

指令名称:write 
 
	指令所在路径:/usr/bin/write 
	执行权限:所有用户 
	语法:write  <用户名>    
	功能描述:给用户发信息,以Ctrl+D保存结束 
	 
	范例:   
		write zhang

9.2 wall 命令

指令名称:wall 
 
	命令英文原意:write all 
	指令所在路径:/usr/bin/wall 
	执行权限:所有用户 
	语法:wall  [message]   
	功能描述:发广播信息 
	 
	范例:   
		wall  HelloWord

9.3 测试网络连通性:ping 命令

命令名称:ping 
 
	命令所在路径:/bin/ping 
	执行权限:所有用户 
	语法:ping  选项  IP地址                      
	 -c  指定发送次数 
	功能描述:测试网络连通性 
	 
	范例:  
	ping 192.168.1.156

9.4 查看和设置网卡信息:ifconfig

命令名称:ifconfig 
 
	命令所在路径:/sbin/ifconfig 
	执行权限:root 
	语法:ifconfig  网卡名称  IP地址 
	功能描述:查看和设置网卡信息 
	 
	范例:
		ifconfig

9.5 查看发送电子邮件:mail 命令

命令名称:mail 
 
	命令所在路径:/bin/mail 
	执行权限:所有用户 
	语法:mail [用户名] 
	功能描述:查看发送电子邮件 
	 
	范例:
		mail root

9.6 查看登录用户历史信息:last 命令

命令名称:last 
 
	命令所在路径:/usr/bin/last 
	执行权限:所有用户 
	语法:last 
	功能描述:列出目前与过去登入系统的用户信息 
	 
	范例:
		last

9.7 显示网络相关信息:netstat 命令

命令名称:netstat 
 
	命令所在路径:/bin/netstat 
	执行权限:所有用户 
	语法:netstat  [选项] 
	功能描述:显示网络相关信息
	选项: 
	  	-t : TCP协议  
	  	-u : UDP协议  
	  	      -l : 监听  
	  	-r : 路由  
	  	-n : 显示IP地址和端口号 
	 
	范例:  
		netstat -tlun  查看本机监听的端口 
		netstat -an  查看本机所有的网络连接  
		netstat -rn  查看本机路由表
	 
	查看某一端口是否被占用:netstat -tunlp |grep 2181

	

9.8 配置网络:setup 命令

命令名称:setup 
 
	命令所在路径:/usr/bin/setup 
	执行权限:root 
	语法:setup 
	功能描述:配置网络 
	范例:
		setup
		

9.9 挂载:mount 命令

命令名称:mount
 
	命令位置:/bin/mount
	执行权限:所有用户
	命令语法:mount [-t 文件系统] 设备文件名 挂载点
	 
	范例:
		mount -t iso9660 /dev/sr0 /mnt/cdrom
		

10、系统命令(关机重启命令…)

1. 命令名称:shutdown
 
	shutdown [选项] 时间 
		shutdown now 
	选项:  
		-c: 取消前一个关机命令  
		-h: 关机  
		-r: 重启
	
	
2.查看ip地址
		ip a
		ip addr
		
3.ping网络(测试网络连通)
		ip 目标机器的ip
		
4.查看系统时间
		date
		
5.注销
		logout
				
6.重启
		reboot
		
7.清屏
		clear

8.静态查看系统进程
	ps -aux

9.实时查看系统进程
	top
	# 快捷键
		↑ 下翻
		↓ 上翻
		q 退出

10.关闭进程
	kill 进程id 
	
11.强制关闭进程(谨慎使用)
	kill -9 进程id
		

12.覆盖输出

	# 将命令1的执行结果,输出到后面的文件中。
	`覆盖写入`
		命令1 > 文件
	# 例子
		date > date.log
		
13. 追加输出

	# 将命令1的执行结果,输出到后面的文件中。
	`追加写入`
		命令1 >> 文件
	# 例子
		date >> date.log
	

11、Linux服务

例如:sshd network firewalld 等

# 服务器管理命令
	systemctl status 服务名
# 启动服务
	systemctl start 服务名
# 重启服务
	systemctl restart 服务名
# 停止服务
	systemctl stop 服务名
# 禁止服务随linux启动。
	systemctl disable 服务名
# 设置服务随linux启动。
	systemctl enable 服务名

12、ip设置

服务名:network

[root@centos7 dirnew]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
----------------网卡对应的文件内容---------------------
    TYPE="Ethernet"
    PROXY_METHOD="none"
    BROWSER_ONLY="no"
    BOOTPROTO="none"
    DEFROUTE="yes"
    IPV4_FAILURE_FATAL="no"
    IPV6INIT="yes"
    IPV6_AUTOCONF="yes"
    IPV6_DEFROUTE="yes"
    IPV6_FAILURE_FATAL="no"
    IPV6_ADDR_GEN_MODE="stable-privacy"
    NAME="ens33"
    UUID="0bd5d8a5-fe1b-42de-82bd-bfa7d2984b95"
    DEVICE="ens33"
    ONBOOT="yes"
    IPADDR="192.168.199.8" # 修改这里的ip地址即可
    PREFIX="24"
    GATEWAY="192.168.199.2"
    DNS1="192.168.199.2"
    DNS2="8.8.8.8"
    IPV6_PRIVACY="no"
[root@centos7 dirnew]# systemctl restart network #重启网卡服务

13、防火墙

服务名:firewalld

# 开启防火墙
systemctl start 服务名
# 关闭防火墙(服务器重启后还会自动开启防火墙)
systemctl stop firewalld
# 禁止防火墙开机启动
systemctl disable firewalld

14、主机名

# 查看主机名
hostname
# 设置主机名
hostnamectl set-hostname 主机名

15、ip映射

  • 域名解析

  • 本地hosts编辑

[root@centos7 ~]# vim /etc/hosts
--------------下面是文件------------------
	192.168.199.8 centos7

16、SSH

# 远程登录linux
ssh 远程linux的ip或者映射域名

17、免密登录

简介
ssh登录远程linux,免去输入密码的麻烦

# 生成公钥和私钥
[root@centos7 ~]# ssh-keygen
------------执行结果-----------
    [root@centos7 ~]# tree .ssh
    .ssh
    ├── id_rsa # 私钥
    ├── id_rsa.pub # 公钥
    └── known_hosts
# 发送公钥
	`保存公钥的文件为/root/.ssh/authorized_keys`
[root@centos7 .ssh]# cat id_rsa.pub > authorized_keys
# 发送公钥
[root@centos7 .ssh]# ssh-copy-id 目标主机的ip

18、远程拷贝

scp 本地的文件 root@远程linuxip:/远程linux的文件路径
scp -r 本地的目录 root@远程linuxip:/远程linux的文件路径

三、文本编辑器vim

1、Vim常用操作

Vim 简介:

Vim是一个功能强大的全屏幕文本编辑器, 是Linux/UNIX上最常用的文本编辑器, 它的作用是建立、编辑、显示文本文件。
Vim 没有菜单,只有命令。

1.1 插入命令

命令作用
a在光标所在字符后插入
A在光标所在行尾插入
i在光标所在字符前插入
I在光标所在行行首插入
o在光标下插入新行
O在光标上插入新行

1.2 定位命令

命令作用
:set nu设置行号
:set nonu取消行号
gg到第一行
GG到最后一行
nG到第n行
:n到第n行
$移至行尾
0移至行首

1.3 删除命令

命令作用
x删除光标所在处字符
nx删除光标所在处后n个字符
dd删除光标所在行,ndd删除n行
dG删除光标所在行到文件末尾内容
D删除光标所在处到行尾内容
:n1,n2d删除指定范围的行

1.4 复制和剪切命令

命令作用
yy复制当前行
nyy复制当前行以下n行
dd剪切当前行
ndd剪切当前行以下n行
p、P粘贴在当前光标所在行下或者行上

1.5 保存和退出命令

命令作用
:w保存修改
:w 文件名另存为指定文件
:wq保存修改并退出
ZZ快捷键,保存修改并退出
:q!不保存修改退出
:wq!保存修改退出(文件所有者和root均可忽略只读权限强制写入)

配置MobaXterm的默认文本编辑器
免去vim命令的麻烦

四、软件安装

1、软件包管理简介

1.1、软件分类

源码包:脚本安装

二进制包:RPM包

1.1.1、源码包

源码包的优点是:

  • 开源,如果有足够的能力,可以修改源代码

  • 可以自由选择所需的功能

  • 软件是编译安装,所以更加适合自己的系统,更加稳定也效率更高

  • 卸载方便

源码包的缺点

  • 安装过程步骤较多,尤其安装较大的软件集合时(如LAMP环境搭建),容易出现拼写错误

  • 编译过程时间较长,安装比二进制安装时间长

  • 因为是编译安装,安装过程中一旦报错新手很难解决

1.1.2、RPM包

二进制包的优点

  • 包管理系统简单,只通过几个命令就可以实现包的安装、升级、查询和卸载

  • 安装速度比源码包安装快的多

二进制包缺点:

  • 经过编译,不再可以看到源代码

  • 功能选择不如源码包灵活

  • 依赖性

2、rpm命令管理

2.1 、包命名与依赖性

RPM包依赖性

  • 树形依赖: a→b→c

  • 环形依赖: a→b→c→a

  • 模块依赖: 模块依赖查询网站:www.rpmfind.net

1.2 安装升级与卸载

简介:类似于windows中的.exe程序


1. 安装rpm软件
  语法:`rpm -ivh xxx.rpm`
	选项:
        -i(install) 安装
        -v(verbose) 显示详细信息
        -h(hash) 显示进度
        --nodeps 不检测依赖性
        
2. 查看系统中是否已安装的过该rpm软件
  语法:`rpm -qa 软件名`
  
3. 卸载rpm软件
  语法:`rpm -e 软件名`
	  选项:
	    -e(erase) 卸载
	    --nodeps 不检查依赖性
4. 升级rpm软件
	语法:rpm -Uvh 包全名

		选项:
		    -U(upgrade) 升级
    
5. 例子:安装tree工具
	  作用:查看某个目录下的文件信息
	  # 以树状结构查看2层文件信息
	  	tree -L 2 要查看的路径
  

3、yum在线管理

yum基于rpm实现的,提供了除了rpm的安装软件、卸载软件等功能以外还有,自动查找、下载软件并自动处理软件的彼此之间的依赖关系,下载并安装依赖包。

3.1 yum 命令

1.列出所有可以安装的软件包
	yum list
		查询所有可用软件包列表

2.查找软件包
	yum search all 软件名			
	yum search 关键字
		搜索服务器上所有和关键字相关的包

3.安装软件
	yum –y install 包名
	选项:
         install 安装
         -y 自动回答yes
         


4.升级软件
	yum -y update 包名
	选项:
         update 升级
         -y 自动回答yes
     
5.卸载软件   
	yum -y remove 包名 
	选项:
	   remove 卸载	 
	   -y 自动回答yes

3.2 yum软件组管理命令

	yum grouplist
		列出所有可用的软件组列表  
 
	yum groupinstall  软件组名 
		安装指定软件组,组名可以由grouplist查询出来 
 
	yum groupremove  软件组名 
		卸载指定软件组
		

五、shell 编程

5.1、shell 概述

5.1.1 shell 是什么

  • Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动、挂起、停止甚至是编写一些程序。

  • Shell还是一个功能相当强大的编程语言,易编写,易调试,灵活性较强。Shell是解释执行的脚本语言,在Shell中可以直接调用Linux系统命令。

5.1.2 shell 的分类

  • Bourne Shell:从1979起Unix就开始使用Bourne Shell,Bourne Shell的主文件名为sh。

  • C Shell: C Shell主要在BSD版的Unix系统中使用,其语法和C语言相类似而得名

  • Shell的两种主要语法类型有Bourne和C,这两种语法彼此不兼容。Bourne家族主要包括sh、ksh、Bash、psh、zsh;C家族主要包括:csh、tcsh

  • Bash: Bash与sh兼容,现在使用的Linux 就是使用Bash作为用户的基本Shell。

5.2、shell 脚本的执行方式

5.2.1 echo 输出命令

命令名称:echo
 
	echo [选项] [输出内容] 
		选项:  -e: 支持反斜线控制的字符转换
		
控制字符作用
\输出\
\a输出警告音
\b退格键,向左删除键
\c取消输出行末的换行符,和“-n”选项一致
\eESCAPE键
\f换页符
\n换行符
\r回车键
\t制表符,Tab键
\v直制表符
\0nnn按照八进制ASCII码表输出字符,0为数字零,nnn为三位八进制数
\xhh按照十六进制ASCII码表输出字符,其中hh是两位十六进制数

示例:

[root@zhangRabbitMQ zhang]# echo -e "ab\bc"
ac
 
[root@zhangRabbitMQ zhang]# echo -e "a\tb\tc\nd\te\tf" 
a	b	c
d	e	f

5.2.2 编写脚本


[root@zhangRabbitMQ zhang]# vi /tmp/hello.sh
#!/bin/bash
echo "helloword"

5.2.3 执行脚本


[root@zhangRabbitMQ zhang]# chmod 755 /tmp/hello.sh
[root@zhangRabbitMQ zhang]# /tmp/hello.sh 
helloword

5.3、Bash的基本功能

5.3.1 历史命令与命令补全

历史命令:history

命令名称:history
 
[root@localhost ~]# history [选项] [历史命令保存文件] 

	选项:  
	-c:  清空历史命令  
	-w: 把缓存中的历史命令写入历史命令保存文件    
	~/.bash_history 
  • 历史命令默认会保存1000条,可以在环境变量配置文件/etc/profile中进行修改

历史命令的调用

  • 使用上、下箭头调用以前的历史命令

  • 使用“!n”重复执行第n条历史命令

  • 使用“!!”重复执行上一条命令

  • 使用“!字串”重复执行最后一条以该字串开头的命令

命令与文件补全

  • 在Bash中,命令与文件补全是非常方便与常用的功能,我们只要在输入命令或文件时,按“Tab”键就会自动进行补全

5.3.2 命名别名与常用快捷键

命令别名

[root@localhost ~]# alias 别名='原命令' 
#设定命令别名  
[root@localhost ~]# alias 
#查询命令别名  

命令的执行顺序

    1. 第一顺位执行用绝对路径或相对路径执行的命令。
    1. 第二顺位执行别名。
    1. 第三顺位执行Bash的内部命令。
    1. 第四顺位执行按照$PATH环境变量定义的目录查找顺序找到的第一个命令。

让别名永久生效,需要把配置写入配置文件/root/.bashrc中

Bash 常用快捷键
在这里插入图片描述

5.3.3 输入输出重定向

在这里插入图片描述
同时输出正确和错误
在这里插入图片描述

5.3.4 多命令执行与管道符

多命令顺序执行

在这里插入图片描述
在这里插入图片描述

管道符:|

命令名称:|
 # 语法,将命令1的输出结果,作为命令2的输入: 命令1 | 命令2
 
命令格式:
	[root@localhost ~]# 命令1  |  命令2 
	#命令1的正确输出作为命令2的操作对象 
 
例子: 
	[root@localhost ~]# ll -a /etc/  | more 
	[root@localhost ~]# netstat -an | grep "ESTABLISHED"

	查找aries用户:cat /etc/passwd | grep -n “baizhi”
	查找aries组:cat /etc/group | grep -n “baizhi”
	查找sshd进程:ps -aux | grep sshd
	

5.3.5 通配符与其他特殊符号

通配符

在这里插入图片描述
其他特殊符号

在这里插入图片描述

5.4、Bash 变量

5.4.1 用户自定义变量

什么是变量

  • 变量是计算机内存的单元,其中存放的值可以改变。当Shell脚本需要保存一些信息时,如一个文件名或是一个数字,就把它存放在一个变量中。每个变量有一个名字,所以很容易引用它。使用变量可以保存有用信息,使系统获知用户相关设置,变量也可以用于保存暂时信息。

变量设置规则

  • 变量名称可以由字母、数字和下划线组成,但是不能以数字开头。如果变量名是“2name”则是错误的。

  • 在Bash中,变量的默认类型都是字符串型,如果要进行数值运算,则必修指定变量类型为数值型。

  • 变量用等号连接值,等号左右两侧不能有空格。

  • 变量的值如果有空格,需要使用单引号或双引号包括。

  • 在变量的值中,可以使用“\”转义符。

  • 如果需要增加变量的值,那么可以进行变量值的叠加。不过变量需要用双引号包含“ 变量名”或用 变量名”或用 变量名或用{变量名}包含。

  • 如果是把命令的结果作为变量值赋予变量,则需要使用反引号或$()包含命令。

  • 环境变量名建议大写,便于区分。

变量分类

  • 用户自定义变量 ? 环境变量:这种变量中主要保存的是和系统操作环境相关的数据。

  • 位置参数变量:这种变量主要是用来向脚本当中传递参数或数据的,变量名不能自定义,变量作用是固定的。

  • 预定义变量:是Bash中已经定义好的变量,变量名不能自定义,变量作用也是固定的。

本地变量

  • 变量定义
[root@localhost ~]# name="shen chao"
  • 变量叠加
[root@localhost ~]# aa=123

[root@localhost ~]# aa="$aa"456

[root@localhost ~]# aa=${aa}789
  • 变量调用
[root@localhost ~]# echo $name
  • 变量查看
[root@localhost ~]# set
查看当前系统全部变量
  • 变量删除
[root@localhost ~]# unset name

5.4.2 环境变量

环境变量是什么

  • 用户自定义变量只在当前的Shell中生效,而环境变量会在当前Shell和这个Shell的所有子Shell当中生效。如果把环境变量写入相应的配置文件,那么这个环境变量就会在所有的Shell中生效

设置环境变量

export 变量名=变量值 
申明变量  
 
env 
查询变量  
 
unset 变量名 
删除变量

系统常见环境变量

PATH:系统查找命令的路径 
[root@localhost ~]# echo $PATH /usr/lib/qt-3.3/bin:/usr/local/sbin:/usr/local/bin: /sbin:/bin:/usr/sbin:/usr/bin:/root/bin 
 
PATH="$PATH":/root/sh 
PATH变量叠加
 
PS1:定义系统提示符的变量 
\d:显示日期,格式为“星期 月 日” 
\h:显示简写主机名。如默认主机名“localhost” 
\t:显示24小时制时间,格式为“HH:MM:SS” 
\T:显示12小时制时间,格式为“HH:MM:SS”
\A:显示24小时制时间,格式为“HH:MM” 
\u:显示当前用户名 
\w:显示当前所在目录的完整名称 
\W:显示当前所在目录的最后一个目录 
\#:执行的第几个命令 
\$:提示符。如果是root用户会显示提示符为“#”,如果是普通用户会显示提示符为“$”
 
示例:
[root@localhost ~]# PS1='[\u@\t \w]\$ ' 
[root@04:50:08 /usr/local/src]#PS1='[\u@\@ \h \# \W]\$‘  
[root@04:53 上午 localhost 31 src]#PS1='[\u@\h \W]\$ '

5.4.3 位置参数变量

位置参数变量

在这里插入图片描述
示例:

#!/bin/bash 
num1=$1 
num2=$2 
sum=$(( $num1 + $num2)) 
#变量sum的和是num1加num2 
echo $sum 
#打印变量sum的值
 
[root@zhangRabbitMQ zhang]# /tmp/sum.sh 1 2
3

5.4.4 预定义变量

在这里插入图片描述

5.5、Bash运算符

5.5.1 数值运算与运算符

declare声明变量类型

数值运算

[root@localhost ~]# declare [+/-][选项] 变量名 
 
	选项:  
	  -:  给变量设定类型属性  
	  +:   取消变量的类型属性  
	 -i:   将变量声明为整数型(integer)  
	 -x:   将变量声明为环境变量  
	 -p:   显示指定变量的被声明的类型


	方法1:
		[root@localhost ~]# aa=11 
		[root@localhost ~]# bb=22 #给变量aa和bb赋值
		[root@localhost ~]# declare -i cc=$aa+$bb
	 
	方法2:expr或let数值运算工具 
		[root@localhost ~]# aa=11 
		[root@localhost ~]# bb=22 
	#给变量aa和变量bb赋值 
		[root@localhost ~]# dd=$(expr $aa + $bb) 
	#dd的值是aa和bb的和。注意“+”号左右两侧必须有空格  
	 
	方法3:“$((运算式))”或“$[运算式](推荐)
		[root@localhost ~]# aa=11 
		[root@localhost ~]# bb=22 
		[root@localhost ~]# ff=$(( $aa+$bb )) 
		[root@localhost ~]# gg=$[ $aa+$bb ]

5.6、环境变量配置文件

5.6.1 配置文件简介

source命令

source命令通常用于保留、更改当前shell中的环境变量。

[root@localhost ~]# source 配置文件 [root@localhost ~]# . 配置文件 

环境变量配置文件简介

  • 环境变量配置文件中主要是定义对系统的操作环境生效的系统默认环境变量,比如PATH、HISTSIZE、PS1、HOSTNAME等默认环境变量。

  • /etc/profile

  • /etc/profile.d/*.sh

  • ~/.bash_profile

  • ~/.bashrc

  • /etc/bashrc

5.6.2 环境变量配置文件作用

配置文件列表如下:

  • /etc/profile

  • /etc/profile.d/*.sh

  • ~/.bash_profile

  • ~/.bashrc

  • /etc/bashrc

tips:/etc 目录下的对所有用户都生效

~/.bash_profile 和 ~/.bashrc -> 每个用户自己的配置文件,只对用户生效。

配置文件读取顺序

在这里插入图片描述
上图从左到右如果有叠加。后面的命令会覆盖前面的命令。

/etc/profile的作用:

  • USER变量:

  • LOGNAME变量:

  • MAIL变量:

  • PATH变量:

  • HOSTNAME变量:

  • HISTSIZE变量:

  • umask:

  • 调用/etc/profile.d/*.sh文件

~/.bash_profile的作用

  • 用了~/.bashrc文件。

  • 在PATH变量后面加入了“:$HOME/bin”这个目录

5.6.3 其他配置文件和登录信息

注销时生效的环境变量配置文件

  • ~/.bash_logout

其他配置文件

  • ~/bash_history

Shell登录信息

  • 本地终端欢迎信息: /etc/issue

5.7、正则表达式

5.7.1 正则表达式与通配符

  • 正则表达式用来在文件中匹配符合条件的字符串,正则是包含匹配。grep、awk、sed等命令可以支持正则表达式。

  • 通配符用来匹配符合条件的文件名,通配符是完全匹配。ls、find、cp这些命令不支持正则表达式,所以只能使用shell自己的通配符来进行匹配了。

基础正则表达式
在这里插入图片描述


示例1:"*" 前一个字符匹配0次或多次

	● grep "a*" test_rule.txt  
	#匹配所有内容,包括空白行
	● grep "aa*" test_rule.txt 
	#匹配至少包含有一个a的行 
	● grep "aaa*" test_rule.txt  
	#匹配最少包含两个连续a的字符串 
	● grep "aaaaa*" test_rule.txt 
	#则会匹配最少包含四个个连续a的字符串
	
	
示例2:"." 匹配除了换行符外任意一个字符 

	● grep  "s..d" test_rule.txt  
	#“s..d”会匹配在s和d这两个字母之间一定有两个字符的单词 
	● grep "s.*d" test_rule.txt  
	#匹配在s和d字母之间有任意字符 
	● grep ".*" test_rule.txt  
	#匹配所有内容,0或多个任意字符
	

示例3: "^" 匹配行首,"$" 匹配行尾

	● grep "^M" test_rule.txt 
	#匹配以大写“M”开头的行 
	● grep "n$" test_rule.txt 
	#匹配以小写“n”结尾的行 
	● grep -n "^$" test_rule.txt 
	#会匹配空白行 


 示例4:"[]" 匹配中括号中指定的任意一个字符,只匹配一个字符

	● grep "s[ao]id" test_rule.txt
	#匹配s和i字母中,要不是a、要不是o 
	● grep "[0-9]" test_rule.txt
	#匹配任意一个数字 
	● grep "^[a-z]" test_rule.txt 
	#匹配用小写字母开头的行

示例5:"[^]" 匹配除中括号的字符以外的任意一个字符 

	● grep "^[a-z]" test_rule.txt  
	#匹配不用小写字母开头的行 
	● grep "^[a-zA-Z]" test_rule.txt 
	#匹配不用字母开头的行 “\” 转义符 
	● grep "\.$" test_rule.txt
	#匹配使用“.”结尾的行


示例6:"\{n\}" 表示其前面的字符恰好出现n次 

	● grep "a\{3\}" test_rule.txt 
	#匹配a字母连续出现三次的字符串 
	● grep "[0-9]\{3\}" test_rule.txt 
	#匹配包含连续的三个数字的字符串   


示例7:"\{n,\}" 表示其前面的字符出现不小于n次 

	● grep "^[0-9]\{3,\}[a-z]" test_rule.txt 
	#匹配最少用连续三个数字开头的行


示例8:"\{n,m\}" 匹配其前面的字符至少出现n次,最多出现m次 

	???????● grep "sa\{1,3\}i" test_rule.txt 
	#匹配在字母s和字母i之间有最少一个a,最多三个a

5.8 字符串截取命令

5.8.1 cut 字段提取命令

[root@localhost ~]# cut [选项] 文件名 
	选项:  
	-f  列号:  	   提取第几列  
	-d 分隔符:  按照指定分隔符分割列


1.创建演示文件student.txt

	[root@localhost ~]# vi student.txt 
	ID      Name       gender     Mark 
	1        Liming      M         86 
	2        Sc          M         90 
	3        Gao         M         83  
	
	示例
	
	[root@localhost ~]# cut -f 2 student.txt  
	#提取第二列
	[root@localhost ~]# cut -f 2,3 student.txt  
	#提取第二第三列
	[root@localhost ~]# cut -d ":" -f 1,3 /etc/passwd
	#以:为分隔符提取第一第三列

2.cut命令的局限

	[root@localhost ~]# df -h | cut -d " " -f 1,3
	#有空格时提取会出问题,不能识别多个空格情况
	

5.8.2 printf 命令

[root@localhost ~]# printf   ’输出类型输出格式’    输出内容 
输出类型:  
%ns :  输出字符串。n是数字指代输出几个字符  
%ni :  输出整数。n是数字指代输出几个数字  
%m.nf : 输出浮点数。m和n是数字,指代输出的整数位数和小数位数。如%8.2f代表:2位是小数,8位是整数。 
其中输出格式选项有:

输出格式:

控制字符作用
\a输出警告声音
\b输出退格键,也就是Backspace键
\f清除屏幕
\n换行
\r回车,也就是Enter键
\t水平输出退格键,也就是Tab键
\v垂直输出退格键,也就是Tab键

5.8.3 awk 命令

[root@localhost ~]# awk ‘条件1{动作1} 条件2{动作2}…’ 文件名 
 
	条件(Pattern):  
	    一般使用关系表达式作为条件  
	    x > 10 判断变量 x是否大于10  
	    x>=10 大于等于 
	    x<=10 小于等于 
	动作(Action):  
	    格式化输出  
	    流程控制语句   
	示例 
	
		[root@zhangRabbitMQ zhang]# vi /tmp/student.txt
		id      name    java    linux   mysql
		1       bilei   88      88      88
		2       zhang   60      60      60
                                   
[root@zhangRabbitMQ zhang]# awk '{printf $2 "\t" $5 "\n"}' /tmp/student.txt
name	mysql
bilei	88
zhang	60


BEGIN
#awk 'BEGIN{printf "This is a transcript \n" } {printf $2 "\t" $6 "\n"}' student.tx
END


# awk 'END{printf "The End \n" }

{printf $2 "\t" $6 "\n"}' student.txt

FS内置变量

#cat /etc/passwd | grep "/bin/bash" | awk 'BEGIN {FS=":"} {printf $1 "\t" $3 "\n"}'

关系运算符

#cat student.txt | grep -v Name | awk '$6 >= 87 {printf $2 "\n" }'

5.8.4 sed 命令

sed 是一种几乎包括在所有 UNIX 平台(包括 Linux)的轻量级流编辑器。sed主要是用来将数据进行选取、替换、删除、新增的命令。

[root@localhost ~]# sed [选项] ‘[动作]’ 文件名 
 
	选项:  
	    -n:  一般sed命令会把所有数据都输出到屏幕 ,  如果加入此选择,则只会把经过           		sed命令处  理的行输出到屏幕。 
	    -e: 允许对输入数据应用多条sed命令编辑 
	    -i:  用sed的修改结果直接修改读取数据的文件,  而不是由屏幕输出
	 
	动作:  
	    a \:  追加,在当前行后添加一行或多行。添加多行时,除最后 一行  外,每行末尾需要用“\”代	     		表数据未完结。 
	    c \:  行替换,用c后面的字符串替换原数据行,替换多行时,除最  后一行外,每行末尾需“\”代   		表数据未完结。
	    i \:  插入,在当期行前插入一行或多行。插入多行时,除最后 一行  外,每行末尾需要“\”代
	表数据未完结。 
	    d:  删除,删除指定的行。 
	    p:  打印,输出指定的行。 
	    s:  字串替换,用一个字符串替换另外一个字符串。格式为“行范  围s/旧字串/新字串/g”(和vim
	中的替换格式类似)。 

 示例

	[root@zhangRabbitMQ zhang]# vi /tmp/student.txt
	id      name    java    linux   mysql
	1       bilei   88      88      88
	2       zhang   60      60      60


#查看文件的第二行  
	[root@zhangRabbitMQ tmp]# sed '2p' student.txt
	id	name	java	linux	mysql	
	1	bilei	88	88	88
	1	bilei	88	88	88
	2	zhang	60	60	60
 
#只显示第二行
	[root@zhangRabbitMQ tmp]# sed -n '2p' student.txt
	1	bilei	88	88	88
 
#删除第二行到第四行的数据,但不修改文件本身
	[root@zhangRabbitMQ tmp]# sed '2,3d' student.txt  
	id	name	java	linux	mysql	
	

5.9 字符处理命令

5.9.1 排序命令 sort

[root@localhost ~]# sort [选项] 文件名 
 
	选项: 
	    -f:  忽略大小写  
	    -n:  以数值型进行排序,默认使用字符串型排序  
	    -r:  反向排序  
	    -t:  指定分隔符,默认是分隔符是制表符  
	    -k n[,m]: 按照指定的字段范围排序。从第n字段开始,m字段结束(默认到行尾)  
	 
	 示例
	
		[root@localhost ~]# sort /etc/passwd 
		#排序用户信息文件  
		 
		[root@localhost ~]# sort -r /etc/passwd 
		#反向排序
		 
		[root@localhost ~]# sort -t ":" -k 3,3 /etc/passwd 
		#指定分隔符是“:”,用第三字段开头,第三字段结尾排序,就是只用第三字段排序  
		 
		[root@localhost ~]# sort -n -t ":" -k 3,3 /etc/passwd  
		#指定分隔符是“:”,用第三字段开头,第三字段结尾排序,以数值型进行排序

5.9.2 wc 统计命令

[root@localhost ~]# wc [选项] 文件名 
 
	选项:  
	    -l: 只统计行数  
	    -w: 只统计单词数  
	    -m: 只统计字符数
	    
文章来源:https://blog.csdn.net/GoodburghCottage/article/details/135771386
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。