跟我一起写Shell脚本之十五---写文件

1、创建一个新文件并写入内容我们写脚本如下:#!/bin/bashecho "Begin to write our own file"if [ $# -lt 1 ]; then filename="myfile1"else filename=$1ficat>$filename<<EOFfirst line2nd linehahahahhohhohoEOF<<EOF 表示当遇到EOF时结束输入。执行结果
分类: 其他 发布时间: 01-03 23:29 阅读次数: 0

跟我一起写Shell脚本之十六---命令(wc)

今天我们来了解下wc命令的用法。1、基本用法wc命令是用来统计文件的行数、字节数等。其用法如下:wc [-lcmw] [file...]-l 统计行(line)数-w 统计字(word)数-c 统计字节(character)数我们写个脚本试验下:#!/bin/bashif [ $# -gt 0 ]; then filename=$1else filename="027_function1.sh"fiecho `wc $file
分类: 其他 发布时间: 01-03 23:29 阅读次数: 0

跟我一起写Shell脚本之十七--常用命令(sed)

1、介绍sed也是我们在写脚本时经常用到的一个非常强大的命令。sed是一个非交互流式文本编辑器,可以对文本文件进行增、删、改、查等操作,支持按行、按字段、按正则匹配文本内容,非常灵活和方便,特别适合于大文件的编辑。sed在处理文本时会逐行读取文件内容,读到匹配的行就根据指令做操作,不匹配就跳过。sed能同时处理多个文件多行的内容,可以不对原文件改动,把整个文件输入到屏幕,可以把只匹配到模式的内容输入到屏幕上。还可以对原文件改动,但是不会再屏幕上返回结果。2、语法sed的语法有两种
分类: 其他 发布时间: 01-03 23:29 阅读次数: 0

跟我一起写Shell脚本之十八--常用命令(head)

1、介绍 head也是我们经常在脚本中用到的一个命令,主要用来显示文件的开头部分内容。我们可以用man head查看下它的介绍:NAME head - output the first part of filesSYNOPSIS head [OPTION]... [FILE]...DESCRIPTION Print the first 10 lines of each FILE to standard output. With mor...
分类: 其他 发布时间: 01-03 23:29 阅读次数: 0

跟我一起写Shell脚本之十九--常用命令(tail)

1、介绍 tail也是我们经常在脚本中用到的一个命令,它和head类似,但是如名字所示,它主要用来显示文件的结尾部分内容。我们可以用man tail查看下它的介绍:NAME tail - output the last part of filesSYNOPSIS tail [OPTION]... [FILE]...DESCRIPTION Print the last 10 lines of each FILE to standar...
分类: 其他 发布时间: 01-03 23:29 阅读次数: 0

跟我一起写Shell脚本之二十--常用命令(cut)

1、介绍 cut命令也是我们写脚本时经常用到的命令,主要用来显示文件或者标准输入的每一行,从xxx1到xxx2的内容。常用方法可以总结到一张表里:语法 说明 cut [-nb] [file] -b是以字节为单位进行分割,但是遇到多字节字符的时候有可能会出现乱码。所以加上-n选项就可以解决。 cut [-c] [file] -c是以字符为单位进行分割 cut [-df] [file] -f是以域为单位进行分割。 -d指定分割域的方法 ..
分类: 其他 发布时间: 01-03 23:29 阅读次数: 0

跟我一起写Shell脚本之二十一--常用命令(od)

1、介绍 od是Octal Dump的简写,用于将指定文件内容以八进制、十进制、十六进制、浮点格式或ASCII编码字符方式显示,通常用于显示或查看文件中不能直接显示在终端的字符。 其语法如下:od [<选项><参数>] [<文件名>] 详细命令选项介绍:-A,--address-radix=RADIX: 指定地址(文件offset)用什么基数显示,包括: d 十进制 o 八进制(系统默认值) ...
分类: 其他 发布时间: 01-03 23:29 阅读次数: 0

跟我一起写Shell脚本之二十二--常用命令(xargs)

1、介绍 od是Octal Dump的简写,用于将指定文件内容以八进制、十进制、十六进制、浮点格式或ASCII编码字符方式显示,通常用于显示或查看文件中不能直接显示在终端的字符。 其语法如下:od [<选项><参数>] [<文件名>] 详细命令选项介绍:-A,--address-radix=RADIX: 指定地址(文件offset)用什么基数显示,包括: d 十进制 o 八进制(系统默认值) ...
分类: 其他 发布时间: 01-03 23:29 阅读次数: 0

C标准、C标准库、C++标准、C++标准库

1、C标准C标准主要有三个版本:C89、C99、C11,他们之间的关系可以借用这张图来表示:C 标准主要由两部分组成:描述C的语法,和描述C标准库。C标准库定义了一组标准头文件,每个头文件中包含一些相关的函数、变量、类型声明和宏定义。要在一个平台上支持C语言,不仅要实现C编译器,还要实现C标准库,这样的实现才算符合C标准。不符合C标准的实现也是存在的,例如很多单片机的C 语言开发工具中只有C编译器而没有完整的C标准库。2、C标准库2.1 GNU/Linux版本的实现glibc是Lin
分类: 其他 发布时间: 01-03 23:29 阅读次数: 0

glibc所包含的各个库

1、glibc所包含的各个库介绍废话少说,直接介绍glibc包含了哪些库: Library component Content Inclusion guidelines ld (This library component is not itself a library. Instead, ld.so is an executable invoked by the ELF binary format loader to l
分类: 其他 发布时间: 01-03 23:29 阅读次数: 0

跟我一起写Shell脚本之二十三--标准输入和输出,以及重定向

1、什么是标准输入和输出当我们执行一个shell命令行时,一般会自动打开三个标准文件1)标准输入文件(stdin),通常对应终端的键盘;2)标准输出文件(stdout),默认对应终端的屏幕;3)标准错误输出文件(stderr),默认对应终端的屏幕。命令从标准输入文件中得到输入数据,将正常输出数据输出到标准输出文件,而将错误信息送到标准错误文件中。因为Linux里一切皆是文件,所以标准输入和输出也不例外,也是文件。是文件就有文件描述符,这三个标准文件的文件描述符是固定的:1)标准输入文件
分类: 其他 发布时间: 01-03 23:29 阅读次数: 0

GCC详解-总览

1、GCC是什么早期 GCC 的全拼为 GNU C Compiler,即 GUN 计划诞生的 C 语言编译器,显然最初 GCC 的定位确实只用于编译 C 语言。但经过这些年不断的迭代,GCC 的功能得到了很大的扩展,它不仅可以用来编译 C 语言程序,还可以处理 C++、Go、Objective -C 等多种编译语言编写的程序。与此同时,由于之前的 GNU C Compiler 已经无法完美诠释 GCC 的含义,所以其英文全称被重新定义为 GNU Compiler Collection,即 G
分类: 其他 发布时间: 01-03 23:29 阅读次数: 0

GCC详解-gcc

1、背景1.1 gcc介绍如上一篇介绍的,gcc执行编译程序和连接程序以产生需要的输出;而g++是gcc 的一个版木,默认语言设置为 C++,而且在连接的时候自动包含标准 C++ 库。所以,简单来讲,我们可以使用gcc将代码,编译成可以执行的程序。以C/C++为例,我们可以总结下gcc能做如下的事情:输出预处理后的C/C++源程序(展开头文件和替换宏) 输出C/C++源程序的汇编代码 输出二进制目标文件 生成静态库 生成可执行程序 转换文件格式1.2 gcc编译过程如图所示,
分类: 其他 发布时间: 01-03 23:29 阅读次数: 0

GCC详解-Binutils工具之readelf

1、介绍readelf从ELF 格式的目标文件显示信息。readelf和objdump提供的功能类似,但是它显示的信息更为具体,并且它不依赖BFD库(BFD库是一个GNU项目,它的目标就是希望通过一种统一的接口来处理不同的目标文件)2、ELF格式的文件ELF(Executable and Linking Format)是一个定义了目标文件内部信息如何组成和组织的文件格式。内核会根据这些信息加载可执行文件,内核根据这些信息可以知道从文件哪里获取代码,从哪里获取初始化数据,在哪里应该加载共享库,
分类: 其他 发布时间: 01-03 23:29 阅读次数: 0

GCC详解-gcc之创建动态库静态库及其使用

1、动态库1.1 创建动态库创建库文件的头文件mylib.h,内容为:int myfun(int a);创建库文件的源文件mylib.c,内容为:#include <stdio.h>#include "mylib.h"int myfun(int a){ return a;}使用如下命令生成我们的共享库libmy.so:gcc -fPIC -shared mylib.c -o libmy.so1.2 使用动态库创建main.c,...
分类: 其他 发布时间: 01-03 23:29 阅读次数: 0

GCC详解-Binutils工具之size

1、size工具介绍size工具会列出程序文件中各段的大小。我们可以查看帮忙:$ size --helpUsage: size [option(s)] [file(s)]Displays the sizes of sections inside binary filesIf no input file(s) are specified, a.out is assumedThe options are: -A|-B --format={sysv|berkeley} Sel...
分类: 其他 发布时间: 01-03 23:29 阅读次数: 0

GCC详解-Binutils工具之strings

1、介绍strings 工具在对象文件或二进制文件中查找可打印的字符串。这里的字符串是指:4个或更多可打印字符的任意序列,以换行符或空字符结束。当然,这里的4可以通过-n指定和修改。2、常用用途我们知道了strings的用法后,那么我们什么情况下才会用它呢?其实这么几个地方可能会经常用到:2.1 快速确认版本比如程序里有个版本定义:char version[] = "aaa_xxx_v0.1",那么可以通过strings xxx.binary | grep version
分类: 其他 发布时间: 01-03 23:28 阅读次数: 0

GCC详解-Binutils工具之strip

1、介绍strip经常用来去除目标文件中的一些符号表、调试符号表信息,以减小静态库、动态库和程序的大小。其基本用法:strip xxx或者strip xxx -o yyy2、优缺点优点:strip后占空间小缺点:strip后不方便调试,addr2line等不能使用针对缺点的应对策略:strip前的库用来调试, strip后的库用来实际发布, 他们两者有对应关系。 一旦发布的strip后的库出了问题, 就可以找对应的未strip的库来定位。3、适用范围3.1 动态库
分类: 其他 发布时间: 01-03 23:28 阅读次数: 0

GCC详解-Binutils工具之nm

1、介绍nm用来列出目标文件中的符号,用以定位和分析执行程序和目标文件中的符号信息和它的属性。它可以和readelf、objdump、addr2line工具配合使用。1.1 参数总结 选项 描述 -A 同选项 --print-file-name -a 同选项 --debug-syms -B 同选项 --format=bsd。这是默认设置
分类: 其他 发布时间: 01-03 23:28 阅读次数: 0

GCC详解-Binutils工具之objdump

1、介绍objdump是用查看目标文件或者可执行的目标文件的构成的工具。2、参数 选项 详细选项 描述 -a --archive-headers 显示档案库的成员信息,类似 ls -l 将 lib*.a 的信息列出。 -b bfdname --target=bfdname 指定目标码格式。这不是必须的,objdump 能
分类: 其他 发布时间: 01-03 23:28 阅读次数: 0