当前位置:首页 > 嵌入式 > 嵌入式教程
[导读]当用户在命令行下工作时,不是直接同操作系统内核交互信息的,而是由命令解释器接受命令,分析后再传给相关的程序。shell是一种Linux中的命令行解释程序,就如同command.com是DOS下的命令解释程序一样,为用户提供使用操作系统的接口。它们之间的关系如图2.1所示。用户在提示符下输入的命令都由shell先解释然后传给Linux内核。

2.1Linux常用命令

在安装完Linux再次启动之后,就可以进入到与Windows类似的图形化界面了。这个界面就是Linux图形化界面X窗口系统(简称X)的一部分。要注意的是,X窗口系统仅仅是Linux上面的一个软件(或者也可称为服务),它不是Linux自身的一部分。虽然现在的X窗口系统已经与Linux整合得相当好了,但毕竟还不能保证绝对的可靠性。另外,X窗口系统是一个相当耗费系统资源的软件,它会大大地降低Linux的系统性能。因此,若是希望更好地享受Linux所带来的高效及高稳定性,建议读者尽可能地使用Linux的命令行界面,也就是shell环境。

当用户在命令行下工作时,不是直接同操作系统内核交互信息的,而是由命令解释器接受命令,分析后再传给相关的程序。shell是一种Linux中的命令行解释程序,就如同command.com是DOS下的命令解释程序一样,为用户提供使用操作系统的接口。它们之间的关系如图2.1所示。用户在提示符下输入的命令都由shell先解释然后传给Linux内核。

小知识

·shell是命令语言、命令解释程序及程序设计语言的统称。它不仅拥有自己内建的shell命令集,同时也能被系统中其他应用程序所调用。

·shell的一个重要特性是它自身就是一个解释型的程序设计语言,shell程序设计语言支持绝大多数在高级语言中能见到的程序元素,如函数、变量、数组和程序控制结构。shell编程语言简单易学,任何在提示符中能键入的命令都能放到一个可执行的shell程序中。关于shell编程的详细讲解,感兴趣的读者可以参见其他相关书籍。

Linux中运行shell的环境是“系统工具”下的“终端”,读者可以单击“终端”以启动shell环境。这时屏幕上显示类似“[david@localhosthome]$”的信息,其中,david是指系统用户,localhost是计算机名,而home是指当前所在的目录。

由于Linux中的命令非常多,要全部介绍几乎是不可能的。因此,在本书按照命令的用途进行分类讲解,并且对每一类中最常用的命令详细讲解,同时列出同一类中的其他命令。由于同一类的命令都有很大的相似性,因此,读者通过学习本书中所列命令,可以很快地掌握其他命令。

图2.1 内核、shell和用户的关系

命令格式说明。

n 格式中带[]的表明为可选项,其他为必选项。

n 选项可以多个连带写入。

n 本章后面选项参数列表中加粗的含义是:该选项是非常常用的选项。

2.1.1用户系统相关命令

Linux是一个多用户的操作系统,每个用户又可以属于不同的用户组,下面,首先来熟悉一下Linux中的用户切换和用户管理的相关命令。

1.用户切换(su)

(1)作用。

变更为其他使用者的身份,主要用于将普通用户身份转变为超级用户,而且需输入相应用户密码。

(2)格式。

su[选项][使用者]

其中的使用者为要变更的对应使用者。

(3)常见参数。

主要选项参数如表2.1所示。

表2.1 su命令常见参数列表

选项

参数含义

-,-l,--login

为该使用者重新登录,大部分环境变量(如HOME、SHELL和USER等)和工作目录都是以该使用者(USER)为主。若没有指定USER,缺省情况是root

-m,-p

执行su时不改变环境变量

-c,--command

变更账号为USER的使用者,执行指令(command)后再变回原来使用者

(4)使用示例。

[david@localhost~]$su-root

Password:

[root@localhost~]#

示例通过su命令将普通用户变更为root用户,并使用选项“-”携带root环境变量。

(5)使用说明。

n 在将普通用户变更为root用户时建议使用“-”选项,这样可以将root的环境变量和工作目录同时带入,否则在以后的使用中可能会由于环境变量的原因而出错。

n 在转变为root权限后,提示符变为#。

小知识

环境变量实际上就是用户运行环境的参数集合。Linux是一个多用户的操作系统。而且在每个用户登录系统后,都会有一个专有的运行环境。通常每个用户默认的环境都是相同的,而这个默认环境实际上就是一组环境变量的定义。用户可以对自己的运行环境进行定制,其方法就是修改相应的系统环境变量。

常见的环境变量如下。

☆PATH是系统路径。

☆HOME是系统根目录。

☆HISTSIZE是指保存历史命令记录的条数。

☆LOGNAME是指当前用户的登录名。

☆HOSTNAME是指主机的名称,若应用程序要用到主机名,通常是从这个环境变量中来取得的。

☆SHELL是指当前用户用的是哪种shell。

☆LANG/LANGUGE是和语言相关的环境变量,使用多种语言的用户可以修改此环境变量。

☆MAIL是指当前用户的邮件存放目录。

设置环境变量方法如下。

ü通过echo显示字符串(指定环境变量)。

ü通过export设置新的环境变量。

ü通过env显示所有环境变量。

ü通过set命令显示所有本地定义的shell变量。

ü通过unset命令来清除环境变量。

读者可以试着用“env”命令查看“su-root”(或“su–”)和“suroot”的区别。

2.用户管理(useradd和passwd)

Linux中常见用户管理命令如表2.2所示,本书仅以useradd和passwd为例进行详细讲解,其他命令类似,请读者自行学习使用。

表2.2 Linux常见用户管理命令

命令

命令含义

格式

useradd

添加用户账号

useradd[选项]用户名

usermod

设置用户账号属性

usermod[选项]属性值

userdel

删除对应用户账号

userdel[选项]用户名

groupadd

添加组账号

groupadd[选项]组账号

groupmod

设置组账号属性

groupmod[选项]属性值

groupdel

删除对应组账号

groupdel[选项]组账号

passwd

设置账号密码

passwd[对应账号]

id

显示用户ID、组ID和用户所属的组列表

id[用户名]

groups

显示用户所属的组

groups[组账号]

who

显示登录到系统的所有用户

who

(1)作用。

①useradd:添加用户账号。

②passwd:更改对应用户的账号密码。

(2)格式。

①useradd:useradd[选项]用户名。

②passwd:passwd[选项][用户名]。

其中的用户名为修改账号密码的用户,若不带用户名,缺省为更改当前使用者的密码。

(3)常用参数

①useradd主要选项参数如表2.3所示。

表2.3 useradd命令常见参数列表

选项

参数含义

-g

指定用户所属的群组

-m

自动建立用户的登入目录

-n

取消建立以用户名称为名的群组

②passwd:一般很少使用选项参数。

(4)使用实例。

[root@localhost~]#useradddavid

[root@localhost~]#passwddavid

Newpassword:(输入密码)

Retypenewpassword:(再输入一次密码,以确认输入的正确性)

passwd:allauthenticationtokensupdatedsuccessfully

[root@localhost~]#su–david

[david@localhost~]$

[david@localhost~]$pwd(查看当前目录)

/home/david(该用户的工作目录)

实例中先添加了用户名为david的用户,接着又为该用户设置了账号密码。从su的命令可以看出,该用户添加成功,其工作目录为“/home/david”。

(5)使用说明。

n 在添加用户时,这两个命令是一起使用的,其中,useradd必须用root的权限。而且useradd指令所建立的账号,实际上是保存在“/etc/passwd”文本文件中,文件中每一行包含一个账号信息。

n 在缺省情况下,useradd所做的初始化操作包括在“/home”目录下为对应账号建立一个同名的主目录,并且还为该用户单独建立一个与用户名同名的组。

n adduser只是useradd的符号链接(关于符号链接的概念在本节后面会有介绍),两者是相同的。

n passwd还可用于普通用户修改账号密码,Linux并不采用类似Windows的密码回显(显示为*号),所以输入的这些字符用户是看不见的。密码最好包括字母、数字和特殊符号,并且设成6位以上。

3.系统管理命令(ps和kill)

Linux中常见的系统管理命令如表2.4所示,本书以ps和kill为例进行讲解。

表2.4 Linux常见系统管理命令

命令

命令含义

格式

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主要选项参数如表2.5所示。

表2.5 ps命令常见参数列表

选项

参数含义

-ef

查看所有进程及其PID(进程号)、系统时间、命令详细目录、执行者等

-aux

除可显示-ef所有内容外,还可显示CPU及内存占用率、进程状态

-w

显示加宽并且可以显示较多的信息

②kill主要选项参数如表2.6所示。

表2.6 kill命令常见参数列表

选项

参数含义

-s

将指定信号发送给进程

-p

打印出进程号(PID),但并不送出信号

-l

列出所有可用的信号名称

(4)使用实例。

[root@localhostroot]#ps–ef

UIDPIDPPIDCSTIMETTYTIMECMD

root1002005?00:00:05init

root2102005?00:00:00[keventd]

root3002005?00:00:00[ksoftirqd_CPU0]

root4002005?00:00:00[ksoftirqd_CPU1]

root7421102005?00:00:00/usr/local/bin/ntpd-c/etc/ntp.

root2178721739017:16pts/100:00:00grepntp

[root@localhostroot]#kill-97421(杀死进程)

[root@localhostroot]#ps-ef|grepntp

root2178921739017:16pts/100:00:00grepntp

该实例中首先查看所有进程,并终止进程号为7421的ntp进程,之后再次查看时已经没有该进程号的进程。

(5)使用说明。

n ps在使用中通常可以与其他一些命令结合起来使用,主要作用是提高效率。

n ps选项中的参数w可以写多次,通常最多写3次,它的含义为加宽3次,这足以显示很长的命令行了。例如:ps–auxwww。

小知识

管道是Linux中信息通信的重要方式。它是把一个程序的输出直接连接到另一个程序的输入,而不经过任何中间文件。管道线是指连接两个或更多程序管道的通路。在shell中字符”|”表示管道线。如前例子中的ps–ef|grepntp所示,ps–ef的结果直接输入到grepntp的程序中(关于grep命令在后面会有详细的介绍)。grep、pr、sort和wc都可以在上述管道线上工作。读者可以灵活地运用管道机制

4.磁盘相关命令(fdisk)

Linux中与磁盘相关的命令如表2.7所示,本书仅以fdisk为例进行讲解。

表2.7 Linux常见系统管理命令

选项

参数含义

格式

free

查看当前系统内存的使用情况

free[选项]

df

查看文件系统的磁盘空间占用情况

df[选项]

du

统计目录(或文件)所占磁盘空间的大小

du[选项]

fdisk

查看硬盘分区情况及对硬盘进行分区管理

fdisk[-l]

(1)作用。

fdisk可以查看硬盘分区情况,并可对硬盘进行分区管理,这里主要介绍如何查看硬盘分区情况,另外,fdisk也是一个非常好的硬盘分区工具,感兴趣的读者可以另外查找资料学习如何使用fdisk进行硬盘分区。

(2)格式。

fdisk[-l]

(3)使用实例。

[root@localhost~]#fdisk-l

Disk/dev/hda:40.0GB,40007761920bytes

240heads,63sectors/track,5168cylinders

Units=cylindersof15120*512=7741440bytes

DeviceBootStartEndBlocksIdSystem

/dev/hda1*110848195008+cW95FAT32(LBA)

/dev/hda21085516730867480fW95Ext'd(LBA)

/dev/hda51085243910243768+bW95FAT32

/dev/hda62440406412284968+bW95FAT32

/dev/hda740655096779952683Linux

/dev/hda85096516552208182Linuxswap

Disk/dev/sda:999MB,999816704bytes

4heads,8sectors/track,61023cylinders

Units=cylindersof32*512=16384bytes

Diskidentifier:0x00000000

DeviceBootStartEndBlocksIdSystem

/dev/sda1*161024976379+bW95FAT32

可以看出,使用“fdisk–l”列出了文件系统的分区情况。

(4)使用说明

n 使用fdisk必须拥有root权限。

n IDE硬盘对应的设备名称分别为hda、hdb、hdc和hdd,SCSI硬盘对应的设备名称则为sda、sdb、…。此外,hda1代表hda的第一个硬盘分区,hda2代表hda的第二个分区,依此类推。

n 通过查看/var/log/messages文件,可以找到Linux系统已辨认出来的设备代号。

5.文件系统挂载命令(mount)

(1)作用。

挂载文件系统,它的使用权限是超级用户或/etc/fstab中允许的使用者。正如1.2.1节中所述,挂载是指在分区和目录之间建立映射关系的过程,而挂载点是指挂载在文件树中的位置。使用mount命令可以把文件系统挂载到相应的目录下,并且由于Linux中把设备都当成文件一样使用,因此,mount命令也可以挂载不同的设备。

通常,在Linux下“/mnt”目录是专门用于挂载不同的文件系统的,它可以在该目录下新建不同的子目录来挂载不同的设备文件系统。

(2)格式。

mount[选项][类型]设备文件名挂载点目录

其中的类型是指设备文件的类型。

(3)常见参数

mount常见参数如表2.8所示。

表2.8 mount命令选项常见参数列表

选项

参数含义

-a

依照/etc/fstab的内容装载所有相关的硬盘

-l

列出当前已挂载的设备、文件系统名称和挂载点

-t类型

将后面的设备以指定类型的文件格式装载到挂载点上。常见的类型有前面介绍过的几种:vfat、ext3、ext2、iso9660、nfs等

-f

通常用于除错。它会使mount不执行实际挂上的动作,而是模拟整个挂上的过程,通常会和-v一起使用

(4)使用实例。

使用mount命令主要通过以下几个步骤。

①确认是否为Linux可以识别的文件系统,Linux可识别的文件系统只要是以下几种。

n Windows95/98常用的FAT32文件系统:vfat。

n WindowsNT/2000的文件系统:ntfs。

n OS/2用的文件系统:hpfs。

n Linux用的文件系统:ext2、ext3、nfs。

n CD-ROM光盘用的文件系统:iso9660。

②确定设备的名称,可通过使用命令“fdisk-l”查看。

③查找挂载点。

必须确定挂载点已经存在,也就是在“/mnt”下的相应子目录已经存在,一般建议在“/mnt”下新建几个如“/mnt/windows”,“/mnt/usb”的子目录,现在有些新版本的Linux(如Fedora、Ubuntu、红旗Linux、中软Linux、MandrakeLinux)都可自动挂载文件系统,RedHatLinux仅可自动挂载光驱。

④挂载文件系统如下所示。

[root@locaohost~]#mkdir-p/mnt/win/c

[root@locaohost~]#mount-tvfat/dev/hda1/mnt/win/c

[root@localhost~]#cd/mnt/win/c

24.s03e01.pdtv.xvid-sfm.rmvbDocumentsandSettingsProgramFiles

24.s03e02.pdtv.xvid-sfm.rmvbDownloadsRecycled

C盘是原先笔者Windows系统的启动盘。可见,在挂载了C盘之后,可直接访问Windows下的C盘的内容。

⑤在使用完该设备文件后可使用命令umount将其卸载。

[root@localhost~]#umount/mnt/win/c

[root@localhost~]#cd/mnt/win/c

[root@localhost~]#ls/mnt/win/c

可见,此时目录“/mnt/win/c”下为空。Windows下的C盘已被成功卸载。

小知识

·在Linux下如何使用U盘呢?

一般U盘为SCSI格式的硬盘,其格式为vfat格式,其设备号可通过“fdisk–l”进行查看,假若设备名为“/dev/sda1”,则可用如下命令将其挂载:

mount-tvfat/dev/sda1/mnt/usb

·若想设置在开机时自动挂载,可在文件“/etc/fstab”中加入相应的设置行即可。

2.1.2文件相关命令

Linux中有关文件的操作非常重要,也非常常用,本节将对Linux系统的文件操作命令进行详细讲解。

1.cd

(1)作用。

改变当前工作目录。

(2)格式。

cd[路径]

其中的路径为要改变的工作目录,可为相对路径或绝对路径。

(3)使用实例。

[root@localhost~]#cd/home/david/

[root@localhostdavid]#pwd

[root@localhostdavid]#/home/david/

该实例中变更工作目录为“/home/david/”,在后面的“pwd”(显示当前目录)的结果中可以看出。

(4)使用说明。

n 该命令将当前目录改变至指定路径的目录。若没有指定路径,则回到用户的主目录(例如:“/home/david”为用户david的主目录)。为了改变到指定目录,用户必须拥有对指定目录的执行和读权限。

n 该命令可以使用通配符。

n 使用“cd–”可以回到前次工作目录。

n “./”代表当前目录,“../”代表上级目录。

2.ls

(1)作用

列出目录和文件的信息。

(2)格式。

ls[选项][文件]

其中文件选项为指定查看指定文件的相关内容,若未指定文件,默认查看当前目录下的所有文件。

(3)常见参数。

ls主要选项参数见表2.9所示。

表2.9 ls命令常见参数列表

选项

参数含义

-1,--format=single-column

一行输出一个文件(单列输出)

-a,-all

列出目录中所有文件,包括以“.”开头的隐藏文件

-d

将目录名和其他文件一样列出,而不是列出目录的内容

-l,--format=long,--format=verbose

除每个文件名外,增加显示文件类型、权限、硬链接数、所有者名、组名、大小(Byte)及时间信息(如未指明是其他时间即指修改时间)

-f

不排序目录内容,按它们在磁盘上存储的顺序列出

(4)使用实例。

[david@localhosttest]$ls-l

total220

drwxr-xr-x2rootroot4096Mar312005bin

drwxr-xr-x3rootroot4096Apr32005boot

-rw-r--r--1rootroot0Apr242002test.run

该实例查看当前目录下的所有文件,并通过选项“-l”显示出详细信息。

显示格式说明如下。

文件类型与权限链接数文件属主文件属组文件大小修改的时间名字

(5)使用说明。

n 在ls的常见参数中,-l(长文件名显示格式)的选项是最为常见的。可以详细显示出各种信息。

n若想显示出所有“.”开头的隐藏文件,可以使用-a,这在嵌入式开发中很常用。

注意

Linux中的可执行文件不是与Windows一样通过文件扩展名来标识的,而是通过设置文件相应的可执行属性来实现的。

3.mkdir

(1)作用。

创建一个目录。

(2)格式。

mkdir[选项]路径

(3)常见参数。

mkdir主要选项参数如表2.10所示。

表2.10 mkdir命令常见参数列表

选项

参数含义

-m

对新建目录设置存取权限,也可以用chmod命令(在本节后会有详细说明)设置

-p

可以是一个路径名称。此时若此路径中的某些目录尚不存在,在加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录

(4)使用实例。

[david@localhost~]$mkdir-p./hello/my

[david@localhost~]$cdhello/my

[david@localhostmy]$pwd(查看当前目录命令)

/home/david/hello/my

该实例使用选项“-p”一次创建了./hello/my多级目录。

[david@localhostmy]$mkdir-m777./why

[david@localhostmy]$ls-l

total4

drwxrwxrwx2rootroot4096Jan1409:24why

该实例使用改选项“-m”创建了相应权限的目录。对于“777”的权限在本节后面会有详细的说明。

(5)使用说明。

该命令要求创建目录的用户在创建路径的上级目录中具有写权限,并且路径名不能是当前目录中已有的目录或文件名称。

4.cat

(1)作用。

连接并显示指定的一个或多个文件的有关信息。

(2)格式。

cat[选项]文件1文件2…

其中的文件1、文件2为要显示的多个文件。

(3)常见参数。

cat命令的常见参数如表2.11所示。

表2.11 cat命令常见参数列表

选项

参数含义

-n

由第一行开始对所有输出的行数编号

-b

和-n相似,只不过对于空白行不编号

(4)使用实例。

[david@localhost~]$cat-nhello1.chello2.c

1#include<stdio.h>

2voidmain()

3{

4printf("Hello!Thisismyhome!n");

5}

6#include<stdio.h>

7voidmain()

8{

9printf("Hello!Thisisyourhome!n");

10}

在该实例中,指定对hello1.c和hello2.c进行输出,并指定行号。

5.cp、mv和rm

(1)作用。

①cp:将给出的文件或目录复制到另一文件或目录中。

②mv:为文件或目录改名或将文件由一个目录移入另一个目录中。

③rm:删除一个目录中的一个或多个文件或目录。

(2)格式。

①cp:cp[选项]源文件或目录目标文件或目录

②mv:mv[选项]源文件或目录目标文件或目录

③rm:rm[选项]文件或目录

(3)常见参数。

①cp主要选项参数如表2.12所示。

表2.12 cp命令常见参数列表

选项

参数含义

-a

保留链接、文件属性,并复制其子目录,其作用等于dpr选项的组合

-d

复制时保留链接

-f

删除已经存在的目标文件而不提示

-i

在覆盖目标文件之前将给出提示要求用户确认。回答y时目标文件将被覆盖,而且是交互式复制

-p

此时cp除复制源文件的内容外,还将把其修改时间和访问权限也复制到新文件中

-r

若给出的源文件是一个目录文件,此时cp将递归复制该目录下所有的子目录和文件。此时目标文件必须为一个目录名

②mv主要选项参数如表2.13所示。

表2.13 mv命令常见参数列表

选项

参数含义

-i

若mv操作将导致对已存在的目标文件的覆盖,此时系统询问是否重写,并要求用户回答y或n,这样可以避免误覆盖文件

-f

禁止交互操作。在mv操作要覆盖某已有的目标文件时不给任何指示,在指定此选项后,i选项将不再起作用

③rm主要选项参数如表2.14所示。

表2.14 rm命令常见参数列表

选项

参数含义

-i

进行交互式删除

-f

忽略不存在的文件,但从不给出提示

-r

指示rm将参数中列出的全部目录和子目录均递归地删除

(4)使用实例。

①cp

[root@wwwhello]#cp-a./my/why/./

[root@wwwhello]#ls

mywhy

该实例使用-a选项将“/my/why”目录下的所有文件复制到当前目录下。而此时在原先目录下还有原有的文件。

②mv

[root@wwwhello]#mv-i./my/why/./

[root@wwwhello]#ls

mywhy

该实例中把“/my/why”目录下的所有文件移至当前目录,则原目录下文件被自动删除。

③rm

[root@wwwhello]#rm–r-i./why

rm:descendintodirectory'./why'?y

rm:remove'./why/my.c'?y

rm:removedirectory'./why'?y

该实例使用“-r”选项删除“./why”目录下所有内容,系统会进行确认是否删除。

(5)使用说明。

①cp:该命令把指定的源文件复制到目标文件,或把多个源文件复制到目标目录中。

②mv

n 该命令根据命令中第二个参数类型的不同(是目标文件还是目标目录)来判断是重命名还是移动文件,当第二个参数类型是文件时,mv命令完成文件重命名,此时,它将所给的源文件或目录重命名为给定的目标文件名;

n 当第二个参数是已存在的目录名称时,mv命令将各参数指定的源文件均移至目标目录中;

n 在跨文件系统移动文件时,mv先复制,再将原有文件删除,而连至该文件的链接也将丢失。

③rm

n 如果没有使用-r选项,则rm不会删除目录;

n 使用该命令时一旦文件被删除,它是不能被恢复的,所以最好使用-i参数。

6.chown和chgrp

(1)作用。

①chown:修改文件所有者和组别。

②chgrp:改变文件的组所有权。

(2)格式。

①chown:chown[选项]...文件所有者[所有者组名]文件

其中的文件所有者为修改后的文件所有者。

②chgrp:chgrp[选项]...文件所有组文件

其中的文件所有组为改变后的文件组拥有者。

(3)常见参数。

chown和chgrp的常见参数意义相同,其主要选项参数如表2.15所示。

表2.15 chown和chgrp命令常见参数列表

选项

参数含义

-c,-changes

详尽地描述每个file实际改变了哪些所有权

-f,--silent,--quiet

不打印文件所有权就不能修改的报错信息

(4)使用实例。

在笔者的系统中一个文件的所有者原先是这样的。

[root@localhosttest]#$ls-l

-rwxr-xr-x15apecteldavid40966月4200XuClinux-dist.tar

可以看出,这是一个文件,文件拥有者是apectel,具有可读写和执行的权限,它所属的用户组是david,具有可读和执行的权限,但没有可写的权限,同样,系统其他用户对其也只有可读和执行的权限。

首先使用chown将文件所有者改为root。

[root@localhosttest]#chownrootuClinux-dist.tar

[root@localhosttest]#ls–l

-rwxr-xr-x15rootdavid40966月4200XuClinux-dist.tar

可以看出,此时,该文件拥有者变为了root,它所属文件用户组不变。

接着使用chgrp将文件用户组变为root。

[root@localhosttest]#chgrprootuClinux-dist.tar

[root@localhosttest]#ls–l

-rwxr-xr-x15rootroot40966月4200XuClinux-dist.tar

(5)使用说明。

n 使用chown和chgrp必须拥有root权限。

小知识

在进行有关文件的操作时,若想避免输入冗长的文件,在文件名没有重复的情况下可以使用输入文件前几个字母+<Tab>键的方式,即:cd/uC<tab>会显示cd/uClinux-list

7.chmod

(1)作用。

改变文件的访问权限。

(2)格式。

chmod可使用符号标记进行更改和八进制数指定更改两种方式,因此它的格式也有两种不同的形式。

①符号标记:chmod[选项]…符号权限[符号权限]…文件

其中的符号权限可以指定为多个,也就是说,可以指定多个用户级别的权限,但它们中间要用逗号分开表示,若没有显式指出则表示不作更改。

②八进制数:chmod[选项]…八进制权限文件…

其中的八进制权限是指要更改后的文件权限。

(3)选项参数。

chmod主要选项参数如表2.16所示。

表2.16 chmod命令常见参数列表

选项

参数含义

-c

若该文件权限确实已经更改,才显示其更改动作

-f

若该文件权限无法被更改也不要显示错误信息

-v

显示权限变更的详细资料

(4)使用实例。

chmod涉及文件的访问权限,在此对相关的概念进行简单的回顾。

在1.3.1节中已经提到,文件的访问权限可表示成:-rwxrwxrwx。在此设有3种不同的访问权限:读(r)、写(w)和运行(x)。3个不同的用户级别:文件拥有者(u)、所属的用户组(g)和系统里的其他用户(o)。在此,可增加一个用户级别a(all)来表示所有这3个不同的用户级别。

①第一种符号连接方式的chmod命令中,用加号“+”代表增加权限,用减号“−”代表删除权限,等于号“=”代表设置权限。

例如,原先笔者系统中有文件uClinux20031103.tgz,其权限如下所示。

[root@localhosttest]#ls–l

-rw-r--r--1rootroot79708616Mar242005uClinux20031103.tgz

[root@localhosttest]#chmoda+rx,u+wuClinux20031103.tgz

[root@localhosttest]#ls–l

-rwxr-xr-x1rootroot79708616Mar242005uClinux20031103.tgz

可见,在执行了chmod之后,文件拥有者除拥有所有用户都有的可读和执行的权限外,还有可写的权限。

②对于第二种八进制数指定的方式,将文件权限字符代表的有效位设为“1”,即“rw-”、“rw-”和“r--”的八进制表示为“110”、“110”、“100”,把这个二进制串转换成对应的八进制数就是6、6、4,也就是说该文件的权限为664(三位八进制数)。这样对于转化后八进制数、二进制及对应权限的关系如表2.17所示。

表2.17 转化后八进制数、二进制及对应权限的关系

转换后八进制数

二进制

对应权限

转换后八进制数

二进制

对应权限

0

000

没有任何权限

1

001

只能执行

2

010

只写

3

011

只写和执行

4

100

只读

5

101

只读和执行

6

110

读和写

7

111

读、写和执行

同上例,原先笔者系统中有文件genromfs-0.5.1.tar.gz,其权限如下所示。

[root@localhosttest]#ls–l

-rw-rw-r--1daviddavid20543Dec292004genromfs-0.5.1.tar.gz

[root@localhosttest]#chmod765genromfs-0.5.1.tar.gz

[root@localhosttest]#ls–l

-rwxrw-r-x1daviddavid20543Dec292004genromfs-0.5.1.tar.gz

可见,在执行了chmod765之后,该文件的拥有者权限、文件组权限和其他用户权限都恰当地对应了。

(5)使用说明

n 使用chmod必须具有root权限。

想一想

chmodo+xuClinux20031103.tgz是什么意思?它所对应的八进制数指定更改应如何表示?

8.grep

(1)作用。

在指定文件中搜索特定的内容,并将含有这些内容的行标准输出。

(2)格式。

grep[选项]格式[文件及路径]

其中的格式是指要搜索的内容格式,若缺省“文件及路径”则默认表示在当前目录下搜索。

(3)常见参数。

grep主要选项参数如表2.18所示。

表2.18 grep命令常见参数列表

选项

参数含义

-c

只输出匹配行的计数

-I

不区分大小写(只适用于单字符)

-h

查询多文件时不显示文件名

-l

查询多文件时只输出包含匹配字符的文件名

-n

显示匹配行及行号

-s

不显示不存在或无匹配文本的错误信息

-v

显示不包含匹配文本的所有行

(4)使用实例。

[root@localhosttest]#grep"hello"/-r

Binaryfile./iscit2005/备份/iscit2004.sqlmatches

./ARM_TOOLS/uClinux-Samsung/linux-2.4.x/Documentation/s390/Debugging390.txt:helloworld$2=0

在本例中,“hello”是要搜索的内容,“/-r”是指定文件,表示搜索根目录下的所有文件。

(5)使用说明。

n 在缺省情况下,“grep”只搜索当前目录。如果此目录下有许多子目录,“grep”会以如下形式列出:“grep:sound:Isadirectory”。这会使“grep”的输出难以阅读。但有以下两种解决的方法。

①明确要求搜索子目录:grep–r(正如上例中所示);

②忽略子目录:grep-dskip。

n 当预料到有许多输出时,可以通过管道将其转到“less”(分页器)上阅读:如grep"h"./-r|less分页阅读。

n grep特殊用法。

greppattern1|pattern2files:显示匹配pattern1或pattern2的行;

greppattern1files|greppattern2:显示既匹配pattern1又匹配pattern2的行;

小知识

在文件命令中经常会使用pattern正则表达式,它是可以描述一类字符串的模式(Pattern),如果一个字符串可以用某个正则表达式来描述,就称这个字符和该正则表达式匹配。这和DOS中用户可以使用通配符“*”代表任意字符类似。在Linux系统上,正则表达式通常被用来查找文本的模式,以及对文本执行“搜索-替换”操作等。

正则表达式的主要参数有如下

·:忽略正则表达式中特殊字符的原有含义;

·^:匹配正则表达式的开始行;

·$:匹配正则表达式的结束行;

·<:从匹配正则表达式的行开始;

·>:到匹配正则表达式的行结束;

·[]:单个字符,如[A]即A符合要求;

·[-]:范围,如[A-Z],即A、B、C一直到Z都符合要求;

·。:所有的单个字符;

·*:所有字符,长度可以为0。

9.find

(1)作用。

在指定目录中搜索文件,它的使用权限是所有用户。

(2)格式。

find[路径][选项][描述]

其中的路径为文件搜索路径,系统开始沿着此目录树向下查找文件。它是一个路径列表,相互用空格分离。若缺省路径,那么默认为当前目录。

其中的描述是匹配表达式,是find命令接受的表达式。

(3)常见参数。

[选项]主要参数如表2.19所示。

表2.19 find选项常见参数列表

选项

参数含义

-depth

使用深度级别的查找过程方式,在某层指定目录中优先查找文件内容

-mount

不在其他文件系统(如Msdos、Vfat等)的目录和文件中查找

[描述]主要参数如表2.20所示。

表2.20 find描述常见参数列表

选项

参数含义

-name

支持通配符*和?

-user

用户名:搜索文件属主为用户名(ID或名称)的文件

-print

输出搜索结果,并且打印

(4)使用实例。

[root@localhosttest]#find./-namehello*.c

./hello1.c

./iscit2005/hello2.c

在该实例中使用了-name的选项支持通配符。

(5)使用说明。

n 若使用目录路径为“/”,通常需要查找较多的时间,可以指定更为确切的路径以减少查找时间。

n find命令可以使用混合查找的方法,例如,想在/etc目录中查找大于500000字节,并且在24小时内修改的某个文件,则可以使用-and(与)把两个查找参数链接起来组合成一个混合的查找方式,如“find/etc-size+500000c-and-mtime+1”。

10.locate

(1)作用。

用于查找文件。其方法是先建立一个包括系统内所有文件名称及路径的数据库,之后当寻找时就只需查询这个数据库,而不必实际深入档案系统之中了。因此其速度比find快很多。

(2)格式。

locate[选项]

(3)locate主要选项参数如表2.21所示。

表2.21 locate命令常见参数列表

选项

参数含义

-u

从根目录开始建立数据库

-U

在指定的位置开始建立数据库

-f

将特定的文件系统排除在数据库外,例如proc文件系统中的文件

-r

使用正则运算式做寻找的条件

-o

指定数据库的名称

(4)使用实例。

[root@localhosttest]#locateissue-U./

[root@localhosttest]#updatedb

[root@localhosttest]#locate-rissue*

./ARM_TOOLS/uClinux-Samsung/lib/libpam/doc/modules/pam_issue.sgml

./ARM_TOOLS/uClinux-Samsung/lib/libpam/modules/pam_issue

./ARM_TOOLS/uClinux-Samsung/lib/libpam/modules/pam_issue/Makefile

./ARM_TOOLS/uClinux-Samsung/lib/libpam/modules/pam_issue/pam_issue.c

实例中首先在当前目录下建立了一个数据库,并且在更新了数据库之后进行正则匹配查找。通过运行可以发现locate的运行速度非常快。

(5)使用说明。

locate命令所查询的数据库由updatedb程序来更新,而updatedb是由crondaemon周期性建立的,但若所找到的档案是最近才建立或刚改名的,可能会找不到,因为updatedb默认每天运行一次,用户可以由修改crontab配置(etc/crontab)来更新周期值。

11.ln

(1)作用。

为某一个文件在另外一个位置建立一个符号链接。当需要在不同的目录用到相同的文件时,Linux允许用户不用在每一个需要的目录下都存放一个相同的文件,而只需将其他目录下的文件用ln命令链接即可,这样就不必重复地占用磁盘空间。

(2)格式。

ln[选项]目标目录

(3)常见参数。

n -s建立符号链接(这也是通常惟一使用的参数)。

(4)使用实例。

[root@localhosttest]#ln-s../genromfs-0.5.1.tar.gz./hello

[root@localhosttest]#ls-l

total77948

lrwxrwxrwx1rootroot24Jan1400:25hello->../genromfs-0.5.1.tar.gz

该实例建立了当前目录的hello文件与上级目录之间的符号链接,可以看见,在hello的ls–l中的第一位为“l”,表示符号链接,同时还显示了链接的源文件。

(5)使用说明。

n ln命令会保持每一处链接文件的同步性,也就是说,不论改动了哪一处,其他的文件都会发生相同的变化。

n ln的链接分软链接和硬链接两种。

软链接就是上面所说的ln-s****,它只会在用户选定的位置上生成一个文件的镜像,不会重复占用磁盘空间,平时使用较多的都是软链接。

硬链接是不带参数的ln****,它会在用户选定的位置上生成一个和源文件大小相同的文件,无论是软链接还是硬链接,文件都保持同步变化。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

双系统将是下述内容的主要介绍对象,通过这篇文章,小编希望大家可以对双系统的相关情况以及信息有所认识和了解,详细内容如下。

关键字: 双系统 Windows Linux

今天,小编将在这篇文章中为大家带来Windows 11系统的有关报道,通过阅读这篇文章,大家可以对Windows 11系统具备清晰的认识,主要内容如下。

关键字: Windows 操作系统

全新随插即用方案简化虚拟化实时IIoT平台的设置

关键字: 计算机模块 IIoT 操作系统

目前,HarmonyOS NEXT星河预览版已经正式面向开发者开放申请,面向鸿蒙原生应用及元服务开发者提供的集成开发环境——DevEco Studio也迎来功能更细化的4.1版本。

关键字: HarmonyOS 操作系统

华为P40是一款备受关注的高端智能手机,搭载了华为自研的鸿蒙操作系统。鸿蒙系统作为华为自主研发的操作系统,具有高度的可定制性和扩展性,能够为用户带来全新的使用体验。本文将详细介绍华为P40鸿蒙系统的升级方法,帮助用户更好...

关键字: 华为P40 智能手机 操作系统

安装Linux操作系统并不复杂,下面是一个大致的步骤指南,以帮助您完成安装。1. 下载Linux发行版:首先,您需要从Linux发行版官方网站下载最新的ISO镜像文件。

关键字: Linux 操作系统 ISO镜像

计算机是由一堆硬件组成的,为了有限的控制这些硬件资源,于是就有了操作系统的产生,操作系统是软件子系统的一部分,是硬件基础上的第一层软件。

关键字: Linux 操作系统 计算机

Linux操作系统是一套免费使用和自由传播的类Unix操作系统,通常被称为GNU/Linux。它是由林纳斯·托瓦兹在1991年首次发布的,并基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。Lin...

关键字: Linux 操作系统

华为鸿蒙系统作为华为推出的全新一代操作系统,自发布以来备受关注。本文将对华为鸿蒙系统的实际体验进行详细评测,旨在帮助读者了解该系统的优缺点。

关键字: 华为 鸿蒙系统 操作系统

随着华为鸿蒙OS系统的发布,越来越多的人开始关注这一全新的操作系统。鸿蒙OS系统的界面设计作为用户体验的重要组成部分,也备受关注。本文将详细介绍鸿蒙操作系统界面的设计理念、特点以及与其他系统的对比。

关键字: 华为鸿蒙 操作系统 界面设计
关闭
关闭