欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    linux编程 第 2 讲.pdf

    • 资源ID:70332638       资源大小:253.14KB        全文页数:9页
    • 资源格式: PDF        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    linux编程 第 2 讲.pdf

    ShellShell程序设计程序设计ShellShell的作用的作用操作系统与用户进行交互操作的界面操作系统与用户进行交互操作的界面提供脚本语言编程环境提供脚本语言编程环境,方便用户自动批量处理大量的工作任方便用户自动批量处理大量的工作任务务用户用户用户用户命令命令命令命令结果结果结果结果操作系统操作系统操作系统操作系统ShellShellShellShell的产生与发展的产生与发展支持支持Bourne shellBourne shell、C shellC shell和和KornKorn shellshell 标准标准shellshell为为bashbash(GNU BourneGNU Bourne-Again ShellAgain Shell)Bourne shellBourne shell向下兼容向下兼容作业控制作业控制(job controljob control)别名功能别名功能(aliasesaliases)命令历史命令历史(command historycommand history)命令行编辑功能命令行编辑功能自定义功能键自定义功能键提供更丰富的变量类型提供更丰富的变量类型、命令与控制结构命令与控制结构Linux ShellLinux Shell的功能的功能BshBshKshKshBashBashCshCshBsh在在20世纪世纪70年代中期诞生于新泽年代中期诞生于新泽西的西的AT&T贝尔实验室贝尔实验室,具有较强的脚具有较强的脚本编程功能本编程功能Csh在在20世纪世纪80年代早期诞生于加利福年代早期诞生于加利福尼亚大学尼亚大学,使用使用C语言的语法语言的语法,用户命用户命令交互更加方便令交互更加方便Ksh结合了结合了Bsh和和Csh两者的功能优两者的功能优势势,兼有兼有Bsh的语法和的语法和Csh的交互特性的交互特性Bash是是Bsh的升级替代品的升级替代品,吸收了吸收了Ksh中的诸多优秀特性中的诸多优秀特性,Bash是开源软件是开源软件ShellShell的发展与分类的发展与分类#!/bin/bash#!/bin/bash#Here is comments#Here is commentsfor file in*;dofor file in*;doifif grepgrep POSIX$file;thenPOSIX$file;thenecho$fileecho$filefifidonedoneexit 0exit 0脚本文件的格式脚本文件的格式方法方法1:1:shsh script_filescript_file方法方法2:2:chmodchmod+x+x script_filescript_file././script_filescript_file方法方法3:3:sourcesource script_filescript_file,or,or.script_filescript_file执行脚本文件执行脚本文件本地变量本地变量环境变量环境变量位置参数变量位置参数变量预定义变量预定义变量变量的类型变量的类型设置变量设置变量:引用变量引用变量:清除变量清除变量:查看变量查看变量:变量值置换变量值置换变量名变量名变量值变量值变量名变量名变量值变量值变量名变量名变量值变量值变量变量=$参数变量参数变量:-word变量变量变量变量=$=$参数变量参数变量参数变量参数变量:-wordword$变量名变量名$变量名变量名变量名变量名unset 变量名变量名unset unset 变量名变量名变量名变量名setsetset变量变量=$参数变量参数变量:=word变量变量变量变量=$=$参数变量参数变量参数变量参数变量:=word:=word变量变量=$参数变量参数变量:?word变量变量变量变量=$=$参数变量参数变量参数变量参数变量:?word:?word变量变量=$参数变量参数变量:+word变量变量变量变量=$=$参数变量参数变量参数变量参数变量:+word:+word本地变量本地变量 用 FinePrint 打印-可在 订购输入输入/输出输出从键盘或文件中读入信息从键盘或文件中读入信息readread 变量变量显示文本行或变量显示文本行或变量echoecho 字符串字符串功能功能命令命令echoecho命令命令关闭反斜线控制字符的转换关闭反斜线控制字符的转换(默认默认)-E E启用反斜线控制字符的转换启用反斜线控制字符的转换-e e不要在最后自动换行不要在最后自动换行-n n功能功能选项选项Example:Example:$echo$echo -e ae a tbtb tctc ndnd tete tftfa b ca b cd e fd e fechoecho转义符转义符表格跳位表格跳位鍵鍵 t t回车键回车键 r rESCAPEESCAPE,逃离键逃离键 E E取消行末的行换符号取消行末的行换符号 c c反斜线本身反斜线本身 換換行字符行字符 n n换页字符换页字符 f f也就是向左也就是向左刪刪除除 b b从系统喇叭发送出声音从系统喇叭发送出声音 a a功能功能转义符转义符语法语法$(command)$(command)commandcommand举例举例#!/bin/#!/bin/shshechoecho “The current directory is$PWDThe current directory is$PWD”echoecho “The current directory is$(The current directory is$(pwdpwd)”exit 0exit 0捕获命令输出捕获命令输出设置环境变量设置环境变量:引用环境变量引用环境变量:常用环境变量常用环境变量HOMEHOMEPATHPATHTERMTERMUIDUIDPWDPWDPS1PS1$变量名变量名$变量名变量名变量名变量名exportexport 变量名变量名变量值变量值exportexport exportexport 变量名变量名变量值变量值变量名变量名变量值变量值环境变量环境变量环境变量HOMEHOME当前用户的主目录当前用户的主目录PATHPATH命令搜索路径命令搜索路径LOGNAMELOGNAME用户登录名用户登录名PS1PS1第一命令提示符第一命令提示符,是是#或或$PS2PS2第二命令提示符第二命令提示符,默认是默认是 PWDPWD用户的当前目录用户的当前目录UIDUID当前用户标识符当前用户标识符TERMTERM终端的类型终端的类型SHELLSHELL 用户的用户的ShellShell类型及路径类型及路径HISFILEHISFILE存储历史命令的文件存储历史命令的文件环境变量由资源文件预先定义环境变量由资源文件预先定义bash shellbash shell全局性系统环境变量的资源文件全局性系统环境变量的资源文件/etc/etc/rcrc/etc/etc/bashrcbashrc/etc/profile/etc/profile全局性系统环境变量全局性系统环境变量用户定制的系统环境变量用户定制的系统环境变量/./.bashrcbashrc/./.bash_profilebash_profile/etc/profile/etc/profile、/etc/etc/profile.dprofile.d/*/*用户用户1 1/./.bash_profilbash_profile e/./.bashrcbashrc用户用户2 2/./.bash_profilbash_profile e/./.bashrcbashrc用户用户3 3/./.bash_profilbash_profile e/./.bashrcbashrc用户定制的系统环境变量用户定制的系统环境变量 用 FinePrint 打印-可在 订购由由ShellShell在程序运行时设置在程序运行时设置共共1010个变量个变量,从程序名开始依次为从程序名开始依次为0 09 9shiftshift命令递归访问参数命令递归访问参数$0$1$2$3 位置参数变量位置参数变量当前执行的进程名当前执行的进程名$0$0后台运行的最后一个进程号后台运行的最后一个进程号$!$!当前进程的进程号当前进程的进程号$命令执行后返回的状态命令执行后返回的状态,返回返回0 0表示成功执行表示成功执行,其其它值则表明执行错误它值则表明执行错误$?$?以一个单字符串显示传递到脚本的所有参数内容以一个单字符串显示传递到脚本的所有参数内容$*$*传递到脚本的参数的数量传递到脚本的参数的数量$#$#值意义值意义值意义值意义变量名变量名变量名变量名预定义变量预定义变量自定义变量的设置自定义变量的设置$DAY=$DAY=sundaysunday自定义变量的查看与引用自定义变量的查看与引用$echo$DAY$echo$DAY 自定义变量的输出自定义变量的输出$export DAY$export DAY自定义变量的清除自定义变量的清除$unset DAY$unset DAY 用户自定义变量用户自定义变量ShellShell 控制语句控制语句内容提要内容提要条件语句条件语句分之语句分之语句循环语句循环语句函数函数命令表命令表使用使用testtest命令命令语法语法:使用括号使用括号 语法语法:条件表达式的值为真返回零条件表达式的值为真返回零,为假时返回非零值为假时返回非零值testtest 条件表达式条件表达式testtest testtest 条件表达式条件表达式条件表达式条件表达式 条件表达式条件表达式 条件表达式条件表达式条件表达式条件表达式 条件测试条件测试文件状态测试文件状态测试可执行可执行-x x符号连接符号连接-L L可写可写-w w常规文件常规文件-f f文件有文件有suidsuid位位设置设置-u u文件长度大于文件长度大于0 0,非非空空-s s可读可读-r r目录目录-d d示例示例:-s s haison.chaison.c 0 0表示成功表示成功,其他其他为失败为失败,下同下同。条件测试篇条件测试篇逻辑否逻辑否!逻辑或逻辑或(or)(or)-o o逻辑与逻辑与(and)(and)-a a示例示例:-r r haison.chaison.ca a w w hai.chai.c 逻辑操作符逻辑操作符 用 FinePrint 打印-可在 订购字符串测试字符串测试非空串非空串-n n两个字符串不相两个字符串不相等等!=空串空串-z z两个字符串相等两个字符串相等=示例示例:-z$SHELL z$SHELL 条件测试篇条件测试篇数值测试数值测试第一个数小于等于第二第一个数小于等于第二个数个数-lele数值不相等数值不相等(not equal(not equal to)to)-nene第一个数大于等于第二第一个数大于等于第二个数个数-gege第一个数大于第二个数第一个数大于第二个数(greater than)(greater than)-gtgt第一个数小于第二个数第一个数小于第二个数(less than)(less than)-ltlt数值相等数值相等(equal to)(equal to)-eqeq示例示例:“1010”-eqeq“1212”条件测试篇条件测试篇if then elseif then else语句语句语法语法if if 条件语句条件语句1 1 thenthen命令命令elifelif 条件语句条件语句2 2 thenthen命令命令elseelse命令命令fifiIfIf 语句语句example1example1#!/bin/bash#!/bin/bashifif grepgrep UNIXUNIX myfilemyfile/dev/null/dev/nullthenthen echo UNIX occurs inecho UNIX occurs in myfilemyfileelseelseecho No!echo No!echo UNIX does not occur inecho UNIX does not occur in myfilemyfilefifiexample2example2#!/bin/#!/bin/shsh#ifTestifTest#to show the method of if#to show the method of if echoecho -e Enter the first integer:e Enter the first integer:ccread FIRSTread FIRSTechoecho -n Enter the second integer:n Enter the second integer:read SECONDread SECONDif$FIRSTif$FIRST -gtgt$SECOND$SECOND thenthen echo$FIRST is greater than$SECONDecho$FIRST is greater than$SECONDelifelif$FIRST$FIRST -ltlt$SECOND$SECOND thenthen echo$FIRST is less than$SECONDecho$FIRST is less than$SECOND elseelseecho$FIRST is equal to$SECONDecho$FIRST is equal to$SECOND fificasecase语句语句语法语法case 值值 in模式模式1)命令命令1;模式模式2)命令命令2;模式模式3)命令命令3;esaccase case 值值值值 inin模式模式模式模式1)1)命令命令命令命令1;1;模式模式模式模式2)2)命令命令命令命令2;2;模式模式模式模式3)3)命令命令命令命令3;3;esacesacCaseCase 语句语句#!/bin/#!/bin/shshechoecho “Please answer yes or no.Please answer yes or no.”read answerread answercasecase “$answer$answer”ininyes|y|Yes|YES)yes|y|Yes|YES)echoecho “Good morning!Good morning!”;no|n|No|NO)no|n|No|NO)echoecho “Good afternoon!Good afternoon!”;*)echo*)echo “Sorry,answer notSorry,answer not recognized.recognized.”;esacesacexit 0exit 0Example3Example3forfor循环循环语法语法forfor 变量名变量名 inin 列表列表dodo命令命令donedoneforfor forfor 变量名变量名变量名变量名 inin inin 列表列表列表列表dodododo命令命令命令命令donedonedonedone语义语义:每次处理依次列表内信息每次处理依次列表内信息,直至循环耗尽直至循环耗尽forfor 语句语句 用 FinePrint 打印-可在 订购example4example4#!/bin/#!/bin/shshfor file in$(for file in$(lsls f*.f*.shsh);do);dolprlpr$file$filedonedoneexit 0exit 0example5example5#!/bin/bash#!/bin/bashcount=0count=0for i in*for i in*dodoif testif test x$ix$i thenthencount=count=exprexpr$count+1$count+1fifidonedoneecho Total of$count files executableecho Total of$count files executableuntiluntil循环循环语法语法untiluntil 条件条件dodo命令命令donedoneuntiluntil untiluntil 条件条件条件条件dodododo命令命令命令命令donedonedonedone语义语义:until:until循环直至条件为真循环直至条件为真untiluntil语句语句whilewhile循环循环语法语法whilewhile 条件条件dodo命令命令donedonewhilewhile whilewhile 条件条件条件条件dodododo命令命令命令命令donedonedonedone语义语义:whilewhile循环当条件为真时循环当条件为真时,循环执行循环执行WhileWhile语句语句#!/bin/bash#!/bin/bashi=1i=1sum=0sum=0while$iwhile$i -le 100 le 100 dodosum=sum=exprexpr$sum+$i$sum+$ii=i=exprexpr$i+1$i+1donedoneecho The sum is$sum.echo The sum is$sum.example6example6example7example7#!/bin/bash#!/bin/bashx=1x=1until$xuntil$x -gtgt 3 3 dodoecho x=$xecho x=$xx=x=exprexpr$x+1$x+1donedone语句块语句块形式形式 statement1statement1statement2statement2 或或 statement1;statement2;statement1;statement2;函数定义函数定义函数调用函数调用函数导出函数导出函数名函数名()命令命令函数名函数名函数名函数名()()命令命令命令命令 函数函数 用 FinePrint 打印-可在 订购命令表命令表表示当左边的命令为表示当左边的命令为“假假”值时值时,执行右边的命令执行右边的命令|管道管道|表示当左边的命令为表示当左边的命令为“真真”值时值时,执行右边的命令执行右边的命令&命令行尾输入命令行尾输入,表示将命令的执行过程放到后台处理表示将命令的执行过程放到后台处理&表示多个命令顺序执行表示多个命令顺序执行;实例分析实例分析pwdpwd;whowho ;lsls l lcccc prgm.cprgm.c&catcat myfilemyfile|pwdpwdcp m1 em1&rm m1cp m1 em1&rm m1shellshell 习课课习课课#!/bin/bash#!/bin/bashfilelistfilelist=lsls echo$echo$filelistfilelist#!/bin/bash#!/bin/bashfor i in*for i in*dodoecho$iecho$iDoneDone注意注意*is a wild card that stands for allis a wild card that stands for all files in thefiles in thecurrent directorycurrent directory#!/bin/bash#!/bin/bashcount=0count=0for i in*;dofor i in*;doif testif test x$ix$i thenthencount=count=exprexpr$count+1$count+1fifidonedoneecho Total of$count files executableecho Total of$count files executable#!/bin/bash#!/bin/bashsmallest=10000smallest=10000for i in 5 8 19 8 7 3for i in 5 8 19 8 7 3dodoif test$iif test$i -ltlt$smallest$smallestthenthensmallest=$ismallest=$ififidonedoneecho$smallestecho$smallest#!/bin/bash#!/bin/bashsmallest=10000smallest=10000for i in 5 8 19 8 7 3for i in 5 8 19 8 7 3dodoif$iif$i -ltlt$smallest$smallest thenthensmallest=$ismallest=$ififidonedoneecho$smallestecho$smallest 用 FinePrint 打印-可在 订购#!/bin/bash#!/bin/bashi=1i=1sum=0sum=0while$iwhile$i -le 100 le 100 dodosum=sum=exprexpr$sum+$i$sum+$ii=i=exprexpr$i+1$i+1donedoneecho The sum is$sum.echo The sum is$sum.#!/bin/bash#!/bin/bashx=1x=1until$xuntil$x -gtgt 3 3 dodoecho x=$xecho x=$xx=x=exprexpr$x+1$x+1donedone#!/bin/bash#!/bin/bashif$#if$#-eqeq 1;1;thenthenif !if !d d “$HOME/trash$HOME/trash”;thenthenmkdirmkdir“$HOME/trash$HOME/trash”fifimvmv$1$1 “$HOME/trash$HOME/trash”elseelseechoecho “Use:$0 filenameUse:$0 filename”exit 1exit 1fifi#!/bin/bash#!/bin/bashechoecho -n n “Enter name of file toEnter name of file to delete:delete:”read fileread fileechoecho “Type y to remove it,n toType y to remove it,n to change your mind.change your mind.”rmrm-i$filei$fileecho That was YOUR decision!echo That was YOUR decision!#!/bin/Bash#!/bin/Bashecho Type in a commandecho Type in a commandreadread sTextInputsTextInputecho$echo$sTextInputsTextInput is:$is:$sTextInputsTextInput编写一个编写一个ShellShell脚本脚本test3.shtest3.sh,接收用户接收用户输入的文件名输入的文件名,然后在当前目录下检查该文然后在当前目录下检查该文件是否存在件是否存在。#!/bin/bash#!/bin/bashechoecho “Enter a file name:Enter a file name:”read fileread fileif if -f$file f$file thenthenechoecho “File$file exists.File$file exists.”fifi编写一个编写一个ShellShell脚本脚本test5.shtest5.sh,显示当前目录下的所显示当前目录下的所有有.shsh文件的名称和内容文件的名称和内容。#!/bin/bash#!/bin/bashfor file in*.for file in*.shshdodo echoecho “Filename:$fileFilename:$file”cat$filecat$fileechoecho “-”donedone#!/bin/Bash#!/bin/Bash#be sure the directory/#be sure the directory/mntmnt existsexistsif !if !-d/d/mntmnt then thenmkdirmkdir/mntmntfififor i in/for i in/mntmnt/floppy/*;do/floppy/*;doif if -f$i;thenf$i;then#if the file is there#if the file is therefilename=$ifilename=$iecho copying$i to/etc/$filenameecho copying$i to/etc/$filenamecpcp -p$i/etc/$filenamep$i/etc/$filenameFiFidonedone 用 FinePrint 打印-可在 订购#!/bin/bash#!/bin/bashechoecho “Option MenuOption Menu”echoecho “1 Restore1 Restore”echoecho “2 Backup2 Backup”echoecho “3 Upload3 Upload”echoechoechoecho -n n “Enter choice:Enter choice:”read CHOICEread CHOICEcasecase “$CHOICE$CHOICE”inin1|R)echo1|R)echo “You select 1 Restore.You select 1 Restore.”;2|B)echo2|B)echo “You select 2 Backup.You select 2 Backup.”;3|U)echo3|U)echo “You select 3 Upload.You select 3 Upload.”;*)echo*)echo “Sorry$CHOICE is not a valid choice!Sorry$CHOICE is not a valid choice!”esacesac#!/bin/bash#!/bin/bash#ScriptnameScriptname:backup:backup#Purpose:#Purpose:#Create backup files and store them in a#Create backup files and store them in a backup directorybackup directory#dir=/home/dir=/home/jody/ellie/backupscriptsjody/ellie/backupscriptsfor file in memo1for file in memo1-55dodoif if -f$file f$file thenthencp$file$dir/$cp$file$dir/$file.bakfile.bakecho$file is backed up in$direcho$file is backed up in$dirfifidonedone#!/bin/bash#!/bin/bash#Scriptname:permxScriptname:permxfor file#Empty wordlistfor file#Empty wordlistdodoif if -f$filef$file -a!a!-x$file x$file thenthenchmodchmod+x$file+x$fileecho$file now has executeecho$file now has execute permissionpermissionfifidonedone#!/bin/#!/bin/shshnum=0num=0while$numwhile$num ltlt 5 5 dodonum=num=exprexpr$num+1$num+1echo$num echo$num donedone#!/bin/#!/bin/shshwhile:while:dodo read ANSread ANScase$ANS incase$ANS in1|2|3)echo$ANS 1|2|3)echo$ANS ;*)echo wrong*)echo wrongbreakbreak;esacesac#!/bin/#!/bin/shshcheck()check()if$1=$2 if$1=$2 then return 0then return 0else return 1else return 1fifi echo Input two numbersecho Input two numbersread a bread a bif check$a$bif check$a$bthen echo equalthen echo equalelse echo unequalelse echo unequalfifi#!/bin/#!/bin/shshcount=0count=0for FILES in*for FILES in*dodo count=count=exprexpr$count+1$count+1donedone echo There are$count files in echo There are$count files in pwdpwd#!/bin/#!/bin/shshcount=0count=0while$countwhile$count -ltlt 10 10 dodoecho$countecho$countcount=count=exprexpr$count+1$count+1donedonewhile read LINEwhile read LINEdodoecho$LINEecho$LINEdone done 1)cat data.txtdata.txt;2)cat$1$22)cat$1$2 ;*)*)echo Incorrect usage!echo Incorrect usage!;esacesac#!/bin/bash#!/bin/bashcdcd$HOME$HOMEfor dir in cc workfor dir in cc workdodoecho enter In$dir echo enter In$dir cdcd$dir$dirfor file in*.cfor file in*.cdodo lsls l$filel$filedonedonecdcddonedone#!/bin/bash#!/bin/bashif testif test -d$HOME/d$HOME/a_suba_subthenthenecho echo-the.c and.the.c and.objobj files infiles in$HOME/$HOME/a_suba_sub:-for filename in for filename in lsls$HOME/$HOME/a_suba_sub dodocase$filename incase$filename in*.c)echo$filename;*.c)echo$filename;*.*.objobj)echo$filename;)echo$filename;esacesacdonedoneelseelseecho$HOME/echo$HOME/a_suba_sub does not exist!does not exist!fifi#!/bin/bash#!/bin/bashansans=yes=yes?untiluntil?$ansans=no =no?dodo?echo Enter a nameecho Enter a name?read nameread name?echo$name echo$name file.namesfile.names?echo Continue?echo Continue?echo Enter yes or noecho Enter yes or no?readread ansans?donedone?#!/bin/bash#!/bin/bashwhile testwhile test -r r abc.txtabc.txt dodoecho fileecho file abc.txtabc.txt has nothas not beedbeeddeleted!deleted!sleep 10sleep 10donedoneecho fileecho file abc.txtabc.txt hashas beedbeed deleted!deleted!用 FinePrint 打印-可在 订购

    注意事项

    本文(linux编程 第 2 讲.pdf)为本站会员(asd****56)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开