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基础一的更多相关文章

  1. Shell基础学习小结

    0 shell基础概念 Shell是解释性语言,使用脚本编程语言的好处是,它们多半运行在比编译型语言还高的层级,能够轻易处理文件与目录之类的对象:缺点是它们的效率通常不如编译型语言.Shell命令有本 ...

  2. Shell基础-环境变量配置文件

    Shell基础-环境变量配置文件 source 配置文件 或者 . 配置文件: 把环境变量写入配置文件后,需要用户重新登陆才能生效,而是用source命令,则能直接生效 主要的配置文件: /etc/p ...

  3. shell基础二十篇 一些笔记

    shell基础二十篇 转自 http://bbs.chinaunix.net/thread-452942-1-1.html 研讨:Bash 内建命令 read (read命令更具体的说明见博客收藏的一 ...

  4. shell基础(转)

    shell基础1:文件安全与权限 http://bbs.chinaunix.net/forum/viewtopic.php?t=434579&highlight=wingger 附:Linux ...

  5. Linux实战教学笔记17:精简shell基础

    第十七节 精简shell基础 标签(空格分隔): Linux实战教学笔记 1,前言 1.1 为什么学习shell编程 Shell脚本语言是实现Linux/UNIX系统管理及自动化运维所必备的重要工具, ...

  6. shell基础及变量

    一 Shell概述 1.Shell的作用——命令解释器,“翻译官” shell作为一个人机接口,用于解释用户输入的命令,将命令解释为Linux内核可以执行的2进制代码,并将执行的结果返回在标准终端上. ...

  7. Shell 基础教程

    一个比较好的shell基础教程: http://www.runoob.com/linux/linux-shell.html

  8. Linux基础学习(10)--Shell基础

    第十章——Shell基础 一.Shell概述 1.Shell是什么: (1)Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来 ...

  9. Linux Shell基础(下)

    Linux Shell基础(下) 目录 一.shell特殊符号cut命令 二.cut.sort.wc.uniq命令 三.tee.tr.split命令 四.简易审计系统 五.fork, exec, so ...

  10. Linux shell基础知识(上)

    Linux shell基础知识(上) 目录 一.shell介绍 二.命令历史 三.命令补全和别名 四.通配符 五.输入输出重定向 六.管道符和作业控制 七.shell变量 八.环境变量配置文件 九.b ...

随机推荐

  1. C++模板:文件操作

    freopen("demo.in","r",stdin); freopen("demo.out","w",stdout) ...

  2. C++ Primer的课后规划问题的第八章

    1.写通常需要一个参数(字符串的地址).字符串和打印功能. 只要.假设提供了第二个参数(int种类),而这个参数不0,的次数的函数打印串数量为该功能将被称为(意,字符串的打印次数不等于第二个參数的值. ...

  3. Js用正则表达式验证字符串

    js 常用正则表达式表单验证代码 作者: 字体:[增加 减小] 类型:转载 js 常用正则表达式表单验证代码,以后大家就可以直接使用了. 正则表达式使用详解 简介 简单的说,正则表达式是一种可以用于模 ...

  4. BlokUI的使用

    1.点击弹出层以外的区域关闭弹出层 $(document).ready(function() {     $('#demo9').click(function() {         $.blockU ...

  5. C#之简单选择排序

    以排列INT数组为简单示范 namespace 简单选择排序 { class Program { static void SelectViod(int[] data) { ; i < data. ...

  6. 前端CSS规范大全

    一.文件规范 1.文件均归档至约定的目录中(具体要求以豆瓣的CSS规范为例进行讲解): 所有的CSS分为两大类:通用类和业务类.通用的CSS文件,放在如下目录中: 基本样式库 /css/core 通用 ...

  7. vmware能够ping通内网,上不了外网的解决方法

    一般这是由于里面的路由域名服务器没有配置好. issta@ubuntu:~$ ping www.baidu.com ping: unknown host www.baidu.com 先看一下地址解析器 ...

  8. [LeetCode]题解(python):066-Plus One

    题目来源: https://leetcode.com/problems/plus-one/ 题意分析: 给定一个数组,将数加一,返回新的数组.比如[9,9],返回[1,0,0]. 题目思路: 这道题目 ...

  9. Python之路:Python 基础(二)

    一.作用域 对于变量的作用域,执行声明并在内存中存在,该变量就可以在下面的代码中使用. if 1==1: name = 'lenliu' print name 下面的结论对吗?(对) 外层变量,可以被 ...

  10. Oracle Database 12c Release 1 Installation On Oracle Linux 6.4 x86_64

    Create groups and users [root@vmdb12c ~]# groupadd oinstall [root@vmdb12c ~]# groupadd dba [root@vmd ...