注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

风之人生

人生如风,却无法如风般潇洒。

 
 
 

日志

 
 
关于我

一介草民,苟活于上海滩,以甲骨文为生,偶尔对一些国家大事有些兴趣,日常无事常以丝竹之声为乐。

网易考拉推荐

SHELL入门(1)  

2010-05-27 13:47:26|  分类: Shell/Perl |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
这不是一篇正式的技术文档,只是一个入门的简介,大牛和技术高手请绕道,省的耽误您的时间。如果你觉得有哪里写的不对,希望指教。
1.shell 是什么?
       说这个问题之前,首先我要问你,如果你以前使用的是windows,你用什么方法和操作系统交互?大多数情况下,应该是鼠标的点击。那么,忘记以前你的那些习惯吧,欢迎来到Linux/Unix世界,我们对于操作系统内核,也就是其核心功能,我们使用的是另外一种全新的交互方式,我们通过shell(外壳)和kernel(内核)交互。那么很简单,shell就是我们和unix内核交互的工具,我们通过shell告诉os我们要做什么,他做完后再将结果返回给shell.如下图:

2. 为什么要用shell?
       在讲这个问题之前,有几个概念要提一下,在编程语言里,有一类叫做编译型语言,例如Pascal, C,C++,Java都属于这一类,他们的特点是高效,因为把源代码转化成目标代码后,就能运行,但是同时他们也具有很明显的缺点,他们由于运行在底层,多半是和一些字节,整数等对象打交道,所以例如文件操作很难用简单的代码来实现。而我们的shell属于解释型的语言,他由解释器读入程序代码,然后在通过他来进行转化,变成自己内部的形式,然后在执行。所以,如此一来,shell的优点和缺点就很容易想到了。缺点就是效率低,他的效率要远远低于编译型语言,所以我很不明白的是很多人经常用php和java来比较效率,这本身就是一件很无意义的事情。但是对于我们经常对于文件和目录的操作,使用shell可以大大加速我们写代码的速度,也就是编码效率高,换成比较流行的说法就是--敏捷。除此之外,由于shell经过了POSIX的标准化,所以,他还易于迁移,而且开发容易。

3. shell怎么写?
       实际上,我想很难用几百个字来写出shell的写法,也许这应该是一本书的内容,我会在我后续的文章里一步一步的扩展开来讲,但是最基本的一点,我们在第一行程序一般会以一个#!开头,为什么要这个东西呢,我们刚才说了,shell是一个解释型语言,他的运行要放到解释器去,也就是我们的容器,而不是用操作系统来运行--因为他不是编译型语言。所以,我们需要制定这个容器,格式就是类似#!/bin/sh 后面加的的这部分是我们shell的绝对路径,上面是使用的sh,如果我们要使用bash,那就是#!/usr/bin/bash 这个东西其实并不神秘,如果有这样一个程序,第一行是#!/usr/bin/bash -f ,而我们的PATH环境变量里有一个是/usr/local/bin,我们的程序叫coolma, 那么如果我们输入:coolma -d /usr/unzipped &,那么我们的内核再解释时,会把他自动变成 /usr/bin/bash -f /usr/local/bin/coolma -d /usr/unzipped & 。那么怎么知道我们的这些各种shell的路径呢?很简单,如果你想用ksh,那么就输入which ksh 就会得到/usr/bin/ksh 那么就加到你的代码里吧。
      shell程序每行之间不用加分号,但是如果一行有多条语句,必须用;分隔。例如一行:cd /usr/bin; ls -l plsql;exit  而在ls -l plsql这一条语句中,ls 就是命令,-l是模式,plsql就是参数,而在现在的命令中,有些模式是以--开头的,例如以下。patch --verbose --backup -p1 其中verbose 和backup就是两个模式。

4. shell命令的分类。
  •  内建命令:主要包括文件和目录操作的命令,比如cd改变目录,ls列出目录,还有一些I/O命令,例如echo和printf。
  • shell函数: 就和其他语言中的函数类似,它能够完成独立的功能。
  • 外部命令:  外部命令就是shell的副本执行的命令,这些命令会fork出一个子进程,子进程会去寻找shell中调用的程序,然后执行,此时主进程会等待子进程完成,完成后父进程即我们的shell进程会继续朝下执行。
  评论这张
 
阅读(254)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017