Linux基础命令
安装完Linux,并配置好Linux的启动,那么如果在安装时你选的是启动到图形界面下的话,现在你就应该可以看到登陆的窗口了。输入你的用户名和密码,就开始了你的Linux之旅。
在Linux下,你的确可以体验到永不死机的神话。Linux系统的确强大,在他的下面你的确不用担心莫名其妙的蓝屏。笔者使用Linux以有几年,在这几年里从没发生过真正的死机,就算是偶尔的在xwindows下系统没有了响应也可以按“ctrl+alt+backspace”退出窗口返回命令行模式下。
其实要了解linux,那就一定要习惯命令行模式,因为xwindows只是运行在命令行模式上的一个应用程序而已,就象Dos与Windows3.x一样,所以了解一下Linux的常用命令还是很有用处的。下面我就介绍一些在Linux下使用频率最高的几个命令,这些命令的介绍并不象专业书籍那样介绍的大而全,我只是拣着那些对我们普通用户最有用的来介绍,每个命令都对照着相同功能的Dos命令来说,并列出一些常用的参数。
在介绍一些具体的命令前先要说明的是,如果碰到不会用的命令,可以打“man [command]”来得到关于这个命令的帮助,如果想知道一个命令都有什么参数的时候可以“command -help”来得到。要注意的是Linux里的参数的输入形式和Dos里的不一样,在命令后面应该打一个空格,然后打“-”,最后再跟一个或多个参数。还要注意的是Linux下是区分大小写的!
一、基本操作命令
ls
相当于dos下的dir命令,是列文件列表的命令,和dir差不多。参数有:
-a
列出系统中的隐含文件。
< 注:Linux下的隐含文件是靠文件名的格式来表示的,不同于Dos是靠文件属性来表示。具体的说只要这个文件是以“.”开头的,那么他就是一个隐含文件>
-l
以长式列出,就是把该文件或目录的所有信息都列出来,一个文件占一整行。
cd
和Dos下的cd一样,转换目录的命令。需要指出的是Linux下的转到上级目录要打“cd ..”而不是dos下的“cd..”(也就是说“cd”后面要有个空格)
注:“cd -”表示返回上一次的目录,“cd /”表示返回根目录,“cd ~”表示返回当前用户的目录
pwd
列出当前目录命令,相当于dos下没有参数的cd命令。比如:
[root@ttqq bin]# pwd
/usr/bin
[root@ttqq bin]#
这表示我们现在在“/usr/bin”目录下。
有关目录和文件的命令:
mkdir
建立新目录,相当于Dos的md命令。一般就用 mkdir [dirname],参数:
-m mode
表示建立目录时默认的目录模式。这个是dos和windows所没有的功能。主要是关于权限的问题,读者如有兴趣请参考相关专业书籍。
rmdir
删除目录,相当于Dos的rd命令。用法:rmdir [dirname]。
注:这个命令只能删除空的文件夹,如果文件夹中有内容,需要使用rm -r命令!
cat
在文件后面追加文件或在屏幕上打印文件内容,追加功能相当于Dos的copy file1+file2,而在屏幕上打印文件内容可以和Dos的typeml来类比。如果文件太大,以至于在一屏幕上无法完全显示,那么可以试试下面这个命令。
more
分屏显示文件内容,和Dos下的more命令大致相同,而他的特点是可以和别的命令来搭配使用。如:cat /home/eec/myfile | more
cp
拷贝文件,相当于dos下的copy使用方法和dos下的copy一样。参数:
-r
相当于dos的xcopy/s。用于拷贝一个目录下的所有文件和文件夹。
ln
建立文件链接。相当于Windows下的快捷方式。用法:
“ln 源文件 目标文件”
mv
重新命名文件,等价于Dos的move和ren命令。用法:“mv oldname newname”比如:“mv 111 /home/ekoala/222”就是把“111”这个文件移动到“/home/ekoala”目录下,并改名为“222”
touch
改变文件的修改时间或建立时间。相当于dos的copy file+nul。最简单的用法是:“touch file_name”,即把“file_name”这个文件的时间改为当前时间。
注意:如果touch后面的文件不存在的话就会在磁盘上建立一个新的空文件。
二、进程或进程的相关命令
首先介绍一下linux的多进程,linux的多进程要比windows的多进程更有效率、更加稳定。在命令行状态下输入的普通命令都在前台完成,而如果你在命令后面加一个"&",那么这个命令就在后台运行。好,言归正传,现在开始介绍有关进程的常用命令。
at
安排作业在稍后执行。这个命令非常强大,同时也非常复杂,这个命令可以说是unix/linux的一大特色。我们先来看一个具体的实例:
[root@ttqq bin]# at 21:05 Jul 31
at>cat /usr/docs/ccttrr.htm >myfile
at>
warning:commands will be executed using /bin/sh
job 5 at 2000-07-31 21:05
以上的意思为输入在7月31日21点05分运行一个程序,接着系统提示用户输入命令或命令列表,使用“ctrl+d”终止。终止at后,系统给出一个警告,这个响应表示指定的工作将在指定的时间运行,工作号为5,如果想取消此作业可用与之相连的工作号来完成。
如果命令很多,那建议将命令列表放入一个文件,若文件名是"comtable"那就输入:
[root@ttqq bin]# at 21:05 Jul 31
由于at的特殊性,所以linux系统对at有一些权限上的规定:
超级用户可以随意使用at命令,但对普通用户来说,则由/etc/at.allow与/etc/at.deny这两个文件来决定。
如果/etc/at.allow这个文件存在,那么只有在该文件中提及的用户可以使用该命令,相反的,如果这个文件不存在,则检查/etc/at.deny这个文件,该文件中未提及的用户可以使用该命令。如果两个文件都不存在。那就只有超级用户可以使用该命令。如果/etc/at.deny这个文件为空,那么所有用户都可以用这个命令。
at的参数有:
-l
列出现在由at安排的作业。超级用户可以列出所有的用户,普通用户只能列出自己的at作业。
-m
作业完成后,即使没有输出,也将邮件送到用户。
-r
从作业中取消指定的作业,比如取消上例的作业:at –r 5。超级用户可以取消所有的用户,而普通用户只能取消自己的作业。
ps
显示当前正在执行的进程,由于进程执行的非常快,所以本命令只能列出查询瞬间发生的进程。以下为超级用户用ps -al参数的输出:
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
100 S 0 273 265 0 69 0 - 472 wait4 tty1 00:00:00 bash
100 S 500 286 266 0 62 0 - 466 wait4 tty2 00:00:00 sh
100 S 503 299 267 0 64 0 - 465 read_c tty3 00:00:00 sh
000 S 500 318 286 0 62 0 - 1193 do_sel tty2 00:00:00 vi
100 R 0 328 273 0 70 0 - 638 - tty1 00:00:00 ps
其中"PID"为进程号,对进程的管理就是通过进程号来实现的。ps的参数有:
-a
显示所有的进程,支线于超级用户使用。
-l
长格式输出。
-u
用户格式输出,显示用户名和起始时间。
-r
只显示当前运行的进程。
-s
加入子cpu时间和页错误报告。
下面我在说一下ps各列标题的意思: 列名
PID 进程号
PRI 进程的优先级
NI Linux的nice值,负数少意味着占用较少的cpu时间。
SIZE 虚拟映象的大小,计算式为:“文本+数据+栈”。
RSS 驻留空间的大小,显示当前常驻内存的程序的k字节大小。
WCHAN 进程等待的内核事件名。
TT 进程的控制终端tty的名称。
STAT 进程状态,用下列代码中的一个给出。
R 可执行的。
S 睡眠状态。
D 不间断睡眠。
T 停止或追踪。
Z 是一个zombia进程。
W 当前进程在内存中没有驻留页。
PAGEIN造成从磁盘读写页的页面错误。
TRS 文本寄存大小。
SWAP 交换文件的千字节数。
SHARE 共享内存数。
kill
容许送一个信号到当前进程,通常本命令用于终止进程的运行,所以也叫"杀死"进程。用法为:kill 进程号。超级用户可以杀死所有进程,普通用户只能杀死自己的进程。
cal
这个命令在屏幕上显示日历,这个命令非常有用。用法:cal [Month] [Year],参数为:
Month
用1-12表示显示的月份。缺省的是显示本月。
Year 可以是1-9999年,缺省是本年。必须写足4位数,也就是说,92代表公元92年,而不是公元1992年。
cal 10 1994,表示显示1994年10月的月历。
clear
清除屏幕,跟Dos的cls一样。
date
显示系统的日期和时间,或由超级用户来设定系统的时间。用户可以控制时间如何显示。语法如下:
date MMDDhhmm[CC][YY][.ss],参数说明:
MMDDhhmm[CC][YY][.ss]
这些都是设定时间的格式。下表解释每一个变量。每部分必须都有两位数字。
MM
月份(1-12)
DD
日期(1-31)
Hh
小时(00-24)
mm
分钟(00-59)
CC
年的前两位(可选)
YY
年份(00-99)(可选)
Ss
秒(可选)
file
决定文件类型。File能确定该文件是否是可执行文件、文本文件、数据文件等。许多unix命令只是shell文件,file能确定这些命令是不是shell文件。他也可以确定该文件是否是基于文本的文件,以及该文件是否能编辑和浏览。参数:
-z 深入观察一个压缩文件,并试图查找出他的类型。
-l 本参数容许符号连接。
-f 告诉file要鉴别的文件列表在fflie。这对于要鉴别很多文件很有用。
-m 文件 指定用于说明文件类型的magic的一个替代文件。
find
find是一个非常强大的查找工具。他研究指定目录,并产生与指定标准相匹配的文件列表。文件可以按文件名、文件大小、建立时间、修改时间和其他许多标准,也可以在发现一个匹配文件的时候执行一个指令。语法如下:
find 目录(也可以是目录列表) 匹配标准。他的主要参数有:
目录(或目录列表)
希望查询文件或文件集的目录列表,目录中用空格分开。
匹配标准
希望查询文件的匹配标准或说明。
-name 文件
告诉find要找什么文件,要找的文件包括在引号中,可以用统配符,如:“*”、“?”。
-perm模式
匹配所有模式为指定数字型模式值的文件。不仅仅是读、写和执行,表示除了这个模式外的所有模式。
-type x
匹配所有类型为x的文件。X可以是c(特殊字符),b(特殊块),d(目录),p(有名管道),l(符号连接),s(套接文件)或者f(一般文件)。
-links n
匹配所有连接数为n的文件。
-size n
匹配所有大小为n块的文件。512字节块,若k在n后,则为1k字节块。
-user 用户号
匹配所有用户序列号是指定的用户序列号的文件。用户号可以是数字型,也可以是用户登陆名。
-attinme n
匹配在n天前访问过的文件。
-ntime n
匹配在n天前修改过的文件。
-exec 命令
对每个匹配文件执行命令。
-newer
匹配所有修改时间比file文件更新的文件。
这些参数是可以一起并列使用的,也可以通过逻辑表达式来限制查询标准,如下表所示:
-and
缺省的逻辑表达,表示要同时满足表达式左右两个的规则。可以不用,因为是缺省的。
-o
这时or操作符,表示只要满足一个规则就可以。
-!
这是not操作符,表示否定后面的表达式。
总之,find命令非常复杂,不是三言两语就能说清楚的,建议大家多参考联机手册,并多加练习就可以轻松掌握。
三、用户和用户管理及其他系统设定的相关命令
chgrp
改变文件的组所有权。一些chgrp命令有长短两种参数参数的指定方式,现只介绍短版本。语法:chgrp [参数] 组 文件列表,参数有:
-c
只有在文件所有权确实改变时才进行详细说明。
-f 不打印文件所有权不能改变的错误信息。
-v 详细说明文件所有权变化信息。
组
要改变到的组,可以是组号的数字值,也可以是/etc/growp文件中的组名。
文件列表
要改变组所有权的文件列表,文件间以空格分隔。
如果你不是文件的所有者或超级用户则不能改变文件的组所有权。
例子:chgrp ekoala /usr/eee/*
即把/usr/eee下的所有文件的组所有权改变为ekoala的。
chmod
改变文件模式,文件模式控制与该文件有关的访问权。Linux有3个安全级别:所有者级、组访问级和其他用户级。在这3个级中有3种读写权限:读、写和执行。对标准文件,读权限意味着用户可以看到该文件的内容;写权限能修改文件;执行权限则可以运行文件。对于目录则稍有不同:读权限可以看到目录下的内容,即可以用ls命令;写权限则可以在目录下建立新文件或从目录中删除文件;执行权限则意味着能从一个目录转变到另一个目录中,则可以使用cd命令。
用法:
chomd a + w letter
则是给所有用户加入写文件letter的权限。
权限代码为:读(r)、写(w)、执行(x)。
chown
这个命令和chgrp很相似,这个命令是改变文件的用户所有权,就是说将文件的拥有者设为其他用户。用法:
chown [参数] 用户 文件列表,参数有:
-c
只有在文件权限确实改变时才进行详细说明。
-f 不打印权限不能改变的文件错误信息。
-v 详细说明权限的变化。
文件列表
列出由要chown改变权限的文件。
用户
可以是用户号或是在/etc/passwd文件中的用户名。
要注意的是:文件的所有权只能由超级用户或文件的所有者更改。但是,如果文件的所有者将文件指定给其他的用户,则没有权利将文件再指定给自己,因为此时该用户已经不是文件的所有者了。
例子:
chown ekoala /usr/eee/ttqq ,这个意思是将/usr/eee/ttqq这个文件的所有者改为ekoala。
id
显示用户的系统标识,报告用户的名称、用户号、组名和组号。参数:
-g 只打印组号。
-G 只打印补充组。
-u 只打印用户号。
如:
[ekoala@ttqq usr]$ id
uid=10002(ekoala) gid=500(student) groups=500(student)
[ekoala@ttqq usr]$
passwd
维护用户口令,系统管理员可以用这个命令管理用户账号。用法:
passwd [用户名]
只有系统管理员才可以更改别人的密码。普通用户只能改自己的密码。如:
[ekoala@ttqq ekoala]$ passwd
Changing password for ekoala
(current) UNIX password: 〔输入当前密码〕
New UNIX password: 〔新密码〕
Retype new UNIX password: 〔确认新密码〕
Password:all authentication tokens updated successfully 〔成功改变密码〕
Useradd
添加一个新用户或改变用户现有信息。
Userdel
删除一个用户和他所有的文件。
df
报告硬盘的剩余空间数。参数有:
-a
可选的文件系统列表,他报告剩余的硬盘的空间数,若此项为空白,则报告现在装有的所有的文件系统。
-I 列出节点使用信息代替块使用信息。
-k 打印大小为1k为单位代替512k的块。
-t fstype
限制只列出fstype类型的文件系统列表。
-x fstype
限制只列出非fstype的文件系统列表。
gzip
gzip是一个非常流行的压缩工具,他通常和tar命令一起使用。语法:
gzip [参数] 文件列表,参数有:
-a ASCII文本模式:按照约定转化文件结尾标志,这个选项只支持非UNIX操作系统,在msdos下,回车和换行符在压缩的时候被转换成换行符,解压的时候再转换回来。
-c 输出到标准输出,保留原文件不变,如果有几个输入文件,则输出保持一定的顺序。
-d 解压缩。
-f 强制压缩。
-l 详细显示文件的压缩情况:
1压缩文件的大小。
2未压缩前的大小。
3压缩比和被压缩的文件名。
4如果和-v参数一起使用,还显示下列信息:
a压缩方法。
b未压缩数据的32位CRC码。
c文件的更改时间。
-q 不显示所有警告信息。
-r 递归压缩目录结构。
tar
tar是一个很流行的文件备份和压缩工具,用于建立系统备份或建立单一文件。Tar的语法很麻烦,现简单介绍如下:
tar crtux[fmtVwF] 文件列表。参数有:
参量 指定获得档案,可以是以下几个参数。
C 建立一个新档案或覆盖一个已存在的档案。
R 在文件列表中命名。
A 添加文件到备份包中。
T 列出压缩文件的列表。
U 从压缩文件里面解压缩文件。
文件列表 要处理的文件列表,可以包括统配符。如果处理的是目录,那么则处理目录及其下的所有文件和文件夹。
-b 指定分块数量n,n×512k,n的默认值是20。
-m 告诉tar解压缩时不需修改时间,修改时间就是解压缩的时间。
-c 目录名,
更改目录。
-k 保留已存在的文件,不从压缩文件中覆盖。
-v 生成有卷标的压缩文件。
-z 使用gzip解压缩文件。
比如解开一个名叫9s.tgz的压缩文件:
tar zxvf 9s.tgz
又例如要把/home/bbs下的所有文件打包成bbs.bak.tgz,可以这样:
tar zvcf bbs.bak.tgz /home/bbs/*
四、网络相关命令
本节的内容很少,只是简单的介绍一下对个人用户有用的命令,虽然linux的最大特点在于他的网络功能,可是其中大部分的功能实在是太强大了,如果想仔细研究,请参考相关书籍。
login
login用于登录一个主机,也可以用来从一个用户转向另一个用户,这一点有点象su命令,但他的用法比su要多一些。语法:
login [参数] [主机名] [用户名],参数如下:
用户名
如果没有给出任何参数,则login需要一个用户名。
-p 保留环境变量。
-f 忽略第二次登录证明。
-h 远程登录其他主机。
ping
和dos下的一样,用于检查两台联网的计算机之间的物理网络是否畅通,这个命令一般用于检查网络是否存在故障。
Ping命令向网络主机中发送ICMP(Internet Control Messeges Protocol)包,并要求目标主机回应。参数有:
-c 收到主机回应即停止。
-f 洪水式发包,一旦收到主机回应就发包,或者每秒一百个包。注意,只有超级用户才可以用这个命令,此命令会对网络产生不良影响。
-I 每发一个包等待一秒钟。
-l 强制连续以最快的速度发包。这个命令也只能有超级用户使用。
-s packetsize自定义包的大小。
五、其他命令
time
确定程序执行的时间。语法:
time [command]
uname
报告系统名或其他各种信息。语法:
uname [参数]
-s
报告系统名,这是个缺省值。
-n 报告系统的节点名。
-r 报告系统的发行号。
-v 报告系统的版本号。
-m 报告系统的硬件名。
-a 报告所有信息。
History
显示用户命令行的历史记录。