资源描述
实验一 Linux基本命令及Shell编程
第一部分:Linux常用命令及vi编辑器
一、实验目的
1、了解Linux的环境
2、熟悉Linux常用命令
3、熟悉vi编辑器的使用
二、实验设备
装有Red Hat Enterprise Linux 操作系统的PC机
三、预备知识
了解linux命令行的基本概念
四、实验内容及步骤
1、打开vmware软件,启动linux系统。
2、用root用户名和密码登入系统中。
3、打开一终端窗口,然后在其中输入以下命令进行实验。
1) 获得命令帮助
分别演示一下help --help man info 命令的用法;
2) 目录操作命令
v 用pwd命令查看当前所在的目录。
v 用ls命令列出此目录下的文件和目录。
v 列出此目录下包括隐藏文件在内的所有文件和目录并且长格式显示。
ls -al
v 进入/home目录下,创建测试目录test。
mkdir /home/test
v 利用ls命令列出文件和目录,确认test目录创建成功。
v 进入test目录,查看当前目录的命令,其结果为。
cd test
v 回到上一次工作目录,在删除test目录。
cd ../
rm -rf test
v cd /后,进入/home的命令。(分别用绝对路径和相对路径进入)
cd /home
3) 文件操作命令
v 查看/etc/passwd文件类型。
ls -l /etc/passwd
v 利用touch命令,在/home目录创建一个新的空文件newfile。
touch /home/newfile
v 利用cp命令复制系统文件/etc/profile到/home目录下,其命令为。
cp /etc/profile /home
v 在/home中复制文件profile到一个新文件profile.bak,作为备份,其命令为。
cp /home/profile /home/profilebak
v 用长格形式列出当前目录下的所有文件,注意比较每个文件的长度和创建时间的不同。
ls -l
v 查找 /etc下的passwd这个文件。
find /etc/passwd
v 查找/home目录下的所有名为profile的文件,其命令为。
find /home/ -name *profile*
v 在/home下面创建test目录,在test目录下创建目录a,在a目录下创建目录b,在b目录中创建目录c.在目录c中创建d,用一个命令完成。
mkdir -p /home/test/a/b/c/d
v 进入c目录中。删除目录d
cd /home cd test cd a cd b cd c rm -rf d
v 回到b目录中,然后cd ../..看看到什么目录里去了。
cd . . / /home/test
v 在cd ~ 回到什么目录了。
/root
v 在cd –回到什么目录。
/home/test
v 删除test子目录下的所有文件
rm -rf a
4) 文件查看命令
v 分别用cat,more, less,head,tail查看/etc/passwd文件,看看有什么区别?
cat,more, less,head,tail /etc/passwd
v 只看/etc/passwd的前5行内容。
more -5 /etc/passwd
v 只看/etc/passwd的后5行内容。
tail -5 /etc/passwd
5) 文件查找命令
v 查找文件名为httpd.conf的文件。
find / -name httpd.conf
v 查找文件名包含httpd的文件。
find / -name *httpd*
v 查找/ 目录下的所有目录。
cd / find
v 查找/root 目录下的所有目录普通文件。
find /root/ -type f
v 查找/usr 目录下属主为root的文件或目录。
find /usr/ -user root
v 查找/usr目录下权限为rwxrw-rw-的文件或目录。
find /usr/ -perm 766
v 查找/usr目录下权限为rwxrwxrwx的文件或目录。
find /usr/ -perm 777
v 在/usr目录下查找文件名第二个字符为h的文件,但不在/usr/b i n目录下查找。
find /usr/ -name _h* -path "/usr/bin" -prune -o
4、 打开vi编辑器。在终端中输入vi 或者vi filename名称。如果file文件不存在,将建立此文件;如该文件存在,则打开该文件。
(1)shell提示符下输入 vi命令。
(2)输入”a” 或者”i”转换到编辑模式。
(3)输入 “I am a Chinese boy.”回车。
(4)输入”I like UNIX.”。
(5)键入”Esc”,返回一般模式。
5、替换其中的文字。
(1)将光标移动到”am”的a下。
(2)键入”cw”进入编辑模式。
(3)输入”are”后,键入”Esc”键返回一般模式。
I are a Chinese boy
I like UNIX
6、在上述vi文件中查找字符串”I”。
(1)在一般模式下,键入”/I”。光标即转移到字符”I”处。
(2)键入 “n”,光标到下一个”I”处。
7、将上述vi文件中的”I”替换为”You”。
(1)在一般模式下,键入”:1,$s/I/You/g”,回车。
(2)即可看到更改后的结果。
8、复制及删除。
(1)一般模式下,移动光标到第1行。
(2)输入dd命令。
(3)移动光标到”You like UNIX”行末。
(4)输入yy将其拷贝到缓冲区中。
(5)移动光标到目标位置,输入p即可将缓冲区内容粘贴到此处。结果为:
You like UNIX
You like UNIX
(6) 输入2yy,将上述两行也复制,然后也粘贴到文末。
You like UNIX
You like UNIX
You like UNIX
You like UNIX
9、保存及退出。
(1) 在一般模式下输入 :w a.txt,将其保存为a.txt文件。
(2)输入:q退出vi。
或者
输入q! 强制退出,不保存。
五、 思考题:
1、 如何查看隐含文件列表?
2、 如何将一个目录中的所有文件拷贝到另一个目录中,包括这个目录中的隐含文件。
3、 如何删除一个目录包括其中的所有文件,并且不显示任何提示信息?
4、 什么是绝对路径?什么是相对路径?如何表示?
5、 如何显示命令的路径?
第二部分 Shell编程实验
一、实验目的
1、了解和熟悉创建并使用脚本的步骤。
2、熟悉bash的控制结构。
3、学会简单的shell编程。
二、实验内容
三、预备知识
四、实验设备及工具
装有Red Hat Enterprise Linux 操作系统的PC机
五、实验步骤
(一)、 Shell变量
Shell有两种变量:环境变量和临时变量。在Shell脚本中临时变量又分为两类:用户定义的变量和位置参数。
1. 用户定义的变量
用户定义的变量是最普遍的Shell变量,变量名是以字母或下化线打头的字母、数字和下线符序列,并且大小写字母意义不同。变量名的长度不受限制。定义变量并赋值的一般形式是: 变量名=字符串 例如,
myfile=/usr/meng/ff/m1.c在程序中使用变量的值时,要在变量名前面加上一个符号“$”。这个符号告诉Shell,要读取该变量的值。
(1)定义并显示变量的值
$ dir=/usr/mengqc/file1
$ echo $dir
/usr/mengqc/file1
$ echo dir
dir
$ salutation=7+5
$ echo $dalutation
7+5
$ today=Sunday
$ echo $ today
Sunday
$ str="Hapy New Year ! "
$ echo "Wish You $str"
Wish You Happy New Year !
注意,如果字符串里包含着空格,就必须用引号把它们括起来。还要注意的是等号两边不能有空格。
(2)read命令
作为交互式输入手段,可以利用read命令由标准输入(即键盘)上读取数据,然后赋给指定的变量。其一般格式是:read 变量1 [变量2...]
例如:
$ read name -----输入read命令
mengqc -----输入name的值
$ echo "Your Name is $name."
Your Name is mengqc -----显示输出的结果
$ read a b c -----read命令有三个参数
crtvu cn edu -----输入三个字符串,中间以空格隔开
$ echo "Email : $a.$c.$b"
Email : -----显示输出结果
利用read命令可交互式的为变量两赋值。输入数据时,数据间以空格或制表符作为分隔符。
2. 位置参数
执行Shell脚本时可以使用参数。由出现命令行上的位置确定的参数称做位置参数。在sh中总共有十个位置参数,其对应的名称依次是$0,$1,$2,...$9。其中$0始终表示命令名或Shell脚本名,对于一个命令行,必然有命令名,也就必定有$0;而其它位置参数依据实际需求,可有可无。
练习位置参数的作用。
(1)在你的计算机上建立以下三个文件(设建立在目录/home/username之下,其中username表示你的登陆名):
文件m1.c:
main( )
{
printf("Begin \n");
}
文件m2.c:
# include < stdio.h >
{
printf("OK! \n");
}
文件ex3:依次显示指定文件的内容,并报告显示这两个文件用了多少行
# ex3: shell script to combine files and count lines
cat $1 $2 $3 $4 $5 $6 $7 $8 $9 | wc -l
# end
(2) 将ex3改为具有执行权限:
$ chmod +x ex3
(3) 利用env命令查看在环境变量PATH中是否包含你的当前工作目录(即/home/username)。如果没有包含在其中,则利用以下语句改变PATH的值:
$ PATH= $ PATH:/home/username
(4) 执行脚本ex3:
$ ex3 m1.c m2.c
记录其运行结果
(5)利用位置参数给定变量赋值建立脚本ex5,如下所示:
n1=$1
n2=$2
n3=$3
cat $n1 $n2 $n3 | wc -l
(6) 将ex5改为具有执行权限:
$ chmod +x ex5
(7) 执行脚本ex5:
$ ex5 m1.c m2.c
记录结果
(二)、 SHELL中的特殊字符
1.通配符
通常的通配符有三种:
* 星号,它匹配任意字符的0次或多次出现。但注意,文件名前面的圆点(.)和路径名中的斜线(/)必须显示匹配。
? 问号,它匹配任意一个字符。
[] 一对方括号,其中有一个字符组。其作用是匹配该字符组所限定的任意一个字符。
应该注意:字符 * 和 ?在一对方括号外面是通配符,若出现在其内部,它们就失去通配符的能力了。
! 叹号,若它紧跟在一对方括号的左方括号[之后,则表示不在一对方括号中所列出的字符。
2.引号
在SHELL中引号分为三种:单引号、双引号、和倒引号。
(1)双引号
由双引号括起来的字符,除$、倒引号和反斜线(\)仍保留其功能外,其余字符通常作为普通字符对待。
例1
1.建立以下文件ex8:
echo"current directory is`pwd`"
echo"home directory is $HOME"
echo"file * . ?"
echo" directory ' $ HOME ' "
2.执行ex8:
$sh ex8
(2)单引号
由单引号括起来的字符都作为普通字符出现。
(3)倒引号
例2
$ today=`date`
$echo Today is $today
Today is Thu May 04 10 :56 :20 CST 2000
$
又如:
$ users=`who | wc -l`
$ echo The number of users is $users
The number of users is 5
$
(4)反斜线
转义字符,若想在字符串中使用反斜线本身,则必须采用(\\)的形式,其中第一个反斜线作为转义字符,而把第二个反斜线变为普通字符。
例3 $!/bin/sh
myvar=〝Hi there〞
echo $myvar
echo 〝$myvar〞
echo `$myvar`
echo \$myvar
echo Enter some text
read myvar
echo `$myvar` now equals $myvar
exit 0
记录运行结果
(三) 条件判断与循环结构
1、If语句
2、while语句
(四)Shell综合编程
1、上机编写如下代码,分析下面的程序,简要说明整体功能,并解释每条语句。
#!/bin/sh
val=1
while (test $val -lt 6)
do touch file$val
date>>file$val
val=`expr $val + 1`
done
2、用Shell 编程,判断一文件是不是字符设备文件,如果是将其拷贝到/dev 目录下。
实验总结
附录:vi编辑器使用简介
vi提供三种工作模式:输入模式(insert mode)、命令模式(command mode)和末行模式。
使用者进入vi后,即处在命令模式下,此刻键入的任何字符皆被视为命令,可进行删除、修改、存盘、查找、替换等操作。要输入信息,应转换到输入模式。
1、以下命令均可进入编辑模式指令。
表一
a(append)
在光标之后加入资料
A
在该行之末加入资料
i(insert)
在光标之前加入资料
I
在该行之首加入资料
o(open)
新增一行于该行之下,供输入资料用
O
新增一行于该行之上,供输入资料用
2、使用Esc命令从编辑模式进入一般或者命令模式。以下命令文件保存、退出vi。
表二
:q!
离开vi,并放弃刚在缓冲区内编辑的内容
:wq
将缓冲区内的资料写入磁盘中,并离开vi
:ZZ
同wq
:x
同wq
:w
将缓冲区内的资料写入磁盘中,但并不离开vi
:w 文件名
以文件名保持当前文件
:q
离开vi,若文件被修改过,则要被要求确认是否放弃修改的内容,此指令可与:w配合使用
3、vi下的光标移动命令。
表三
移动光标h、j、k、l。
分别控制光标左、下、上、右移一格
Ctrl+b:
上滚一屏。
Ctrl+f:
下滚一屏。
Ctrl+d:
下滚半屏。
Ctrl+u:
上滚半屏。
G:
移到文件最后。
w:
移到下个字的开头。
b:
跳至上个字的开头。
4、删除命令。
表四
x:
删除当前光标所在后面一个字符。
#x:
删除当前光标所在后面#个字符。例如,5x表示删除5个字符。
dd:
删除当前光标所在行。
#dd:
删除当前光标所在后面#行。例如,5dd表示删除自光标算起的5行。
X:
删当前光标的左字符。
D:
删至行尾。
5、更改及替代命令。
表五
cw:
更改光标处的字到此单字的字尾处。
c#w:
例如,c3w表示更改3个字。
cc:
修改行。
C:
替换到行尾。
r:
取代光标处的字符。
R:
取代字符直到按ESC为止。
6、复制及复原命令。
表六
yw:
拷贝光标处的字到字尾至缓冲区。
p:
把缓冲区的资料贴上来。
yy:
拷贝光标所在之行至缓冲区。
#yy:
例如,5yy,拷贝光标所在之处以下5行至缓冲区。
u:
复原至上一操作。
g:
列出行号,及相关信息。
7、vi查找和替换命令
表七
命令
功能
/word
向后寻找字符串”word”
?word
向前寻找字符串”word”
:n1,n2s/word1/word2/g
替换n1行至n2行之间的字符串word1为word2
:1,$s/word1/word2/g
全文本替换字符串word1为word2
:g/word1/s/word2/g
将字符串word1替换为word2
ls -la | grep ^. 隐藏文件一般都是以.开头的
展开阅读全文