一个shell文件的分析记录

来源:互联网 发布:电脑怎么没网络了 编辑:程序博客网 时间:2024/04/26 01:58
echo  "make 2>&1 |tee err.log"    

make  2>&1   |tee   err.log //综合一下的说明,该句的执行过程是 执行make 是将标准错误输出到标准输出中,并复制到err文件中

在shell中,文件描述符通常是:STDIN,STDOUT,STDERR,即:0,1,2,由此可以看出,

2>&1 means redirect stderr to stdout.2是标准错误,&1是标准输出,2>&1意思就是将标准错误输出到标准输出中。

扩展学习笔记:

tee 命令
   用途:显示程序的输出并将其复制到一个文件中。
   语法:tee [ -a ] [ -i ] [ File ... ]
   描述:tee 命令读取标准输入,然后将程序的输出写到标准输出,并同时将其复制到指定的一个或多个文件。
   标志
   -a 将输出添加到 File 的末尾而不是覆盖写入。
   -i 忽略中断。
   退出状态
   命令返回以下退出值:
   0 标准输入被成功地复制到所有输出文件中。
   >0 发生错误。
  注:如果向任意成功打开的File操作数的写入不成功,写入其它成功打开的File操作数,并且标准输出会继续,但是退出值将会是>0。


echo   "arm-linux-strip   fhwmain"

arm-linux-strip     bin/fhwmain    // arm-linux-strip是减肥工具而不是压缩工具,  是将make完了以后的程序fhwmain文件,去掉elf可执行的文件信息

下面的表格总结的很好:转http://blog.chinaunix.net/space.php?uid=20564848&do=blog&id=73976

名称

归属

作用

arm-linux-as

binutils

编译ARM汇编程序

arm-linux-ar

binutils

把多个.o合并成一个.o或静状库(.a)

arm-linux-ranlib

binutils

为库文件建立索引,相当于: arm-linux-ar  –s

arm-linux-ld

binutils

连接器(Linker),把多个.o或库文件连接成一个可执行文件

arm-linux-objdump

binutils

查看目标文件(.o)和库(.a)的信息

arm-linux-objcopy

binutils

转换可执行文件的格式

arm-linux-strip

binutils

去掉elf可执行文件的信息,使可执行文件变小

arm-linux-readelf

binutils

elf可执行文件的信息

arm-linux-gcc

gcc

编译.c.SC程序或汇编程序

arm-linux-g++

gcc

编译c++程序



#echo "cp *"
rm  -f   fhwgroup/lib/*      //删除fhwgroup/lib/文件下面的所有文件内容
cp   -f   lib/*.so   fhwgroup/lib/       //拷贝lib/的所有.so文件到,fhwgroup/lib/ 下
cp   -f   bin/fhwmain   ./fhwgroup/ //将bin/fhwmain 文件,拷贝到./fhwgroup/目录下


echo "rm fhwgroup.tgz"
rm   -f   fhwgroup.tgz //删除原有的文件 fhwgroup.tgz


echo "tar zcvf fhwgroup.tgz fhwgroup/"

tar   zcvf     fhwgroup.tgz    fhwgroup///将   fhwgroup/ 目录打包成  fhwgroup.tgz 格式

tar几个参数的说明:

-z 用gzip来压缩/解压缩文件,加上该选项后可以将档案文件进行压缩,但还原时也一定要使用该选项进行解压缩。

-c 创建新的档案文件。如果用户想备份一个目录或是一些文件,就要选择这个选项。

-v 详细报告tar处理的文件信息。如无此选项,tar不报告文件信息。

-f 使用档案文件或设备,这个选项通常是必选的。



echo "chmod 777 fhwgroup.tgz"

chmod 777 fhwgroup.tgz     //修改压缩后文件的执行权限 

Linux命令——chmod

命令描述

  变更文件或目录的权限。在UNIX系统家族里,文件或目录权限的控制分别以读取,写入,执行3种一般权限来区分,另有3种特殊权限可供运用,再搭配拥有者与所属群组管理权限范围。您可以使用chmod指令去变更文件与目录的权限,设置方式采用文字或数字代号皆可。符号连接的权限无法变更,如果您对符号连接修改权限,其改变会作用在被连接的原始文件。权限范围的表示法如下:
  u:User,即文件或目录的拥有者。
  g:Group,即文件或目录的所属群组。
  o:Other,除了文件或目录拥有者或所属群组之外,其他用户皆属于这个范围。
  a:All,即全部的用户,包含拥有者,所属群组以及其他用户。
  有关权限代号的部分,列表于下:
  r:读取权限,数字代号为"4"。
  w:写入权限,数字代号为"2"。
  x:执行或切换权限,数字代号为"1"。
  -:不具任何权限,数字代号为"0"。
  s:特殊?b>功能说明:变更文件或目录的权限。

语法

  chmod [-cfRv][--help][--version][<权限范围>+/-/=<权限设置...>][文件或目录...]
  chmod [-cfRv][--help][--version][数字代号][文件或目录...]
  chmod [-cfRv][--help][--reference=<参考文件或目录>][--version][文件或目录...]

选项说明

  -c或--changes 效果类似"-v"参数,但仅回报更改的部分。
  -f或--quiet或--silent 不显示错误信息。
  -R或--recursive 递归处理,将指定目录下的所有文件及子目录一并处理。
  -v或--verbose 显示指令执行过程。
  --help 在线帮助。
  --reference=<参考文件或目录> 把指定文件或目录的权限全部设成和参考文件或目录的权限相同
  --version 显示版本信息。
  <权限范围>+<权限设置> 开启权限范围的文件或目录的该项权限设置。
  <权限范围>-<权限设置> 关闭权限范围的文件或目录的该项权限设置。
  <权限范围>=<权限设置> 指定权限范围的文件或目录的该项权限设置。

原创粉丝点击