linux程序设计复习总结(一)编译和shell

1.Linux应用程序表现为两种特殊类型的文件:可执行文件和脚本文件。脚本文件是一组指令的集合,这些指令将由另一个程序(即解释器)来执行。

2.在调用C语言编译器时,用-Ⅰ标志来包含保存在子目录或非标准位置中的头文件。

gcc -I/.../...  *.c

3.可以通过给出完整的库文件路径名或用-l标志来告诉编译器要搜索的库文件。

gcc -o fred fred.c /../...../libm.a

gcc -o fred fred.c -lm

4.可以通过使用-L(大写字母)标志为编译器增加库的搜索路径

gcc -o fred -L/..../.../lib fred.c -lm

5.-c选项的作用是阻止编译器创建一个完整的程序,生成*.o文件

6.静态库:调用时复制一份库中的函数和程序代码一起编译生成可执行文件

   动态库:调用时程序本身不再包含函数代码,而是引用运行时可访问的共享代码

7.生成一个库文件

8.要查看哪些函数被包含在目标文件、函数库或可执行文件里,你可以使用nm命令

9.shell是一个作为用户与Linux系统间接口的程序,它允许用户向操作系统输入需要执行的命令

10.重定向输出 > 覆盖 >> 追加

11.可以用Linux的通用“回收站” /dev/null来有效地丢弃所有的输出信息

12.重定向输入 < 

13.可以用管道操作符|来连接进程

14.#!/bin/sh #!字符告诉系统同一行上紧跟在它后面的那个参数是用来执行本文件的程序

15.在shell中,你可以通过在变量名前加一个$符号来访问它的内容

16.使用read命令将用户的输入赋值给一个变量 read 变量名

17.使用双引号并不影响变量的替换,但使用单引号和反斜线就不进行变量的替换

18。shell的布尔判断命令[或test

19.if ..else

if ..
then
 ..
else
 ..
fi

20.bash使用echo-n命令来去除换行符

21.for

for a in b
do
....
done

22.while

while ...
do
....
done

do和done之间的语句将反复执行,直到条件不再为真

23.until

until ...
do
...
done

循环将反复执行直到条件为真

24.一般来说,如果需要循环至少执行一次,那么就使用while循环;如果可能根本都不需要执行循环,就使用until循环。

25.case

case var in
pattern [..] | pattern...) statements;;
pattern [..] | pattern...) statements;;
...

esac

每个模式可以用[] | 等来组合,)分割 ;;双分号分割两个模式

26.AND列表&&:只有在前面所有的命令都执行成功的情况下才执行后一条命令

statement1 && statement2 &&statement3....

27.OR列表||结构允许我们持续执行一系列命令直到有一条命令成功为止,其后的命令将不再被执行

statement1 || statement2 || statement3...
([-f file_one ] && command for true) || command for false

在上面的语句中,如果测试成功就会执行第一条命令,否则执行第二条命令。

28.函数

func_name (){
   statement
}

当一个函数被调用时,脚本程序的位置参数($*、$@、$#、$1、$2等)会被替换为函数的参数。这也是你读取传递给函数的参数的办法。当函数执行完毕后,这些参数会恢复为它们先前的值。

29.可以使用local关键字在shell函数中声明局部变量,局部变量将仅在函数的作用范围内有效。

30.冒号(:)命令是一个空命令。它偶尔会被用于简化条件逻辑,相当于true的一个别名

31.exec命令有两种不同的用法。它的典型用法是将当前shell替换为一个不同的程序,exec的第二种用法是修改当前文件描述符。

exec wall "thanks..."

脚本中的这个命令会用wall命令替换当前的shell。脚本程序中exec命令后面的代码都不会执行,因为执行这个脚本的shell已经不存在了

32.export命令将作为它参数的变量导出到子shell中,并使之在子shell中有效。在默认情况下,在一个shell中被创建的变量在这个shell调用的下级(子)shell中是不可用的。

#!/bin/sh

foo=123
export bar=456

export2

在脚本export2中变量foo不可用,bar可以

33.set -a或set -allexport命令将导出它之后声明的所有变量

34.set命令的作用是为shell设置参数变量。许多命令的输出结果是以空格分隔的值,如果需要使用输出结果中的某个域,这个命令就非常有用。(用一定的分隔符将一个参数分解成多个)

#!/bin/sh
echo the date is $(date)
set $(date)
echo the month is $2

35.shift命令把所有参数变量左移一个位置,使¥2变成¥1, $ 3变成¥2,以此类推

36.trap命令用于指定在接收到信号后将要釆取的行动,trap命令的一种常见用途是在脚本程序被中断时完成清理工作。

trap command signal

37.unset命令的作用是从环境中删除变量或函数。这个命令不能删除shell本身定义的只读变量(如IFS)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值