Shell基础一
Shell指令:
shell识别三种基本命令:内建命令、Shell函数以及外部命令:
内建命令就是由shell本身所执行的命令。有些命令是由于其必要性才内建的;例如:cd、read; 另一种内建命令的存在则是为了效率,其中最典型的就是test命令(稍后有介绍),编写脚本时会经常用到它。另外还有I/O命令。例如echo 和 printf。
Shell函数是功能健全的一系列程序代码,以Shell语言写成,它们可以像命令那样引用,稍后也有介绍;
外部命令就是由Shell的副本(新的进程)所执行的命令,基本过程如下:
a、建立一个新的进程。此进程即为Shell的一个副本。
b、在新的进程里,在PATH变量内所列出的目录中,寻找特定的命令。 /bin:/usr/bin:/usr/X11R6/bin:/usr/local/bin为PATH变量典型的默认值。当命令名称含有斜杠(/)符时,将掠过路径查找步骤;
c、在新的进程里,以所找到的新程序取代执行中的Shell程序并执行。
d、程序完成后,最初的Shell会接着从终端读取的下一条命令,或执行脚本里的下一条命令;
变量:
在Shell的世界里,变量值可以是(而且通常是)空值,也就是不含任何字符。这是合理的,也是常见的,好用的特性。空值就是null;
Shell变量名称的开头是一个字母或下划线符号,后面可以接着任意长度的字母、数字或下划线符号。变量名称的字符长度并无限制。
注意:
变量赋值的方式为:先写变量名称,紧接着=字符,最后是新值,中间完全没有任何空格(这点于C/C++很大区别)。 当要取出shell变量的值时,需于变量名称前面加上$字符。当所赋值的值内含空格时,请加上引号;
first=isaac middle=bashevis last=singer
fullname="isaac bashevis singer"; //等号左右两边都没有空格
oldname=$fullname; //此处要加上$符
fullname="$firsh $middle $last"; //将几个变量连接起来,要加上双引号
华丽的printf输出:
printf命令模仿C程序库(library)里的printf()库程序(library routine)。它几乎复制了该函数的所有的功能;
printf "hello world"
printf不像echo那样会自动提供一个换行的符号。你必须显式地将换行符指定成\n 。 printf命令的完整语法分为两部分:
printf format-string [arguments .......]
$printf "The first program always prints '%s, %s ! '\n " Hello world
The first program always prints 'Hello, world !'
基本的I/O重定向以及重定向与管道
标准输入/输出被称为:标准输入、标准输出、以及标准错误输出;
示例:等登录shell时,UNIX便将默认的标准输入、输出以及错误输出安排成你的终端。I/O重定向就是通过与终端交互,或是在shell脚本里设置
重新安排从哪里输入或输出到哪里;
以 < 改变标准输入
program < file 可将program的标准输入改为file;
以 > 改变标准输出
program > file 可将program的标准输出修改为file;
> 重定向符在目标文件不存在时,会新建一个。然而,如果目标文件已存在,它就会被覆盖掉,原本的数据都会丢失;
以 >> 附加到文件;
program >> file
如果目标文件不存在, >>重定向符便会新建一个。如果目标文件存在,它不会直接覆盖掉文件,而是将程序所产生的数据附加到文件结尾处;
以 | 建立管道:
program1 | program2
将program1的标准输出作为program2的标准输入。虽然< 和 > 可将输入与输出连接到文件,但管道可以使得执行速度比使用临时文件的程序块10倍以上;
特殊文件:/dev/null 与 /dev/tty
unix系统提供了两个对shell编程特别有用的特殊文件。第一个文件/dev/null, 就是大家熟知的位桶(bit bucket)。传送到此文件的数据都被系统丢掉。也就是说,当程序将数据写到此文件时,会认为它已成功完成写入数据的操作,但实际上什么事都没做。如果需要的是命令的退出状态。而非它的输出,此功能会很有用。例如,测试一个文件是否包含某个模式:
if grep pattern myfile > /dev/null
then
.... //找到模式
else
.... // 找不到模式时
fi
相对地,读取/dev/null则会立即返回文件结束符号。读取/dev/null的操作很少会出现在Shell程序里,不过了解这个文件的行为模式还是非常重要的;
另一个特殊文件为/dev/tty。 当程序打开此文件时,unix会自动将他重定向到一个终端【一个实体控制台或者串口】,也可能是通过网络与窗口登录的伪终端再与程序结合。这在程序必须读取人工输入是特别有用;
Shell基础一的更多相关文章
- Shell基础学习小结
0 shell基础概念 Shell是解释性语言,使用脚本编程语言的好处是,它们多半运行在比编译型语言还高的层级,能够轻易处理文件与目录之类的对象:缺点是它们的效率通常不如编译型语言.Shell命令有本 ...
- Shell基础-环境变量配置文件
Shell基础-环境变量配置文件 source 配置文件 或者 . 配置文件: 把环境变量写入配置文件后,需要用户重新登陆才能生效,而是用source命令,则能直接生效 主要的配置文件: /etc/p ...
- shell基础二十篇 一些笔记
shell基础二十篇 转自 http://bbs.chinaunix.net/thread-452942-1-1.html 研讨:Bash 内建命令 read (read命令更具体的说明见博客收藏的一 ...
- shell基础(转)
shell基础1:文件安全与权限 http://bbs.chinaunix.net/forum/viewtopic.php?t=434579&highlight=wingger 附:Linux ...
- Linux实战教学笔记17:精简shell基础
第十七节 精简shell基础 标签(空格分隔): Linux实战教学笔记 1,前言 1.1 为什么学习shell编程 Shell脚本语言是实现Linux/UNIX系统管理及自动化运维所必备的重要工具, ...
- shell基础及变量
一 Shell概述 1.Shell的作用——命令解释器,“翻译官” shell作为一个人机接口,用于解释用户输入的命令,将命令解释为Linux内核可以执行的2进制代码,并将执行的结果返回在标准终端上. ...
- Shell 基础教程
一个比较好的shell基础教程: http://www.runoob.com/linux/linux-shell.html
- Linux基础学习(10)--Shell基础
第十章——Shell基础 一.Shell概述 1.Shell是什么: (1)Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来 ...
- Linux Shell基础(下)
Linux Shell基础(下) 目录 一.shell特殊符号cut命令 二.cut.sort.wc.uniq命令 三.tee.tr.split命令 四.简易审计系统 五.fork, exec, so ...
- Linux shell基础知识(上)
Linux shell基础知识(上) 目录 一.shell介绍 二.命令历史 三.命令补全和别名 四.通配符 五.输入输出重定向 六.管道符和作业控制 七.shell变量 八.环境变量配置文件 九.b ...
随机推荐
- HDU 1267 下沙的沙子有几粒?
题解:利用卡特兰数的几何意义,题目就可以转化为一个棋盘格,可以向下走或是向右走,但是不可以逾越对角线,就可以了. #include <cstdio> #include <iostre ...
- c++复习(未完待续)
1.使函数不能在定义该函数的文件之外访问的方法: (1)声明函数为static(2)将函数放到无名名字空间中 namespace { void g() { ......... } }
- 配置hibernate数据库连接
第一步:右键项目->MyEclipse->添加Hibernate组件,指定数据库连接配置如下(src/hibernate.cfg.xml) MySQL对连接的有效期是28800s,一个连接 ...
- 过河(bfs)
Problem 2188 过河I Accept: 112 Submit: 277 Time Limit: 3000 mSec Memory Limit : 32768 KB Proble ...
- UVA 10312 - Expression Bracketing(数论+Catalan数)
题目链接:option=com_onlinejudge&Itemid=8&page=show_problem&problem=1253">10312 - Exp ...
- How Many Answers Are Wrong(并查集)
Description TT and FF are ... friends. Uh... very very good friends -________-b FF is a bad boy, he ...
- OD调试篇3-小软件破解1
OD调试篇3-小软件破解1 要求如下图该软件需要改5个地方,其中1.2是软件未注册而设定限定的添加个数,3.4.5是软件显示的一些未注册的信息. 一. 1.按1运行程序,添加用户添加第五个时出现提示, ...
- C陷阱与缺陷(一)
第一章 词法陷阱 术语“符号”指的是程序的一个基本组成单元,其作用相当于一个句子中的单词.编译器中负责将程序分解为一个一个符号的部分,一般称为“词法分析器”. 1.1 =不同于== 一般容易将比较运算 ...
- Apache中RewriteCond规则参数介绍(转)
CodeIgniter2.0已经出来有20多天了呢~也就是我一直用的php框架(CI).一直都在研究jquery,倒是把CI给忘到一边去了,呵呵~~今天公司事情不是很多,于是开始熟悉一下CI2.0的一 ...
- rollback的作用
#pragma mark - 以队列的形式添加 // 以队列的形式添加数据FMDB比较常用的添加方式 // FMDB不支持多个线程同时操作,所以一般以串行的方式实现相关操作 - (IBAction)i ...