Linux test 命令用法详解:shell环境中测试条件表达式工具 编程开发

Linux test 命令用法详解:shell环境中测试条件表达式工具

test命令是shell环境中测试条件表达式的实用工具。 语法 test(选项) 选项 -b<文件>:如果文件为一个块特殊文件,则为真; -c<文件>:如果文件为一个字符特殊文件,则为真; -d<文件>:如果文件为一个目录,则为真; -e<文件>:如果文件存在,则为真; -f<文件>:如果文件为一个普通文件,则为真; -g<文件>:如果设置了文件的SGID位,则为真; -G<文件>:如果文件存在且归该组所有,则为真; -k<文件>:如果设置了文件的粘着位,则为真; -O<文件>:如果文件存在并且归该用户所有,则为真; -p<文件>:如果文件为一个命名管道,则为真; -r<文件>:如果文件可读,则为真; -s<文件>:如果文件的长度不为零,则为真; -S<文件>:如果文件为一个套接字特殊文件,则为真; -u<文件>:如果设置了文件的SUID位,则为真; -w<文件>:如果文件可写,则为真; -x<文件>:如果文件可执行,则为真。 实例 linux中shell编程中的test常见用法: 判断表达式 if test #表达式为真 if test ! #表达式为假 test 表达式1 –a 表达式2 #两个表达式都为真 test 表达式1 –o 表达式2 #两个表达式有一个为真 test 表达式1 ! 表达式2 #条件求反 判断字符串 test –n 字符串 #字符串的长度非零 test –z 字符串 #字符串的长度是否为零 test 字符串1=字符串2 #字符串是否相等,若相等返回true test 字符串1!=字符串2 #字符串是否不等,若不等反悔false 判断整数 test 整数1 -eq 整数2 #整数相等 test 整数1 -ge 整数2 #整数1大于等于整数2 test 整数1 -gt 整数2 #整数1大于整数2 test 整数1 -le 整数2 #整数1小于等于整数2 test...
阅读全文
Linux expr 命令用法详解:一款表达式计算工具 编程开发

Linux expr 命令用法详解:一款表达式计算工具

expr命令是一款表达式计算工具,使用它完成表达式的求值操作。 expr的常用运算符: 加法运算:+ 减法运算:- 乘法运算:\* 除法运算:/ 求摸(取余)运算:% 语法 expr(选项)(参数) 选项 --help:显示指令的帮助信息; --version:显示指令版本信息。 参数 表达式:要求值的表达式。 实例 result=`expr 2 + 3` result=$(expr $no1 + 5)
阅读全文
Linux gcc 命令用法详解:基于C/C++的编译器 编程开发

Linux gcc 命令用法详解:基于C/C++的编译器

gcc命令使用GNU推出的基于C/C++的编译器,是开放源代码领域应用最广泛的编译器,具有功能强大,编译代码支持性能优化等特点。现在很多程序员都应用GCC,怎样才能更好的应用GCC。目前,GCC可以用来编译C/C++、FORTRAN、JAVA、OBJC、ADA等语言的程序,可根据需要选择安装支持的语言。 语法 gcc(选项)(参数) 选项 -o:指定生成的输出文件; -E:仅执行编译预处理; -S:将C代码转换为汇编代码; -wall:显示警告信息; -c:仅执行编译操作,不进行连接操作。 参数 C源文件:指定C语言源代码文件。 实例 常用编译命令选项 假设源程序文件名为test.c 无选项编译链接 gcc test.c 将test.c预处理、汇编、编译并链接形成可执行文件。这里未指定输出文件,默认输出为a.out。 选项 -o gcc test.c -o test 将test.c预处理、汇编、编译并链接形成可执行文件test。-o选项用来指定输出文件的文件名。 选项 -E gcc -E test.c -o test.i 将test.c预处理输出test.i文件。 选项 -S gcc -S test.i 将预处理输出文件test.i汇编成test.s文件。 选项 -c gcc -c test.s 将汇编输出文件test.s编译输出test.o文件。 无选项链接 gcc test.o -o test 将编译输出文件test.o链接成最终可执行文件test。 选项 -O gcc -O1 test.c -o test 使用编译优化级别1编译程序。级别为1~3,级别越大优化效果越好,但编译时间越长。 多源文件的编译方法 如果有多个源文件,基本上有两种编译方法: 假设有两个源文件为test.c和testfun.c 多个文件一起编译 gcc testfun.c test.c -o test 将testfun.c和test.c分别编译后链接成test可执行文件。 分别编译各个源文件,之后对编译后输出的目标文件链接。 gcc -c testfun.c #将testfun.c编译成testfun.o gcc -c test.c #将test.c编译成test.o gcc -o testfun.o test.o...
阅读全文
Linux ldd 命令用法详解:打印程序或者库文件所依赖的共享库列表 编程开发

Linux ldd 命令用法详解:打印程序或者库文件所依赖的共享库列表

ldd命令用于打印程序或者库文件所依赖的共享库列表。 语法 ldd(选项)(参数) 选项 --version:打印指令版本号; -v:详细信息模式,打印所有相关信息; -u:打印未使用的直接依赖; -d:执行重定位和报告任何丢失的对象; -r:执行数据对象和函数的重定位,并且报告任何丢失的对象和函数; --help:显示帮助信息。 参数 文件:指定可执行程序或者文库。 其他介绍 首先ldd不是一个可执行程序,而只是一个shell脚本 ldd能够显示可执行模块的dependency,其原理是通过设置一系列的环境变量,如下:LD_TRACE_LOADED_OBJECTS、LD_WARN、LD_BIND_NOW、LD_LIBRARY_VERSION、LD_VERBOSE等。当LD_TRACE_LOADED_OBJECTS环境变量不为空时,任何可执行程序在运行时,它都会只显示模块的dependency,而程序并不真正执行。要不你可以在shell终端测试一下,如下: export LD_TRACE_LOADED_OBJECTS=1 再执行任何的程序,如ls等,看看程序的运行结果。 ldd显示可执行模块的dependency的工作原理,其实质是通过ld-linux.so(elf动态库的装载器)来实现的。我们知道,ld-linux.so模块会先于executable模块程序工作,并获得控制权,因此当上述的那些环境变量被设置时,ld-linux.so选择了显示可执行模块的dependency。 实际上可以直接执行ld-linux.so模块,如:/lib/ld-linux.so.2 --list program(这相当于ldd program)
阅读全文
Linux gdb 命令用法详解:功能强大的程序调试器 编程开发

Linux gdb 命令用法详解:功能强大的程序调试器

gdb命令包含在GNU的gcc开发套件中,是功能强大的程序调试器。GDB中的命令固然很多,但我们只需掌握其中十个左右的命令,就大致可以完成日常的基本的程序调试工作。 命令 解释 示例 file <文件名> 加载被调试的可执行程序文件。 因为一般都在被调试程序所在目录下执行GDB,因而文本名不需要带路径。 (gdb) file gdb-sample r Run的简写,运行被调试的程序。 如果此前没有下过断点,则执行完整个程序;如果有断点,则程序暂停在第一个可用断点处。 (gdb) r c Continue的简写,继续执行被调试程序,直至下一个断点或程序结束。 (gdb) c b <行号> b <函数名称> b *<函数名称> b *<代码地址> d [编号] b: Breakpoint的简写,设置断点。两可以使用“行号”“函数名称”“执行地址”等方式指定断点位置。 其中在函数名称前面加“*”符号表示将断点设置在“由编译器生成的prolog代码处”。如果不了解汇编,可以不予理会此用法。 d: Delete breakpoint的简写,删除指定编号的某个断点,或删除所有断点。断点编号从1开始递增。 (gdb) b 8 (gdb) b main (gdb) b *main (gdb) b *0x804835c (gdb) d s, n s: 执行一行源程序代码,如果此行代码中有函数调用,则进入该函数; n: 执行一行源程序代码,此行代码中的函数调用也一并执行。 s 相当于其它调试器中的“Step Into (单步跟踪进入)”; n 相当于其它调试器中的“Step Over (单步跟踪)”。 这两个命令必须在有源代码调试信息的情况下才可以使用(GCC编译时使用“-g”参数)。 (gdb) s (gdb) n si, ni si命令类似于s命令,ni命令类似于n命令。所不同的是,这两个命令(si/ni)所针对的是汇编指令,而s/n针对的是源代码。 (gdb) si (gdb) ni p <变量名称> Print的简写,显示指定变量(临时变量或全局变量)的值。 (gdb) p i...
阅读全文
Linux make 命令用法详解:GNU的工程化编译工具 编程开发

Linux make 命令用法详解:GNU的工程化编译工具

make命令是GNU的工程化编译工具,用于编译众多相互关联的源代码问价,以实现工程化的管理,提高开发效率。 语法 make(选项)(参数) 选项 -f:指定“makefile”文件; -i:忽略命令执行返回的出错信息; -s:沉默模式,在执行之前不输出相应的命令行信息; -r:禁止使用build-in规则; -n:非执行模式,输出所有执行命令,但并不执行; -t:更新目标文件; -q:make操作将根据目标文件是否已经更新返回"0"或非"0"的状态信息; -p:输出所有宏定义和目标文件描述; -d:Debug模式,输出有关文件和检测时间的详细信息。 Linux下常用选项与Unix系统中稍有不同,下面是不同的部分: -c dir:在读取 makefile 之前改变到指定的目录dir; -I dir:当包含其他 makefile文件时,利用该选项指定搜索目录; -h:help文挡,显示所有的make选项; -w:在处理 makefile 之前和之后,都显示工作目录。 参数 目标:指定编译目标。 知识扩展 无论是在linux 还是在Unix环境 中,make都是一个非常重要的编译命令。不管是自己进行项目开发还是安装应用软件,我们都经常要用到make或make install。利用make工具,我们可以将大型的开发项目分解成为多个更易于管理的模块,对于一个包括几百个源文件的应用程序,使用make和 makefile工具就可以简洁明快地理顺各个源文件之间纷繁复杂的相互关系。 而且如此多的源文件,如果每次都要键入gcc命令进行编译的话,那对程序员 来说简直就是一场灾难。而make工具则可自动完成编译工作,并且可以只对程序员在上次编译后修改过的部分进行编译。 因此,有效的利用make和 makefile工具可以大大提高项目开发的效率。同时掌握make和makefile之后,您也不会再面对着Linux下的应用软件手足无措了。
阅读全文