Linux(No.6)

1.Linux内核定制:可以更改
2.Linux发行版本:不能更改
3.编译过程中,顶层的Makefile文件有选择的递归调用内核源代码中子目录的Makefile文件,选择的依据是用户配置文件.config
4.shell程序设计-bash是Linux默认提供的shell解释器

#!/bin/bash   解释器的路径
# a Simple shell Script Example   脚本解释语句
function say_hello()    定义函数
{
echo -n"Enter Your Name,Please.:"
read name
echo"Hello $ name"
}
echo "Programme Starts Here..."
say_hello
echo"Programme Ends"

将文件保存为greeting.sh
这时文件还不能执行,需要执行
chmod +x greeting.sh 赋予可执行的权限
具备权限后,就可以调用文件名执行了

5.变量的声明和使用

变量=值,等号两边不能有等号 a="hello"
变量前需要加一个”$“ echo "a is $a"

$ var="hello"
$ echo $var $ { title: - "somebody" }!   # - 如果title存在,则返回title 。否则返回somebody
$ echo $var $ { title: + "somebody" }!    #如果title存在,则返回title,否则返回null
$ echo $var $ { title: ? "title is null or empty" }!     #如果title存在,则返回title 否则输出错误信息,退出shell,此时的value作为一个错误提示消息
$ echo $var $ { title: = "tom and jerry" }!     #如果title存在,则返回title,否则将字符串赋值给title然后返回字符串的值

6.expr arg计算一个表达式的值,并将结果写在标准输出设备上expr 3+2
7.操作数和运算符之间要有空格,比如+要与左右两侧的数字以空格隔开
8.表达式里有通配符时,需要转义。\ * 或者 ” * “或者‘ * ’
9.let命令类似于expr
10.test [condition] 左右中括号与condition之间需要加空格

-f fn 如果fn存在且为普通文件,则返回真
-b fn 如果fn存在且为块设备,则返回真
-e fn 如果fn存在则返回真
-d fn 如果fn存在且fn为目录,则为真
-r/w/x fn 可读/可写/可执行 ,则为真
-O fn 如果fn存在且被当前用户拥有,则为真
-L fn fn为符号链接,则为真

echo $?       ?储存紧邻的前驱命令

11.控制结构
1)if 分支语句

if [condition]
then
elif [condition]
then
fi         终止

2)case 分支语句

case  条件  in
  (模式1)  命令1;;
  (模式2)  命令2;;
  (模式3)  命令3;;
esac         终止
 

3)for 循环语句

for 变量  in  [列表]
do
    命令
done
#!/bin/bash
# an example script of for
clear
for os in Linux Windows Unix
do
    echo"Operation System is:$ os"
done        遍历输出Linux Windows Unix

4)while和until循环语句

while/until     条件
do
   命令
done      while的条件为真,则执行命令,until的条件为假,则执行命令

12.函数
[function] 函数名() 括号内必须为空,不能加参数
{
命令
}

扫描二维码关注公众号,回复: 6206120 查看本文章

$0 执行脚本的函数名
$1 传递给函数的第一个参数
$2 传递给函数的第二个参数
$n 传递给函数的第n个参数
$# 传递给函数的参数个数
$ *传递给函数的所有参数,作为一个整体传递
$ @传递给函数的所有参数,作为拥有多个参数的集合传递
shift 命令用于将存储在位置的变量左移一个位置

13.一个c/c++程序从开始编码到生成可执行的二进制文件至少要经历4个步骤:

  1. 预处理 —预处理文件(#define)
  2. 编译 —生成汇编程序文件
  3. 汇编 —机器指令(目标文件)
  4. 链接 —可执行文件v

14.gcc的使用

-o file 结果存为文件file
假设被处理的源文件为source.suffix , 如果这个选项被忽略,那么被生成的可执行文件默认名称为a.out ;目标文件默认为source.o;汇编文件默认为source.s生成的预处理文件发送到标准输出设备
-c 仅对源文件进行编译,不链接生成可执行文件
-g [gdb] 在可执行文件加入调试信息,如果使用中括号,表示加入gdb扩展的调试信息

15.预处理指令include,define

$ gcc -E hello.c - o hello.i     -E表示GCC在生成预处理文件后停止   -o 指定生成的目标文件为hello   -S 在生成汇编文件后停止    -c在生成目标文件后停止  

16.gcc文件扩展名规范

       .c为后缀的文件,C语言源代码文件; 
  .a为后缀的文件,是由目标文件构成的档案库文件; 
  .C,.cc或.cxx 为后缀的文件,是C++源代码文件; 
  .h为后缀的文件,是程序所包含的头文件; 
  .i 为后缀的文件,是已经预处理过的C源代码文件; 
  .ii为后缀的文件,是已经预处理过的C++源代码文件;
  .o为后缀的文件,是编译后的目标文件; 
  .s为后缀的文件,是汇编语言源代码文件; 
  .S为后缀的文件,是经过预编译的汇编语言源代码文件。

分别编写 greeting.h greeting.c my_app.c 将greeting.h 和greeting.c放在目录function中

$ gcc my_app.c function/greeting.c -o my_app -I functions

因为my_app.c 引用的头文件 不在同当前目录中,也不在GCC默认的搜索路径(/user/include)中,所以 -I 之后加上一个路径,方便搜索头文件

$ gcc -c my_app.c -I function
$ gcc -c function/greeting.c
$ gcc my_app.o greeting.o -o my_app

前两条文件将输出文件编译成目标文件,处理过后,生成后缀名为.o的目标文件。第三条命令将两个文件链接起来,成为可执行文件
17.makefile 生成程序—可以通过makefile文件,声明函数依赖项进行编译,后期更实用的makefile文件,用变量分别储存函数的依赖项
18.错误是可以传递的
19.程序和服务器之间需要通过规范的协议来通信
20.GTK+由4个库组成:

  • Glib:GTK+和GNOME的底层核心库
  • Pango:处理界面布局和国际化的库
  • Cairo:支持多输出设备的2D图形库
  • Atk:提供一些其他功能的接口

21.Qt提供了一种Linux下开发图形界面应用程序的解决方案
Qt可以在多种平台上运行:X11系统,Windows系统,Macintosh系统:MacOS
Qt的图形界面库是在Xlib基础上的封装与抽象

猜你喜欢

转载自blog.csdn.net/weixin_42578658/article/details/89929935