Linux的目录结构:
硬盘:
在Linux里边,我们没有盘符这个概念,我们用目录的形式进行管理。把每一个分区和某一个目录对应,以后对这个目录的操作就是对这个分区的操作,这样就实现了硬件管理手段和软件目录管理手段的统一。这个把分区和目录对应的过程叫做挂载-mount。这种对应关系可以由用户随时中断和改变。
目录名称 | 意义 |
/bin | bin是binary的缩写。这个目录沿袭了UNIX系统的结构,存放着使用者最经常使用的命令。例如cp、ls、cat,等等。 |
/boot | 这里存放的是启动Linux时使用的一些核心文件。 |
/dev | dev是device(设备)的缩写。这个目录下是所有Linux的外部设备,其功能类似DOS下的.sys和Win下的.vxd。在Linux中设备和文件是用同种方法访问的。例如:/dev/hda代表第一个物理IDE硬盘。 |
/etc | 这个目录用来存放系统管理所需要的配置文件和子目录。 |
/home | 用户的主目录,比如说有个用户叫wang,那他的主目录就是/home/wang也可以用~wang表示。 |
/lib | 这个目录里存放着系统最基本的动态链接共享库,其作用类似于Windows里的.dll文件。几乎所有的应用程序都须要用到这些共享库。 |
/lost+found | 这个目录平时是空的,当系统不正常关机后,这里就成了一些无家可归的文件的避难所。对了,有点类似于DOS下的.chk文件。 |
/mnt | 这个目录是空的,系统提供这个目录是让用户临时挂载别的文件系统。 |
/proc | 这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。也就是说,这个目录的内容不在硬盘上而是在内存里。 |
/root | 系统管理员(也叫超级用户)的主目录。作为系统的拥有者,总要有些特权啊!比如单独拥有一个目录。 |
/sbin | s就是Super User的意思,也就是说这里存放的是系统管理员使用的管理程序。 |
/tmp | 这个目录不用说,一定是用来存放一些临时文件的地方了。 |
/usr | 这是最庞大的目录,我们要用到的应用程序和文件几乎都存放在这个目录下。其中包含以下子目录; |
/usr/X11R6 | 存放X-Window的目录; |
/usr/bin | 存放着许多应用程序; |
/usr/sbin | 给超级用户使用的一些管理程序就放在这里; |
/usr/doc | 这是Linux文档的大本营; |
/usr/include | Linux下开发和编译应用程序需要的头文件,在这里查找; |
/usr/lib | 存放一些常用的动态链接共享库和静态档案库; |
/usr/local | 这是提供给一般用户的/usr目录,在这里安装软件最适合; |
/usr/man | man在Linux中是帮助的同义词,这里就是帮助文档的存放目录; |
/usr/src | Linux开放的源代码就存在这个目录,爱好者们别放过哦! |
/var | 这个目录中存放着那些不断在扩充着的东西,为了保持/usr的相对稳定,那些经常被修改的目录可以放在这个目录下,实际上许多系统管理员都是这样干的。顺带说一下系统的日志文件就在/var/log目录中。 |
Linux 的 命令 格式
命令格式:
命令 | -选项 | 参数 |
ls | -la | /ect/default |
注意事项:
1:命令区分大小写 且命令和参数之间用 空格 隔开;
2:当多个参数时可以写在一起;
3:选项是对命令的特别定义,以"-"开始,多个选项可用一个"-" 连起来,如"ls -l -a"与"ls -la"相同。
文件命名规则:
1:最大长度为255字节;
2:大小写敏感(Flies1 和 files1 是两个文件);
3:无专用扩展名(UNIX文件名可出现多个小数点,并无特殊含义);
特殊文件名:
绝对路径 :是从根开始一级一级地进入各个子目录,最后指定该命令或文件。
相对路径 :是从当前目录进入某目录,最后指定该命令或文件。
两个特殊的目录 . 和 .. ,分别指示当前目录和当前目录的父目录。
通常比配符:
* 匹配任何字符或任何数目的字符
? 匹配任何单字符
文件 管理 命令:
名词:list
功能:列出当前目录下的文件和目录
ls(list)是一个最常用的命令,用于显示当前目录下的文件和目录
指令名称:ls
指令英文原义:list
指令所在路径:/usr/bin/ls
执行权限:All User
-a 显示所有文件,包括隐藏文件
-l 使用长格式显示
-F 附加文件类别,符号在文件名最后
-R 递归显示目录
-d 列出指定的目录
第一:显示当前目录的内容;
[root@yanghsia root]#ls (#显示当前目录下的内容)
install.log install.log.syslog
linux约定以 以“.”开头的文件为 invisible document(隐含文件),要显示这些文件可以使用 ls 命令的“-a” 参数。
[root@yanghsia root]#ls -a (# 显示所有内容,包括隐含文件)
. .bash_logout .bashrc .gconfd intall.log .tcshrc
.. .bash_profile .cshrc .gtkrc install.log.syslog .Xresources
linux的每一个目录都包含“.”“..”两个特殊目录,分别代表 当前目录 和 上级目录。 “/”表示系统的根;而“~”则为用户的 主目录(home)。用户主目录是用户登录后所处的目录,例如系统管理员root的主目录为“/root”,而普通用户daniel的主目录则为“/home/daniel”
第二:显示文件的详细信息
[root@yanghsia root]#ls -l (# 以长格式列出当前目录下所有内容)
total 28
-rw-r--r-- 1 root root 24477 4 月 2 20:35 install.log
-rw-r--r-- 1 root root 4096 4 月 2 20:20 install.log.syslog
输出信息中各个部分的含义如表1 所示。
第一项 | 第二项 | 第三项 | 第四项 | 第五项 | 第六项 | 第七项 |
操作权限 | 连接数目 | 所有者 | 用户组 | 大小 | 创建时间 | 名称 |
-rw-r--r-- | 1 | root | root | 24477 | 4 月 2 20:35 | install.log |
用ls 命令显示的文件操作权限有10 个小格,最前面的那个小格是一个特殊标记,用来区分目录和链接,其中d 表示目录(如drwx--x--x),l 代表链接(如lrwx--x--x),如果是“-”,则表明它只是一个普通文件( -rw-r--r-- )。其余的格于以三个为一组,其中第一组代表文件所有者的权限,第二组代表组用户的权限,第三组代表其他用户的权限,每个组中的三个小格依次分别代表读权限(r)、写权限(W)和可执行权限(x),如果是“-”,则代表不具备相应的权限。例如,-rwxrw-r--(用数字可以表示为764),表明该文件的所有者拥有对该文件的全部权限,组用户拥有读和写权限,而其他用户则只有读权限。
由于Linux 是一个多用户、多任务操作系统,同一文件可能同时被很多人使用,因此。一定要为文件设置好相应的权限,这样才能保护好重要数据。
名词:cd
功能:切换目录
指令名称:cd
指令英文原义:change directory
指令所在路径:Shell内部指令
执行权限:All User
语法:cd [目录]
功能描述:切换目录
范例: $ cd .. 回到上一级目录
$ cd ~ 回到用户的宿主目录
$ cd / 切换到根目录
$ cd ../usr 切换到上一层目录的usr目录
cd(change directory)命令 可以改变用户所在的目录
[root@yanghsia yanghsia]#cd /home/ (# 切换到/home/目录)
[root@yanghsia home]#cd yanghsia/ (# 切换到当前目录下yanghsia 子目录中)
[root@yanghsia yanghsia]#cd.. (# 切换到上一级目录)
[root@yanghsia yanghsia]#cd~ (# 切换到用户主目录:home)
名词:pwd
功能:显示当前的工作目录
指令名称:pwd
指令英文原义:print work directory
指令所在路径:/usr/bin/pwd
执行权限:All User
语法:pwd
功能描述:显示目前所在的工作目录
范例:$ pwd /usr/X11R6/bin (显示当前工作目录为/usr/X11R6/bin)
由于Linux 的树状目录结构非常庞大,用户经常会忘记当前所处的目录。命令提示符一般又只显示最后一级的目录名称,这时pwd 能帮上你的大忙。
[root@yanghsia root]#pwd (# 显示当前所在的工作目录)
/root
名词:mkdir
功能:创建目录
功能说明:建立目录
语 法:mkdir [-p][--help][--version][-m <目录属性>][目录名称]
补充说明:mkdir可建立目录并同时设置目录的权限。
参 数:
-m<目录属性>或--mode<目录属性> 建立目录时同时设置目录的权限。
-p或--parents 若所要建立目录的上层目录目前尚未建立,则会一并建立上层目录。
--help 显示帮助。
--verbose 执行时显示详细的信息。
--version 显示版本信息。
mkdr (make directory) 命令可以用来创建目录
[root@yanghsia root]#mkdir student ( 创建student 子目录)
名词:rmdir
功能:删除目录
功能说明:删除(空)目录。
语 法:rmdir [-p][--help][--ignore-fail-on-non-empty][--verbose][--version][目录...]
补充说明:当有空目录要删除时,可使用rmdir指令。
参 数:
-p 删除指定目录后,若该目录的上层目录已变成空目录,则将其一并删除。
rmdir(remove directoy)命令可以用来删除目录,但要求该目录中不包含任何文件或子目录。
[root@yanghsia root]#rmdir student (# 删除student 子目录)
名词:cp
功能:复制文件
指令名称:cp
指令英文原义:copy
指令所在路径:/usr/bin/cp
执行权限:All User
语法:cp
-pr [源文件或目录] [目的文件或目录]
-p 保留原文件的日期属性
-r 递归复制所有文件
功能描述:复制文件
范例:
$ cp file1 file2
将文件名为 f1 的文件复制一份为文件名为 f2 的文件。
$ cp file1 file2 dir
将文件file1,file2复制到目录dir
$ cp -r dir1 dir2
将dir1下的所有目录包括子目录陆续地复制到dir2
cp(copy)命令用于将文件从一个地方复制到另一个地方,在进行文件复制时,需要指定要复制的源位置和目标位置。
第一、复制文件;
[root@yanghsia root]#cp source.txt dest.txt (# 将source.txt 复制成dest.txt)
[root@yanghsia root]#cp source.txt /tmp/ (# 将source.txt 复制到/tmp/目录中)
第二、覆盖文件前询问;
如果在要复制的目标位置上已经存在了相同名称的文件,若用强行复制将会覆盖该文件,这时可以用“-i”参数来询问用户是否确实需要覆盖该文件。
[root@yanghsia root]#cp -i source.txt dest.txt (# 将source.txt 复制成dest.txt)
cp:overwrite dest.txt ? (# dest.txt 已经存在,询问用户是否覆盖该文件,按Y 键覆盖,技N 键不覆盖)
第三、强制复制;
如果在要复制的目标位置上已经存在了相同名称的文件,用“-f”参数可以强制覆盖该文件。
[root@yanghsia root]#cp -f source.txt dest.txt (# 强制复制文件source.txt 成dest.txt)
第四、递归复制;
cp 命令不仅可以用来复制文件,也可以用来复制目录,由于目录中可能包含子目录,因而需要用到“-R”参数来进行递归复制。
[root@yanghsia root]#cp -R /home/yanghsia/ /imp/ (# 将目录/home/yanghsia/复制到/imp/目录下)。
名词:rm
功能:删除文件
rm(remove)命令可以用来删除文件。
指令名称:rm
指令英文原义:remove
指令所在路径:/usr/bin/rm
执行权限:All User
语法:rm -irf [文件或目录]
-i 互动模式,删除前再做一次确认
-r 递归删除目录
-f 强制删除
功能描述:删除文件
第一、删除文件
[root@yanghsia root]#rm student.txt (# 删除文件student.txt)
[root@yanghsia root]#rm * (# 删除当前目录下的所有文件)
第二、强制删除文件
在删除文件时,有时Linux 会询问你是否确实需要删除这些文件,其目的是避免误操作。如果确信要删除这些文件,可以用“-f”参数来强制删除这些文件,此时Linux 将不会再作提示。
[root@yanghsia root]#rm -f *.bak (# 强制删除当前目录下所有后缀为.bak 的文件)
第三、删除文件前询问
如果不是很确定,删除文件时最好带上“-i”参数,Linux 会询问你是否确实执行删除操作,这样做的好处是可以避免误操作。Linux 命令行方式下可没有像Windows 那样的“回收站”,删除操作是不可恢复的,文件一旦被删除,就可能永远无法找回它了,所以一定要认真对待。删除文件时习惯性的加上“-i”参数,说不定在某个时候就会帮上你的大忙。
[root@yanghsia root]#rm -i *.txt (# 删除所有后缀为.txt 的文件)
rm:remove regular empty file 'student.txt' (# 询问是否删除文件,按Y 键删除,按N 键不删除)
第四、递归删除
除删除文件外,rm 命令还可以用来删除目录,它不像rmdir 那样要求被删除的目录是空的。由于目录下可能会包含子目录,因此需要用“-r”参数进行递归删除。
[root@yanghsia root]#rm –r /tmp/yanghsia/ (# 删除/tmp/yanghsia/目录)
名词:mv
功能:移动文件或目录
指令名称:mv
指令英文原义:move
指令所在路径:/usr/bin/mv
执行权限:All User
语法:mv -if [源文件或目录] [目的文件或目录]
-i 覆盖前提示
-f 强制移动
功能描述:移动和重命名文件
mv(move)命令可以将文件或目录或移动到另一个位置,或者更改文件或目录的名称。
[root@yanghsia root]#mv student.txt /imp/ (# 将student.txt 移到/imp/目录)
[root@yanghsia root]#mv student.txt teacher.txt (# 将student.txt 更名为teacher.txt)
文件查找命令
名词:whereis
功能:定位文件所在的目录
使用whereis 命令可以定位常用命令的位置:
[root@yanghsia root]#whereis ls (# 定位ls 命令的位置)
ls:/bin/ls (# ls 位于/usr/bln 目录下)
whereis 命令不是通过查找磁盘上的所有文件来实现定位的,你可以随便指定一个可执行文件,估计whereis 会找不到,这是因为whereis 是根据环境变量PATH 来查找文件的,而PATH 通常设置成存放命令的那些路径,如 /bin、/usr/bin 等,因此whereis 的用途仅限于定位shell 命令所在的位置。
名词:find
功能:查找文件
指令名称:find
指令英文原义:find
指令所在路径:/usr/bin/find
执行权限:All User
语法:find [搜索路径] [搜寻关键字] [文件或目录]
-type ? 指定搜索文件的文件类型
-gid n 指定搜索组id为n的文件
-group gname 搜寻组名称为gname的文件
-name Foo 搜寻与Foo类似的所有文件
功能描述:寻找文件或目录,在指定目录里面(如果不指定目录就是当前目录)查找指定文件名的文件
范例:
$ find / -name file1 -print
执行find从根目录/寻找file1的位置并把输出
显示到屏幕上
$ find /etc -name f* -print
在/etc目录下搜寻所有以f开头的文件
$ find /etc -name c?? -print
搜寻所有以c开头后面有两个字符的文件
$ find / -name core -print -exec rm -rf {} \;
查找名字为core的文件,然后将其删除
find 命令可以用来从指定的目录开始查找文件,它的速度虽比不上whereis 命令,但没有任何限制,而且功能要比whereis 命令强。
[root@yanghsia root]#find -name student.txt
/tmp/student.txt (# 查找结果)
名称:locate
功能:查找文件或目录
除find 命令外,locate 也是在系统中查找文件的常用方法。
[root@yanghsia root]#locate student.txt (# 查找student.txt 文件)
用locate 命令查找的文件和find 一样没有任何限制,但执行速度却比find 要快不少,其主要原因在于,locate 不是从磁盘中实时查找文件,而是到由updatedb 命令产生的信息库中查找相应的文件和目录,这样一来速度当然了。
[root@yanghsia root]#updatedb
如果locate 找不到某个文件,而你又确信该文件肯定存在,那一定是updatedb 生成的信息库已经过时了。此时你要做的就是以root 身份登录,然后执行updatedb 命令,重新建立整个系统所有文件和目录的资料库,虽然这个过程可能会浪费一点时间,但以后再查找文件时就方便多了。
磁盘管理命令
名称:df
功能:显示文件系统的当前占用情况
df(disk filesystem)可以用来获得文件系统当前占用的磁盘空间大小,以及剩余的可用空间的大小。
$df (# 查询文件系统当前占用的磁盘空间大小)
filesystem | 1K-blocks | Used | available | Use% | Mounted on |
/dev/hda2 | 13203660 | 1869264 | 10663684 | 15% | 15% |
在df 命令的输出结果中,Filesystem 列显示各个文件系统对应的硬盘分区名称,1K-blocks 列为每个分区占用的磁盘空间大小(单位是1KB),Used 列是已经使用的磁盘空间的大小,Available 列是目前剩余的可用磁盘空间的大小,Use%列是各个分区磁盘空间的使用率,最后一列Mounted on 则代表分区在整个Linux 文件系统中的加载位置。
名称:du
功能:显示文件或目录占用的磁盘空间大小
du(disk usage)命令用来统计文件或目录占用的磁盘空间大小。
[root@yanghsia root]#du -sm /bin/ (# 查询/bin/目录占用的磁盘空间大小)
7 /bin
du 命令的输出结果显示/bin/目录共占据7MB 磁盘空间,如果不加“-s”参数则可以显示此目录下每个文件的大小。
名称:mount
功能:加载存储设备
如果你是个资深的Windows 用户,肯定已经习惯将光盘或软盘插入驱动器中后,就可以通过相应的磁盘(如 A:)来访问这些存储设备上的数据了。但遗憾的是,在Linux 中使用光盘和软盘就没有这么简单了。Linux 采用的方式是,必须先将这些设备映射到系统中的某个目录之后,才可以存取上面的数据。
将软盘和光盘映射到文件系统指定目录的过程称为加载(mount),它是Linux 中很重要的一个概念。其实,加载就是将某个存储介质(如软盘或光盘)与文件系统中的某个目录(如/mnt/floppy/或/mnt/cdrom/)建立起联系,此后凡是对该目录的操作,实际上就是读写此存储介质上相应的数据。
如果想在Linux 中使用软盘,首先将软盘插入软盘驱动器中,然后执行mount 命令,将软盘加载到文件系统中:
[root@yanghsia root]#mount /dev/fd0/mnt/floppy/ ( # 将软盘加载至文件系统的/mnt/floppy/目录)
同理,光盘的使用方法也是先加载后使用:
[root@yanghsia root]#mount /dev/cdrom/mnt/cdrom/ ( # 将光盘加载到文件系统的/mnt/cdrom/目录)
名称:umount
功能:卸载存储设备
对初学者来说,在Linux 命令行方式下使用软盘和光盘的确要比Windows 麻烦许多,不仅需要在使用前先加载它们,使用完毕后还必须先卸载它们,然后才能将软盘或光盘从驱动器中取出。特别是对光盘来说,如果不先将其卸载,那无论怎么按光驱上的退出按钮,都无法于打开光驱的门,更别说取出光盘了,此时不要以为是自己的光驱出问题。
当软盘加载后不再需要使用时,必须先执行umount 命令,然后才能取出软盘。
[root@yanghsia root]#umount /mnt/floppy/ (# 将软盘卸载,不再与目录/mnt/floppy/相关联)。
光盘的卸载与软盘类似。
[root@yanghsia root]#umount /mnt/cdrom/ (# 将光盘卸载,不再与目录/mnt/cdrom/相关联)
若当前正处于光盘加载的目录(即/mnt/cdroml/),或有其他用户正在使用该光盘,则无法成功地完成卸载。例如,在卸载存储设备时,Linux 提示“device is busy”的错误信息,则需用cd 命令将工作目录切换到其它目录,并要求其他用户退出此目录,然后才能卸载光盘。如果是在Red Hat Linux 9 的桌面环境使用光驱,那就不会有这些麻烦了。只要把光盘放进光驱,系统将自动在桌面上出现一个光盘图标,只要双击它打开,就可以像在Windows98/2000/XP 下一样来查看光盘内容了。
文件处理命令
名称:cat
功能:显示文件内容
指令名称:cat
指令所在路径:/usr/bin/cat
执行权限:All User
语法:cat [文件名]
功能描述:显示文件内容,如果我们的文本文件很长,一个屏幕显示不完,cat是不会自动分页的。我们可以换用命令more
cat(concatenate)命令可以用来显示文件的内容。
[root@yanghsia root]#cat ~/.bashrc (# 显示用户主目录下隐藏文件bashrc的内容)
Cat 命令还可以用来将已有的多个文件合并成一个文件。
[root@yanghsia root]#cat 1.txt 2.txt > 0.txt (# 连接多个文本文件)
Linux 系统中一个很有趣的概念就是I/O 重定向,可以用输出重定向符“>”将输出内容写入到一个指定的文件中。通常命令的执行结果都显示在屏幕上,但如果你想将结果记录到一个文件中,就可以利用该输出重定向的功能了。
名称:more
功能:分页显示文件内容
指令名称:more
指令所在路径:/usr/bin/more
执行权限:All User
语法:more [文件名]
f或(空格) 显示下一页
(Enter) 显示下一行
q或Q 退出more
功能描述:分页显示文件内容,命令显示文本文件时,如果内容过多,会自动的在每一页结束时暂停下来,等到用户按一下空格键再继续。默认值是10行
当文件内容过长以至于整个屏幕都显示不下时,用cat 命令只能看到最后几行,这时more 命令可就大有处了,它可以一页一页地查看内容冗长的文件内容。
[root@yanghsia root]#more /etc/passwd (# 分页显示/etc/passwd 文件的内容)
当文件内容超过一屏以至于显示不下时,more 命令将暂停显示文件中的其它内容,同时在屏幕的底部左侧显示“--more--”,提示还有未显示完的内容,此时可以按空格键来显示下一屏内容,也可以按Q 键结束显示。
名称:less
功能:分页显示文件内容
less 命令的作用和more 类似,都是用来浏览内容较多的文件,唯一的不同在于less 命令除了可以按空格键显示文件内容外,还可以利用上、下键来上下翻动显示内容。而more只能向下显示文件内容,不能再回头去查看已经出现过的内容。当文件内容超过一屏时,less 将暂停显示文件中的其它内容,同时在屏幕底部显示提示符“:”,此时可以用上、下键来浏览文件内容,也可以用空格键继续显示文件中的其它内容,或者按Q 键退出。
名词:head
功能:显示文件的前几行
指令名称:head
指令所在路径:/usr/usr/bin/head
执行权限:All User
语法:head -num [文件名]
-num 显示文件的前num行
功能描述:查看文件的前几行
范例:$ head -20 /etc/services
名词:tail
功能:显示文件的最后几行
指令名称:tail
指令所在路径:/usr/usr/bin/tail
执行权限:All User
语法:tail -num [文件名]
-num 显示文件的后num行
功能描述:查看文件的后几行
范例: $ tail -30 /etc/services
名称:grep
功能:查找字符串
指令名称:grep
指令所在路径:/usr/bin/grep
执行权限:All User
语法:grep [要找的字串] [要寻找字串的源文件]
功能描述:在文件中搜寻匹配的行并输出(文本内容搜索)
范例:# grep baoshi /etc/passwd
# ls -l /etc | grep inetd.conf
grep 命令可以在一个或多个文件中查找某个指定的字符串,如果找到则显示文件中包含该字符串的每一行。
[root@yanghsia root]#grep xxxy/etc/passwd (# 从文件/etc/passwd 中查找字符串xxxy)
xxxy:x:500:500:Xxxy Swau:/home/xxxy:/bin/bash (# 查找结果)
grep 还可以与其它命令搭配起来使用。例如,用ps 命令可以列出系统中当前正在运行的所有进程信息,但如果只对名为mount 的进程感兴趣,就可以用grep 命令将其“过滤”出来。
[root@yanghsia root]#ps -aux | grep mount
“管道”是Linux 中另一个很特殊的概念,用符号“|”表示,其功能是将某个程序的输出作为另一个程序的输入。在上面的例子中,ps 命令执行完毕后所有的输出都将被作为输入传递给grep 命令。
名称:vi
功能:编辑文本
不管你使用的是哪种操作系统,总要使用文本编辑器编辑文件,在Win 下可以使用记事本或UltraEdit,那么在Linux 下呢?一般有两种选择:emacs 和vi,其中vi 是所有与UNIX类似的系统都会提供的一个标准文本编辑器。对于初学者来说,emacs 和vi 掌握起来都不太容易,因为两者的功能都很强大,而且操作方式与自己以前已经习惯的文本编辑器截然不同。但相对而言,vi 还是更容易上手一些。在命令提示符后输入vi 及要编辑的文件名后,就可以进入vi 全屏编辑界面。
[root@yanghsia root]#vi student.txt (# 编辑文件student.txt)
试着输入字符串“why”,没有反应是吧?这是你还没有了解它的“脾气”。与你以前使用的普通文本编辑器不同,vi 有三种操作状态,分别是命令模式(command mode)、输入模式(input mode)和末行模式(last line mode),理解vi 的这三种模式是很重要的。输入模式的主要功能是文本录入,这与常用的文本编辑器是一致的;命令模式的主要功能是移动鼠标和编辑文本;末行模式的主要功能是查找、替换、保存及退出。
vi 启动后默认进入命令模式。
在命令模式下输入i、a、o 都可以进入输入模式。由命令模式切换到输入模式的三种方法是有细微区别的:按i 键将从当前光标所在位置开始输入,按a 键将从当前光标所在位置的下一个字符开始输入,按o 键将添加一个新行,同时光标移到该行的第一个字符处开始输入。回到命令模式则按Esc 键。
在命令模式下输入“:”可以进入末行模式。命令错误或按Esc 键将回到命令模式。键
入pi、q、wq 将退出vi 回到提示符下。
进程管理命令
改变文件或目录的许可权限:chmod
改变文件的所有权:chown
改变用户分组:chgrp
名词:ps
功能:查看进程
Linux 一个很突出的优点就是可以同时高效地执行多个任务,为了更好地协调这些任务,Linux 提出了进程的概念。什么是进程呢?简单地说就是系统中正在执行的各种工作,例如,在用文本编辑器修改一个文档时,在Linux 看来就是有一个进程正在执行。退出编辑器后,相应的进程也就结柬了。
如果你对系统中正在运行的进程感兴趣,可以使用ps(process status)命令查看。
[root@yanghsia root]#ps -aux (# 列出系统中当前所有的进程)
......
xxxy 1234 1.0 2.2 4560 1392 pts/0 S 14:18 0:00 -bash
root 1265 0.1 1.6 4092 1008 pts/0 S 14:18 0:00 suroot
1266 1.6 2.2 4568 1412 pts/0 S 14:19 0:00 -bash
root 1308 0.0 1.1 2700 732 pts/0 R 14:20 0:00 ps -aux
看到系统中当前所有正在运行的进程了吧。实际上ps 就类似于Windows 下的任务管理器。了解系统中正在执行的进程是管理员的一项必备基本功,如果你对系统的当前状态一点也不清楚,估计在同黑客周旋时要吃大亏的。
名词:kill
功能:结束程序
就像在Windows 中可以用任务管理器结束某个任务一样,在Linux 中也同样可以在需要时结束当前正在运行的一些进程,方法是使用kill 命令。Kill -9进程号 强制删除进程
[root@yanghsia root]#kill -9 1308 (# 结束进程标识符为1308 的进程)
在使用kill 命令时,必须告诉系统究竟想要结束哪个进程。所有的进程在Linux 中都有一个编号,称为进程标识符(PID),在用ps 命令查看进程时,输出信息中的第二个字段就是PID。如果某个进程使用了kill 命令仍不能结束它,试试用“-9”参数。
名称:killall
功能:结束所有进程
如果不知道PID 但知道进程名称,可以使用killall 命令杀死指定名称的进程。例如,在用mount 命令加载软盘时产生了硬件错误,mount 命令不断地去读写磁盘,这时如果想结束该进程而又不知道其进程标识符,就可以用下面的方法。
[root@yanghsia root]#killall -9 mount (# 结束名称为mount 的进程)
如果系统中名称相同的进程有多个时(比如同时有多个用户在执行mount 命令进行加载),该怎样区分它们呢?
以root 身份执行killall,它会结束系统中每个用户正在运行的同名进程,而如果是普通用户,就只会影响属于自己的进程,不会影响系统中的其他用户。
名称:top
功能:监视进程状态
对一个称职的系统管理员来说,任何时候都能监视系统性能和进程状态是很重要的,在Windows 中可以使用任务管理器,而在Linux 中则可以使用top 命令。
[root@yanghsia root]#top (# 监视系统状态)
软件包管理命令
名称:rpm
功能:RPM 软件包的管理
RPM 的全名是Red Hat Package Manager(Red Hat 软件包管理工具),由Red Hat 公司开发的一个软件包管理系统。虽然RPM 这一文件格式已经打上了Red Hat 的烙印,但其设计理念却是开放的,并且现在已经成为公认的行业标准了。使用RPM 可以很轻松地实现软件的安装、查询和卸载,你甚至会发现它比在Windows中安装软件还要简单。
Red Hat 公司一直鼓励Linux 软件开发商以RPM 方式来发布他们的软件,标准的RPM软件包都以 xxx-v-m.p.rpm 命名,如tree-1.2-20.i386.rpm,它包含了软件包的名称(tree),主版本号(1.2),次版本号(20)及适用的硬件平台(i386),但并非所有的RPM 软件包都按照这样的格式来命名。
目前RPM 除了在Red Hat Linux 中得到了广泛应用外,其实还可以在许多其它的Linux和Unix 系统上运行。
第一、软件安装
在用RPM 安装软件包时,软件包内所有的文件都将自动被复制到Linux 系统中的正确位置上,无需你亲自动手。
[root@yanghsia RPMS]#rpm -ivh tree-1.2-20.i386.rpm (# 安装软件包)
第二、卸载软件
要卸载已经安装的RPM 软件包也很简单,使用“-e”参数就可以了。
[root@yanghsia root]#rpm -e tree-1.2-20.i386.rpm (# 卸载软件包)
在卸载软件包时,只要给出软件包的名称(如“tree”或“tree-1.2”)就可以了,而不必象当初安装软件包时要用完整的文件名。
第三、升级软件
Linux 下软件升级的速度比Windows 下的软件快多了,RPM 将软件的升级变得空非常简单。
[root@yanghsia RPMS]#rpm -Uvh tree-1.2-20.i386.rpm (# 升级软件包)
在升级软件包时,RPM 将首先删除系统中已有的旧版本,然后再安装新版本。其实不管以前是否曾经安装过该软件,都可以用“rpm-Uvh”来进行安装。
第四、查询软件
如果对某个软件包的相关信息感兴趣,可以使用RPM 的查询功能。例如,在使用gcc编译源程序时,可能关心它当前的版本号,通过执行命令:
[root@yanghsia root]#rpm -q gcc (# 查询gcc 软件包)
gcc-3.2-7 (# 查询结果)
屏幕上将显示查找到的软件包的名称和版本号。
如果还不满足,想知道tree 软件包中究竟包含哪些文件,RPM 依然能够很轻松地实现。
[root@yanghsia root]#rpm -ql tree (# 查询tree 软件包中的文件)
能够知道系统中安装的所有软件包吗?当然没问题,对RPM 来讲简直就是举手之劳。
[root@yanghsia root]#rpm -qa (# 查询系统中安装的所有软件包)
名称:tar
功能:打包文件_
tar 命令可以将指定的文件和目录打包成一个文件,这是一个在Unix 系统中很早就被广泛使用的一个文件备份工具。在没有光盘和刻录机的年代,系统管理员通常都将数据备份到磁带机上,由于磁带只能顺序读写,备份多个目录和文件是相当麻烦的,这时tar 命令可就帮上大忙了。
第一、打包和解包
tar 命令最常用的功能是打包和解包。
[root@yanghsia root]#tar cvf backup.tar (# 将当前目录下所有文件打包为backup.tar)
需要时可以用下面的命令将其解包:
[root@yanghsia root]#tar xvf backup.tar (# 将backup.tar 文件解包)
第二、压缩和解压
tar 命令可以将一个目录下的所有文件打包成一个文件,但并不进行压缩,也就是说,打包后的文件所占用的磁盘空间等于该目录下所有文件所占磁盘空间的总和。如果磁盘空间不足或为了便于传输时,可以在打包文件时为tar 命令指定相应的参数,告诉tar 使用相应的压缩工具进行压缩。例如,执行命令:
[root@yanghsia root]#tar czvf backup.tar.gz /tmp/ ( # 将整个/tmp/ 打包并且压缩backup.tar.gz)
要解包经过压缩的文件,可以使用下面的命令:
[root@yanghsia root]#tar xzvf backup.tar.gz (# 解包经过压缩的backup.tar.gz 文件)
tar 本身并不具备压缩和解压缩的功能,通过为其加上参数“-z”,tar 会使用gzip 命令来对打包后的文件进行压缩和解压缩。习惯上将压缩后的打包文件命名为xxx.tar.gz 或xxx.tgz。
压缩及解压缩命令
名称:gzip
功能:压缩文件
gzip 是Linux 中最常用的压缩工具,使用它可以得到很高的压缩率,这也就是为什么从FTP 网站下载的文件大多都是采用gzip 压缩的原因。虽然处理时间会比较长,但经gzip 压缩后的文件大小将小很多。下面的命令用来对文件进行压缩:
[root@yanghsia root]#gzip data.txt (# 压缩文件data.txt)
gzip 只能用来对单个文件进行压缩,通常不能用来处理目录,如果要将整个目录压缩成一个文件,可以将gzip 和tar 结合起来使用:先用tar 命令将其打包成一个文件,然后再用gzip 对打包后的文件进行压缩。
名称:gunzip
功能:解压缩文件
用gzip 压缩后的文件可以用gunzip 进行解压缩,但gunzip 的功能并不仅限于此,还可以用来解压缩扩展名为gz、tgz、z 和Z 的文件。
[root@yanghsia root]#gunzip data.txt.tgz (# 解压缩data.txt.tgz 文件)
名称:bzip2
功能:压缩文件
bzip2 也是Linux 下的一个常用文件压缩命令,Linux 内核源码在发布时就是采用bzip2进行压缩的。用bzip2 可以将一个文件压缩成.bz2 格式。
[root@yanghsia root]#bzip2 data.txt (# 压缩文件data.txt)
名称:bunzip2
功能:解压缩文件
用bzip2 压缩后的文件可以用bunzip2 进行解压。
[root@yanghsia root]#bunzip2 data.txt.bz2 (# 解压缩文件data.txt.bz2)
现在经常会在网上碰到名为*tar.bz2 的文件,这些文件都是用tar 打包并用bzip