第1章 入门
编译
gcc -o fred fred.c -lm 链接libm.a的函数库
gcc -I/usr/openwin/include fred.c 包含头文件目录
gcc -L/usr/openwin/lib x11fred.c -lX11 包含链接库目录
gcc -c bill.c 生成目标文件
ar crv libfoo.a *.o 生成静态库
查看可执行文件、库文件内容:nm libfoo.a
查看依赖共享库:ldd program
touch 创建空文件
第2章 shell程序设计
./program 1>out.txt 选择性重定向,仅重定向stdout,0:stdin 1:stdout 2:stderr
管道使用相应输出文件是在命令被创建同时创建的。
file xx 查看文件类型
在自家目录中创建文件夹bin,将自己的程序放在其中
脚本中各种符号:
` ` 反引号,类似$()
[] 类似 test xx
{} 参数扩展,识别${i}_tmp,替换里面的i
. 当前shell中执行命令
: 空命令
$$ $# $@ $0 $1 $2... 参数相关
"" '' 单引号不会替换,24页
$(()) 类似expr,计算表达式值
第3章 文件操作
/Proc目录表示系统信息,里面数字表示一个进程信息
举例,如果需要修改运行程序可打开最大文件数量,可以修改/proc/sys/fs/file-max
第4章 linux环境
列出全部环节变量:set
系统全部用户 /etc/passwd
密码文件 /etc/shadow
日志文件 /var/log
临时文件生成 tmpnam tmpfile
第5章 终端
stdout、stderr重定向以后直接读写终端:打开"dev/tty"
许多终端控制方法都是通过结构termios来实现的。
控制终端示例:
stty -icanon min 1 time 0 立即读取字符
stty icanon min 1 time 0 关闭立即读取字符,以下类似
stty -echo 禁用回显
new_settings.c_lflag &= ~ISIG 可以禁用ctrl+c功能
以linux为例,终端信息保存在/usr/share/terminfo/linux/,链接到/lib/terminfo/l/
infocmp可以查看信息
第8章 MySQL
mysql配置文件/etc/my.cnf
第9章 开发工具
make命令
-k 遇到错误继续执行
-n 输出执行步骤而不是执行
-f 指定文件
伪目标all:指定多个生成对象
$?
$@
$<
$*
-
@
后缀规则: .cpp.o %.cpp:%.o
生成库语法lib(file.o)
第10章 调试
gdb
gcc参数:-g
run 运行
cont 继续
b 断点
breaktrace/where 栈
commands 断点执行命令
cxref可以生成交叉引用表
cflow可以生成函数调用树
gprof查看程序性能,需要编译参数-pg
efence,valgrind查找内存破坏问题
第11章 进程和信号
killall -HUP apache 杀死所有apache进程
第8章 MySQL
mysql配置文件/etc/my.cnf