Linux下的shell与make(2008
Linux下的shell与make
一、shell
1.1 什么是shell
● 用户与Linux的接口
● 命令解释器
● 支持多用户
● 支持复杂的编程语言
● Shell有很多种,如:csh,tcsh,pdksh,ash,sash,zsh,bash等。Linux的缺省Shell为bash(Bourne Again Shell)。
Shell是用户和操作系统之间最主要接口。通过Shell,可以同时在后台运行多个应用程序,并且在把需要与用户交互的程序放在前台运行。
通过在多条命令的序列中使用变量和流程控制,Shell可以作为一名复杂的编程语言。
1.2 转义字符和通配字符
● 转义字符(metacharacters)指的是在Shell中有特殊含义的字符。
例如:< > | ; ! ? * [ ] $ \ " ' ` ~ ( ) { } ^
#ls file[1-10].c
#count=`ls –l | grep ‘^d’| wc –l`
● 通配字符(wildcards)是转义字符的子集,用来查找匹配文件名
例如:? * [] [-] [!]
● 使用<Tab>键,可以自动补齐。
通配一个字符:"?"
通配多个字符:"*"
1.3 输入输出重定向
● 系统定义三个标准文件:标准输入(stdin)、标准输出(stdout)、标准错误输入(stderr)
● 管道符:"|",将前一个命令的输出转成下一个命令的输入。
● 过滤器(filters):用来接收标准输入,经过一定的转化,再写到标准输出。所以,过滤器一般放在管道符中间。
每个程序起动时,就有三个文件描述:STDIN (0),STDOUT(1),STDERR(2)。用"<"改变输入,用">"改变输出,用"2>"改变错误输出,用">>"来追加到已有的文件中。
常用的过滤器如下:expand,sed,awk,fmt,tac,tr,grep,nl,pr。
多条命令可以输入到一行中,并用";"字符分隔。在一行命令后加"\"表示另起一行继续输入,下一行的提示符变为">"
printf(“\t”);
1.4 Shell变量
● Shell变量(Variables)是程序用来保存数据用的。
● Shell特殊变量:系统定义了一些特殊的变量。如$HOME等。使用set命令查看当时系统中定义的变量。
系统定义的特殊变量有:$TERM(当前终端类型),$PATH(命令的搜索路径),$MANPATH(手册页存放的目录),$HOME(用户主目录),$LANG(当前使用语言),$PS1,$PS2(命令提示符),$SHELL(当前Shell名)。
在命令行上打入:变量名=变量值,可以定义变量。使用 echo $变量名 查看变量值。使用 unset 取消对变量的定义。
#hello=”123”
单引号表示忽略其中所有的转义字符,双引号表示忽略其中除了 $ ` \ 以外的其他的转义字符。反斜线(\
相关文档:
1. 关于本文
本文将以MySQL 5.0.51为例,以CentOS 5为平台,讲述MySQL数据库的安装和设置。
2. 关于MySQL
MySQL是最流行的开源SQL数据库管理系统,它由MySQL AB开发、发布和支持。MySQL AB是一家由MySQL开发人员创建的商业公司,它是一家使用了一种成功的商业模式来结合开源价值和方法论的第二代开源公司。MySQL是MySQL ......
学习嵌入式Linux的笔记和体会(一)
一个典型的桌面Linux系统包括3个主要的软件层---linux内核、C库和应用程序代码。
内核是唯一可以完全控制硬件的层,内核驱动程序代表应用程序与硬件之间进行会话。内核之上是C库,负责把POSIX API转换为内核可以识别的形式,然后调用内核,从应用程序向内核传递参数。应用 ......
嵌入式linux启动信息注释之bootloader
作为一名嵌入系统开发者,你一定遇到过下面的情景:
在某论坛上看到一篇帖子,上面贴着嵌入式linux开发板启动时的有关信息,然后大家在帖子里讨论着这个启动过程中出现的问题,随机举例如下:
Linux version 2.4.20-uc0 (root@Local) (gcc version 2.95.3 20 ......
看到公司的老外都是用Linux编译AVR的程序,感觉很强,而且本人也很喜欢linux,所以决定进行学习,现记录一下学习过程:
1.编译我们的算法文件,也就是老外以前发给我们这边的关于算法的.o文件。遇到小困难,提示for' loop initial declaration used outside C99 mode
, ......
这两天因为工作上的需要,将一个比较大的仓库分离,本以为比较简单的事,弄了N久,特别是最后权限不正确,查了关天,竟然是因为编码问题,真是哇血啊。总结一下遇到的问题,以免下次犯同样的错误。
1.wpsdoc仓库的分离
分离过程中,由于以前的入库的格式等不正确,直接分离失败,最后是将所有文件导出然后再导入的。麻烦 ......