第 4 章 Linux使用基础
4.1 Linux常用命令
4.2 Shell程序设计
Linux系统可以在两种环境下操作:一种是在 X Window的桌面环境下操作,它与
Microsoft Windows环境下的操作十分相似;
另一种是在控制台的字符屏幕下操作,它通过键盘输入命令来实现对系统的操作。
4.1 Linux常用命令
shell 是 一 种 命 令 行 解 释 程 序
( Command-Language Interpreter),负责用户和操作系统的沟通 。
在终端方式的 shell 提示窗口如图 4.1所示 。
图 4.1 shell提示窗口
4.1.1 进入与退出命令
1,进入系统
Linux是多用户操作系统,它允许多个用户同时使用一台计算机,这是它与
Microsoft Windows的最大区别之一,因此
Linux有比 Microsoft Windows严格得多的用户管理。
在字符终端界面环境下,终端屏幕上出现如下登录提示行:
login:
在它的后面输入自己的登录名 。 如果是新用户,那么要与系统管理员联系,取得一个合法的登录名 。
输入登录名,并按 【 Enter】 键后,在屏幕上出现
Password:
要求在其后输入口令 。 输入的口令字符串并不在屏幕上显示,以利于保密 。 输入完口令并按 【 Enter】 键后,系统就对登录名和口令进行验证 。 如果确认无误,则在屏幕上显示若干行信息,最后一行出现:
$_
$是一般用户的 shell提示符,其后是闪烁的光标条( root用户的提示符是,#”)。
2,退出系统当完成工作后,需要从系统中退出 。 退出系统的过程很简单,在 $提示符出现后,
输入 logout命令,然后按下 【 Enter】 键或同时按下 【 Ctrl】 和 【 D】 键,屏幕上会再次出现
login:
表示已经从系统中退出 。 如果想再次进入系统,必须重新登录 。
4.1.2 系统询问命令
1,询问当前日期和时间的 date命令例如 $date 。
2,询问当前用户的 who命令
who命令可列出当前每一个处在系统中的用户的登录名,终端名和登录进入时间 。
3,显示当前目录路径名的 pwd命令
4.1.3 文件操作命令
Linux命令行的一般格式为命令名 [ 选择项 ] [ 参数 ]
1,文件及其分类
Linux的文件通常分为普通文件,目录文件及特别文件 3类 。
为了对文件进行保护,Linux系统提供了文件存取控制方式。把所有用户划分为 3种身份,依次是文件主( user),同组用户( group),其他用户( other)。 每种用户对一个文件可拥有读( r),写( w)
和执行( x) 的权利。
用字符形式表示上述文件方式,就是
rwxr-xr--
这 9位的顺序是固定的(其中,-”表示对应用户不具备相应权限)。
2,文件显示命令
cat命令用来连接并显示文件 。 它顺序阅读每一个文件,并将它们在标准输出上输出 。 如果没有指定输入文件或者只是给定一个连字符 ( -),则从标准输入上读取 。
其语法格式为
cat [-u][-s][-v][-t][-e] 文件名 …
例如,
$cat ml.c
则在屏幕上显示出文件 ml.c的内容 。
$cat file1 file2>file3
3,文件内容比较命令
( 1) comm命令
comm命令对两个已经排序的文件进行比较 。 其语法格式为
comm [-123] file1 file2
( 2) diff命令
diff命令比较两个文本文件 。 其语法格式为
diff [-br][-c|-Cn|-e|-f|-h] file1 file2
( 3) cmp命令
cmp命令比较两个文件 。 其语法格式为
cmp [-l][-s] file1 file2
4,文件的复制,移动和删除命令
( 1) cp命令
cp命令的功能是拷贝文件 。 其语法格式为:
cp [-fip]source_file target_file
cp [-fip]source_file1 source_file2… target
cp -R [-fip]source_file1 source_file2… target
cp -r [-fip]source_file1 source_file2… target
( 2) mv命令
mv命令的功能是移动或者重新命名文件和目录 。 其语法格式为
mv [-fi] source_file target_file
mv [-fi] source_file… target_directory
( 3) rm命令
rm命令的功能的是删除文件或目录 。 其语法格式为
rm [-firR]file…
5,确定文件类型的 file命令当用户拥有很多文件时,常以自己的登录名为根节点,为自己建立一棵文件子树 。
其中,一些节点可能是目录文件,而另一些节点可能是信息文件 。 若用户忘记了哪些名字是目录文件,哪些名字是信息文件,
则可用 file命令 。 该命令带有一个参数表,
用于给出想了解的某类型的文件名清单 。
命令执行的结果是在屏幕上显示出各文件的类型 。
4.1.4 目录操作命令
1,目录结构
Linux文件系统采用带链接的树形结构 。
即只有一个根目录 ( 通常用,/” 表示 ),
其中含有下级子目录或文件的信息;子目录中又可含有下级的子目录或者文件的信息,…… 这样一层一层地延伸下去,构成一棵倒置的树,如图 4.2所示 。
b i n d e v e t c
l i b l o s t +f o u n d
m n t t m p
m u b 1
h o m e
e x a m p l e l c d
m 1,c m 2,c?
图 4.2 Linux目录结构文件和目录的路径名可用两种方式表示:
绝对路径名(又称全路径名)和相对路径名。
2,目录的创建和删除
( 1) mkdir命令
mkdir命令的功能是建立目录 。 其语法格式为
mkdir [-ep][-m mode] dirname…
( 2) rmdir命令
rmdir命令的功能是删除目录 。 其语法格式为
rmdir [-p][-s] dirname…
rmdir不能删除安装文件系统的根目录 。
3,目录的显示和改变工作目录
( 1) ls命令
ls命令可打印有关文件和目录的信息 。 ls
是,list”的简称 。
( 2) cd命令
cd命令的功能是改变工作目录 。 其语法格式为
cd [directory]
4.1.5 口令,权限命令
1,修改口令
passwd 命 令 的 功 能 是 改 变 登 录 或
modem( 调制解调器 ) 拨号 shell口令 。 其语法格式为
passwd [-m][-dluf][-n minimum][-x
expiration] [-r retries][name]
passwd –s [-a] [name]
2,改变存取权限
chmod命令的功能是改变文件或目录的存取权限 。 其语法格式有以下两种 。
① 符号方式
chmod [-R] [who] [+|-|=][mode… ] file…
② 绝对方式
chmod [-R] mode file…
4.2 Shell程序设计
Shell是 Linux系统中的一个重要的层次,它是用户与系统交互作用的界面。
Shell除了作为命令解释程序以外,还是一种高级程序设计语言。利用 Shell程序设计语言可以编写出功能很强、但代码简单的程序。
4.2.1 Shell概述
1,Shell的特点和主要版本在 Linux系统中通常提供多种不同的
Shell,常用的有 Bourne shell( 简称 sh),
C-shell( 简称 csh),Korn shell( 简称 ksh)
和 Bourne Again shell( 简称 bash) 。 bash
是 Linux中一个默认的 shell,本节主要介绍
bash。
2,Shell程序示例
Shell程序也可存放在文件上,下面是两个
shell程序示例 。
【 例 4.1】 由 3条简单命令组成的 shell程序
( 文件名为 ex1) 。
date
pwd
cd,.
【 例 4.2】 带有控制结构的 shell程序 ( 文件名为 ex2) 。
#If no arguments,then listing the current
directory.
#Otherwise,listing each subdirectory.
If test $# =0
then ls
else
for i
do
ls –l $ i | grep ‘^d ‘
done
fi
3,Shell过程的建立和执行称作 Shell文件或者 Shell脚本( Shell
script)。
建立 Shell过程的步骤同建立普通文本文件相同,利用编辑器(如 vi或 gedit) 进行程序录入和编辑加工。
执行 Shell过程的方式主要有以下 3种 。
( 1) 输入定向到 Shell过程
( 2) 以过程名作为参数
( 3) 将 Shell过程改为可执行文件
4.2.2 Shell变量
Shell有两种变量:环境变量和临时变量 。
环境变量是永久性变量,其值不会随 Shell过程执行结束而消失 。 而临时变量是在 Shell程序内部定义的,其使用范围仅限于定义它的程序,出了本程序就不能再用它;而且当程序执行完毕,它的值也就不存在了 。
在 Shell过程中临时变量又分为两类:用户定义的变量和位置参数 。
1,用户定义的变量定义变量并赋值的一般形式是变量名=字符串例如,myfile=/home/lcd/ff/m1.c。
【 例 4.3】 用 echo命令显示变量值 。
$dir=/home/lcd/ff
$echo $ dir
/home/lcd/ff
$echo dir
dir
$
2,输入/输出命令
( 1) read命令可以利用 read命令由标准输入读取数据,
然后赋给指定的变量 。 其一般格式是
read 变量 1[变量 2… ]
( 2) echo命令在前面例子中已使用过 echo命令,它将其后的参数在标准输出上输出。各参数间以空格隔开,以换行符终止。
4.2.3 Shell中的特殊字符
Shell中除使用普通字符外,还使用了一些特殊字符,它们有特定的含义,在使用时应注意它们表示的意义和作用范围 。
1,通配符通配符用于模式匹配,如文件名匹配、
路径名搜索、字符串查找等。
2,引号在 Shell中引号分为 3种:单引号,双引号和倒引号 。
( 1) 双引号由双引号括起来的字符,除 $,倒引号和反斜线 ( \) 仍保留其特殊功能外,其余字符通常作为普通字符对待 。
( 2) 单引号由单引号括起来的字符都作为普通字符出现。
( 3) 倒引号倒引号括起来的字符串被 Shell解释为命令行。
3,输入输出重定向符执行一个 Shell命令时通常会自动打开 3
个 标准文 件,这就是,标准 输入文 件
( stdin),通常对应终端的键盘;标准输出文件 ( stdout) 和标准出错输出文件
( stderr),这两个文件都对应终端的屏幕 。
在 Shell中,这 3个文件都可以通过重新定向符进行重新定向 。
( 1) 输入重定向符输入重定向符,<”的作用是把命令(或可执行程序)的标准输入重新定向到指定文件。
( 2) 输出重定向符输出重定向符,>” 的作用是把命令
( 或可执行程序 ) 的标准输出重定向到指定文件 。 这样,该命令的输出就不在屏幕上显示,而是写入指定文件中 。 例如,
$who > abc
命令 who的输出重新定向到 abc文件中,
在屏幕上看不到执行 who的结果。
4,注释,管道线和后台命令
( 1) 注释如前所述,Shell程序中以 #开头的正文行表示注释 。
( 2) 管道线在 Linux系统中管道线是由竖杠 ( |) 隔开的若干个命令组成的序列,例如,
ls –l $HOME | wc?l
在管道线中,每个命令运行时都有一个独立的进程 。 前一个命令的输出正是下一个命令的输入 。 而管道线中有一类命令也称作,过滤器,,过滤器首先读取输入,然后将输入以某种简单方式进行变换 ( 相当于过滤 ),再将处理结果输出,例如 grep、
tail,sort和 wc等命令就称为过滤器 。
一个管道线中可以包括多条命令,例如,
ls | grep m?.c | wc –l
打印出当前目录文件名是以 m打头,后随一个字符的所有 C文件的数目 。
( 3) 后台命令通常,在主提示符之后输入的命令都立即得到执行 。 在执行过程中,用户和系统可以发生交互作用 —用户输入数据,系统进行处理,并输出运行结果 。 这种工作方式就是前台方式 。
但是有些程序的运行要花费较长时间,
如调用 C编译对 C程序进行编译 。 如果想在编译的同时做别的事情,那么就输入命令
$cc m1.c&
即在一条命令的最后输入,&” 符号,
Shell就在后台启动该程序,并且马上显示主提示符,提醒输入新的命令 。