编程开发
19.01 test命令
是shell环境中测试表达式的命令,可以进行文件测试,字符串测试,整数测试和布尔运算,如果测试值返回结果为0表示为真,否则为假;
# test -r /etc/passwd
# echo $?
0
# test -x /etc/passwd
# echo $?
1
#
# var1=123
# var2=456
# test $var1 -eq $var2 不能用=号,=用于字符串的比较
# echo $?
1
# str1="abc"
# str2="abc"
# test $str1 = $str2
# echo $?
0
# [ $str1 = $str2 ] 用[]可以代替test指令,但[]两边都有空格
# echo $?
0
19.02 expr命令
是Linux中的表达式计算工具,可以完成求值操作
# expr 5 + 5 注意+前后必须有空格
10
计算 ( 2 + 5 ) * ( 4 + 3 ) 每一个符号前后先加空格,然后把特殊的符号转义
# expr \( 2 + 5 \) \* \( 4 + 3 \)
49
19.03 gcc命令
GNU的c语言编译器
# gcc hello.c
# gcc hello.c -o hello
19.04 gdb命令
GNU的调试器
# gcc -g hello.c -o hello 首先需要在编译的时候加-g选项
# gdb
(gdb)file hello
(gdb)start
(gdb)next
(gdb)next ...
(gdb)
19.05 ld命令
是GNU的连接器程序,将gcc生成的目标文件连接成可执行程序
# gcc -c hello.c
# ls hello.o
# ld -o hello hello.o -lc -e main
# file hello
19.06 ldd命令
用于打印程序所依赖的共享库
# ldd /bin/ls
linux-gate.so.1 => (0x0065b000)
libselinux.so.1 => /lib/libselinux.so.1 (0x0087b000)
librt.so.1 => /lib/librt.so.1 (0x00582000)
libcap.so.2 => /lib/libcap.so.2 (0x002ac000)
libacl.so.1 => /lib/libacl.so.1 (0x00cbe000)
libc.so.6 => /lib/libc.so.6 (0x0039a000)
libdl.so.2 => /lib/libdl.so.2 (0x0057b000)
/lib/ld-linux.so.2 (0x00378000)
libpthread.so.0 => /lib/libpthread.so.0 (0x0055e000)
libattr.so.1 => /lib/libattr.so.1 (0x0035d000)
19.07 make命令
是GNU的工程化编译工具,需要配置,编译,安装
# tar -zxvf proftpd-1.3.3b.tar.gz -C proftpd
# cd proftpd
# 先阅读相关的readme,install等帮助信息
# ./configure --prefix=/usr/local/proftpd-1.3.3b 配置的过程就是检查当前系统环境是否满足编译条件并进行一些基本配置
# make 根据配置调用对应的编译器完成源代码的编译
# make install 将编译完成的二进制程序帮助文档等安装到指定的安装目录下
19.08 as命令
是GNU的汇编器,可以将汇编程序编译成可执行程序
# gcc -S hello.c
# ls hello.s
# as -o hello.o hello.s
# ls hello.o
19.09 gcov命令
用于测试代码的覆盖率
# gcc -fprofile-arcs -ftest-coverage -g -o test test.c
# ls test test.gcno
# ./test
# gcov test.c
# cat test.c.gcov 以 #开头的行是没有被覆盖的行
19.10 nm命令
用于显示指定的目标文件的符号表
# gcc -c hello.c 只生成目标文件不连接
# nm hello.o
19.11 perl命令
是perl语言的解释器
# cat test.pl
$count = 1;
@array = (1, 2, 3);
while ($count <= @array) {
print ("element $count: $array[$count-1]\n");
$count++;
}
# perl test.pl
19.12 php命令
是php语言的命令行接口,可以作为Linux系统的维护脚本
# cat test.php
<?php
for($i=1;$i<10;$i++){
echo "This is a PHP script. Line Number: $i\n";
}
?>
# php test.php
19.13 protoize命令
是gcc套件中的指令,将GNUc转换为ANSIc的标准
# protoize hello.c
函数的格式会发生稍微的改变
19.14 unprotoize命令
用于c语言源程序格式的转换
# unprotoize hello.c
19.15 mktemp命令
被用来创建临时文件以供shell脚本使用,文件名是随机生成的,防止黑客攻击
# cat test.sh
#! /bin/bash
TPMFILE=`mktemp /tmp/example.XXXXXXXXXX` || exit 1
echo "program output" >> $TMPFILE
# /bin/bash test.sh
# bash test.sh
# cat /tmp/example.atNJA138138
19.01 test命令
是shell环境中测试表达式的命令,可以进行文件测试,字符串测试,整数测试和布尔运算,如果测试值返回结果为0表示为真,否则为假;
# test -r /etc/passwd
# echo $?
0
# test -x /etc/passwd
# echo $?
1
#
# var1=123
# var2=456
# test $var1 -eq $var2 不能用=号,=用于字符串的比较
# echo $?
1
# str1="abc"
# str2="abc"
# test $str1 = $str2
# echo $?
0
# [ $str1 = $str2 ] 用[]可以代替test指令,但[]两边都有空格
# echo $?
0
19.02 expr命令
是Linux中的表达式计算工具,可以完成求值操作
# expr 5 + 5 注意+前后必须有空格
10
计算 ( 2 + 5 ) * ( 4 + 3 ) 每一个符号前后先加空格,然后把特殊的符号转义
# expr \( 2 + 5 \) \* \( 4 + 3 \)
49
19.03 gcc命令
GNU的c语言编译器
# gcc hello.c
# gcc hello.c -o hello
19.04 gdb命令
GNU的调试器
# gcc -g hello.c -o hello 首先需要在编译的时候加-g选项
# gdb
(gdb)file hello
(gdb)start
(gdb)next
(gdb)next ...
(gdb)
19.05 ld命令
是GNU的连接器程序,将gcc生成的目标文件连接成可执行程序
# gcc -c hello.c
# ls hello.o
# ld -o hello hello.o -lc -e main
# file hello
19.06 ldd命令
用于打印程序所依赖的共享库
# ldd /bin/ls
linux-gate.so.1 => (0x0065b000)
libselinux.so.1 => /lib/libselinux.so.1 (0x0087b000)
librt.so.1 => /lib/librt.so.1 (0x00582000)
libcap.so.2 => /lib/libcap.so.2 (0x002ac000)
libacl.so.1 => /lib/libacl.so.1 (0x00cbe000)
libc.so.6 => /lib/libc.so.6 (0x0039a000)
libdl.so.2 => /lib/libdl.so.2 (0x0057b000)
/lib/ld-linux.so.2 (0x00378000)
libpthread.so.0 => /lib/libpthread.so.0 (0x0055e000)
libattr.so.1 => /lib/libattr.so.1 (0x0035d000)
19.07 make命令
是GNU的工程化编译工具,需要配置,编译,安装
# tar -zxvf proftpd-1.3.3b.tar.gz -C proftpd
# cd proftpd
# 先阅读相关的readme,install等帮助信息
# ./configure --prefix=/usr/local/proftpd-1.3.3b 配置的过程就是检查当前系统环境是否满足编译条件并进行一些基本配置
# make 根据配置调用对应的编译器完成源代码的编译
# make install 将编译完成的二进制程序帮助文档等安装到指定的安装目录下
19.08 as命令
是GNU的汇编器,可以将汇编程序编译成可执行程序
# gcc -S hello.c
# ls hello.s
# as -o hello.o hello.s
# ls hello.o
19.09 gcov命令
用于测试代码的覆盖率
# gcc -fprofile-arcs -ftest-coverage -g -o test test.c
# ls test test.gcno
# ./test
# gcov test.c
# cat test.c.gcov 以 #开头的行是没有被覆盖的行
19.10 nm命令
用于显示指定的目标文件的符号表
# gcc -c hello.c 只生成目标文件不连接
# nm hello.o
19.11 perl命令
是perl语言的解释器
# cat test.pl
$count = 1;
@array = (1, 2, 3);
while ($count <= @array) {
print ("element $count: $array[$count-1]\n");
$count++;
}
# perl test.pl
19.12 php命令
是php语言的命令行接口,可以作为Linux系统的维护脚本
# cat test.php
<?php
for($i=1;$i<10;$i++){
echo "This is a PHP script. Line Number: $i\n";
}
?>
# php test.php
19.13 protoize命令
是gcc套件中的指令,将GNUc转换为ANSIc的标准
# protoize hello.c
函数的格式会发生稍微的改变
19.14 unprotoize命令
用于c语言源程序格式的转换
# unprotoize hello.c
19.15 mktemp命令
被用来创建临时文件以供shell脚本使用,文件名是随机生成的,防止黑客攻击
# cat test.sh
#! /bin/bash
TPMFILE=`mktemp /tmp/example.XXXXXXXXXX` || exit 1
echo "program output" >> $TMPFILE
# /bin/bash test.sh
# bash test.sh
# cat /tmp/example.atNJA138138