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

下载本文档

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

文档简介

1、复习2022-3-2011.3 Linux 操作环境 - 8Linux文件类型l流式文件流式文件,即把文件的内容看做是一系列有序的无格式的字节流,即把文件的内容看做是一系列有序的无格式的字节流。l普通文件普通文件普通文件普通文件指的是计算机用户和操作系统用于存放数据、程序等信指的是计算机用户和操作系统用于存放数据、程序等信息的文件。息的文件。文本文件,基于字符编码的文件文本文件,基于字符编码的文件, ASCII, UNICODE, UTF-8, GBK, GB2312, GB18030.二进制文件,基于值编码的文件,由具体的应用程序指定或区分某个值是什么意思二进制文件,基于值编码的文件,由具体

2、的应用程序指定或区分某个值是什么意思目录文件目录文件 链接文件链接文件,又称符号链接文件。,又称符号链接文件。设备文件设备文件,Linux系统把每一种系统把每一种I/O设备映射为一个设备文件。设备映射为一个设备文件。(命名)(命名)管道文件管道文件,又称先进先出(,又称先进先出(FIFO)文件,主要用于在进)文件,主要用于在进程间传递数据。程间传递数据。l如何查看文件类型如何查看文件类型?ls -l-,d,l,b,c,分别代表普通、目录、链接、块设备、字符设备,分别代表普通、目录、链接、块设备、字符设备22022-3-20leoleo-VirtualBox:$ ls -l /bin总用量总用量

3、 8632-rwxr-xr-x 1 root root 920788 4月月 3 2012 bash-rwxr-xr-x 1 root root 30216 12月月 15 2011 bunzip2-rwxr-xr-x 1 root root 1639672 4月月 14 2012 busybox-rwxr-xr-x 1 root root 30216 12月月 15 2011 bzcatlrwxrwxrwx 1 root root 6 6月月 22 2014 bzcmp - bzdiffleoleo-VirtualBox:$ ls -l /dev总用量总用量 0brw-rw- 1 root

4、disk 8, 0 9月月 6 15:33 sdacrw-rw-rw- 1 root tty 5, 0 9月月 6 15:33 ttydrwxr-xr-x 2 root root 80 9月月 6 15:33 bsgcrw-T 1 root root 10, 234 9月月 6 15:33 btrfs-controldrwxr-xr-x 3 root root 60 9月月 6 15:33 bus1.3 Linux 操作环境 - 93LinuxLinux的文件访问权限的文件访问权限l3 3 类用户类用户文件所有者文件所有者, , 组用户组用户, ,其他用户其他用户l3 3 种权限种权限读读,

5、, 写写, , 执行执行l用户与权限的组合用户与权限的组合l3 3 种特殊权限种特殊权限SUIDSUID, , SGIDSGID, , Sticky bitSticky bitleoleo-VirtualBox:$ ls -l /etc/shadow -rw-r- 1 root shadow 1185 10月月23 2014 /etc/shadowleoleo-VirtualBox:$ ls -l /usr/bin/passwd -rwsr-xr-x 1 root root 41284 4月月 9 2012 /usr/bin/passwdleoleo-VirtualBox:$ ls -l -d

6、 /tmp drwxrwxrwt 9 root root 4096 9月月 6 20:49 /tmpmanlLinux的系统手册的系统手册l基本用法基本用法: man 选项选项 章节章节 手册页手册页 man i 1 Lsl9 个章节个章节l命令文档一般都保存在命令文档一般都保存在/usr/share/man目录或其子目录下目录或其子目录下$ man -w ls/usr/share/man/man1/ls.1.gz2 2.1.1 获取帮助获取帮助2022-3-204 4lman man 显示一个显示一个manman手册页有哪些章节手册页有哪些章节在所有手册页中查找指定的关键字在所有手册页中查找

7、指定的关键字$ man -f manman (7) - macros to format man pagesman (1) - an interface to the on-line reference manuals $ man -k sprintfasprintf (3) - print to allocated stringsprintf (3) - formatted output conversionvasprintf (3) - print to allocated stringvsprintf (3) - formatted output conversion l在文档中浏览翻阅

8、在文档中浏览翻阅2 2.1.1 获取帮助获取帮助5l管道管道LinuxLinux中很重要的一种通信方式。中很重要的一种通信方式。作用是把作用是把左边命令左边命令1的输出直接作为的输出直接作为右边命令右边命令2的的输入。的的输入。使用格式使用格式: :命令命令1 | 命令命令2$ ls -l | wc -l2 2. .2 2 通配符、引号、管道和输入输通配符、引号、管道和输入输出重定向出重定向2022-3-206l输入、输出重定向输入、输出重定向三个标准文件三个标准文件0标准输入标准输入键盘键盘1标准输出标准输出终端屏幕终端屏幕2标准错误输出标准错误输出终端屏幕终端屏幕输入重定向输入重定向输入可

9、以不来自键盘,而来自一个指定的文件。输入可以不来自键盘,而来自一个指定的文件。格式格式:命令命令 文件名文件名$ wc -l /tmp/null & who | grep $user; then echo $user has logged in the system. cp /tmp/null /me.tmp rm /tmp/nullelse echo $user has not logged in the system.filif 语句唯一可测试的内容是语句唯一可测试的内容是命令退出状态命令退出状态,也就是说,测试条件是一,也就是说,测试条件是一或多条命令。或多条命令。if if 测

10、试条件测试条件1; then1; then命令组命令组1 1elif elif 测试条件测试条件2; then2; then命令组命令组22elseelse命令命令xxfifi3.3 3.3 控制结构控制结构if if 测试条件测试条件1 1thenthen命令组命令组1 1elif elif 测试条件测试条件22thenthen命令组命令组22elseelse命令命令xxfifi$ $ source if.shsource if.shtype in the user name.leoleo pts/0 2012-09-25 10:23 (10.8.18.212)leo has logged

11、in the system.$ $ source if.shsource if.shtype in the user name.alicealice has not logged in the system. .23casecase语法语法program 3-7: case.sh#! /bin/bashecho please chose either 1,2 or3echo 1ls -l $1echo 2cat $1echo 3quitread responsecase $response in1) ls -l $1;2) cat $1;3) echo good byeesacl每个模式字符串

12、后面可有一条或多条命令,其中最后一条命令必须以每个模式字符串后面可有一条或多条命令,其中最后一条命令必须以两个分号(即两个分号(即; ;)结束。)结束。lcasecase的的退出状态(返回值)是整个结构中最后执行的那个命令的退出退出状态(返回值)是整个结构中最后执行的那个命令的退出状态,状态,若没有执行任何命令,则退出状态为零。若没有执行任何命令,则退出状态为零。 casecase 字符串字符串 inin模式字符串模式字符串1 1) )命令命令.命令命令;模式字符串模式字符串2 2)命令命令命令命令;模式字符串模式字符串n n) )命令命令命令命令; esacesac3.3 3.3 控制结构控

13、制结构24whilel语法语法while 测试条件测试条件do 命令表命令表doneprogram 3-10: while.sh#! /bin/bashwhile $1 do if -f $1 ; then echo -e ndisplay:$1 cat $1 else echo $1 is not a file name. fi shiftdone测试条件的使用方式和测试条件的使用方式和”if”语句一样。语句一样。while 测试条件测试条件; do 命令表命令表done$ source while.sh first.sh posvar.shdisplay:first.sh#! /bin/b

14、ashcd /tmpecho Hello, world!display:posvar.sh#! /bin/bashecho Parameter number: $#echo All digit variables: $0 $1 $2 $3 $4 $5 $6 $7 $8 $9 $10 $11echo $*: $*echo $: $3.3 控制结构控制结构25until语法语法program 3-11: until.sh#! /bin/bashuntil -z $2 ; do cp $1 $2 shift 2doneif -n $1 ; then echo bad parameter!fil同同

15、“while”, 但循环在测试条件为真时结束但循环在测试条件为真时结束 until 测试条件测试条件; do 命令表命令表done$ source until.sh if.sh if2.sh while.sh while2.sh$ ls *2.shif2.sh while2.sh3.3 控制结构控制结构until 测试条件测试条件do 命令表命令表done26for两种使用方式两种使用方式: 值表方式值表方式 & 算术表达式方式算术表达式方式值表方式值表方式语法语法program 3-12: for.sh#! /bin/bashfor day in Monday Wednesday F

16、riday Sundaydo echo $daydone循环变量的值依次取自循环变量的值依次取自。for 变量变量 in ; do 命令表命令表done$ source for.shMondayWednesdayFridaySunday$ week=(Mon Tue Wed)$ for i in $week; do echo $i; doneMonTueWed3.3 控制结构控制结构27第一个第一个C程序程序l编译选项编译选项-E仅进行预处理,不进行其他操作。助于发现宏错误。仅进行预处理,不进行其他操作。助于发现宏错误。-S编译到汇编语言,不进行其他操作。编译到汇编语言,不进行其他操作。-c编

17、译、汇编到目标代码,不进行链接编译、汇编到目标代码,不进行链接-Wall尽可能多地显示警告信息。尽可能多地显示警告信息。-Werror 将所有的警告当作错误处理。将所有的警告当作错误处理。-g在可执行文件中包含标准调试信息。在可执行文件中包含标准调试信息。-I设置头文件的路径,可以设置多个,默认路径设置头文件的路径,可以设置多个,默认路径“/usr/include”。-L 设置库文件的路径,可以设置多个,默认路径设置库文件的路径,可以设置多个,默认路径“/usr/lib”。-l设定编译所需的库名称,如果一个库的文件名为设定编译所需的库名称,如果一个库的文件名为“libxxx.so”那那么它的库

18、名称为么它的库名称为“xxx”。4.1 gcc编译器编译器$ gcc -o p.c -E first.c$ cat p.c# 1 first.c# 1 # 1 # 1 first.c# 1 /usr/include/stdio.h 1 3 4extern void funlockfile (FILE *_stream) _attribute_ (_nothrow_);# 936 /usr/include/stdio.h 3 4# 2 first.c 2int main(void) printf(Hello world!n);$ gcc -S first.c$ cat first.s .file

19、 first.c .section .rodata.LC0: .string Hello world! .text .globl main .type main, functionmain:.LFE0: .size main, .-main .ident GCC: (Ubuntu/Linaro 4.6.1-9ubuntu3) 4.6.1 .section .note.GNU-stack,progbits$ gcc -c first.c$ ls -l first.o-rw-rw-r- 1 leo leo 1028 11月月 20 09:39 first.o$ gcc -Wall -o first

20、 first.cfirst.c: In function main:first.c:6:1: warning: control reaches end of non-void function -Wreturn-type$ rm first$ ls1.txt first.c first.o first.s p.c$ gcc -Werror -Wall -o first first.cfirst.c: In function main:first.c:6:1: error: control reaches end of non-void function -Werror=return-typec

21、c1: all warnings being treated as errors$ ls1.txt first.c first.o first.s p.c$ ll first-rwxrwxr-x 1 leo leo 7159 11月月 20 08:50 first*$ gcc -g -o first first.c$ ll first-rwxrwxr-x 1 leo leo 8035 11月月 20 09:50 first*$ gcc -I /usr/include/gtk-2.0/ -c -o test.o test.c$ gcc -L /usr/lib/i386-linux-gnu/ -l

22、 X11 -o test test.c28284 4.1.1 gcc gcc编译器编译器打开流打开流l使用使用fopen系列函数可以创建或打开流文件系列函数可以创建或打开流文件.29lpath 要打开或创建的文件的名称要打开或创建的文件的名称.lmode 对该对该I/O流的读、写方式,流的读、写方式,ANSI C规定了规定了15种不同的可能值种不同的可能值.r或或rb以读方式打开以读方式打开w或或wb以写方式打开或创建,并将文件长度截为以写方式打开或创建,并将文件长度截为0a或或ab以写方式打开,新内容追加在文件尾以写方式打开,新内容追加在文件尾r+或或r+b或或rb+以更新方式打开(读和写)以更新方式打开(读和写)w+或或w+b或或wb+以更新方式打开,并将文件长度截为以更新方式打开,并将文件长度截为0a+或或a+b或或ab+以

温馨提示

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

评论

0/150

提交评论