1、实验一 Linux基本命令及Shell编程第一部分:Linux常用命令及vi编辑器一、实验目的1、了解Linux的环境2、熟悉Linux常用命令 3、熟悉vi编辑器的使用 二、实验设备装有RedHat EnterpriseLinux操作系统的PC机三、预备知识了解linux命令行的基本概念四、实验内容及步骤1、打开vmware软件,启动linux系统。2、用root用户名和密码登入系统中。3、打开一终端窗口,然后在其中输入以下命令进行实验。1) 获得命令帮助分别演示一下help -help man info 命令的用法;2) 目录操作命令v 用pwd命令查看当前所在的目录。v 用ls命令列出此
2、目录下的文件和目录。v 列出此目录下包括隐藏文件在内的所有文件和目录并且长格式显示。ls -alv 进入/home目录下,创建测试目录test。mkdir /home/testv 利用ls命令列出文件和目录,确认test目录创建成功。v 进入test目录,查看当前目录的命令,其结果为。cd test v 回到上一次工作目录,在删除test目录。cd ./ rm -rf testv cd /后,进入/home的命令。(分别用绝对路径和相对路径进入)cd /home 3) 文件操作命令v 查看/etc/passwd文件类型。ls -l /etc/passwdv 利用touch命令,在/home目录
3、创建一个新的空文件newfile。touch /home/newfilev 利用cp命令复制系统文件/etc/profile到/home目录下,其命令为。cp /etc/profile /homev 在/home中复制文件profile到一个新文件profile.bak,作为备份,其命令为。cp /home/profile /home/profilebakv 用长格形式列出当前目录下的所有文件,注意比较每个文件的长度和创建时间的不同。ls -lv 查找 /etc下的passwd这个文件。find /etc/passwdv 查找/home目录下的所有名为profile的文件,其命令为。find
4、/home/ -name *profile*v 在/home下面创建test目录,在test目录下创建目录a,在a目录下创建目录b,在b目录中创建目录c.在目录c中创建d,用一个命令完成。mkdir -p /home/test/a/b/c/dv 进入c目录中。删除目录dcd /home cd test cd a cd b cd c rm -rf dv 回到b目录中,然后cd ./.看看到什么目录里去了。cd . . / /home/testv 在cd 回到什么目录了。/rootv 在cd 回到什么目录。/home/testv 删除test子目录下的所有文件rm -rf a4) 文件查看命令v
5、分别用cat,more, less,head,tail查看/etc/passwd文件,看看有什么区别?cat,more, less,head,tail /etc/passwdv 只看/etc/passwd的前5行内容。more -5 /etc/passwdv 只看/etc/passwd的后5行内容。tail -5 /etc/passwd5) 文件查找命令v 查找文件名为httpd.conf的文件。find / -name httpd.confv 查找文件名包含httpd的文件。find / -name *httpd*v 查找/ 目录下的所有目录。cd / find v 查找/root 目录下的
6、所有目录普通文件。find /root/ -type fv 查找/usr 目录下属主为root的文件或目录。find /usr/ -user rootv 查找/usr目录下权限为rwxrw-rw-的文件或目录。find /usr/ -perm 766v 查找/usr目录下权限为rwxrwxrwx的文件或目录。find /usr/ -perm 777v 在/usr目录下查找文件名第二个字符为h的文件,但不在/usr/b i n目录下查找。find /usr/ -name _h* -path /usr/bin -prune -o4、 打开vi编辑器。在终端中输入vi 或者vi filename名称
7、。如果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 boyI like UNIX6、在上述vi文件中查找字符串”I”。(1)在一般模式下,键入”/I”。光标即转移到字符”I”处。(2)键入 “
8、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 UNIXYou like UNIX(6) 输入2yy,将上述两行也复制,然后也粘贴到文末。You like UNIXYou like UNIXYou like UNIXYou like UNI
9、X9、保存及退出。(1) 在一般模式下输入 :w a.txt,将其保存为a.txt文件。(2)输入:q退出vi。或者输入q! 强制退出,不保存。五、 思考题:1、 如何查看隐含文件列表?2、 如何将一个目录中的所有文件拷贝到另一个目录中,包括这个目录中的隐含文件。3、 如何删除一个目录包括其中的所有文件,并且不显示任何提示信息?4、 什么是绝对路径?什么是相对路径?如何表示?5、 如何显示命令的路径?第二部分 Shell编程实验一、实验目的1、了解和熟悉创建并使用脚本的步骤。2、熟悉bash的控制结构。3、学会简单的shell编程。二、实验内容三、预备知识四、实验设备及工具装有RedHat E
10、nterpriseLinux操作系统的PC机五、实验步骤(一)、 Shell变量Shell有两种变量:环境变量和临时变量。在Shell脚本中临时变量又分为两类:用户定义的变量和位置参数。1. 用户定义的变量用户定义的变量是最普遍的Shell变量,变量名是以字母或下化线打头的字母、数字和下线符序列,并且大小写字母意义不同。变量名的长度不受限制。定义变量并赋值的一般形式是: 变量名=字符串 例如, myfile=/usr/meng/ff/m1.c在程序中使用变量的值时,要在变量名前面加上一个符号“$”。这个符号告诉Shell,要读取该变量的值。(1)定义并显示变量的值$ dir=/usr/meng
11、qc/file1$ echo $dir/usr/mengqc/file1 $ echo dirdir$ salutation=7+5$ echo $dalutation7+5$ today=Sunday$ echo $ today Sunday$ str=Hapy New Year ! $ echo Wish You $strWish You Happy New Year ! 注意,如果字符串里包含着空格,就必须用引号把它们括起来。还要注意的是等号两边不能有空格。(2)read命令作为交互式输入手段,可以利用read命令由标准输入(即键盘)上读取数据,然后赋给指定的变量。其一般格式是:read
12、 变量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中总共有十个位置参数,其
13、对应的名称依次是$0,$1,$2,.$9。其中$0始终表示命令名或Shell脚本名,对于一个命令行,必然有命令名,也就必定有$0;而其它位置参数依据实际需求,可有可无。练习位置参数的作用。(1)在你的计算机上建立以下三个文件(设建立在目录/home/username之下,其中username表示你的登陆名):文件m1.c:main( )printf(Begin n);文件m2.c:# include printf(OK! n);文件ex3:依次显示指定文件的内容,并报告显示这两个文件用了多少行# ex3: shell script to combine files and count line
14、scat $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=$1n2=$2n3=$3cat $n1 $n2 $n3 | wc -l(6) 将ex5改为具有执行权限
15、:$ chmod +x ex5(7) 执行脚本ex5:$ ex5 m1.c m2.c记录结果(二)、 SHELL中的特殊字符1.通配符通常的通配符有三种:* 星号,它匹配任意字符的0次或多次出现。但注意,文件名前面的圆点(.)和路径名中的斜线(/)必须显示匹配。? 问号,它匹配任意一个字符。 一对方括号,其中有一个字符组。其作用是匹配该字符组所限定的任意一个字符。应该注意:字符 * 和 ?在一对方括号外面是通配符,若出现在其内部,它们就失去通配符的能力了。! 叹号,若它紧跟在一对方括号的左方括号之后,则表示不在一对方括号中所列出的字符。2.引号在SHELL中引号分为三种:单引号、双引号、和倒引
16、号。(1)双引号由双引号括起来的字符,除$、倒引号和反斜线()仍保留其功能外,其余字符通常作为普通字符对待。例1 1.建立以下文件ex8:echocurrent directory ispwdechohome directory is $HOMEechofile * . ?echo directory $ HOME 2.执行ex8:$sh ex8(2)单引号由单引号括起来的字符都作为普通字符出现。(3)倒引号例2$ today=date$echo Today is $todayToday is Thu May 04 10 :56 :20 CST 2000$又如:$ users=who | wc
17、 -l$ echo The number of users is $usersThe number of users is 5$(4)反斜线转义字符,若想在字符串中使用反斜线本身,则必须采用()的形式,其中第一个反斜线作为转义字符,而把第二个反斜线变为普通字符。 例3 $!/bin/shmyvar=Hi thereecho $myvarecho $myvarecho $myvarecho $myvarecho Enter some textread myvarecho $myvar now equals $myvarexit 0记录运行结果(三) 条件判断与循环结构1、If语句2、while语
18、句(四)Shell综合编程1、上机编写如下代码,分析下面的程序,简要说明整体功能,并解释每条语句。#!/bin/shval=1while (test $val -lt 6)do touch file$valdatefile$valval=expr $val + 1done2、用Shell 编程,判断一文件是不是字符设备文件,如果是将其拷贝到/dev 目录下。实验总结附录:vi编辑器使用简介vi提供三种工作模式:输入模式(insert mode)、命令模式(command mode)和末行模式。使用者进入vi后,即处在命令模式下,此刻键入的任何字符皆被视为命令,可进行删除、修改、存盘、查找、替换
19、等操作。要输入信息,应转换到输入模式。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,若文件被修改过,则要被要求确认是否放弃修改
20、的内容,此指令可与: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:更改光标处的字到此单字的字尾处
21、。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替换为word2ls -la | grep . 隐藏文件一般都是以.开头的
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100