• 【Linux命令】文件操作、通配符、文件属性、创建链接文件、关机重启


    一、文件操作相关命令

    1.cat命令

    功能:回显文件的内容到终端
    用法:
    	cat  文件名 : 回显文件的内容到终端
    	cat -n 文件名 : 回显文件的内容到终端并显示行号
    	cat 文件名1 文件名2 > 文件名3  : 将文件名1和文件名2中的内容重定向到文件名3,文件名1和文件名2中的内容不在终端进行回显
    
    • 1
    • 2
    • 3
    • 4
    • 5

    2.head命令

    作用:从文件头开始回显文件内容到终端,默认回显前10行
    用法:
    	head 文件名  : 回显文件的前10行内容到终端,如果不够就全部回显
    	head -n 文件名 : 回显文件的前n行内容到终端,n是一个整数
    
    • 1
    • 2
    • 3
    • 4

    3.tail命令

    作用:从文件尾开始回显文件内容到终端,默认回显后10行
    用法:
    	tail 文件名  : 回显文件的后10行内容到终端,如果不够就全部回显
    	tail -n 文件名 : 回显文件的和n行内容到终端,n是一个整数
    
    • 1
    • 2
    • 3
    • 4

    4.重定向符命令 >、>>

    功能: 将命令的执行结果可以使用重定向的方式重定向到某个文件中,而不再终端进行回显
    用法:
    shell命令 > 或者 >> 普通文件的名字(将shell命令的执行结果重定向到文件中)
    
    ‘>’ :如果重定向的文件不存在,则创建文件;如果文件存在,则将文件中的内容清空之后,从文件的头开始重新写入数据
    ‘>>’:如果重定向的文件不存在,则创建文件;如果文件存在,则从文件的末尾追加写入数据。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    5.find命令

    作用:按照名字查找某个文件
    用法:
    	find  从哪个目录下查找(目录的路径)  -name  要查找的文件的名字
    	文件的名字中可以使用通配符 :*(多个字符) ?(单个字符)		
    案例:
    	find . -name hello.c   ---> 从当前目录下查找hello.c文件
    	find /etc  -name  passwd  ---> 从/etc目录下查找passwd文件
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    6.file命令

    作用:查看文件的属性信息
    用法:file  文件的名字
    案例:
    	file helloworld.c
    	file a.out
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述

    7.grep命令(重点)

    作用:从某个文件或者目录中的文件中查找字符串
    格式:
    	grep -参数  "要搜索的字符串"  文件名及路径/路径
    	
    	参数:
    	-n : 回显搜索的内容的行号
    	-R : 递归搜索,如果从目录中的文件中搜索,必须加-R参数
    	-i : 查找字符串时不区分大小写
    	-w : 按照单词进行查找
    	
    案例:
    	grep -n "main" helloworld.c  
    			 ---> 从helloword.c文件中查找"main"字符串
    	
    	grep -nR "main" ./  
    			----> 从当前目录下的所有文件中查找"main"字符串
    	
    	grep -n "linux" /etc/passwd  
    			---> 从/etc/passwd文件中查找"linux"字符串
    			
    	grep -n "^linux" /etc/passwd 
    			---> 从/etc/pwaasw文件中查找每行内容头为"linux"字符串
    			
    	grep -n "bash$" /etc/passwd 
    			---> 从/etc/pwaasw文件中查找每行内容末尾为"bash"字符串
    			
    	grep -n "^linux$" /etc/passwd 
    			---> 从/etc/pwaasw文件中查找每行内容开头和末尾都为"linux"字符串		
    				
    	grep -ni "MAIN" helloworld.c  
    			---> 从helloword.c文件中查找"MAIN"字符串,不区分大小写   
    			
        grep -nwR "int" ./ 
        		---> 从当前目录下所有的文件中查找"int字符串",按照单词
    
    	grep -nwR "in" ./ 
        		---> 从当前目录下所有的文件中查找"in字符串",按照单词
        
        grep -nR "int" ./ 
        		---> 从当前目录下所有的文件中查找"int字符串",按照单词
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40

    8.cut命令

    作用:从文件中按照某种格式截取字符串
    
    用法:
    	cut -d "分隔符" -f 截取的域  从哪个文件中截取(文件的名字)
    	
    	-d : 指定分隔符
    	-f : 指定截取的域, 
    		表示域的方式,如果截取的域连续使用“-”隔开,比如3-6.
    			如果截取的域不连续使用“,”隔开,比如1,6,7
    			截取的域既有连续又有不连续的,比如 1-3,6,7
    	
    	假设分隔符为":", 
    	linux:x:1000:1000:linux,,,:/home/linux:/bin/bash
    	   1  2   3    4      5         6          7
    	   |  |   |	   | 	  |			|		   |---> 使用bash解析器
    	   |  |   |	   |	  |			|---> 家目录
    	   |  |   |    |   	  |----> 用户信息
    	   |  |   |    |---> 组ID
    	   |  |   |---> 用户ID
    	   |  |---> 密码
    	   |---> 用户名
    		
    案例:	
    	将以下两行内容写到当前目录的passwd文件中
    	root:x:0:0:root:/root:/bin/bash
    	linux:x:1000:1000:linux,,,:/home/linux:/bin/bash
    
    	从passwd文件中截取用户的用户名及对应的加目录:
    	cut -d ":" -f 1,6 ./passwd 
    	
    	从passwd文件中截取用户ID和组ID
    	cut -d ":" -f 3-4 ./passwd 
    	cut -d ":" -f 1,3-4 ./passwd 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33

    9.管道命令 |

    功能:将前一个命令的输出作为后一个命令的输入
    
    格式:
    	shell命令1 | shell命令2 | shell命令3 | ....
    	
    案例:
    	从当前目录下下查找hello.c文件是否存在,需要使用管道符
    	思路:将ls命令的执行结果给到下一个命令,使用搜索的命令查找hello.c字符串
    	ls -l | grep "hello.c"
    	
    	从/etc/passwd文件中查找linux用户对应的信息,
    	grep -n "^linux" /etc/passwd 
      	
        cat /etc/passwd | grep "^linux" 
        cat -n /etc/pwsswd | grep "linux" 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    练习题:
    
     	1. 从/etc/passwd文件中查找的linux用户对应的信息,
     		并从中截取家目录对应的字符串截取出来。
    	grep "^linux" /etc/passwd | cut -d ":" -f 6
    				|
    				|
    				|
    				|
    	linux:x:1000:1000:linux,,,:/home/linux:/bin/bash
      域   1  2   3    4       5        6          7
    	-------------------------------------------------------
    	grep -n "^linux" /etc/passwd | cut -d ":" -f 7
    				|
    				|
    				|
    				|
    	46:linux:x:1000:1000:linux,,,:/home/linux:/bin/bash
      域 1   2   3   4    5      6          7        8
    	-------------------------------------------------------	
    	head -46 /etc/passwd | tail -1 |  cut -d ":" -f 6
    		  | 
    		  |----> linux用户在第46行,你们的linux用户不一定在46行
    	
        2. 从/etc/passwd文件中查找的linux用户对应的信息,
        	并从中截取用户ID和组ID对应的字符串截取出来。
        	
        	grep "^linux" /etc/passwd | cut -d ":" -f 3-4
    				|
    				|
    				|
    				|
    	linux:x:1000:1000:linux,,,:/home/linux:/bin/bash
      域   1  2   3    4       5        6          7
    	-------------------------------------------------------
    	grep -n "^linux" /etc/passwd | cut -d ":" -f 4-5
    				|
    				|
    				|
    				|
    	46:linux:x:1000:1000:linux,,,:/home/linux:/bin/bash
      域 1   2   3   4    5      6          7        8
    	-------------------------------------------------------	
    	head -46 /etc/passwd | tail -1 |  cut -d ":" -f 3-4
    		  | 
    		  |----> linux用户在第46行,你们的linux用户不一定在46行	
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46

    二、通配符的使用

    在终端中执行以下命令:
    touch a1.c a2.c a3.c a4.c aa.c ab.c ac.c ad.c aaa.c abb.c acc.c add.c
    
    1. * ---> 匹配多个字符
    	linux@ubuntu:day02$ ls a*.c
    	a1.c  a2.c  a3.c  a4.c  aaa.c  aa.c  abb.c  ab.c  ac.c  acc.c  ad.c  add.c
    
    2. ? ---> 匹配一个字符
    	linux@ubuntu:day02$ ls a?.c
    	a1.c  a2.c  a3.c  a4.c  aa.c  ab.c  ac.c  ad.c
    
    3. [] ---> 匹配中括号中的某一个字符
        linux@ubuntu:day02$ ls a[abcd].c  ---> 第2个字符为abcd中的任意一个
        aa.c  ab.c  ac.c  ad.c
        linux@ubuntu:day02$ ls a[a-d].c  ---> 第2个字符为a-d中的任意一个
        aa.c  ab.c  ac.c  ad.c
        linux@ubuntu:day02$ ls a[1-4].c   ---> 第2个字符为1234中的任意一个
        a1.c  a2.c  a3.c  a4.c
        linux@ubuntu:day02$ ls a[1234].c   ---> 第2个字符为1-4中的任意一个
        a1.c  a2.c  a3.c  a4.c
        linux@ubuntu:day02$ ls a[^a-d].c   ---> 第2个字符为除了a-d中的任意一个
        a1.c  a2.c  a3.c  a4.c
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    三、文件属性操作相关命令

    1.修改文件权限的命令 --> chmod

    1. 文件权限相关的介绍
    	-rwxrwxr-x 1 linux linux 16472 Nov 16 17:50 a.out
    	| |  |  |  |   |     |     |        |         |----> 文件名
    	| |  |  |  |   |     |     |        |----> 时间
        | |  |  |  |   |     |     |----> 文件大小
        | |  |  |  |   |     |----> 文件所属的组
        | |  |  |  |   |----> 文件所属用户
        | |  |  |  |----> 硬链接数
        | |  |  |----> 文件其他用户的权限
        | |  |----> 文件所属组的权限
        | |----> 文件所属用户的权限
        |----> 文件的类型
    
    2. 文件的类型字符
    	bsp-lcd
    	块设备文件/套接字文件/管道文件/普通文件/链接文件/字符设备文件/目录
    
    3. 文件权限的字符
    	r : 具有可读的权限(4)
    	w :具有可写的权限(2)
    	x :具有可执行的权限(1)
    	- :没有此权限(0)
    
    4. 文件所属用户的字符
    	u : 表示普通用户(user)
    	g : 表示组(group)
    	o : 表示其他用户(other)
    	a : 所有的用户(all)
    
    5. 修改文件权限的字符
    	+ :添加权限
    	- :删除权限
    	= :修改权限
    
    6. 修改文件的权限
    	方式1:
    	格式:chmod  文件的权限  要修改的文件名
    					|
    					|
    		"augo" + "+/-/=" + "rwx" : 从任意组中任选一个或多个字符拼接成一个字符串
    		
    	练习:
    		chmod u+x hello.c   ---> 给hello.c所属用户添加可执行的权限
    		chmod g-w hello.c   ---> 给hello.c所属组移除可写的权限
    		chmod o=rw hello.c  ---> 给hello.c所属其他用户修改为可读可写的权限
    		chmod a=rwx hello.c ---> 给hello.c所属用户,组,其他用户修改为
    									可读可写可执行的权限。
    	
        方式2:
        格式:chmod  文件的权限  要修改的文件名
        				|
        				|
        	文件权限对应的数字组合成一个新的数字
        	(4+2+1) + (4+2+1) + (4+2+1) = 0777
        	文件所属的用户有次权限就用对应的数字表示,没有则用0表示
        	
        练习:
        	chmod 0666 hello.c  ---> 将hello.c所属用户,组,其他用户修改为,
        		  ||||              可读,可写,没有可执行的权限
        		  ||||---> 表示所属其他用户对应的权限(可读(4) + 可写(2) + 不可执行(0))
        		  |||---> 表示所属组对应的权限(可读(4) + 可写(2) + 不可执行(0))
        		  ||---> 表示所属用户对应的权限(可读(4) + 可写(2) + 不可执行(0))
        		  |---> 表示8进制数
    		
    		chmod 0777 hello.c  ---> 将hello.c所属用户,组,其他用户修改为,
        		  ||||              可读,可写,没有可执行的权限
        		  ||||---> 表示所属其他用户对应的权限(可读(4) + 可写(2) + 可执行(1))
        		  |||---> 表示所属组对应的权限(可读(4) + 可写(2) + 可执行(1))
        		  ||---> 表示所属用户对应的权限(可读(4) + 可写(2)+ 可执行(1))
        		  |---> 表示8进制数
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70

    2.修改文件所属组的命令 --> chgrp

    chgrp  root hello.c  ---> 修改hello.c文件所属的组
    
    • 1

    3.修改文件所属用户和组的命令- -> chown

    chown root:root  world.c  ---> 修改world.c文件所属的用户和组
    chown root: world.c --->  修改world.c文件所属的用户和组
    chown :root world.c --->  修改world.c文件所属的组
    chown root world.c  --->  修改world.c文件所属的用户
    
    • 1
    • 2
    • 3
    • 4

    四、创建链接文件命令

    当使用ls -l查看文件的属性时,会有一个链接文件个数的信息:
    drwxrwxr-x 2 linux linux     4096 Nov 16 00:53 day01
               |
               |----> 如果是一个目录,硬链接数表示目录下的子目录(文件夹)的个数
    
    -rw-rw-r-- 1 linux linux 19066880 Nov 16 01:00 day01.tar
    		   |
    		   |----> 如果是一个普通的文件,硬链接数表示普通文件对应的硬链接文件的个数
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    1.创建软连接 --> ln -s

    用法:
    	ln -s 绝对路径/被链接的文件或者文件夹的名字  绝对路径/软链接文件或文件夹的名字
    
    总结:
    	1. 软链接文件的类型为l
    	2. 软链接文件被创建之后,不会增加硬链接文件的个数
    	3. 可以对文件或者文件夹创建软链接文件
    	4. 在创建软链接文件时推荐使用绝对路径,尽量不要使用相对路径。
    		原因:
    		如果使用的是绝对路径,当将软链接文件拷贝到其他目录下,链接关系依然有效;
    		如果使用的是相对路径,当将软链接文件拷贝到其他目录下,软链接关系将失效。
    	5. windows是不支持软链接文件的,因此不可以将软链接文件拷贝到windows的共享文件夹中
    		及/mnt/hgfs/share/中
    	
    	6. 如果被链接的文件删除,软链接文件将失效,
    		如果重新创建新的被链接的文件,则链接关系会重新生效。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    练习题:
    	给windows共享的文件夹(/mnt/hgfs/share),
    	在ubuntu的家目录(/home/linux)下创建一个软链接文件。
    	ln -s /mnt/hgfs/share /home/linux/share 
    	
    	此时访问ubuntu系统家目录下的share文件夹就相当于访问/mnt/hgfs/share文件夹。
    
    软链接文件的使用场合:
    	当某个文件或者目录路径特别长时,可以尝试给此文件或目录创建软链接文件
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    2.创建硬链接 --> ln

    格式:
    	ln  绝对路径/被链接的文件名    绝对路径/硬链接文件的名字
    	
    总结:
    	1. 只能对普通文件创建硬链接文件,不可以对目录创建硬链接文件
    	2. 创建硬链接文件之后,文件的硬链接数会增加
    	3. 被硬链接的文件和硬链接文件最终指向的是同一块空间。
    		被硬链接文件和硬链接文件的inode号相同。
    	4. 如果删除被硬链接的文件,硬链接文件依然有效,硬盘中的数据不会被删除,
        	只有文件的硬链接数为0时,硬盘中的数据才会被删除,
        	及被硬链接的文件和所有对应的硬链接文件都删除之后,硬盘中的数据才会被删除。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    五、关机重启命令 --> shutdown

    关机命令:
    	sudo shutdown   15:10   ---> 15:10分关机
    	sudo shutdown   +10     ---> 10分钟之后关机
    	sudo shutdown   now     ---> 立即关机
    	
    重启命令:
    	sudo reboot     15:10   ---> 15:10分重启
    	sudo reboot     +10     ---> 10分钟之后重启
    	sudo reboot     now     ---> 立即重启
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
  • 相关阅读:
    Error: Cannot find module ‘@dcloudio/uni-cli-i18n‘
    计算机毕业设计基于springboot+vue+elementUI的在线动漫漫画投稿播放平台 前后端分离(源码+系统+mysql数据库+Lw文档)
    【vim 学习系列文章 7-- vim vnormap nnoremap nmap map inoremap 区别】
    python - random函数
    Istio实践(3)- 路由控制及多应用部署(netcore&springboot)
    verdi dump状态机的波形时直接显示状态名
    打造千万级流量秒杀系统第七课 故障转移和恢复:如何通过主备切换缩减故障时间?
    Android 弹出自定义对话框
    优雅迷人的小程序 UI 风格
    PHP代码审计入门-DVWA靶场命令注入篇
  • 原文地址:https://blog.csdn.net/weixin_50964793/article/details/127947936