《1 Linux介绍 Shell编程.ppt》由会员分享,可在线阅读,更多相关《1 Linux介绍 Shell编程.ppt(58页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、操作系统操作系统 课程设计课程设计 内容内容1 Linux and SHELL programming 邓岳邓岳 张志钦张志钦评分规则u规则1:成绩比例 出勤率+课堂表现占20%,程序占60%,文档占20%u规则2:提交内容:电子版实验报告册(格式见模板)+手写版实验报告册(封面用电子版的封面打印)+电子版全部源代码。u规则3:在满足PPT中设计要求条件下,鼓励创新,新颖的解决方案成绩高。即(1)参考别人的方案做出来的解决方案不会得高分(2)先做完的同学请先验收u规则4:中级和高级题目需独立完成,若出现抄袭,成绩按不及格处理,并上报学院。u规则5:上课时电脑请勿用作其它方面(游戏等),如有违反
2、第一次警告,第二次按不及格处理,并上报学院。u规则6:考勤点名随机进行。u规则7:在验收时,其他同学请勿围观.AbstractLinux 介绍1Linux常用命令2VI编辑器3Linux SHELL编程4参考资料:参考资料:http:/linux.vbird.org/linux_basic/1、Linux Intro.lLinux由 Linus Torvalds 于1991年基于Intel 80386处理器开发;起初可运行gcc、bash和少量的应用程序;u现在,Linux支持的体系架构包括:Alpha,SPARC,Motorola MC680 x0,PowerPC,IBM System/39
3、0等。l支持POSIX国际标准(Portable Operating System Interface)l开源(ftp:/ftp.kernel.org 可下载源码)l可定制化及裁剪l可运行在手机等廉价设备l已广泛应用于服务器系统Linux Intro.Distributionl发行版本(Distribution)=Kernel+Apps/Toolsl常见的发行版:uRedHat/Fedora,http:/uDebian/Ubuntu,http:/www.debian.orguTurbo Linuxu红旗LinuxLinux Intro.内核版本号l版本号命名规则:X.Y.ZuX 代表主版本号u
4、Y代表次版本号,偶数代表稳定版,奇数代表开发版uZ代表修订版本号,uX.Y.0代表 X.Y版系列l版本主干2.6.11 2.6.12-rc1 2.6.12-rc2 2.6.12l稳定版补丁2.6.11.1 2.6.11.2 2.6.11.3 Linux内核体系结构基本结构图Text体系结构相关部分体系结构相关部分(不可移植不可移植)内内核核可可移移植植部部分分用户应用程序、工具、用户应用程序、工具、DBMS硬硬 件件体系结构无关部分体系结构无关部分(可移植可移植)系统库系统库(如标准如标准C库库)内核将应用程内核将应用程序和硬件分离序和硬件分离Linux内核源代码 目录结构/usr/src/l
5、inuxarch DocumentationDrivers fs include init ipc kernel mm net scripts lib 实现libc的子集与体系结构无关的内存管理进程调度(sched),创建/撤销进程(fork/exit)实现System V 进程间通信(IPC)的代码main.c,包含大部分的协调内核初始化的代码Linux 支持的所有文件系统,FS是存储设备和访问存储设备的进程之间的媒介kernel 支持体系结构特有的信号处理、SMP等 lib 体系机构特有的通用函数的实现代码-strlen,memcpymm 体系结构特有的内存管理网络协议配置内核的脚本Lin
6、ux内核的配置1.以root用户登录操作系统2.cd /usr/src/linux3.执行配置程序make config (提问交互式)Y 将对应功能连接在内核中 N 不将对应功能连接在内核中 M 将该功能编译成可以在需要时动态插入到内核中的模块make menuconfig(菜单式,最常用)make xconfig(X windows based)2、Linux 常用命令l两种类型命令ushell内部命令(类似于windows下的dos命令)u外部应用程序命令l命令格式 command option argumentscommand option arguments执行的命令执行的命令执行的
7、命令执行的命令命令的命令的命令的命令的选项,选项,选项,选项,说明对说明对说明对说明对命令的命令的命令的命令的要求要求要求要求命令的参命令的参命令的参命令的参数,描述数,描述数,描述数,描述命令作用命令作用命令作用命令作用的对象的对象的对象的对象表示选项或参数可有可无,即参数并非必须表示选项或参数可有可无,即参数并非必须表示选项或参数可有可无,即参数并非必须表示选项或参数可有可无,即参数并非必须Linux 帮助命令l应用程序帮助选项:-h或-helplhelp获得命令的帮助信息lman获得应用程序帮助手册linfo获得应用程序的帮助信息Linux目录操作命令命令命令功能功能ls列出目录的属性信
8、息pwd列出用户当前所处目录路径du列出目录占用磁盘空间大小cd改变用户的当前目录mkdir建立一个新目录rmdir删除一个目录及其中的文件Linux访问文件命令命令命令功能功能ls列出文件的属性信息find在指定路径查找文件whereis在PATH环境变量指定路径查找文件grep在指定文件中查找指定的字符串cat连续显示、查看文件内容more分页查看文件内容less分页可控制查看文件内容Linux文件操作命令命令命令功能功能cp复制文件或目录mv移动文件或目录rm删除文件或目录Linux文件属性l文件属性操作uchown 设置文件的所有者uchgrp 设置文件的属组信息u权限总共分为10位r
9、ootpc root#ls-l install.log-rw-r-r-1 root root 26195 Dec 17 10:42 install.log权限权限权限权限引用引用引用引用计数计数计数计数所有者所有者所有者所有者所属组所属组所属组所属组大小大小大小大小创建时间创建时间创建时间创建时间文件名文件名文件名文件名Linux 文件权限权限项权限项文件类型读写执行读写执行读写执行字符表示字符表示(d|t|c|s|)(r)(w)(x)(r)(w)(x)(r)(w)(x)数字表示数字表示421421421权限分配权限分配文件所有者文件所属组用户其他用户n文件权限(文件权限(-rw-r-r-)n
10、文件权限操作命令文件权限操作命令u chmod3、VI 编辑器l文本编辑器与字处理程序u文本编辑器只处理ASCII码文件u字处理程序进行复杂的文字编辑工作l文本编辑器类型u行编辑器u全屏幕编辑器l流行的文本编辑器vim、emacs、pico、nano、joe、jed文本编辑器比较:http:/zh.wikipedia.org/zh-cn/文本编辑器比较3、VI 编辑器l纯文本编辑器l全屏幕编辑器l工作于3种模式l通过命令进行编辑操作l基本上所有发行版本的Linux都使用VIM(一个从vi发展出的文本编辑器)lVIM是跨平台的,在Windows下也有lVIM参考资料:http:/ 基本vi编辑命
11、令进入进入vivivivi编辑器编辑器 为了启动为了启动vivi,用户可以在终端输入,用户可以在终端输入vivi,按空格,再输入新,按空格,再输入新文件名(如文件名(如myfilemyfile),然后按回车键。若),然后按回车键。若myfilemyfile已经存在,则已经存在,则vivi就会在屏幕上显示该文件的第一行;否则,就会在屏幕上显示该文件的第一行;否则,vivi会清除屏幕,会清除屏幕,显示显示vivi编辑器的一些信息。此时编辑器的一些信息。此时vivi处于命令模式,准备接受用处于命令模式,准备接受用户的命令。为了输入文本,必须切换到文本输入模式,一般是户的命令。为了输入文本,必须切换到
12、文本输入模式,一般是按下按下i i(insertinsert)键或)键或a a(appendappend)键来切换。)键来切换。文文本本输输入入模模式式 :用用户户直直接接以以vivi进进入入文文本本后后,就就进进入入了了命命令令模模式式下下.若若用用户户想想要要对对文文本本进进行行插插入入内内容容操操作作就就必必须须转转换换到到文文本本输输入入模式下模式下(下一页列出了几个常用的命令下一页列出了几个常用的命令)。命令键命令键功功 能能i i(小写)(小写)在光标左侧输入文本在光标左侧输入文本I I在光标所在行的开头输入文本在光标所在行的开头输入文本a a(小写)(小写)在光标右侧输入文本在光
13、标右侧输入文本A A在光标所在行的末尾输入文本在光标所在行的末尾输入文本o o(小写)(小写)在光标所在行的下一行添加新行,并且光标位在光标所在行的下一行添加新行,并且光标位于新行的开头于新行的开头O O在光标所在行的上一行添加新行,并且光标位在光标所在行的上一行添加新行,并且光标位于新行的开头于新行的开头命令模式 启动启动vivi编辑器,默认进入命令模式;在文本输入模式下,可编辑器,默认进入命令模式;在文本输入模式下,可以按以按ESCESC键切换到命令模式。在这种模式下,用户可进行键切换到命令模式。在这种模式下,用户可进行各种操作:各种操作:移动光标:移动光标:要对正文内容进行删除、修改或插
14、入,首先需要将光标移动要对正文内容进行删除、修改或插入,首先需要将光标移动到相应的位置。用户既可以通过移动箭头键来移动,也可以到相应的位置。用户既可以通过移动箭头键来移动,也可以使用如下的快捷键来移动:使用如下的快捷键来移动:键键 功功 能能 h h或左箭头或左箭头 光标左移一个空格光标左移一个空格 j j或下箭头或下箭头 光标下移一行光标下移一行 k k或上箭头或上箭头 光标上移一行光标上移一行 l l或右箭头或右箭头 光标右移一个空格光标右移一个空格 键键 功功 能能$将光标移到当前行的末尾将光标移到当前行的末尾 W W 右移光标到后一个字的开头右移光标到后一个字的开头 B B 左移光标到
15、前一个字的开头左移光标到前一个字的开头 E E 右移光标到下一个字的末尾右移光标到下一个字的末尾 0 0(数字)(数字)左移光标到本行的开头左移光标到本行的开头 回车键回车键(return)(return)移动光标到下一行的开头移动光标到下一行的开头 空格键空格键(space)(space)光标右移一个空格光标右移一个空格 回退键(回退键(backspacebackspace)左移一个空格)左移一个空格 文本修改:vivi处于命令模式时,可以进行替换字符、删除字符等处于命令模式时,可以进行替换字符、删除字符等操作,也可以用操作,也可以用undoundo命令来修改错误。文本修改命令仅适用于命令来
16、修改错误。文本修改命令仅适用于vivi的命令模式,大部分不会修改其工作模式。的命令模式,大部分不会修改其工作模式。键键 功功 能能 是否改变模式是否改变模式 X X 删除光标所在位置的字符删除光标所在位置的字符 不改变不改变 dddd(小写)(小写)删除光标所在行删除光标所在行 不改变不改变 u u(小写)(小写)放弃最近的修改放弃最近的修改 不改变不改变U U 放弃对当前行做的所有修改放弃对当前行做的所有修改 不改变不改变 r r(小写)(小写)替换光标所在位置的一个字符替换光标所在位置的一个字符 不改变不改变R R 从当前位置起开始替换字符从当前位置起开始替换字符 改变至文本改变至文本输入
17、模式输入模式.(.(点号点号)重复上次操作重复上次操作 不改变不改变 退出vi 用户可以根据自己的意图而选择不同的退出用户可以根据自己的意图而选择不同的退出vivi的方式。的方式。键键 功功 能能 wqwq 保存文件,同时退出保存文件,同时退出vi vi w w保存文件,但不退出保存文件,但不退出vi vi q q 退出退出vi vi q!q!退出退出vivi,同时放弃所作的修改,同时放弃所作的修改 ZZ ZZ 保存文件,同时退出保存文件,同时退出vi vi(同(同wqwq)4、SHELL编程lSHELL 命令行解释器u提供操作系统核心(称为kernel)与用户之间进行交互。它从用户登录起就开
18、始运行,允许用户通过shell脚本或者命令行的方式输入命令,并通过翻译这些命令完成用户与kernel之间的交互。u提供脚本语言编程环境,方便用户自动批量处理大量的工作任务操作系统SHELL结果结果结果结果命令命令命令命令用 户4、SHELL种类l常用SHELLuBourne Shell(sh,b-sh),贝尔实验室的Steven Bourne开发uC Shell(csh),Bill Joy 为BSD UNIX 分布式系统开发uKorn Shell(ksh),基于Bourne Shell对C Shell进行扩展开发uBourne Again Shell(bash),Linux的缺省SHELLba
19、sh通配符l*通配符:匹配任意多个任意字符l?通配符:匹配任意一个字符lset:匹配set中的任意字符 判断下列使用了通配符的字符串的能否判断下列使用了通配符的字符串的能否匹配匹配“reportfiles”字符串?字符串?*r*f*report*files*report*filesopq*report*?r?f?eportfiles?eport*?opq?report*反斜杠为转义符,与反斜杠为转义符,与C语言类似语言类似参考资料:参考资料:google搜索搜索“bash”Shell ScriptlSHELL Script(脚本)u将一组命令/可执行程序有序地组织在一起,完成一项任务,等同于D
20、OS下bat批处理文件u扩展名为sh,由特定的SHELL解释执行缺省为当前登录的SHELL 可在脚本中第一行指定,语法为“#!path-of-shell”如,#!/bin/shlSHELL是一种编程语言,SHELL Script是一个程序l参考资料:http:/linux.vbird.org/linux_basic/0340bashshell-scripts.phpSHELL编程基础l用户(user),组(group)u为给某人提供使用计算机/操作系统的权利,而在操作系统中必须增加一个用户,此用户的登录名(Login name)是操作系统辨别身份,确定权限的依据u同时,为共享资料,可按照某种规
21、则,将操作系统的用户划规到某个组或若干组中。lLinux的特权用户root,是系统自带的,称为系统管理员;lLinux中的文件均有存取模式(mode),所属用户(owner)和所属组别(group)。SHELL编程基础(cont.)l文件描述符(File Descriptor,FD)u是一个小的正整数,相当于文件编号u标识一个进程当前打开的I/O句柄,并通过该标识进行读写操作uFD对应的文件是广义的,包括磁盘文件、终端、键盘、网络连接和其它I/O设备(不局限于windows下的磁盘文件的概念)标准输入/输出l每个Linux进程都会打开3个文件用来处理程序的输入输出工作文件文件文件描述符文件描述
22、符默认设备默认设备输入文件:标准输入0键盘输出文件:标准输出1屏幕错误输出文件:标准错误输出2屏幕#!/bin/bash#Here is commentsecho “Enter your name and age:”read A B#A for name,B for ageecho “Your name is$A,Age is$B”SHELL编程基础(cont.)l输入与输出显示输出从stdin读入#为注释SHELL编程基础(cont.)l管道(pipe)u用法:command1|command2u用途:将命令command1的标准输出做为命令command2的标准输入u可将多个命令的输入和输
23、出连接示例:lsls命令的输出命令的输出命令的输出命令的输出管道管道管道管道rootpc root#ls|grep*.txtrootpc root#ls|grep*.txt在当前目录中查找以txt为扩展名的文件lslsgrepgrep*.txt*.txtI/O重定向lI/O重定向u输入重定向,将标准输入重定向,将标准输出重定向,重写输出文件,将输出重定向并追加到文件后面command input_filecat output_filecommand output_file 2output_filecommand output_file 2&1command2 output_file重定向l 输
24、出重定向u语法:u示例:l2 标准错误输出重定向u语法:u示例:命令命令命令命令 输入文件输入文件输入文件输入文件rootpc root#cat inputfilerootpc root#cat 输出文件输出文件输出文件输出文件rootpc root#ls outputfilerootpc root#ls outputfile命令命令命令命令 2errorfile2errorfilerootpc root#ls 2 inputfilerootpc root#ls 2 inputfile重定向(Cont.)l常用文件重定向命令重定向命令重定向命令意义意义command filename把标准输出
25、重定向到一个文件中command filename把标准输出追加重定向到一个文件中command 1 fielname把标准输出重定向到一个文件中command filename 2&1把标准输出和标准错误输出重定向到一个文件中command 2 filename把标准错误输出重定向到一个文件中command filename2以filename为标准输入,filename2为标准输出command filename把filename作为命令的标准输入command delimiter从标准输入读入数据,直到遇到delimiter为止Shell 变量l语法u变量名由下划线(_)、字母、数字组成
26、,但变量名不能以数字开头,大小写敏感u变量值为一个字符串u使用“$”符号获得变量的值l类型u本地变量u环境变量u位置参数变量u预定义变量本地变量l设置变量:l引用变量:l清除变量:l查看变量:l设置环境变量:l引用环境变量:常用环境变量uHOME;PATH;TERM;UID;PWD;PS1变量名变量值变量名变量值变量名变量值变量名变量值$变量名变量名变量名变量名unset unset 变量名变量名变量名变量名setset$变量名变量名变量名变量名export export 变量名变量值变量名变量值变量名变量值变量名变量值位置参数变量l由Shell在程序运行时设置l共10个变量,从程序名开始依次
27、为09u即实际参数从1开始lshift命令递归访问参数$0$1$2$3 预定义变量变量名值意义$#传递到脚本的参数的数量$*以一个单字符串显示传递到脚本的所有参数内容$?命令执行后返回的状态,返回0表示成功执行,其它值则表明执行错误$当前进程的进程号,对于Shell脚本,是执行脚本的进程号$!后台运行的最后一个进程号$0当前执行的进程名,对于SHELL脚本,是其被调用的路径名变量举例l变量u定义:varname=valueu引用:$varnameu举例:A=2echo$A屏幕将输出 2。u分类SHELL变量用户变量LINUX系统系统Shell 环境配置文件l/etc/profile、/etc/
28、profile.d/*l/.bash_profile、/.bashrc、/etc/bashrc/etc/profile、/etc/profile.d/*用户用户1/.bash_profile/.bashrc用户用户2/.bash_profile/.bashrc用户用户3/.bash_profile/.bashrcShell脚本l脚本概念l脚本运行l基本脚本编程脚本概念l无需编译,解释执行l文本文件形式存在l强大的正则表达式操作l运行速度慢l数据类型支持少l用于系统管理和文件操作lShell script 中可以使用SHELL内建命令,如:echo,pwd,aliasl也可以使用外部命令,如:l
29、s,date,greplSHELL Script 中也可以使用函数、循环、条件判断等。脚本运行l编写脚本程序l改变脚本程序文件的权限为可执行l运行脚本程序u#./脚本程序u#bash 脚本程序u#./脚本程序u#exec 脚本程序基本脚本编程l变量类型l条件测试l流程控制l函数条件测试l使用test命令u语法:l使用括号 u语法:l条件表达式的值为真返回零,为假时返回非零值test test 条件表达式条件表达式条件表达式条件表达式 条件表达式条件表达式条件表达式条件表达式 流程控制lif then else语句u语法 if 条件语句1 then命令elif 条件语句2 then 命令else
30、命令fi条件条件条件条件1 1为真为真为真为真条件条件条件条件1 1为假为假为假为假条件条件条件条件2 2为真为真为真为真条件条件条件条件2 2为假为假为假为假elif和else可选一个if语句中可包含任意多个elif语句,但else语句最多只能包含一个一个if语句只能包括一个if和与之对应的fi语句。if-fi块可以嵌套流程控制(Cont.)lfor循环u语法u举例 for i in 1 2 3 4 do echo$i done变量名被赋予列表中的每个元素值,每赋值一次,执行一次循环体for for 变量名变量名变量名变量名 in in 列表列表列表列表dodo命令命令命令命令donedon
31、e流程控制(Cont.)lwhile循环u语法u举例while while 条件条件条件条件dodo命令命令命令命令donedone每次计算条件,如果为true则执行一次循环体read x while$x-lt 10 doecho$x read xdone流程控制(Cont.)luntil循环u语法u举例until until 条件条件条件条件dodo命令命令命令命令donedonex=1 until$x-ge 10 do echo$x x=$($x+1)done命令循环体一直执行,直到条件为true。不常用,可转化为等价的while循环流程控制(Cont.)lcase语句u根据变量的值与哪个
32、模式相匹配而执行相应的语句序列case word in pattern1)list1;pattern2)list2;*)list3;esac缺省模式,可匹配任何内容,可选匹配模式pattern1时执行序列list1匹配模式pattern1时执行序列list1匹配模式pattern1时执行序列list1函数l脚本中的函数与C语言中的函数类似,可有参数,有返回值l调用SHELL函数时只需要函数名,而不能使用括号;没有参数时的调用方式:fun_name 有参数时的调用方式:fun_name 参数1 参数2 函数名函数名函数名函数名()()命令命令命令命令()中不允许存在任何非空格/TAB外的内容实验内容实验内容1l编写并执行Bash脚本文件(二选一)u脚本1:脚本接受两个整数作为输入参数,输出两个整数的和,以及两个整数的和是奇数还是偶数u脚本2:脚本接受一个字符作为输入参数,如果输入的字符为s则输出电脑的操作系统信息,如果输入的字符为m则输出电脑cpu的信息可能需要uname和printf命令,用法googlel编写、编译并执行一个C语言程序,使其接受用户输入两个整数作为输入参数,程序在屏幕输出两个整数的和,以及两个整数的和是奇数还是偶数。uGoogle搜索“linux下编译c程序”