分享

学霸Linux基础命令吐血总结,给你当新华字典用

 走出尘埃 2016-08-03

学霸Linux基础命令吐血总结,给你当新华字典用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

LinuxEXT2档案系统(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为数字,光标向下移动n行

n: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

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多