Linux常用命令
Shell是一种Linux中的命令行解释程序,就如同Command.com是DOS下的命令解释程序一样,为用户提供使用操作系统的接口。用户在提示符下输入的命令都由Shell先解释然后传给Linux内核。
Shell是命令语言、命令解释程序集程序设计语言的统称。它不仅拥有自己的内建的Shell命令集,同时也能被系统中其他应用程序所调用。
命令格式说明
格式中带[ ]的表明为可选项,其他为必选项
选项可以多个连带入
用户系统相关命令
用户切换(su)
(1) 作用
变更为其它使用者的身份,主要用于将普通用户身份转变为超级用户,而且需输入相应用户密码
(2)格式
su[选项][使用者]
其中的使用者为要变更的对应使用者
(3) 常见参数
-,-l,–login | 为该使用者重新登录,大部分环境变量(HOME、SHELL、USER)和工作目录都是以该使用者(USER)为主。若没有指定USER,缺省情况是root |
-m,-p | 执行su时不改变环境变量 |
-c,–command | 变更账号为USER的使用者,并执行指令(command)后再变回原来使用者 |
(4) 使用示例
[sunq@ww sunq]$ su - root
Password:
[root@www root]#
示例通过 su 命令将普通用户变更为root用户,并使用选项 “-” 携带root环境变量
(5) 使用说明
在将普通用户变更为root用户时建议使用 “-” 选项,这样可以将root的环境变量和工作目录同时带入,否则在以后的使用中可能会由于环境变量的原因而出错。
在转变为root权限后,提示符变为#
环境变量:用户运行环境的参数集合。Linux是一个用户的操作系统。而且在每个用户登录系统后,都会有一个专有的运行环境。通常每个用户默认的环境都是相同的,而这个默认环境实际上就是一组环境变量的定义。用户可以对自己的运行环境进行定制,其方法就是修改相应的系统环境变量
PATH是系统路径
HOME是系统根目录
HISTSIZE是指保持历史命令记录的条数
LOGNAME是指当前用户的登录名
HOSTNAME是指主机的名称,若应用程序要用到主机名的话,通常是从这个环境变量中来取得的
SHELL是指当前用户用的是哪种Shell
LANG/LANGUGE是和语言相关的环境变量,使用多种语言的用户可以修改此环境变量
MAIL是指当前用户的邮件存放目录
设置环境变量方法
etho显示字符串
export设置新的环境变量
env显示所有环境变量
set命令显示所有本地定义的Shell变量
unset命令来清除环境变量
用户管理(useradd和passwd)
(1) 作用
useradd 添加用户账号
passwd 更改对应用户账户密码
(2) 格式
useradd: useradd[选项] 用户名
passwd: passwd[选项][用户名]
其中用户名为修改账号密码的用户,若不带用户名,缺省为更改当前使用者账号密码
(3) 常用参数
选项 | 参数含义 |
---|---|
-g | 指定用户所属的组 |
-m | 自动建立用户的登入目录 |
-n | 取消建立以用户名称为名的群组 |
passwd:一般很少使用选项参数
(4) 使用实例
[root@www root]# useradd yul
[root@www root]# passwd yul
New password:
Retype new password:
passwd: all authentication tokens updated successfully
[root@www root]# su - yul
[yul@www yul]$
[yul@www yul]$ pwd(查看当前目录)
/home/yul
实例中先添加了用户名为yul的用户,接着又为该用户设置了账号密码。并从su的命令可以看出,该用户添加成功,其工作目录为"/home/yul"
(5) 使用说明
在使用添加用户时,这两个命令是一起使用的,其中,useradd必须用root的权限。而且useradd指令所建立的账号,实际上是保持在"/etc/passwd"文本文件中,文件中每一行包含一个账号信息
在缺省情况下,useradd所做的初始化操作包括在"/home"目录下为对应账号建立一个名为同名地方的主目录,并且还为该用户单独建立一个与用户单独建立一个与用户名同名的组
adduser只是useradd的符号链接,两者是相同的
passwd还可用于普通用户修改账号密码,Linux并不采用类似windows的密码回显(显示为*号),所以输入的这些字符用户是看不见的。密码最好包括字母、数字和特殊符号,并且设成6为以上。
系统管理命令(ps和kill)
命令 | 命令含义 | 格式 |
---|---|---|
ps | 显示当前系统中由该用户运行的进程列表 | ps[选项] |
top | 动态显示系统中运行的程序(一般为每隔5s) | top |
kill | 输出特定的信号给指定PID(进程号)的进程 | kill[选项] 进程号(PID) |
uname | 显示系统的信息(可加选项-a) | uname[选项] |
setup | 系统图形化界面配置 | setup |
crontab | 循环执行例行性命令 | crontab[选项] |
shutdown | 关闭或重启Linux系统 | shutdown[选项][时间] |
uptime | 显示系统已经运行了多长时间 | uptime |
clear | 清除屏幕上的信息 | clear |
(1) 作用
ps: 显示当前系统中由该用户运行的进程列表
kill: 输出特定的信号给指定PID(进程号)的进程,并根据该信号而完成指定的行为。其中可能的信号有进程挂起、进程等待、进程终止等
(2) 格式
ps: ps[选项]
kill: kill[选项] 进程号(PID)
kill命令中的进程号为信号输出的指定进程的进程号,当选项是缺省时为输出终止信号给该进程
(3) 常见参数
ps主要选项参数
选项 | 参数含义 |
---|---|
-ef | 查看所有进程及其PID(进程号)、系统时间、命令详细目录、执行者等 |
-aux | 除可显示-ef所有内容外,还可显示CPU及内存占用率、进程状态 |
-w | 显示加宽并且可以显示较多的信息 |
kill主要选项参数
选项 | 参数含义 |
---|---|
-s | 根据指定信号发送给进程 |
-p | 打印出进程号(PID),但并不送出信号 |
-l | 列出所有可用的信号名称 |
(4) 使用实例
[root@www root]# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 2005 ? 00:00:05 init
root 2 1 0 2005 ? 00:00:00 [keventd]
root 3 0 0 2005 ? 00:00:05 [ksoftirqd_CPU0]
root 4 0 0 2005 ? 00:00:05 [ksoftirqd_CPU1]
root 7421 1 0 2005 ? 00:00:05 /usr/local/bin/ntpd -c /etc/ntp.
root 21787 21739 0 17:16 pts/l 00:00:00 grep ntp
[root@www root]# kill 7421
[root@www root]# ps -ef|grep ntp
root 21787 21739 0 17:16 pts/l 00:00:00 grep ntp
该实例中首先查看所有进程,并终止进程号为7421的ntp进程,之后再次查看时已经没有该进程号的进程
(5) 使用说明
ps在使用中通常可以与其他一些命令结合起来使用,主要作用是提高效率
ps选项中的参数w可以写多次,通常最多写3次,它的含义表示加宽3次,这足以显示很长的命令行了。例如:ps -auxwww
管道:Linux中信息通信的重要方式。它是把一个程序的输出直接连接到另一个程序的输入,而不经过任何中间文件。管道线是指连接二个或更多程序管道的通路。在shell中字符 “|” 表示管道线。如前面例子中的 ps -ef|grep ntp所示,ps -ef的结果直接输入到grep ntp的程序中。grep、pr、sort和wc都可以在上述管道线上工作
磁盘相关命令(fdisk)
选项 | 参数含义 | 格式 |
---|---|---|
free | 查看当前系统内存的使用情况 | free[选项] |
df | 查看文件系统的磁盘空间占用情况 | df[选项] |
du | 统计目录(或文件)所占磁盘空间的大小 | du[选项] |
fdisk | 查看硬盘分区情况及对硬盘进行分区管理 | fdisk[-l] |
(1) 作用
fdisk可以查看硬盘分区情况,并可对硬盘进行分区管理,fdisk也是一个非常好的硬盘分区工具
(2) 格式
fdisk [-l]
(3) 使用实例
可以看出,使用"fdisk -l"列出了文件系统的分区情况
(4) 使用说明
使用fdisk必须用于有root权限
IDE硬盘对应的设备名称分别为hda、hdb、hdc和hdd,SCSI硬盘对应的设备名称则为sda、sdb 此外,hda1代表hda的第一个硬盘分区,hda2代表hda的第二个分区,以此类推。
通过查看/var/log/message文件,可以找到Linux系统已辨认出来的设备代号
磁盘挂载命令(mount)
(1) 作用
挂载文件系统,它的使用权限是超级用户或/etc/fstab中允许的使用者。挂载是指把分区和目录对应的过程,而挂载点是指挂载在文件树中的位置。mount命令就可以把文件系统挂载到相应的目录下,并且由于Linux中把设备都当作文件一样使用,因此,mount命令也可以挂载不同的设备
通常,在Linux下 “/mnt” 目录是专门用于挂载不同文件系统的,它可以在该目录下新建不同的子目录来挂载不同的设备文件系统
(2) 格式
mount[选项][类型] 设备文件名 挂载点目录
其中的类型是指设备文件的类型
(3) 常见参数
mount常见参数
选项 | 参数含义 |
---|---|
-a | 依照/etc/fstab的内容装载所有相关的硬盘 |
-l | 列出当前已挂载的设备、文件系统名称和挂载点 |
-t 类型 | 将后面的设备以指定类型的文件格式装载到挂载点上。常见的类型:vfat、ext3、ext2、iso9660、nfs等 |
-f | 通常用于除错。它会使mount不执行实际 挂上的动作,而是模拟整个挂上的过程,通常会和-v一起使用 |
(4) 使用实例
① 确认是否为Linux可以识别的文件系统,Linux可识别的文件系统主要是一下几种
Windows95/98常用的FAT32文件系统:vfat
WinNT/2000的文件系统:ntfs
OS/2用的文件系统:hpfs
Linux用的文件系统:ext2、ext3、nfs
CD-ROM光盘用的文件系统:iso9660
② 确定设备的名称,确定设备名可通过使用命令 “fdisk -l” 查看
③ 查找挂接点
必须确定挂载点已经存在,也就是在 “/mnt” 下的相应子目录已经存在,一般建议在 “/mnt” 下新建几个如 “/mnt/windows”,“/mnt/usb” 的子目录
④ 挂载文件系统如下
[root@sunq mnt]# mount -t vfat /dev/hda1 /mnt/c
[root@sunq mnt]# cd /mnt/c
....
C盘是原先Windows系统的启动盘。可见,在挂载了C盘后,可直接访问Windows下的C盘的内容
⑤ 在使用完该设备文件后可使用命令umount将其卸载
[root@sunq mnt]# umount /mnt/c
[root@sunq mnt]# cd /mnt/c
[root@sunq c]# ls
可见,此时目录 “/mnt/c” 下为空。Windows下的C盘成功卸载
sudo mkdir /mnt/hgfs
sudo vmhgfs-fuse .host:/ /mnt/hgfs -o allow_other -o uid=1000 -o gid=1000 -o umask=022
⑥ Linux下挂载U盘
一般U盘为SCSI格式的硬盘,其格式为vfat格式,其设备号可通过 “fdisk -l” 进行查看,假如设备名为 “/dev/sdal”,则可用如下命令就可将其挂载:mount -t vfat /dev/sdal /mnt/u
若想设置在开机时自动挂载,可在文件 “/etc/fstab” 中加入相应的设置行即可
文件目录相关命令
cd
(1) 作用
改变工作目录
(2) 格式
cd[路径]
其中的路径为要改变的工作目录,可为相对路径或绝对路径
(3) 使用实例
[root@www uclinux]# cd /home/sunq/
[root@www sunq]# pwd
[root@www sunq]# /home/sunq/
该实例中变更工作目录为 “/home/sunq/”,在后面的pwd(显示当前目录)的结果中可以看出。
(4) 使用说明
该命令将当前目录改变至指定路径的目录。若没有指定路径,则回到用户的主目录。为了改变到指定目录,用户必须拥有对指定目录的执行和读权限
该命令可以使用通配符
可使用 “cd-” 可以回到前次工作目录
“/” 代表 当前目录, “…/” 代表上级目录
ls
(1) 作用
列出目录的内容
(2) 格式:ls[选项][文件]
其中文件选项为指定查看指定文件的相关内容,若未指定文件,默认查看当前目录下的所有文件
(3) ls常见参数
选项 | 参数含义 |
---|---|
-l,–format=single-column | 一行输出一个文件(单列输出) |
-a,-all | 列出目录中所有文件,包括以 “.” 开头的文件 |
-d | 将目录名和其他文件一样列出,而不是列出目录的内容 |
-l,–format=long,–format=verbose | 除每个文件名外,增加显示文件类型、权限、硬链接数、所有者名、组名、大小(Byte)及时间信息(如未指明是其他时间即指修改时间) |
-f | 不排序目录内容,按它们在磁盘上存储的顺序列出 |
(4) 使用实列
该实例查看当前目录下的所有文件,并通过选项 “-l” 显示出详细信息
显示格式如下:
文件类型与权限 链接数 文件属主 文件属组 文件大小 修改的时间 名字
(5) 使用说明
在ls的常见参数中,-l(长文件名显示格式)的选项是最为常见的。
若想显示出所有 “.” 开头的文件,可以使用 -a,这在嵌入式的开发中很常用
mkdir
(1) 作用
创建一个目录
(2) 格式
mkdir[选项] 路径
(3) mkdir常见参数
选项 | 参数含义 |
---|---|
-m | 对新建目录设置存取权限,也可以用chmod命令设置 |
-p | 可以是一个路径名称。此时若此路径中的某些目录尚不存在,在加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录 |
(4) 使用实例
[root@www sunq]# mkdir -p ./hello/my
[root@www my]# pwd (查看当前目录命令)
/home/sunq/hello/my
该实例使用选项 “-p” 一次创建了 /hello/my 多级目录
[root@www my]# mkdir -m 777 ./why
[root@www my]# ls -l
total 4
drwxrwxrwx 2 root root 4096 Jan 14 09:24 why
该实例使用改选项 “-m” 创建了相应权限的目录。
(5) 使用说明
该命令要求创建目录的用户在创建路径的上级目录中具有写权限,并且路径名不能当前目录中已有的目录或文件名称
cat
(1) 作用
连接并显示指定的一个和多个文件的相关信息
(2) 格式
cat[选项] 文件1 文件2…
其中的文件1、文件2为显示的多个文件
(3) cat常见参数
选项 | 参数含义 |
---|---|
-n | 由第一行开始对所有输出的行数编号 |
-b | 和-n相似,只不过对于空白行不编号 |
在该实例中,指定对hello1.c和hello2.c进行输出,并指定行号
cp、mv 和 rm
(1) 作用
cp: 将给出的文件或目录复制到另一文件或目录中
mv: 为文件或目录改名或将文件由一个目录移入另一个目录中
rm: 删除一个目录中的一个或多个文件或目录
(2) 格式
cp: cp[选项] 源文件或目录 目标文件或目录
mv: mv[选项] 源文件或目录 目标文件或目录
rm: rm[选项] 文件或目录
(3) cp常见参数
选项 | 参数含义 |
---|---|
-a | 保留链接、文件属性,并复制其子目录,其作用等于dpr选项的组合 |
-d | 拷贝时保留链接 |
-f | 删除已经存在的目标文件而不提示 |
-i | 在覆盖目标文件之前将给出提示要求用户确认。回答y时目标文件将被覆盖,而且是交互式拷贝 |
-p | 此时cp除复制源文件的内容外,还将把其修改时间和访问权限也复制到新文件中 |
-f | 若给出的源文件是一目录文件,此时cp将递归复制该目录下所有的子目录和文件。此时目标文件必须为一个目录名 |
(4) mv常见参数
选项 | 参数含义 |
---|---|
-i | 若mv操作将导致对已存在的目标文件的覆盖,此时系统询问是否重写,并要求用户回答y或n,这样可以避免误覆盖文件 |
-f | 禁止交互操作。在mv操作要覆盖某已有的目标文件时不给任何指示,在指定此选项后,i选项将不再起作用 |
(5) rm常见参数
选项 | 参数含义 |
---|---|
-i | 进行交互式删除 |
-f | 忽略不存在的文件,但从不给出提示 |
-r | 指示rm将参数中列出的全部目录和子目录均递归地删除 |
(6) 使用实例
① cp
该实例使用-a选项将 “/my/why” 目录下的所有文件复制到当前目录下。而此时在原先目录下还有原有的文件
该命令把指定的源文件复制到目标文件或把多个源文件复制到目标目录中
② mv
该命令根据命令中第二个参数类型的不同(是目标文件还是目标目录)来判断是重命名还是移动文件,当第二个参数类型是文件时,mv命令完成文件重命名,此时,它将所给的源文件或目录重命名为给定的目标文件名;
当第二个参数时已存在的目录名称时,mv命令将各参数指定的源文件均移到目标目录中;
在跨文件系统移动文件时,mv 先复制,再将原有文件删除,而链至该文件的链接也将丢失;
③ rm
如果没有使用-r选项,则rm不会删除目录;
使用该命令时一旦文件被删除,它是不能被恢复的,所以最好使用-i参数
chown 和 chgrp
(1) 作用
① chown:修改文件所有者和组别
② chgrp:改变文件的组所有权
(2) 格式
① chown:chown[选项]…文件所有者[所有者组名] 文件
其中的文件所有者为修改后的文件所有者
② chgrp:chgrp[选项]…文件所有组 文件
其中的文件所有组为改变后的文件组拥有者
(3) 常见参数
chown和chgrp的常见参数意义相同
(4) 使用实例
[root@www sunq]# ls -l
-rwxr-xr-x 15 apectel sunq 4096 6月 4 2005 uClinux-dist.tar
可以看出,这是一个文件,它的文件拥有者是apectel,具有可读写和执行的权限,它所属的用户组是sunq,具有可读和执行的权限,但没有可写的全权,同样,系统其他用户对其也只有可读和执行的权限。
首先使用chown将文件所有者改为root
[root@www sunq]# chown root uClinux-dist.tar
[root@www sunq]# ls -l
-rwxr-xr-x 15 root sunq 4096 6月 4 2005 uClinux-dist.tar
可以看出,此时,该文件拥有者变为root,它所属文件用户组不变。
接着使用chgrp将文件用户组变为root
[root@www sunq]# chgrp root uClinux-dist.tar
[root@www sunq]# ls -l
-rwxr-xr-x 15 root root 4096 6月 4 2005 uClinux-dist.tar
使用chown和chgrp必须拥有root权限