Vim 保存退出后自动修改文件权限
- 格式:docx
- 大小:13.35 KB
- 文档页数:2
Vim编辑指令基本命令Esc 或 Ctrl+[ 进⼊普通模式i (插⼊) a (附加) 进⼊插⼊模式wq 回车保存退出vim后⾯加上你要打开的已存在的⽂件名或者不存在(则作为新建⽂件)的⽂件名。
打开Xfce终端$ vim practice_1.txt直接使⽤vim也可以打开vim编辑器 vim进⼊命令⾏模式后输⼊:e ⽂件路径同样可以打开相应⽂件游标移动h左l右(⼩写L)j下k上w移动到下⼀个单词b移动到上⼀个单词在普通模式下使⽤下⾯的键将进⼊插⼊模式,并可以从相应的位置开始输⼊命令说明i在当前光标处进⾏编辑I在⾏⾸插⼊A在⾏末插⼊a在光标后插⼊编辑o在当前⾏后插⼊⼀个新⾏O在当前⾏前插⼊⼀个新⾏cw替换从光标所在位置后到⼀个单词结尾的字符请尝试不同的从普通模式进⼊插⼊模式的⽅法,在最后⼀⾏shiyanlou前⾯加上www.,注意每次要先回到普通模式才能切换成以不同的⽅式进⼊插⼊模式保存⽂档(命令⾏模式下保存⽂档)从普通模式输⼊:进⼊命令⾏模式,输⼊w回车,保存⽂档。
输⼊:w ⽂件名可以将⽂档另存为其他⽂件名或存到其它路径下退出vim(命令⾏模式下退出vim)从普通模式输⼊:进⼊命令⾏模式,输⼊wq回车,保存并退出编辑命令说明q!强制退出,不保存q退出wq!强制保存并退出w <⽂件路径>另存为saveas ⽂件路径另存为x保存并退出wq保存并退出普通模式下退出vim普通模式下输⼊Shift+zz即可保存退出vim删除⽂本(普通模式下删除vim⽂本信息)进⼊普通模式,使⽤下列命令可以进⾏⽂本快速删除命令说明x删除游标所在的字符X删除游标所在前⼀个字符Delete同xdd删除整⾏dw删除⼀个单词(不适⽤中⽂)d$或D删除⾄⾏尾d^删除⾄⾏⾸dG删除到⽂档结尾处d1G删⾄⽂档⾸部u撤销ndd删除光标所在位置起的多⾏n为数字yy复制光标当前所在的那⼀⾏nyy复制多⾏为n的数字p将已复制的内容粘贴到光标所在的位置的下⼀⾏⼤P将已复制的内容粘贴到光标所在位置的上⼀⾏np粘贴多⾏到光标的下⼀⾏为n的数字cttl+r重复上⼀次操作$跳到⼀⾏的尾部0跳到⼀⾏的头部gg移动到这个⽂件的第⼀⾏G跳到这个⽂件的最后⼀⾏nG跳到n⾏set nu显⽰⾏号H光标移动到屏幕的最上⽅那⼀⾏的第⼀个字符M光标移动到屏幕的中央那⼀⾏的第⼀个字符L光标移动到屏幕的最下⾯那⼀⾏的第⼀个字符vim重复命令重复执⾏上次命令在普通模式下.(⼩数点)表⽰重复上⼀次的命令操作拷贝测试⽂件到本地⽬录$ cd /home/shi$ cp /etc/protocols .游标的快速跳转普通模式下,下列命令可以让光标快速调转到指定位置,我们分别讨论快速实现⾏间跳转和⾏内跳转⾏间跳转命令说明nG(n shift+g)游标移动到第 n ⾏(如果默认没有显⽰⾏号,请先进⼊命令模式,输⼊:set nu以显⽰⾏号) gg游标移动到第⼀⾏G(Shift+g)到最后⼀⾏⼩技巧:你在完成依次跳转后,可以使⽤ Ctrl+o 快速回到上⼀次(跳转前)光标所在位置,这个技巧很实⽤,⽐如当你在写代码时,忽然想起有个 bug,需要修改,这时候你跳过去改好了,只需要按下 Ctrl+o 就可以回到你之前的位置。
Linux基本命令vim命令(⼀)vim的三种⼯作模式命令模式、输⼊模式和编辑模式的相互转换,如图命令模式:使⽤ Vim 编辑⽂件时,默认处于命令模式。
在此模式下,可以使⽤上、下、左、右键或者 k、j、h、l 命令进⾏光标移动,还可以对⽂件内容进⾏复制、粘贴、替换、删除等操作。
输⼊模式:在输⼊模式下可以对⽂件执⾏写操作。
进⼊输⼊模式的⽅法是输⼊ i、a、o 等插⼊命令,编写完成后按 Esc 键即可返回命令模式。
编辑模式:如果要保存、查找或者替换⼀些内容等,就需要进⼊编辑模式。
编辑模式的进⼊⽅法为:在命令模式下按" :"键,Vim 窗⼝的左下⽅会出现⼀个" :"符号后,这时就可以输⼊相关的指令进⾏操作了。
操作完按Enter键执⾏,指令执⾏后会⾃动返回命令模式。
使⽤Vim打开⽂件为了避免误操作我们将/etc下的profile复制到/tmp下进⾏操作,命令如下:[root@localhost /]# cp /etc/profile /tmp/profile.vim使⽤vim 进⼊profile⽂件的命令模式操作功能描述vim profile.vim只是打开⽂件打开⽂件后,直接定位指定⾏数处,vim +20 /tmp/profile.vim例如,打开 /tmp/profile.vim⽂件时直接进⼊第 20 ⾏打开⽂件后,直接定位指定⾏数处,vim +/future /tmp/profile.vim例如,打开 /tmp/profile.vim⽂件时直接定位到"future"字符串所在⾏打开⽂件后,接下来开始对⽂件进⾏操作。
进⼊输⼊命令模式从命令模式进⼊输⼊模式可以按下 I、i、A、a 、O、o、等键来完成,不同的键只是光标所处的位置不同⽽已。
当进⼊输⼊模式后,在 Vim 编辑窗⼝的左下⾓会出现"INSERT"标志,这就代表我们可⾏写⼊操作了,在vim中光标是停留在字符上的,例如在光标后⾯插⼊就是指在光标所在的字符的后⾯插⼊;操功能描述作i在当前光标所在位置插⼊输⼊的⽂本,光标后的⽂本相应向右移动I在光标所在⾏的⾏⾸插⼊输⼊的⽂本,⾏⾸是该⾏的第⼀个⾮空⽩字符,相当于光标移动到⾏⾸执⾏ i 命令a在当前光标所在位置之后插⼊输⼊的⽂本A在光标所在⾏的⾏尾插⼊输⼊的⽂本,相当于光标移动到⾏尾再执⾏ a 命令o在光标所在⾏的下⾯插⼊新的⼀⾏。
Linux-权限管理(⽂件权限)Linux - 权限管理(⽂件权限)⼀:基本权限1.基本权限介绍基本权限类型类型全拼释义权限位r read可读4w write可写2x execute可执⾏1权限的归属归属字母属主u属组g其他⽤户o2.设置权限修改属主、属组# 修改⽂件:1.txt的属主为:darker 属组为:human[root@localhost ~]# chown darker.human 1.txt# 修改⽂件:1.txt的属主为:darker[root@localhost ~]# chown darker 1.txt# 修改⽂件:1.txt的属组为:human[root@localhost ~]# chown .human 1.txt# 递归修改⽬录:file1的属主为:darker 属组为:human[root@localhost ~]# chown -R darker.human file1修改u、g、o对应的权限# 加减法# 修改⽂件:1.txt的权限为:属主为u 属组为w[root@localhost ~]# chmod u+x,g-w 1.txt# 赋值法# 修改⽂件:1.txt的权限为:所有⽤户为rwx[root@localhost ~]# chmod a=rwx 1.txt# 修改⽂件:1.txt的权限为:-[root@localhost ~]# chmod a=- 1.txt# 修改⽂件:1.txt的权限为:属主属组为rw 其他⽤户为r[root@localhost ~]# chmod ug=rw,o=r 1.txt# 数字# 修改⽂件:1.txt的权限为:所有⽤户的权限为rwx[root@localhost ~]# chmod 7771.txt# 递归修改⽬录:file1的权限为:所有⽤户的权限为rwx[root@localhost ~]# chmod 777 file1注意:把某⼀个⾮属主⽤户添加到⽂件的属组⾥,他就拥有了该组的权限,⽽不再是其他⼈权限对⽂件/⽬录的意义⽂件:ls -l ⽂件名权限释义r可以cat读取⽂件内容w可以修改⽂件x 可以执⾏⽂件代码,如果该⽂件的代码是编译好的结果那么只有x权限即可执⾏但如果该⽂件的代码是⼀个解释型的脚本程序则需要配合r权限才可执⾏⽬录:ls -dl ⽂件名权限释义r可以ls浏览⽂件下的内容w可以在⽬录下创建新⽂件or⽬录x 可以执⾏⽬录下的程序,除了对⽬录有执⾏权限外,还要对程序⽂件有执⾏权限才⾏可以正常cd切换到⽬录下涉及到多层⽬录如/a/b/c,需要对每⼀级都有x权限才可以正常⾛到下⼀级对⽂件夹的操作(不操作⽂件内容),需要当前⽤户具备的权限对沿途所有⽂件夹有x权限对⽬标⽂件夹有r或w权限权限释义r可以浏览w可以创建、删除、移动⼦⽂件和⼦⽬录对⽂件的操作(操作⽂件内容),需要当前⽤户具备的权限对沿途所有⽂件夹有x权限对⽬标⽂件有r或w权限权限释义r可以读取⽂件内容w可以修改⽂件内容注意点:vim修改的原理是将原⽂件删掉,然后再将内容的内容覆盖写⼊了新⽂件,新⽂件名重命名为原⽂件名验证vim修改的原理# (root⽤户)切换到/usr/local⽬录[root@localhost local]# cd /usr/local# (root⽤户)递归创建test01/dir1⽬录[root@localhost local]# mkdir -p test01/dir1# (root⽤户)递归修改⽬录test01权限为733[root@localhost local]# chmod -R 733 test01# (root⽤户)在test01⽬录下创建1.txt并写⼊内容“123”[root@localhost local]# echo "123" > test01/1.txt# (root⽤户)查看1.txt的内容[root@localhost local]# cat test01/1.txt123# (root⽤户)查看test01⽬录下的⽂件1.txt的详情信息:其他⽤户只有(r)读的权限[root@localhost local]# ll test01/1.txt-rw-r--r--. 1 root root 4 Nov 2510:02 test01/1.txt# (root⽤户)查看test01⽬录下的⽂件1.txt的iNode信息[root@localhost local]# stat test01/1.txtFile: ‘test01/1.txt’Size: 4 Blocks: 8 IO Block: 4096 regular fileDevice: fd00h/64768d Inode: 23609 Links: 1Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)Context: unconfined_u:object_r:usr_t:s0Access: 2020-11-2510:02:58.471562017 -0500Modify: 2020-11-2510:02:58.471562017 -0500Change: 2020-11-2510:02:58.471562017 -0500Birth: -# 切换到其他⽤户/⽤其他⽤户登录PS C:\Users\Darker> ssh darker@192.168.50.101darker@192.168.50.101's password:[darker@localhost ~]$ whoamidarker# (普通⽤户)⽤vim打开/usr/local/test01⽬录下的1.txt[darker@localhost ~]$ vim /usr/local/test01/1.txt123~~~"/usr/local/test01/1.txt" [readonly] 1L, 4C 1,1 All # [readonly] 只读# 按i进⼊插⼊模式-- INSERT -- W10: Warning: Changing a readonly file# (普通⽤户)修改1.txt的内容,强制保存并退出456Esc:wq!# 回到原来的root⽤户的窗⼝# (root⽤户)查看1.txt的内容[root@localhost local]# cat test01/1.txt456# (root⽤户)查看test01⽬录下的⽂件1.txt的详情信息:属主和属主变了[root@localhost local]# ll test01/1.txt-rw-r--r--. 1 darker darker 4 Nov 2510:21 test01/1.txt# (root⽤户)查看test01⽬录下的⽂件1.txt的iNode信息[root@localhost local]# stat test01/1.txtFile: ‘test01/1.txt’Size: 4 Blocks: 8 IO Block: 4096 regular fileDevice: fd00h/64768d Inode: 23609 Links: 1Access: (0644/-rw-r--r--) Uid: ( 1000/ darker) Gid: ( 1000/ darker)Context: unconfined_u:object_r:usr_t:s0Access: 2020-11-2510:30:54.822530748 -0500Modify: 2020-11-2510:21:17.823541511 -0500Change: 2020-11-2510:21:17.824541511 -0500Birth: -结论vim修改⽂件时:会将原⽂件删除,⽣成新的⽂件,属主和主组会变成修改的那个⽤户和⽤户所在的组⼆:特殊权限权限权限位SUID4SGID2权限权限位SBIT1SUID1.疑问普通⽤户既不是root也不属于root组,因此它对/etc/shadow⽂件没有任何权限(全是---)# 查看/etc/shadow信息[darker@localhost ~]# ll /etc/shadow----------. 1 root root 970 Nov 2407:29 /etc/shadow但是:普通⽤户为何可以⽤passwd直接修改密码?并且修改的是/etc/shadow⽂件,如何实现的?[darker@localhost ~]$ ll `which passwd`-rwsr-xr-x. 1 root root 27832 Jun 102014 /usr/bin/passwd这⾥可以看到,本应为rwx的第三个x变成了s,这就是s权限2.s权限的特殊之处SUID权限仅对⼆进制可执⾏⽂件有效(对⽬录⽆效)如果执⾏者对于该⼆进制可执⾏⽂件具有x的权限,执⾏者将具有该⽂件的所有者的权限本权限仅在执⾏该⼆进制可执⾏⽂件的过程中有效3.权限设定的⽅法字母表⽰法chmod u+s 可执⾏⽂件 # 给属主添加s权限chmod u-s 可执⾏⽂件 # 删除属主的s权限数字表⽰法(第1位4表⽰SUID,后3位表⽰普通权限 rwx)chmod 4755可执⾏⽂件 # 添加SUID权限到⼆进制可执⾏⽂件chmod 0xxx ... # 可以删除⽂件的SUID(但是⽆法删除⽬录的SUID)4.实例# (root⽤户)查看which cat[root@localhost ~]# ll `which cat`-rwxr-xr-x. 1 root root 54048 Nov 202015 /usr/bin/cat# (普通⽤户)查看/etc/shadow:没有权限(普通⽤户虽然是r-x,但是⽆法直接查看)[darker@localhost local]$ cat /etc/shadowcat: /etc/shadow: Permission denied# (root⽤户)修改 which cat 权限[root@localhost ~]# chmod u+s `which cat` # 或者 chmod 4755 `which cat`#(root⽤户)再次查看which cat[root@localhost ~]# ll `which cat`-rwsr-xr-x. 1 root root 54048 Nov 202015 /usr/bin/cat# (普通⽤户)查看/etc/shadow:有权限了[darker@localhost local]$ cat /etc/shadowroot:$6$Jvw3z/jmU1ASO4P1$vpTJ5OGEtfBOmIpjyK55k87iQPHXCC3.kKOFW9jkyslqC2DMdN7SZdT/zYRfmQ4hBAQXG6CQ4kKdRQ8eFqChf.::0:99999:7::: bin:*:16659:0:99999:7:::daemon:*:16659:0:99999:7:::adm:*:16659:0:99999:7:::lp:*:16659:0:99999:7:::...5.上例的⼯作原理环境前提:Linux中有1个⼆进制程序:cat,属组属组都是rootLinux中有⼀个系统⽂件:/etc/shadow,属组属组是: root:root有⼀个普通⽤户:darker普通⽤户:darker 属于其他⽤户,对⼆进制程序:cat 有执⾏(x)的权限普通⽤户:darker 对系统⽂件:/etc/shadow 没有任何权限默认情况下:普通⽤户:darker 执⾏⼆进制程序:cat系统会创建1个:cat进程该进程的属主属组是该程序的发起者:darker,也就是: darker:darkercat进程访问系统⽂件:/etc/shadowcat进程的属主和属主:darker:darker /etc/shadow⽂件的属主和属主:root:root⼆者的属主属组不匹配,所以被拒绝访问了:Permission denied给⼆进制程序:cat 设置SUID之后:普通⽤户:darker 执⾏⼆进制程序:cat系统会创建1个:cat进程执⾏者对于该⼆进制可执⾏⽂件具有 x 的权限,执⾏者将拥有该⽂件的属组的权限该进程属主是程序的发起者:darker,属组是cat原来的:root,属主属组就是:darker:rootcat进程访问系统⽂件:/etc/shadowcat进程的属主和属主:root:darker /etc/shadow⽂件的属主和属主:root:root⼆者的属主匹配,可以正常访问SGID1.权限设定的⽅法字母表⽰法chmod g+s ⽂件/⽬录 # 给⽂件/⽬录的属组添加s权限chmod g-s ⽂件/⽬录 # 删除⽂件/⽬录的属组的s权限数字表⽰法(第1位2表⽰SGID,后3位表⽰普通权限 rwx)chmod 2755⽂件/⽬录 # 给⽂件/⽬录的属组添加s权限chmod 0755⽂件/⽬录 # 删除⽂件/⽬录的属组的s权限chmod 755⽂件/⽬录 # 同上2.⽂件权限位的表⽰[root@localhost ~]# ll 1.txt-rwxr-sr-x. 1 root root 3243 Nov 2515:411.txt3.SGID相关说明作⽤在⼆进制可执⾏⽂件上时:执⾏有SGID权限的程序时,该⽤户将继承该程序的属组权限作⽤在⽬录上时:该⽬录下所有⽤户新建的⽂件都会⾃动继承该⽬录的属组当⼀个⽤户对某⼀⽬录有写和执⾏权限时,该⽤户就可以在该⽬录下建⽴⽂件如果该⽬录同时⽤SGID修饰,则该⽤户在这个⽬录下建⽴的⽂件都是属于这个⽬录的属组4.实例# (root⽤户)切换到/usr/loca/⽬录并创建⽬录:test02[root@localhost ~]# cd /usr/local[root@localhost local]# mkdir test02# (root⽤户)查看⽬录:test02 的信息[root@localhost local]# ls -dl test02/drwxr-xr-x. 2 root root 6 Nov 2514:19 test02/# !测试(root⽤户)在⽬录:test02 下创建⽂件:1.txt 并查看该⽂件的信息[root@localhost local]# touch /usr/local/test02/1.txt[root@localhost local]# ll /usr/local/test02/1.txt-rw-r--r--. 1 root root 0 Nov 2514:19 /usr/local/test02/1.txt# !测试(普通⽤户)在⽬录:test02 下创建⽂件:2.txt 并查看该⽂件的信息[darker@localhost ~]$ touch /usr/local/test02/2.txt[darker@localhost ~]$ ll /usr/local/test02/2.txt-rw-rw-r--. 1 darker darker 0 Nov 2514:20 /usr/local/test02/2.txt# (root⽤户)修改⽬录:test02 的权限[root@localhost local]# chmod 2773 test02# (root⽤户)再次查看⽬录:test02 的信息[root@localhost local]# ls -dl test02/drwxr-sr-x. 2 root root 6 Nov 2514:20 test02/# !测试(root⽤户)在⽬录:test02 下创建⽂件:3.txt 并查看该⽂件的信息[root@localhost local]# touch /usr/local/test02/3.txt[root@localhost local]# ll /usr/local/test02/3.txt-rw-r--r--. 1 root root 0 Nov 2514:21 /usr/local/test02/3.txt# !测试(普通⽤户)在⽬录:test02 下创建⽂件:4.txt 并查看该⽂件的信息[darker@localhost ~]$ touch /usr/local/test02/4.txt[darker@localhost ~]$ ll /usr/local/test02/4.txt-rw-rw-r--. 1 darker root 0 Nov 2514:21 /usr/local/test02/4.txtSBITSBIT 是the restricted deletion flag or sticky bit的简称,有时也称为Sticky,粘滞位SBIT 与 SUID 和 SGID 的关系并不⼤1.权限设定的⽅法字母表⽰法chmod o+t ⽂件/⽬录 # 给⽂件/⽬录的其他⽤户设置Stickychmod o-t ⽂件/⽬录 # 删除⽂件/⽬录的其他⽤户的Sticky数字表⽰法(第1位1表⽰添加Sticky位,后3位表⽰普通权限 rwx)chmod 1755⽂件/⽬录 # 给⽂件/⽬录的其他⽤户设置Stickychmod 0755⽂件/⽬录 # 删除⽂件/⽬录的其他⽤户的Stickychmod 755⽂件/⽬录 # 同上2.⽂件权限位的表⽰⽂件other位有x权限,并且⽤t代替了,表⽰被设置了Sticky如果other位没有x权限,会显⽰为⼤写T,表⽰有故障(权限⽆效)[root@localhost local]# ls -dl test03drwxr-xr-t. 2 root root 18 Nov 2514:34 dir013.相关说明对于⼀个多⼈可写的⽬录,如果设置了sticky,则每个⽤户仅能删除和改名⾃⼰的⽂件/⽬录只能作⽤在⽬录上,普通⽂件设置⽆意义,⽽且会被Linux内核忽略⽤户在设置 Sticky 权限的⽬录下新建的⽬录不会⾃动继承Sticky权限4.实例# (root⽤户)切换到 /usr/loca/⽬录[root@localhost ~]# cd /usr/local# (root⽤户)递归创建test03⽬录及2个⼦⽬录dir1和dir2[root@localhost local]# mkdir -p test03/dir{1,2}# (root⽤户)创建2个⽤户:user01、user02[root@localhost local]# useradd user01[root@localhost local]# useradd user02# (root⽤户)分别设置dir1和dir2的属主属组为user01和user02[root@localhost local]# chown -R user01:user01 test03/dir1[root@localhost local]# chown -R user02:user02 test03/dir2# (root⽤户)查看⽬录:test03的信息[root@localhost local]# ls -dl test03drwxr-xr-x. 4 root root 28 Nov 2515:37 test03[root@localhost local]# ll test03total 0drwxr-xr-x. 2 user01 user01 6 Nov 2515:37 dir1drwxr-xr-x. 2 user02 user02 6 Nov 2515:37 dir2# (root⽤户)修改⽬录:test03 的权限[root@localhost local]# chmod 1777 test03# (root⽤户)查看⽬录:test03的信息[root@localhost local]# ls -dl test03drwxrwxrwt. 4 root root 28 Nov 2515:37 test03[root@localhost local]# ll test03total 0drwxr-xr-x. 2 user01 user01 6 Nov 2515:37 dir1drwxr-xr-x. 2 user02 user02 6 Nov 2515:37 dir2# 切换到普通⽤户:user01[root@localhost local]# su - user01# !测试(普通⽤户)切换到test03⽬录[user01@localhost ~]$ cd /usr/local/test03# !测试(普通⽤户)查看当前⽬录下的信息[user01@localhost test03]$ lltotal 0drwxr-xr-x. 2 user01 user01 6 Nov 2515:37 dir1drwxr-xr-x. 2 user02 user02 6 Nov 2515:37 dir2# !测试(普通⽤户)⽤户user01将dir1重命名为dir11[user01@localhost test03]$ mv dir1 dir11# !测试(普通⽤户)⽤户user01将dir2重命名为dir22[user01@localhost test03]$ mv dir2 dir22mv: cannot move ‘dir2’ to ‘dir22’: Operation not permitted# !测试(普通⽤户)⽤户user01在dir11⽬录中创建⽂件:1.txt[user01@localhost test03]$ touch dir11/1.txt# !测试(普通⽤户)⽤户user01在dir2⽬录中创建⽂件:2.txt[user01@localhost test03]$ touch dir2/2.txttouch: cannot touch ‘dir2/2.txt’: Permission denied5.注意点SBIT ⽬前只对⽬录有效,⽤来阻⽌⾮⽂件的所有者删除⽂件:⽐较常见的例⼦就是/tmp⽬录权限信息中最后⼀位t表⽰该⽬录被设置了 SBIT 权限SBIT 对⽬录的作⽤是:当⽤户在该⽬录下创建新⽂件或⽬录时,仅有⾃⼰和 root 才有权⼒删除,主要作⽤于⼀个共享的⽂件夹(⽬录)三:chattr引⾔你是否遇到过⽂件或⽬录具有可读写权限,但是使⽤root⽤户删除、修改时提⽰"Operation not permitted"的情况?可能是由chattr设置了⽂件的隐藏保护权限导致通过chattr命令修改⽂件或⽬录属性能够提⾼系统的安全性与chmod命令相⽐,chmod只是改变⽂件的读写、执⾏权限,更底层的属性控制是由chattr命令改变的。
Linux--vim编辑器和⽂件恢复第五章 Vim编辑器和恢复ext4下误删除的⽂件-Xmanager⼯具本节所讲内容:5.1 vim的使⽤5.2 实战:恢复ext4⽂件系统下误删除的⽂件5.3 实战:使⽤xmanager等远程连接⼯具管理Linux5.1 vim主要模式介绍,vim命令模式。
确保系统已经安装了VIM⼯具[root@panda ~]# rpm -qf `which vim`[root@panda ~]# rpm -qf `which vi`扩展:问:vi和vim是同⼀个软件包安装的吗?答:NO,vim是vi的增加版,最明显的区别就是vim可以语法加亮,它完全兼容vi5.1.1 vim编辑器模式⾸次进⼊⽂件 ---- 命令模式出现 “Insert” ---- 编辑模式输⼊: ---- 命令⾏模式A:从编辑模式到命令⾏模式怎样切换?编辑模式->esc->命令模式->: ->命令⾏模式B:字符操作(怎样进⼊编辑模式?)进⼊编辑模式 a i o A I O说明:i 当前字符之前插⼊ (光标前)I ⾏⾸插⼊ (⾏⾸)a 当前字符之后插⼊ (光标后)A ⾏尾插⼊(⾏尾)o下⼀⾏插⼊ (另起⼀⾏)O上⼀⾏插⼊(上⼀⾏插⼊)x 向后删除⼀个字符等同于deleteX 向前删除⼀个字符u 撤销⼀步每按⼀次就撤销⼀次r 替换5.1.2 在命令模式下做的操作:光标定位hjkl 左下上右0 和 home键表⽰切换到⾏⾸, $和end键表⽰切换到⾏尾gg 快速定位到⽂档的⾸⾏ , G定位到未⾏3gg 或者 3G 快速定位到第3⾏/string(字符串) -----找到或定位你要找的单词或内容,如果相符内容⽐较多,我们可以通过N、n来进⾏向上向下查找,并且vi会对查找到的内容进⾏⾼亮显⽰,取消⽤ :noh/^d ----^意思表⽰以什么开头,,查找以字母d开头的内容/t$ -----$意思表⽰以什么结尾,,查找以字母t结尾的内容vim + a.txt 打开⽂件后,光标会⾃动位于⽂件的最后⼀⾏如何对⽂本进⾏编辑删除、复制、粘贴、撤销y 复制(以字符为单位) :表⽰对单个字符进⾏复制,如果要复制整⾏,⽤yy(以⾏为单位)复制N⾏: Nyy ,⽐如: 2yy ,表⽰复制2⾏dd(删除,以⾏为单位,删除当前光标所在⾏)删除N⾏: Ndd ,⽐如: 2dd ,表⽰删除2⾏p : P粘贴剪切: ddx 删除光标所在位置的字符D 从光标处删除到⾏尾u 撤销操作ctrl+r 还原撤销过的操作,将做过的撤销操作再还原回去,也就是说撤销前是什么样,再还原成什么样r 替换,或者说⽤来修改⼀个字符总结:vim如何进⼊其它模式a A o O i I 都是可以进⾏插⼊,编辑模式:进⼊命令⾏模式v 进⼊可视模式ctrl+v 进⼊可视块模式V 进⼊可视⾏模式R 擦除、改写,进⼊替换模式你进⼊以上模式后,想要退出,按esc扩展:插⼊模式中的操作ctrl+p可以进⾏补全操作,所需要的内容必须是在当前打开的⽂件内存在的,它只针对当前⽂件5.1..3 V模式(列)进⼊v模式移动光标选择区域、编程的时候需要进⾏多⾏注释:1)、ctrl+v 进⼊列编辑模式2)、向下或向上移动光标,把需要注释、编辑的⾏的开头选中起来4)、然后按⼤写的I5)、再插⼊注释符或者你需要插⼊的符号,⽐如"#"6)、再按Esc,就会全部注释或添加了删除:再按ctrl+v 进⼊列编辑模式;向下或向上移动光标;选中注释部分,然后按d, 就会删除注释符号。
Vim---配置实⽤的.vimrc⽂件配置⾃⼰电脑的vim,配置⼀个根据个⼈习惯使⽤的.vimrc⽂件。
我的有以下功能等,读者可以根据⾃⼰的个⼈喜好去配置⾃⼰的vim。
1.⾃动插⼊⽂件头,新建C、C++源⽂件时⾃动插⼊表头:包括⽂件名、作者、联系⽅式、建⽴时间等。
(我个⼈是不太喜欢新建源⽂件时⾃动插⼊表头⽂件名,所以将其注释,读者可根据需求⾃⾏更改)2.按“F2”可以直接消除代码中的空⾏3.“F3”可列出当前⽬录⽂件,打开树状⽂件⽬录4.⽀持⿏标选择、⽅向键移动5.代码⾼亮,⾃动缩进,显⽰⾏号,显⽰状态⾏(我个⼈不太喜欢显⽰⾏号,显⽰状态⾏,读者可根据需求⾃⾏修改)6.按“Ctrl + P”可⾃动补全7.[]、{}、()、""、' '等都⾃动补全8.其他功能读者可以研究以下⽂件下⾯是在Linux下配置⾃⼰的vim的⽅法:⼀:1.⾸先打开linux的终端,使⽤ su root命令切换⾄root权限。
2.使⽤ls -al命令会打开当前的所有⽂件包括隐藏⽂件,如下图,找到.vimrc⽂件,如果没有这个⽂件,可以去创建⼀个.vimrc⽂件。
3.之后打开.vimrc⽂件将下⾯的代码粘贴进去,然后根据个⼈需求去修改为适合⾃⼰的.vimrc⽂件,保存退出,然后你可以⽤vim创建⼀个⽂件看⼀下效果,然后再根据个⼈需求⾃⾏修改。
这个⽅法配置的.vimrc⽂件可以由⽤户权限去⽤vim创建⽂件进⾏编辑,root权限⽤vim创建的⽂件⽆法达到你配置的效果。
⼆:如果你想要你配置的⽂件达到⽆论是⽤户权限还是root权限都可以⽤vim创建的⽂件达到你配置的⽂件的效果,可以⽤如下⽅法。
1.⾸先你转到根⽬录,在根⽬录下有个 etc 的⽂件夹,然后进到etc的⽬录下,然后列出当前的所有⽂件。
2.在当前的⽬录中的所有⽂件你会找到⼀个vimrc的⽂件,然后打开该⽂件将代码粘贴进去,然后根据个⼈需求去修改为适合⾃⼰的vimrc⽂件,保存退出,然后此时⽆论你⽤root权限还是⽤户权限⽤vim去创建⽂件都可以达到你配置的效果(提醒⼀下,如果你配置vimrc⽂件出错时,建议你在进⼊etc/⽬录下时,在修改vimrc⽂件之前可以先保存⼀份vimrc⽂件,之后再修改vimrc,防⽌你出错时还可以⽤备份的vimrc⽂件)。
如何在Linux终端中查看和修改文件权限文件权限是Linux系统中非常重要的概念,它控制着对文件的访问、读写和执行等操作。
在Linux终端中,我们可以使用一些简单的命令来查看和修改文件权限。
本文将介绍如何在Linux终端中进行这些操作。
一、查看文件权限1.使用ls命令查看文件权限:在Linux终端中,使用ls命令可以列出当前目录下的文件和文件夹。
在ls的输出结果中,文件权限信息以一串字符的形式显示。
例如:```-rw-r--r--```其中,第一个字符表示文件类型,后面的字符分为三组,每组三个字符代表了文件所有者、文件所属组和其他用户对文件的权限。
2.解读文件权限:文件权限由九个字符组成,每个字符代表不同的权限或属性。
这九个字符中,前面的字符用于表示文件类型,后面的九个字符分为三组,每组三个字符代表了文件的读、写和执行权限。
```-rw-r--r--```上面的例子中,第一个字符"-"表示这是一个普通文件。
后面三个字符"rw-"表示文件所有者对文件具有读写权限,接下来的三个字符"r--"表示文件所属组用户对文件具有读权限,最后的三个字符"r--"表示其他用户对文件具有读权限。
每个权限的含义如下:- r:读权限,用于允许读取文件或查看文件内容。
- w:写权限,用于允许修改文件或添加新内容。
- x:执行权限,用于允许执行文件。
二、修改文件权限1.使用chmod命令修改文件权限:在Linux终端中,使用chmod命令可以修改文件或目录的权限。
chmod的语法为:```chmod [选项] 权限文件名/目录名```例如,要将文件test.txt的所有者和所属组的写权限去除,可以使用以下命令:```chmod u-w,g-w test.txt```这里的"u"表示所有者,"g"表示所属组,"w"表示写权限的去除。
如何使用chmod命令进行文件权限修改在Linux系统中,文件权限是保护文件安全性的重要机制之一。
使用chmod命令可以修改文件的权限,控制文件的访问权限。
本文将介绍如何使用chmod命令进行文件权限修改。
一、了解文件权限在Linux系统下,每个文件都有三组权限:1. 用户权限:用于控制文件所有者对文件的操作权限。
2. 组权限:用于控制文件所属组的成员对文件的操作权限。
3. 其他用户权限:用于控制除文件所有者和所属组成员外的其他用户对文件的操作权限。
每组权限包括读(r)、写(w)和执行(x)三种权限,用数字表示为4(读权限)、2(写权限)和1(执行权限)。
三组权限各自对应一个数字,数字之和即为文件的权限值。
二、使用chmod命令进行权限修改chmod命令的格式为:chmod [权限值] [文件名]1. 修改所有者权限要修改文件所有者的权限,可以使用u选项,命令格式为:chmod u[+|-|=][权限值] [文件名]。
示例:为文件example.txt设置所有者的读写权限,命令为:chmod u+rw example.txt2. 修改所属组权限要修改文件所属组的权限,可以使用g选项,命令格式为:chmod g[+|-|=][权限值] [文件名]。
示例:为文件example.txt设置所属组的读权限,命令为:chmod g+r example.txt3. 修改其他用户权限要修改其他用户的权限,可以使用o选项,命令格式为:chmod o[+|-|=][权限值] [文件名]。
示例:为文件example.txt设置其他用户的执行权限,命令为:chmod o+x example.txt4. 修改全部权限要同时修改所有者、所属组和其他用户的权限,可以使用a选项,命令格式为:chmod a[+|-|=][权限值] [文件名]。
示例:为文件example.txt设置全部用户的读权限,命令为:chmod a+r example.txt5. 修改多个权限要同时修改多个权限,可以将其组合使用。
Vim常⽤命令及配置⽅案很久之前就接触到vim,初学那阵觉得vim很酷炫,但确实对新⼿不是很友好。
我也就简单看了下基本操作就上⼿了,但⼜不是长期在vim下⼯作,这就导致了每⼀次重新使⽤vim都要再去回温下基本操作,很是难受,所以就趁这个机会把基本操作都记录下来,⼀来可以当做⾃⼰的笔记,⼆来希望可以帮到同样和我⼀样⽤过vim但却忘得差不多的⼈。
另外,这⾥也记录⼀下⾃⼰的vim配置,这个配置可能并没有其他⽹友分享的那么强⼤,但⾄少⾜够简单,能够提⾼⾃⼰编码的效率。
vim常⽤命令⾸先先简单梳理⼀下vim的⼯作模式。
vim有三种模式,分别是命令模式(Command mode),输⼊模式(Insert mode)和底线命令模式(Last line mode)。
简单来讲就是,当我们刚打开vim,或者使⽤vim打开了⼀个⽂件,终端上显⽰着⽂件的内容,这时候就是命令模式(如上图就是刚打开⼀个⽂件的情况,此时光标位于第⼀⾏⾏⾸处),在现在的情况下,键盘输⼊⼩写的i a o 或者⼤写I A O中的其中⼀个,就可以进⼊输⼊模式,各个按键的具体意义如下:按键具体意义i从⽬前光标所在处输⼊I在⽬前所在⾏的第⼀个⾮空格符处开始输⼊a从⽬前光标所在的下⼀个字符处开始输⼊A从光标所在⾏的最后⼀个字符处开始输⼊o在⽬前光标所在的下⼀⾏处输⼊新的⼀⾏O在⽬前光标所在的上⼀⾏处输⼊新的⼀⾏r继续输⼊⼀个字符以取代光标所在处后⾯单个字符,⽽后返回命令模式R新输⼊的字符会⼀直取代光标所在处后⾯的字符当我们使⽤上述按键进⼊输⼊模式,配合⽅向键编辑好⽂件内容后,使⽤ESC键可退出输⼊模式,回到命令模式,vim的⼤部分命令都是在命令模式下使⽤。
命令模式下的按键⼗分丰富,主要的操作为光标移动、复制粘贴、搜索替换等光标移动的基本按键如下:按键具体意义h 或向左箭头键(←)光标向左移动⼀个字符j 或向下箭头键(↓)光标向下移动⼀⾏k 或向上箭头键(↑)光标向上移动⼀⾏l 或向右箭头键(→)光标向右移动⼀个字符在上⾯的基础上,如果你想光标的位置⼀次移动多⾏或者在同⼀⾏上移动多个字符,可以有以下⼏种⽅法:直接输⼊数字并在其后输⼊相应的⽅向,例如输⼊20j或20↓表⽰光标向下移动20⾏,输⼊20l或20→表⽰光标向右移动20个字符。
Linux终端中的chmod命令更改文件权限在Linux终端中,chmod命令被广泛用于更改文件的权限。
文件权限是指用户对文件的读、写和执行的权限。
通过chmod命令,用户可以控制文件的访问权限,从而保护文件的安全性。
以下是对chmod命令的详细介绍和使用示例。
1. chmod命令概述chmod命令用于更改文件或目录的权限。
它允许用户设置文件的读(r)、写(w)和执行(x)权限,以及特殊权限,如SetUID(s)、SetGID(s)、Sticky位(t)等。
通过改变文件的权限,用户可以决定谁可以读取、写入或执行文件。
2. 基本语法chmod命令的基本语法如下:```chmod [选项] 模式文件...```其中,选项用于指定操作的方式,模式用于设置权限的方式,文件是指要更改权限的文件或目录。
3. 使用示例下面我们通过一些示例来演示chmod命令的使用方法。
3.1 更改文件权限假设我们要将一个文件file.txt的权限设置为所有用户只能读取,可以使用以下命令:```chmod 444 file.txt```这将为所有用户(包括所有者、所在组用户和其他用户)设置只读权限。
如果我们要允许所有者读写文件,但其他用户只能读取,可以使用以下命令:```chmod 644 file.txt```这将为所有者设置读写权限,同时为所在组用户和其他用户设置只读权限。
3.2 更改目录权限对于目录的权限设置和文件有些不同。
假设我们要将一个目录dir 的权限设置为只有所有者可以读写,而其他用户只能读取,可以使用以下命令:```chmod 755 dir```这将为所有者设置读、写和执行权限,同时为所在组用户和其他用户设置读和执行权限。
3.3 使用符号方式设置权限除了使用数字方式设置权限外,chmod命令还支持使用符号方式设置权限。
例如,以下命令与之前的chmod 644 file.txt命令效果相同:```chmod u=rw,go=r file.txt```其中,u表示所有者(user),g表示所在组用户(group),o表示其他用户(others),=表示设置权限,rw表示读写权限,r表示只读权限。
Vim 保存退出后自动修改文件权限
1、复制vimrc 文件到当前用户目录
cp /etc/vimrc ~/.vimrc
2、根据文件后缀名修改
把一下vimscript代码粘贴到~/.vimrc文件内容最后; 修改权限部分可自已修改function! ModifyFileReadonlyScript(current_file)
"判断文件是否存在
if filereadable(a:current_file)
"修改文件权限
let chmod_command = "silent !chmod a+x" . a:current_file
execute chmod_command
endif
endfunction
" expand('%:p') 文件绝对路径
autocmd VimLeave *.php call ModifyFileReadonlyScript(expand('%:p'))
3、根据文件内容修改
把一下vimscript代码粘贴到~/.vimrc文件内容最后; 修改权限部分可自已修改function! ModifyFileReadonlyScript(line, current_file)
" 判断文件是否存在
if filereadable(a:current_file)
" 判断文件内容
if a:line =~ '<?php'
"修改文件权限
let chmod_command = "silent !chmod a+x " . a:current_file
execute chmod_command
endif
endif
endfunction
" getline(1) 获取文件第一行内容expand('%:p') 文件绝对路径
autocmd VimLeave * call ModifyFileReadonlyScript(getline(1), expand('%:p'))
4、根据文件类型修改
把一下vimscript代码粘贴到~/.vimrc文件内容最后; 修改权限部分可自已修改function! ModifyFileReadonlyScript(current_type, current_file)
" 判断文件是否存在
if filereadable(a:current_file)
" 判断文件类型
if a:current_type == 'javascript'
let chmod_command = "silent !chmod a+x " . a:current_file
execute chmod_command
endif
endif
endfunction
" $filetype 获取文件类型expand('%:p') 文件绝对路径
autocmd VimLeave * call ModifyFileReadonlyScript(&filetype, expand('%:p'))。