1.Makefile

  功能:make命令运行时需要Makefile文件,告诉make命令需怎样编译和链接程序。

  内容:具体规则,隐含规则,定义变量,指令,注释。

  基本格式:target(目标):dependency(依赖)

                 (tab键)command(命令)

  例:hello:hello.c

              gcc hello.o -o hello

伪目标: .PHONY

2.GDB调试工具

  被调试的应用程序在编译时最好使用-g参数将调试信息编入目标文件中:

  gcc -g 文件.c -o 文件

  启动调试: gdb 文件

  若程序调试时需要参数: gdb --args arg1 arg2 (arg1,arg2视为程序的参数)

命令 简写 功能
list l 列出源码
break b 设置断点
run r 从头开始运行程序
continue c 从停止除继续运行程序
next n 向前执行一句(不进入被调用函数中)
step s 向前执行一句(可进入被调用函数中)
return ret 从当前函数返回
print p 显示变量或表达式的值
x x 显示内存值
backtrace bt 显示调用栈
quit q 退出gdb
symbol-file sy 从可执行文件中加载符号表

 

 

 

 

 

 

 

 

 

 

 

 

3.Shell使用基础

  开头格式:#!/bin/bash

  脚本后缀.sh

  执行脚本前需先将脚本改为可执行:chmod 数字代号 文件

  然后执行脚本:./文件

  或直接执行脚本:sh 文件

  echo " "           输出

  echo " " >x      创建x文件并输出到x(覆盖)

  echo " " >>x    创建x文件并输出到x(添加)

  echo $*           输出全部参数

  echo $#          输出了n个参数

  echo $n          输出第n个参数

一些参数:

            -f 存在且是普通文件
            -d 存在且是目录
            -s 存在且字节数大于0
            -r 存在且可读
            -w 存在且可写
            -x 存在且可执行

            =: 等于则为真
            !=:不相等则为真
            -z字符串:字符串长度为零则为真
            -n字符串:字符串长度不为零则为真

            -lt 小于
            -le小于等于
            -gt  大于
            -ge 大于等于
            -eq 等于
            -ne 不等于

  if语句:

            构造:if [  ] ;

                    then

                    else

                    fi

            例:测试目录shell和文件123是否存在

                 #!/bin/bash

                 DIR="/home/shell"

                 FILE="/home/123"

                 if [ -d ${DIR} ] ;

                 then echo "exist"

                 fi

                 if [ -f ${FILE} ] ;

                 then echo "unexist"

                 fi

  case语句:

           构造:case "$#" in

                       0) echo "输入了0个参数";;

                       1) echo "输入了1个参数";;

                       *) echo "输入了多个参数";;

                   esac

           例:输入一个参数,若在A-Z,a-z,1-9之间则分别发出不同的信号

               #!/bin/bash

               read key

               case ${key} in

                   [A-Z] ) echo "UpperLetter"

                   [a-z] ) echo "LowerLetter"

                   [1-9] ) echo "Number"

                   * ) echo "Unkown"

               esac

  for语句:

           构造:for variable_name in <list_of_values>
                   do
                       ...
                   done   

           例:输入三个参数,分别创建以三个参数命名的文件夹并在对应文件夹里创建.txt文件

                #!/bin/bash

                for dir in $1 $2 $3

                do

                    mkdir ${dir}

                    cd ${dir}

                    touch ${dir}.txt

                    echo "hello ${dir}">${dir}.txt

                    cd ..

                done

  while语句:

          构造:while <条件>
                  do
                      <命令(s)>
                  done

          例:求1-100的和

               #!/bin/bash

               i=1

               sum=0

               while [ $i -le 100 ]

               do

                   sum=$[$sum+$i]

                   i=$[$i+1]

               done

               echo $sum