Unix-Linux程序环境复习_第1页
Unix-Linux程序环境复习_第2页
Unix-Linux程序环境复习_第3页
Unix-Linux程序环境复习_第4页
Unix-Linux程序环境复习_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

复习

2023/2/311.3Linux操作环境-8Linux文件类型流式文件,即把文件的内容看做是一系列有序的无格式的字节流。普通文件普通文件指的是计算机用户和操作系统用于存放数据、程序等信息的文件。文本文件,基于字符编码的文件,ASCII,UNICODE,UTF-8,GBK,GB2312,GB18030.二进制文件,基于值编码的文件,由具体的应用程序指定或区分某个值是什么意思目录文件链接文件,又称符号链接文件。设备文件,Linux系统把每一种I/O设备映射为一个设备文件。(命名)管道文件,又称先进先出(FIFO)文件,主要用于在进程间传递数据。如何查看文件类型?ls-l-,d,l,b,c,分别代表普通、目录、链接、块设备、字符设备22023/2/3leo@leo-VirtualBox:~$ls-l/bin总用量8632-rwxr-xr-x1rootroot9207884月32012bash-rwxr-xr-x1rootroot3021612月152011bunzip2-rwxr-xr-x1rootroot16396724月142012busybox-rwxr-xr-x1rootroot3021612月152011bzcatlrwxrwxrwx1rootroot66月222014bzcmp->bzdiff…leo@leo-VirtualBox:~$ls-l/dev总用量0brw-rw1rootdisk8,09月615:33sdacrw-rw-rw-1roottty5,09月615:33ttydrwxr-xr-x2rootroot809月615:33bsgcrwT1rootroot10,2349月615:33btrfs-controldrwxr-xr-x3rootroot609月615:33bus1.3Linux操作环境-93Linux的文件访问权限3类用户文件所有者,组用户,其他用户3种权限读,写,执行用户与权限的组合3种特殊权限SUID,SGID,Stickybitleo@leo-VirtualBox:~$ls-l/etc/shadow-rw-r1rootshadow118510月232014/etc/shadowleo@leo-VirtualBox:~$ls-l/usr/bin/passwd-rwsr-xr-x1rootroot412844月92012/usr/bin/passwdleo@leo-VirtualBox:~$ls-l-d/tmpdrwxrwxrwt9rootroot40969月620:49/tmpmanLinux的系统手册基本用法:man[选项][章节]手册页…man–i1Ls9个章节命令文档一般都保存在/usr/share/man目录或其子目录下$man-wls/usr/share/man/man1/ls.1.gz2.1

获取帮助2023/2/34man显示一个man手册页有哪些章节在所有手册页中查找指定的关键字$man-fmanman(7)-macrostoformatmanpagesman(1)-aninterfacetotheon-linereferencemanuals$man-ksprintfasprintf(3)-printtoallocatedstringsprintf(3)-formattedoutputconversionvasprintf(3)-printtoallocatedstringvsprintf(3)-formattedoutputconversion在文档中浏览翻阅2.1

获取帮助5管道Linux中很重要的一种通信方式。作用是把左边命令1的输出直接作为右边命令2的的输入。使用格式: 命令1|命令2$ls-l|wc-l2.2通配符、引号、管道和输入输出重定向2023/2/36输入、输出重定向三个标准文件0

标准输入 键盘1

标准输出 终端屏幕2

标准错误输出

终端屏幕输入重定向输入可以不来自键盘,而来自一个指定的文件。格式: 命令<文件名$wc-l</etc/passwd2.2通配符、引号、管道和输入输出重定向2023/2/372023/2/32.6编辑文本文件vi“VisualInterface”的缩写。类Unix系统中最常用的编辑器。vim:VIImproved.Linux下的vi命令实际是一个vim命令别名或到vim命令文件的符号连接。和一般文本编辑器的不同之处:多模式编辑器,尤其适合编码。命令模式输入模式末行模式8sort对文本文件的各行进行排序。文本的顺序由系统所使用的字符集决定。格式: sort[option]…[file]…如果不指定文件,则排序内容来自标准输入。排序的比较操作是依据从每一行中提取的一个或多个字段来进行的。默认情况下,以空白字符分隔每个字段。2023/2/392.7文件内容操作命令2.8文件的复制、移动、链接和归档cp选项-d 保留符号链接(拷贝链接本身)-f,--force 覆盖目标文件并且不提示-i,--interactive 覆盖前询问-n 不覆盖已存在的文件-p 保留文件的属性--parents 复制前在目标目录创建源文件路径中的所有

目录-R,-r,--recursive递归复制目录-u,--update 只在源文件比目标文件新,或目标文件不存

在时才进行复制-v,--verbose 显示详细的进行步骤2023/2/310$cp*.txtsubdir/$mkdirrecurse$cp-rsubdir/recurse/$lsrecurse/subdir$lsrecurse/subdir/1.txt2.txt3.txtcreate_by_cat.txttosort2.txttosort.txt$cp-asubdir/archive$lsarchive/1.txt2.txt3.txtcreate_by_cat.txttosort2.txttosort.txt$mkdirother$cp-tother/1.txt3.txt$lsother1.txt3.txtmv将源文件重命名为目标文件,或将源文件移动至指定目录。格式 mv[OPTION]...SOURCEDEST or mv[OPTION]...SOURCE...DIRECTORY or mv[OPTION]...-tDIRECTORYSOURCE...选项-f,--force 覆盖前不询问-i,--interactive 覆盖前询问-v,--verbose 显示详细信息示例$mv1.txtone.txt$ls-l1.txtone.txtls:1.txt:Nosuchfileordirectory.-rw-r--r--1leoleo32182012-09-2021:34one.txt$mv-f*.txtother/$lsother/1.txt2.txt3.txtcreate_by_cat.txtone.txttosort2.txttosort.txt112.8文件的复制、移动、链接和归档mv将源文件重命名为目标文件,或将源文件移动至指定目录。格式 mv[OPTION]...SOURCEDEST or mv[OPTION]...SOURCE...DIRECTORY or mv[OPTION]...-tDIRECTORYSOURCE...选项-f,--force 覆盖前不询问-i,--interactive 覆盖前询问-v,--verbose 显示详细信息示例$mv1.txtone.txt$ls-l1.txtone.txtls:1.txt:Nosuchfileordirectory.-rw-r--r--1leoleo32182012-09-2021:34one.txt$mv-f*.txtother/$lsother/1.txt2.txt3.txtcreate_by_cat.txtone.txttosort2.txttosort.txt122.8文件的复制、移动、链接和归档133.2Shell变量变量的赋值与引用命名:由字母、数字或下划线组成,并且只能以字母或下划线开头,大小写的意义是不同的。弱类型的语言,变量存储的一切值都是字符串。但是必要的时候,只要是由数值构成的字符串,也可对其执行数值操作。变量赋值的方式: 变量名=变量值“=”两边不能有任何空格;当变量值中包含空格时,应为其加上引号。引用变量: $变量名$str="Hello,world"$echo$strHello,worldShell变量不需要预先定义,而且可以引用未赋过值的变量。14变量的赋值与引用$str='world!'$echoHello,$strHello,world!在字符串中可以引用变量,使其值成为本字符串的一部分。在变量名后面紧跟一个由非空白字符开始的字符串时,应该用花括号“{}”将变量名括起来.$position=/usr/include/$cat${position}termio.h3.2Shell变量15命令替换将一个或多个命令的执行结果赋值给变量两种方式反引号$(…)$str=`pwd;who`$echo$str/home/leo/shleopts/162015-10-2422:27(:0)$position=$(pwd||who)$echo$position/home/leo/sh3.2Shell变量变量属性声明16使用内部命令declare或typeset

限定变量的属性。常用选项-r 只读-i 整数-a 数组-f 函数-x 导出变量$declare-rSIZE=100$SIZE=20-bash:SIZE:readonlyvariable$n=20$n=n+30$echo$nn+30$declare-in$n=20$n=n+30$echo$n503.2Shell变量17变量引用操作符在引用变量时进行额外的判断或替换操作。字符串替换${varname:-word}如果varname存在且非空串,则返回varname的值,否则返回word。作用: 如果变量未定义,则取默认值。$unsetstr$echo${str:-"blank"}blank$str="somecontent"$echo${str:-"blank"}somecontent3.2Shell变量18变量引用操作符模式匹配替换${varname%pattern}如果pattern匹配varname的尾部,则删除最短匹配部分,并返回剩余部分,varname本身不变。$filepath=/home/alice/major.minor.ext$echo${filepath%.*}/home/alice/major.minor${varname%%pattern}如果pattern匹配varname的尾部,则删除最长匹配部分,并返回剩余部分,varname本身不变。$filepath=/home/alice/major.minor.ext$echo${filepath%%.*}/home/alice/major3.2Shell变量19变量引用操作符模式匹配替换${variable/pattern/string}${variable//pattern/string}将varname的最长匹配部分替换为string,并返回替换后的串,varname本身不变。第一种格式仅替换第一次匹配的子串,第二种格式会替换所有匹配的子串。如果模式以“#”开头,则意为必须匹配varname的首部,如果模式以“%”开头,则意为必须匹配varname的尾部。如果string为空串,匹配部分将被删除。如果varname为“@”或“*”,操作将被依次用于每个位置参数,并且扩展为结果列表。$filepath=/home/alice/major.minor.ext$echo${filepath/alice/tom}/home/tom/major.minor.ext$echo$PATH/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:$JAVA_HOME/bin$echo-e${PATH//:/\n}/usr/local/sbinn/usr/local/binn/usr/sbinn/usr/binn/sbinn/binn/usr/gamesn$JAVA_HOME/bin$echo-e${PATH//:/"\n"}/usr/local/sbin/usr/local/bin/usr/sbin/usr/bin/sbin/bin/usr/games$JAVA_HOME/bin3.2Shell变量20位置参数和特殊变量位置参数也称位置变量。运行Shell脚本程序时,命令行Shell传递给脚本的参数,以及在Shell脚本程序中调用函数时传递给函数的参数。位置变量的名称是以0,1,2,...这些整数命名的,相应地以$0,$1,$2,…等进行引用。0对应命令名(脚本名),1对应第一个实参,2对应第二个实参,...。cmd p1 p2 p3 p4… p10 p11$0 $1 $2 $3 $4… ${10} ${11}3.2Shell变量21条件测试test,文件属性测试$[-d/tmp];echo$?0$[-w/etc/passwd];echo$?13.3控制结构22if语法program3-6:if.sh#!/bin/bashecho'typeintheusername.'readuserifgrep$user/etc/passwd>/tmp/null&&who|grep$user;thenecho"$userhasloggedinthesystem."cp/tmp/null~/me.tmprm/tmp/nullelseecho"$userhasnotloggedinthesystem."fiif语句唯一可测试的内容是命令退出状态,也就是说,测试条件是一或多条命令。if测试条件1;then命令组1[elif测试条件2];then

命令组2][else命令x]fi3.3控制结构if测试条件1then命令组1[elif测试条件2]then

命令组2][else命令x]fi$sourceif.shtypeintheusername.leoleopts/02012-09-2510:23(12)leohasloggedinthesystem.$sourceif.shtypeintheusername.alicealicehasnotloggedinthesystem.23case语法program3-7:case.sh#!/bin/bashecho"pleasechoseeither1,2or3"echo"[1]ls-l$1"echo"[2]cat$1"echo"[3]quit"readresponsecase$responsein1)ls-l$1;;2)cat$1;;3)echo"goodbye"esac每个模式字符串后面可有一条或多条命令,其中最后一条命令必须以两个分号(即;;)结束。case的退出状态(返回值)是整个结构中最后执行的那个命令的退出状态,若没有执行任何命令,则退出状态为零。case

字符串in模式字符串1)

命令

...

命令;;模式字符串2) 命令

命令;;…模式字符串n)

命令 …

命令;;

esac3.3控制结构24while语法while测试条件do

命令表doneprogram3-10:while.sh#!/bin/bashwhile[$1]doif[-f$1];thenecho-e"\ndisplay:$1"cat$1elseecho"$1isnotafilename."fishiftdone测试条件的使用方式和”if”语句一样。while测试条件;do

命令表done$sourcewhile.shfirst.shposvar.shdisplay:first.sh#!/bin/bashcd/tmpecho"Hello,world!"display:posvar.sh#!/bin/bashecho'Parameternumber:'$#echo'Alldigitvariables:'$0$1$2$3$4$5$6$7$8$9${10}${11}echo'$*:'"$*"echo'$@:'"$@"3.3控制结构25until语法program3-11:until.sh#!/bin/bashuntil[-z"$2"];docp$1$2shift2doneif[-n"$1"];thenecho"badparameter!"fi同“while”,但循环在测试条件为真时结束until测试条件;do

命令表done$sourceuntil.shif.shif2.shwhile.shwhile2.sh$ls*2.shif2.shwhile2.sh3.3控制结构until测试条件do

命令表done26for两种使用方式:值表方式&算术表达式方式值表方式语法program3-12:for.sh#!/bin/bashfordayinMondayWednesdayFridaySundaydoecho$daydone循环变量的值依次取自<值表>。for变量[in<值表>];do命令表done$sourcefor.shMondayWednesdayFridaySunday$week=(MonTueWed)$foriin"${week[@]}";doecho$i;doneMonTueWed3.3控制结构27第一个C程序编译选项-E 仅进行预处理,不进行其他操作。助于发现宏错误。-S 编译到汇编语言,不进行其他操作。-c 编译、汇编到目标代码,不进行链接-Wall 尽可能多地显示警告信息。-Werror 将所有的警告当作错误处理。-g 在可执行文件中包含标准调试信息。-I

设置头文件的路径,可以设置多个,默认路径“/usr/include”。-L

设置库文件的路径,可以设置多个,默认路径“/usr/lib”。-l

设定编译所需的库名称,如果一个库的文件名为“libxxx.so”那

么它的库名称为“xxx”。4.1gcc编译器$gcc-op.c-Efirst.c$catp.c#1"first.c"#1"<built-in>"#1"<command-line>"#1"first.c"#1"/usr/include/stdio.h"134…externvoidfunlockfile(FILE*__stream)__attribute__((__nothrow__));#936"/usr/include/stdio.h"34#2"first.c"2intmain(void){printf("Helloworld!\n");}$gcc-Sfirst.c$catfirst.s.file"first.c".section.rodata.LC0:.string"Helloworld!".text.globlmain.typemain,@functionmain:…….LFE0:.sizemain,.-main.ident"GCC:(Ubuntu/Linaro4.6.1-9ubuntu3)4.6.1".section.note.GNU-stack,"",@progbits$gcc-cfirst.c$ls-lfirst.o-rw-rw-r--1leoleo102811月2009:39first.o$gcc-Wall-ofirstfirst.cfirst.c:Infunction‘main’:first.c:6:1:warning:controlreachesendofnon-voidfunction[-Wreturn-type]$rmfirst$ls1.txtfirst.cfirst.ofirst.sp.c$gcc-Werror-Wall-ofirstfirst.cfirst.c:Infunction‘main’:first.c:6:1:error:controlreachesendofnon-voidfunction[-Werror=return-type]cc1:allwarningsbeingtreatedaserrors$ls1.txtfirst.cfirst.ofirst.sp.c

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论