Linux基础命令学习笔记 一.登录Linux [root@linux~]# root:目前使用者账户 @之后接的内容:主机名称 root为管理员账户 #:提示字元(对于root账户) $:提示字元(对于一般账户) 系统出现乱码时,设置语言:LANG=en或者LANG=en_US 如何开通root帐户 ubuntu默认不启用root账号,第一个用户具有管理员的权限,用它的普通密码就能执行sudo,用passwd root直接能修改root密码 ~$ sudo passwd root Password: //第一个用户的密码 Enter new UNIX password: //root密码 Retype new UNIX password: passwd: password updated successfully su root(进入root账号) 二.指令方式 [root@linux~]# command [-options] parameter1 parameter2… 1. command为指令的名称,例如变化路径的指令为cd 2. 中括号[]不存在实际的指令中,加入参数设定是,通常为-号,例如–h; 完整的参数名称输入用—符号,例如–help 3. command,-options,parameter1...中间以空格来区分。不论几个空格shell都视为一格。 4. 指令太长时,使用\符号来连接下一行 5. 在Linux系统中,英文大小写字母是不一样的。如CD和cd不同 简单指令: date日期 cal 日历 cal [month] [year] 显示任意年月的日历 bc 进入计算器+加 -减*乘 /除 ^指数 %余数quit退出scale=3小数点精确位数 三.重要热键 [Tab]按键 1. 命令补全,查询匹配的指令 #ca[Tab][Tab] 2. 档案补齐, #ls –al ~/.bash[Tab][Tab] [Tab]接在一串指令的第一个字的后面,则为命令补全 [Tab]接在一串指令的第二个字以后时,则为档案补全 [Ctrl] + C 停止执行的程序 [Ctrl] + D 退出文字界面相当于exit功能 四.错误信息查看 [root@linux~]#DATE ~bash:DATE:command not found bash表示我们的shell的名称 查询指令 man 1. man date 2. 输入/string向下搜索string这个字串 3. 输入?string向上搜索string这个字串 4. q 离开指令查询帮助 info m进入到某一节点文章 n前往下一个info page处 p前往上一个info page处 s(/)在info page当中进行搜索 u向上移动一层 b光标移动到该info画面中第一个node处 e光标移动到该info画面中最后一个node处 关于关机: 1. 观察使用者who 观察网络情况 netstat –a 背景程序 ps –aux 2. 关机指令: 将资料同步写入硬盘:sync 关机之前必须执行(只有root账户才能执行) 常用关机指令:shutdown 只有root有权利关机 重新开机,关机:reboot,halt,poweroff shutdown语法 [root@linux~]#/sbin/shutdown [-t秒] [-arkhncfF] [时间] [警告信息] 示例: [root@linux~]#/sbin/shutdown –h 10 ‘I will shutdown after 10mins’ 这个机器将在10分钟后关机!并且会显示在登入者的屏幕 -t sec:-t后面加秒数,就是“过几秒后关机” -k:不要真的关机,只是发送警告讯息出去 -r:将在系统的服务停掉之后重新开机 -h: 将在系统的服务停掉之后,;立即关机 -n:不经过init程序,直接以shutdown的功能关机 示例: [root@linux~]# shutdown -h now 立刻关机,其中now相当于时间为0的状态 [root@linux~]# shutdown -h 20:25 系统在今天的20:25分会关机 [root@linux~]# shutdown –h +10 系统再过10分钟后自动关机 [root@linux~]# shutdown –r now 系统立刻重新开机 [root@linux~]# shutdown –r +30 ‘The system will reboot’ 再过三十分钟系统会重新开机,并显示后面的信息 [root@linux~]# shutdown –k now ‘This system will reboot’ 仅发出警告信件的参数!系统并不会关机。 三.Linux档案属性 -rw-r--r-- 1 root root 5976 Jun 25 08:53 install.log.syslog [属性] [连结数] [档案拥有者] [群组] [档案容量] [修改日期] [档案名] 属性1:权限 第一个属性: d:表示目录 drwxr-x--- -:表示档案 -rw-r--r-- 一个用户可以附属在一个或多个群组之下。 举例: [-][rwx][r-x][r--] [-] :代表为档案 [rwx]:拥有人的权限:可读,可写,可执行 [r-x]:同群组使用者权限:可读,可执行 [r--]:其他使用者权限:可读 在Windows下一个档案是否可以执行是否属性来判断的,例如.exe .com .bat 在Linux下一个档案是否能够执行由x属性来决定的,跟档案名没有绝对的关系 档案名:若档案名前多一个[.],则代表这个档案为[隐藏档]。 例如:[.bashrc_history]就是隐藏档。 改变档案权限: chgrp:改变档案所属群组 chown:改变档案所属人 chmod:改变档案的属性、SUID、等等的特性 chgrp [-R] users install.log 1.users:必须是已经存在的群组,存在于/etc/passwd 2.[-R]递回的持续变更,值该目录下的文档都执行操作 chown [-R] root:root install.log 1.同时改变拥有者为root,群组为root 2.[-R]递回的持续变更,值该目录下的文档都执行操作 改变权限: 方法一: r:4 w:2 x:1 [-rwxrwx---] owner=rwx=4+2+1=7 group=rwx=4+2+1=7 others=---=0+0+0=0 方法二: 基本属性:(1)user (2)group (3)others 由三个字母来代表u,g,o a代表all即全部三个群 chmod u=rwx,go=rx .bashrc (u=rwx,go=rx中间没有空格) ls –al .bashrc -rwxr-xr-x 1 root root 395 Jul 4 11:45 .bashrc 目录属性的意义: r:表示具有读取目录结构清单的权限 w:具有移动该目录结构清单的权限: 1.建立新的档案和目录 2.删除已经存在的档案和目录(不论该档案属于谁) 3.将已存在的档案或目录进行更名 4.搬移该目录内的档案,目录位置。 x: x与能否进入该目录有关 [root@linux tmp]# mrdir testing *mkdir是建立目录指令 [root@linux tmp]# chmod 744 testing *改变目录权限 [root@linux tmp]# touch testing/test *touch可以建立一个没有内容的档案 [root@linux tmp]# chmod 600 testing/test *改变档案的权限 [root@linux tmp]# ls –al drwxr--r-- 2 root root 4096 Jul 14 01:05 test [root@linux tmp]# su dmtsai *切换用户身份为dmtsai [dmtsai@linux tmp]$ ls –al test ---------------???? ? test *由于test档案的权限是root,dmtsai属于others,仅有r的权限 [dmtsai@linux tmp]$ cd testing bash:cd: testing/:Permission denied *我们具有r的权限,但是没有x,所以dmtsai无法进入到/tmp/testing [dmtsai@linux tmp]$ exit 档案名 *.sh:批次档,该文档有shell写成 *Z ,*.tar ,*tar.gz *.zip , *.tgz :经过打包的压缩档 *.html , *.php :网页相关档案 四.文件与目录管理 相对路径与绝对路径 .:代表当前的目录,也可以使用./表示 .. : 代表上一层目录,也可以../来表示 举例: 1.当前在/home目录下,要进入到/var/log这个目录,如何操作? cd /var/log (absolute) cd ../var/log (relative) 单个档案或目录的最大容量名称为255个字节 包含完整路径名称及目录/之后完整档名为4096个字节 Linux两层文件结构 重要目录: /etc:这个目录是系统设定档放置的地方,包括系统上的账号和密码(/etc/passwd, /etc/shadow),还有个主要的网络服务的设定文档。 /usr/local /opt:软件安装一般统一放置在这两个目录下 /var:这个目录是在管理系统运作过程中的重要中间暂存资料的如:/var/lib与/var/run 最终的资料如邮件存放在/var/spool/mail目录中。所有服务的登录档(谁,时间,地址,操作)都存放在/var/log目录下。 异常存放地址:/var/log/messages Linux档案系统ext2,ext3是ext2的升级版,可以对操作日志有记录,快速重新恢复文件。 相对路径与绝对路径 绝对路径:路径的写法一定由根目录/写起如cd /usr/share 相对路径:路径的写法不是由/写起如cd ../man 相对路径指“相对于目前工作目录的路径” 目录的相关操作 . 代表次层目录 .. 代表上一层目录 -代表前一个工作目录 ~ 代表[当前使用者身份]所在的家目录 ~account 代表account这个使用者的家目录 cd:变换目录 pwd: 显示当前的目录 mkdir:建立一个新的目录 rmdir: 删除一个空的目录 cd 举例: [root@linux ~]# cd ~dmtsai #代表去了dmtsai这个使用者的家目录,即/home/dmtsai [root@linux dmtsai]# cd ~ #代表回到自己的家目录,即/root [root@linux ~]#cd #没有加上任何路径,也是代表回到自己的家目录 [root@linux ~]#cd .. #表示去目前的上层目录 [root@linux ~]#cd – #表示回到刚刚的那个目录 [root@linux ~]#cd /var/spool/mail #绝对路径 [root@linux ~]#cd ../mqueue #相对路径,退回上级目录后进入到mqueue目录 mkdir(建立新目录) [root@linux ~]# mkdir [-mp]目录名称 -m:设定文件的权限!直接设定,不需要看预设权限(umask) -p:帮助你直接将所需要的目录递回建立起来 范例1: [root@linux tmp]# mkdir test1/test2/test3/test4 #没有办法直接建立此目录 [root@linux tmp]# mkdir –p test1/test2/test3/test4 #加了这个-p的参数,可以自行帮你建立多层目录 范例2: [root@linux tmp]#mkdir –m 711 test2 [root@linux tmp]#ls –l /test2 drwx--x--x 2 root root 4096 Jul 18 12:54 test2 rmdir:删除空的目录 [root@linux tmp]#rmdir [-p]目录名称 # -p :连同上层“空的”目录一起删除 [root@linux tmp]#rmdir test1 删除空目录test1 [root@linux tmp]#rmdir –p test2/test3/test4 3个空目录一起删除 目录需要一层一层的删除,而且被删除的目录里面不能存在其他的目录或文件。如果要删除目录下的所有内容时需要用rm –rf test指令(较危险!) ls:查询 ls:不显示隐藏的文件和目录 ls –a:显示所有的文件和目录 ls –l:不显示隐藏的文件和目录(显示所有属性) ls –al:显示所有的文件和目录(显示所有属性) ls –l bashrc*模糊查询,将匹配bashrc字段的文件和文件夹全部显示 mv(移动档案与目录,或更名) [root@linux ~]#mv [-fiu] source destination [root@linux ~]#mv [options] source1 source2…directory 参数: -f:force意思,强制复制不询问。 -i:若目标档案(destination)已经存在,就会询问是否覆盖 -u:若目标已经存在,且source较新,才会更新。 范例一:将档案移动到目录中 [root@linux ~]#mv bashrc mvtest 范例二:将目录更名 [root@linux ~]#mv mvtest mvtest2?完成更名。更名的其他一个指令:rename 范例三:将两个以上文件或目录移动 [root@linux tmp]#touch testfile [root@linux tmp]#mkdir testdir1 testdir2 [root@linux tmp]#mv testfile testdir1 testdir2 #注意如果有多个来源档案或目录,则最后一个目的档一定是“目录” 文件内容查询: cat:由第一行开始显示档案内容 tac:从最后一行开始显示,tac就是cat倒着写 nl:显示的时候,顺便输出行号! more:一页一页的显示档案内容 head:只看头几行 tail:只看尾巴几行 od:以二进制的方式读取档案内容 cp:复制 [root@linux~]#cp [-adfilprsu]来源档(source)目的档(destination) [root@linux~]#cp [options] source1 source2 source3 directory 参数: -a:复制所有内容,包括文件和文件夹,和文件的属性 -d:来源档的属性为连结档(快捷方式),复制连结档属性(快捷方式指向的文件),不是复制快捷方式本身。本质:创建一个快捷方式,并指向来源档指向的文件。 -s:目的档复制成为连结档(快捷方式),不管来源档A是真实文件还是快捷方式,复制完成后的文件成为快捷方式,并指向A。本质:创建一个快捷方式,并指向来源档(范例四) -f:为强制的意思,若有重复或其他疑问时,先不回询问用户,直接复制 -i:若目的档(destination)已经存在时,在覆盖时会先询问 -r:递回持续复制,用于文件夹的复制行为;文件夹的权限会改变 -u:若destination比source旧才会更新destination!常用于文档更新 注意:如果来源档有两个以上,则最后一个目的档一定要目录才可以 范例一:将家目录下的.bashrc复制到/tmp下,并更名为bashrc [root@linux~]#cd /tmp [root@linux~]#cp ~/.bashrc bashrc [root@linux~]#cp –i ~/.bashrc bashrc cp:overwrite ‘bashrc’?n #加上参数i,会在复制文件重复时提示。 范例二:将/var/log/wtmp复制到/tmp底下 [root@linux~]#cd /tmp [root@linux~]#cp /var/log/wtmp . ?想要复制到当前文件夹,最后的.不能忘 #如果要将档案的所有特性都一起复制过来,可加入参数-a 范例三:复制/etc这个目录下的所有内容到/tmp底下 [root@linux~]#cp /etc/ /tmp cp:omitting directory ‘/etc’ ?如果是目录,不能直接复制,需要加上参数-r [root@linux~]#cp –r /etc/ /tmp #注意:-r可以复制文件夹,复制后的文件夹权限会相应改变 #将权限也一起复制:cp –a /etc /tmp 范例四:将复制的bashrc建立一个连接档(快捷方式) [root@linux~]#cp –s bashrc bashrc_slink [root@linux~]#ls –l bashrc* -rw-r--r-- 2 root root 395 jul 18 22:08 bashrc 1rwxrwxrwx 2 root root 395 jul 18 22:08 bashrc_slink -> bashrc #bashrc_slink是由-s参数造成。创建了一个快捷方式 范例六:bashrc_slink复制成为bashrc_slink2(区分-d –s的用法) [root@linux~]#cp bashrc_slink bashrc_slink2 [root@linux~]#cp –d bashrc_slink bashrc_slink3 [root@linux~]#cp –s bashrc_slink baschrc_slink4 [root@linux~]#ls –l bashrc_slink* lrwxrwxrwx 1 root root 6 jul 18 22:31 bashrc_slink – > bashrc (该文件原本存在) -rw-r--r--1 root root 395 jul 18 22:31 bashrc_slink2 (只复制了一个快捷方式,无任何意思) lrwxrwxrwx 1 root root 6 jul 18 22:31 bashrc_slink3 – > bashrc (-d用法,复制快捷方式,并指向bashrc_slink指向的文件) lrwxrwxrwx 1 root root 6 jul 18 22:31 bashrc_slink4 – > bashrc_slink(-s用法,复制快捷方式,并指向源文件) 范例七:将家目录的.bachrc和.bash_history复制到/tmp [root@linux tmp]#cp ~/.bashrc ~/.bashrc_history /tmp #可以将多个资料一次复制到同一个目录去! 复制档案时,一般复制后文件的权限就是操作者的权限。由于这个特性,在进行备份时要注意特殊权限档案,例如密码档以及一些设定档。不能直接以cp复制,需要加入-a或-p参数。 另外,如果要复制档案给其他使用者,也必须要注意到档案的权限(包括读、写、执行以及档案拥有者),否则,其他人没有权限进行操作。 复制前的注意点: 1.是否需要完整的保留来源档案的资讯(包括文件和属性) 2.来源档案是否为连结档(快捷方式) 3.来源档是否为特殊的档案,例如FIFL,socket等 4.来源档是否为目录? rm(移除档案或目录) 参数: -f:就是force意思,强制删除 -i:互动模式,在删除前会询问使用者 -r:递回删除。常用于目录的删除。 范例一:删除一个不为空的目录 [root@linux tmp]#mkdir test [root@linux tmp]#cp ~/.bashrc test/ [root@linux tmp]#rm 范例二:删除一个带有-开头的档案 [root@linux tmp]#ls *aa* -aaa- [root@linux tmp]#rm –aaa- rm:invalid option --a ?因为“-”是参数 [root@linux tmp]#rm ./-aaa-?正确方法 [root@linux tmp]#rm –rf test 会将test目录下的文件和子目录全部删除,后果严重 资料截取 head(取出前面几行) [root@linux ~]#head [-n number]档案 参数: -n:后面接数字,代表显示几行 范例: [root@linux ~]#head /etc/man.config #预设的情况中,显示前面十行!若要显示20行,就要这样: [root@linux ~]#head –n 20 /etc/man.config tail(取出后面几行) [root@linux ~ ]#tail [-n number]档案 tail用法与head用法一致。 范例:若要显示文件第11行到第20行 那么先取前20行,再取后面的10行 head –n 20 bashrc | tail –n 10 修改档案时间和建新档:touch touch使用情况: 1. 建立一个空的档案 2. 将某个档案日期修订为目前 那么umask指定的是『该预设值需要减掉的权限!』因为r、w、x分别是4、2、1分,所以棉!也就是说,当要拿 掉能写的权限,就是输入2分,而如果要拿掉能读的权限,也就是4分,那么要拿掉读与写的权限,也就是6分, 而要拿掉执行与写入的权限,也就是3分,这样了解吗?请问您,5分是什么?呵呵!就是读与执行的权限啦!如 果以上面的例子来说明的话,因为umask为022,所以user并没有被拿掉属性,不过group与others的属性被拿掉 了2 (也就是w这个属性),那么由于当使用者 档案预设权限:umask 在预设权限的属性上,目录与档案是不一样的。由于档案我们不希望他具有可执行的权力,预设情况中,档案是没有可执行(x)权限的。因此∶ ●若使用者建立为『档案』则预设『没有可执行( x )项目』,亦即只有rw这两个项目,也就是最大为666分,预设属性如下∶ -rw-rw-rw- ●若使用者建立为『目录』,则由于x与是否可以进入此目录有关,因此预设为所有权限均开放,亦即为777分,预设属性如下∶ drwxrwxrwx umask就是“该预设值需要减掉的权限”,r,w,x分别为4、2、1分 去掉写入的权限022 建文件:(-rw-rw-rw-)-(-----w--w-)è-rw-r--r-- 建目录:(drwxrwxrwx)-(d----w—w-)èdrwxr-xr-x 操作: [root@linux ~ ]# umask 002 #去掉others写入的权限。 档案隐藏属性: chattr(设定档案隐藏属性) [root@linux ~]#chattr [+-=] [ASacdistu]档案或目录名称 参数: +:增加一个特殊参数,其他原本存在参数则不变 -:移除一个特殊参数,其他原本存在参数则不变 =:设定一个参数 A:设定A后,这个文件(或目录)的存取时间atime将不可被修改 i:可以让一个文件“不能被删除、改名、设定连结也无法写入或新增资料”,提高系统安全性。(重要) a:当设定a后,这个文件只能增加资料,而不能删除,只有root才能设定,非常适用于log file这种登录文件。 [root@linux tmp]#touch attrtest [root@linux tmp]#chattr +i attrtest [root@linux tmp]#rm attrtest rm:cannot remove ‘attrtest’: Operation not permitted #即使root也是没有权限将这个文档删除。 [root@linux tmp]#chattr –i attrtest #解除档案设定 lsattr(显示档案隐藏属性) [root@linux ~] lsattr [-aR]档案或目录 参数: -a:将隐藏档的属性显示; -R:连同子目录的资料也一起显示出来! 档案特殊权限:SUID/SGID/Sticky Bit Set UID:让一般使用者在执行程序时,能够短暂具有该程序拥有者的权限。对文件有效,文件夹无效 Sticky Bit:在具有SBit的目录下,使用者若在该文件夹下具有w,x的权限,则当使用者在该目录下建立档案或目录时,只有档案拥有者与root才有权力删除。 权限设定 我们使用chmod xyz filename的方式来设定filename的属性 4:SUID 2:SGID 1:Sticky bit file:档案类型查看 档案搜索 which(寻找“执行档”) [root@linux ~]#which [-a] command 参数: -a:将所有可以找到的指令均列出,而不止第一个被找到的指令名称 [root@linux ~]#which passwd /usr/bin/passwd whereis(寻找特定档案) 参数: -b:只找binary的文件 -m:只找在说明档manual路径下的档案 -s:只找source来源档案 -u:没有说明档的档案! [root@linux ~]#whereis passwd #任何与passwd有关的档名都会被列出来 locate 直接查询文件 [root@linux ~]#locate filename find [root@linux ~ ]#find [PATH] [option] [action] 参数: 1. 与时间相关参数: -atime n:在n天之前的“一天之内”被access过的档案 -ctime n:在n天之前的“一天之内”被change过状态的档案 -mtime n:在n天之前的“一天之内”被modification过的档案 -newer file:file为一个存在的档案,只要档案比file还要新,就会被列出来 2. 与使用者或群组名称有关的参数: -user name:name为使用者账号名称 -group name:name为群组名称 -nouser:寻找档案的拥有者不存在/etc/passwd的人 -nogroup:寻找档案的拥有群组不存在与/etc/group的档案 3. 与档案权限及名称有关的参数 -name filename:搜寻档案名称为filename的档案 -type TYPE:搜寻档案的类型为TYPE的,主要类型:一般正规档案(f),装置档案(b,c)目录(d),连结档(l),sockte(s),FIFO(p) -perm mode:搜寻档案属性“刚好等于”mode的档案,这个mode为chmod的属性值。-rwsr-xr-x的属性为4755 -perm –mode:搜寻档案属性“必须要全部包括的mode属性”例如要搜寻-rwxr--r--,即0744的档案,使用-perm -0744,这个档案的属性为-rwsr-xr-x,亦即4755,也会被列出来 -perm +mode:搜寻档案属性“包含任一mode的属性” 4. 额外可进行的指令: -exec command: command为其他指令,-exec后面可再接额外的指令来处理搜寻到的结果。 范例一:将过去系统上面24小时内有更新过内容(mtime)的档案列出 [root@linux ~]#find / -mtime 0 #0代表目前的时间,从现在开始到24小时前。 #find / -mtime 0 从今天之前的3*24~4*24小时之间更新的档案 #-atime和-ctime的用法相同 范例二:比较档案新旧 [root@linux ~]#find /etc -newer /etc/passwd 范例三:搜寻/home下属于dmtsai档案 [root@linux ~]#find /home –user dmtsai 范例四:找出档案名为passwd这个档案 #搜寻-name的档案名 范例五:搜寻档案属性为f的档案 [root@linux~]#find /home -type f 范例六:将找到的档案使用ls –l列出来 [root@linux ~]#find /home –type f -exec ls –l {} \; #-exe后面的ls –l就是额外的指令 # -exec最后用\;结束 范例七:搜寻档案名包含’http’ find /etc -name ‘*http*’ 五.磁盘系统管理 查看磁盘容量:df [root@linux~]#df [-ahikHTm] [文档名或目录] 参数: 1. –h以较易读的容量格式显示 2. 不计算硬盘容量,而是以inode的数量来显示 [root@linux~]#df –h #将容量结果以较易读的方式显示出来 [root@linux~]#df –h /etc #将/etc做在的磁盘已易读形式显示容量 显示文件或文件夹容量:du [root@linux~]#du [-ahskm]档案或目录名称 参数: -h:以易读的方式显示 -s:不显示目录内的文件容量,只显示总的容量 [root@linux~]#du –hs /* #显示根目录下每个文件夹的容量 查看系统内存:free 查看系统信息CPU+内存+进程:top Linux的EXT2档案系统(inode) 在标准的ext2档案系统当中,我们将每个档案的内容分为两个部分来储存,一个是档案的属性,另一个是档案的内容。所以ext2规划出inode与Block来分别存储档案的属性(放在inode)与档案的内容(放在Block) Block:记录档案内容资料 inode:记录档案的相关属性,档案内容放置在哪一个Block之内 ext2档案系统特色 1. Blocks与inode在一开始格式化时就已经固定 2. 一个partition能够容纳的档案数与inode有关 3. 一般来说,每4Kbytes的硬盘空间分配一个inode 4. 一个inode的大小为128bytes 5. Block为固定大小,目前支持1024/2048/4096bytes等 6. Block越大,则损耗的硬盘空间也越多。 7. 1个inode可以对应多个Block 8. 当block大小越小,而inode数量越多,则可利用的空间越多,但是大档案写入的效率差 9. 当block大小越大,而inode数量越少,大档案写入效率佳,可是浪费的硬盘空间较多。 六.vi文本编辑器 vi共有三种模式,“一般模式”、“编辑模式”、“指令列命令模式” 一般模式: 以vi处理一个文档,刚进入时就是一般模式,该模式下可以“删除字元”或“删除整行”可以复制,粘贴资料。但是无法编辑 编辑模式: 输入【i,I,o,O,a,A,r,R】等字母后进入到编辑模式。在页面下方出现‘insert或replace’才可以输入任何字来输入到档案中 指令列命令模式: 在一般模式中输入:/ ?可以提供读取、搜索、存档、退出vi、显示行号等操作 一般模式:光标移动 n n gg:移动到文档的第一行 0:移动到这一行的最前面 G:移动到档案的最后一行。 一般模式:搜索与取代 /word:开始向下搜索关键字word ?word:开始向上搜索关键字word n:重复执行搜索命令 N:执行反向结果,若之前输入/word向下搜索,按N则向上搜索。 :n1,n2s/word1/word2 n1,n2为数字,在n1与n2行之间寻找word1字段,并用word2来取代。 :1, $s/word1/word2/gc 从第一行到最后一行寻找word1字串,并将该字串取代为word2!在取代前显示提示,是否取代。 一般模式:删除、复制、粘贴 x,X: x向后删除一个字符(del),X向前删除一个字符(backspace) nx:n为数字,连续向后删除n个字符。 dd:删除光标所在的那一行 ndd:n为数字,删除n行 yy:复制光标所在那一行 nyy:复制n行 p,P: p在光标行下面粘贴,P在光标行上面粘贴 u:撤销上一步 [Ctrl]+r:重做上一个动作 u和[Ctrl]+r搭配使用可以完成一直撤销的操作 进入编辑模式: i ,I:插入。i:在光标处进行插入操作。I光标移动到该行最前面出开始插入 a,A: a从目前光标处下一个字符开始插入,A所在行最后一个字符开始插入 o,O: o在光标下一行插入新的一行。O光标所在上一行插入新的一行。 r,R:取代 r会取代光标处的一个字符;R会一直取代光标所在文字,知道ESC 指令列命令模式 :w 将编辑的资料保存 :w! 强制保存。 :q 退出 :q! 强制退出 :wq 保存后退出 ZZ 若档案没有变更,则不保存离开,若档案已经变动,则保存后退出 :n1, n2 w [filename] 将n1到n2的内容存储成filename这个档案 :! command 暂时离开vi到指令模式下执行command的显示结果。 例如“:! ls /home”即离开vi后查看/home底下以ls输出的档案资讯。 :set nu :显示行号,设定后会在每一行的字首显示该行行号 :set nonu:取消行号。 vi简单练习题 1. 请在/tmp这个目录下建立一个名为vitest的目录; 2. 进入vitest这个目录当中; 3. 将/etc/man.config拷贝到本目录底下(或由上述的连结下载man.config档案); 4. 使用vi开启本目录下的man.config这个档案; 5. 在vi中设定一下行号; 6. 移动到第58行,向右移动40个字元,请问您看到的双引号内是什么目录? 7. 移动到第一行,并且向下搜寻一下『bzip2』这个字串,请问他在第几行? 8. 接著下来,我要将50到100行之间的man改为MAN,并且一个一个挑选是否需要修改,如何下达指令? 9. 修改完之后,突然反悔了,要全部复原,有哪些方法? 10. 我要复制51到60行这十行的内容,并且贴到最后一行之后; 11. 删除11到30行之间的20行; 12. 将这个档案另存成一个man.test.config的档名; 13. 去到第29行,并且删除15个字元; 14. 储存后离开吧! 整个步骤可以如下显示∶ 1. 『mkdir /tmp/vitest』 2. 『cd /tmp/vitest』 3. 『cp /etc/man.config .』 4. 『vi man.config |
|
来自: 走出尘埃 > 《工控之路——计算机技能》