最近不断在接触Linux操作系统,对它一个终端走天下的特性感到十分新奇和伟大。同时也被各种命令折磨的死去活来。。。公司的一个老同事给我讲,在公司的极品geek宅都是只用一个黑黑的框完成一切的。结果我一下就想到了[\邪恶的笑]

好吧,不扯了,为了能够在公司的美女同事面前秀一下,我决心从Shell脚本开始,嘻嘻

1、Shell 简述

Shell其实是一种具备特殊功能的程序, 他提供了用户与内核进行交互操作的接口,Shell接受用户的命令并将其发送到内核进行执行。内核是Linux系统的心脏,在加电运行后就一直驻留在内存,而Shell在用户登录Linux后就在内存中执行。用过Linux的读者很容易理解,打开一个终端就是打开了Shell的命令接受界面。

鸟哥的私房菜盗来一张图片,来更清楚的解释shell的位置和作用。关于Shell和Linux的关系等等还有很多,但是为了明确主题Shell编程,就大概介绍一下Shell,很多方面并没有提及。

2、 Hello Shell

      使用Shell脚本的最初动机可能在于省去手动输入命令的麻烦,Shell脚本可以将多个Linux命令整合到一个文件中,这样我们就不需要每次都输入同样的命令。接下来就看一个很简单的例子,来直观感受一下Shell脚本和脚本的执行。

#! /bin/bash                                             

cd                     #切换到根目录
. .bash_profile #执行文件.bash_profile
date #显示日期
who #显示当前的登录用户

这个脚本把四个Linux的命令放在了一起,每次执行脚本时便会依次执行这四条命令。关于Linux中的常见命令后面还会有所整理,这里我们先关注一下Shell脚本的结构:

 #!/bin/bash

脚本的第一行是告诉Linux系统这个文件需要解释器的解释,同时指出解释器的位置。一般在Linux中的解释器为bash或者sh当然也有其他的解释器,如sed和awk。

cd                     #切换到根目录
. .bash_profile #执行文件.bash_profile
date #显示日期
who #显示当前的登录用户

Shell脚本的注释使用“#”

命令(command)通常由命令名称、选项和参数三部分构成,之间用空格或Tab键分开。Linux中有成千上万的命令,不可能所有的命令都记得,可以使用man [命令名称]查询。

3、 脚本的执行

Linux中,文件具有三种权限,分别是读、写、执行。所以,只有给Shell脚本赋予可执行权限,才能执行,假设上面的脚本名字是hello.sh,命令应该是这样的:

chmod +x hello.sh

然后在脚本所在的目录中使用./hello.sh执行脚本。

(未完待续)

Shell 脚本编程笔记(一) Hello Shell的更多相关文章

  1. linux shell脚本编程笔记(二): 分支结构

    1.if if command then commands fi if command then commands else commands fi if command1 then command ...

  2. linux shell脚本编程笔记(五): 重定向

    I/O重定向 简述: 默认情况下始终有3个"文件"处于打开状态, stdin (键盘), stdout (屏幕), and stderr (错误消息输出到屏幕上). 这3个文件和其 ...

  3. linux shell脚本编程笔记(一): 构建基本脚本

    1. echo -n str        打印不换行 2. 反引号来圈住命令传入变量 eg: 生成日志文件: #!/bin/bash today=`date +%y%m%d` ls /usr/bin ...

  4. linux shell脚本编程笔记(四): 获取字符串长度的七种方法

    获取字符串长度的七种方法 1. \${#str} 2.awk的length 备注:1) 最好用{}来放置变量2) 也可以用length($0)来统计文件中每行的长度 3.awk的NF 备注: -F为分 ...

  5. linux shell脚本编程笔记(三): 三种引号的区别

    双引号.单引号.反引号的区别 测试用例: OPDATE=`date -d '-1 day' +%Y%m%d` ) do FILEDATE=`date -d "-$i day" +% ...

  6. linux命令行与shell脚本编程大全---更多bash shell命令

    进程状态:0代表正在运行:S代表在休眠:R代表可运行,正等待运行:Z代表僵化,进程已经结束但父进程已不存在:T代表停止. 查看有那些进程运行:ps  -ef 基本的linux文件系统: 1.ext文件 ...

  7. 【读书笔记】Linux命令行与Shell脚本编程大全

    Linux命令行与Shell脚本编程大全 5.2 shell 的父子关系 命令分组 Command Grouping 主要有两种形式: 一种以小括号包括,命令之间以冒号分隔.也被称为 进程列表: 注意 ...

  8. Shell脚本编程与文件系统修复

    导读 Linux基金会发起了LFCS认证(Linux 基金会认证系统管理员)Linux Foundation Certified Sysadmin,这是一个全新的认证体系,旨在让世界各地的人能够参与到 ...

  9. 浅谈自底向上的Shell脚本编程及效率优化

    作者:沐星晨 出处:http://blog.csdn.net/sosodream/article/details/6276758 浅谈自底向上的Shell脚本编程及效率优化 小论文,大家多批评指导:) ...

随机推荐

  1. 【HDOJ】2699 Five in a Row

    wa了几次,至少要考虑4个方向:下.右.左下.右下.很像当年北航的机试题目. /* 2699 */ #include <iostream> #include <cstdio> ...

  2. 图论(2-sat):HDU 3062 Party

    Party Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submi ...

  3. 数据结构(跳跃表):NOI 2004 郁闷的出纳员

    郁闷的出纳员 [问题描述] OIER公司是一家大型专业化软件公司,有着数以万计的员工.作为一名出纳员,我的任务之一便是统计每位员工的工资.这本来是一份不错的工作,但是令人郁闷的是,我们的老板反复无常, ...

  4. Java---网络编程(1)

    网络编程 相关基础概念 1.计算机网络与Internet 2.TCP/IP协议 3.Internet地址 - - -IP地址,形如xxx.xxx.xxx.xxx - - -域名系统.例如www.edu ...

  5. The Minimum Length - HUST 1010(求最小循环节)

    题意:有个一字符串A(本身不是循环串),然后经过很多次自增变成AAAAA,然后呢从自增串里面切出来一部分串B,用这个串B求出来A的长度.   分析:其实就是求最小循环节.......串的长度 - 最大 ...

  6. poj 1961 Period【求前缀的长度,以及其中最小循环节的循环次数】

    Period Time Limit: 3000MS   Memory Limit: 30000K Total Submissions: 14653   Accepted: 6965 Descripti ...

  7. python推荐淘宝物美价廉商品 2.0

    改动: 新增功能 :可选择只看天猫或淘宝 代码模块化封装,参数配置或输入单独在一个py文件管理,主函数功能只留出参数传入在setting配置的py文件里. main.py代码: # -*- codin ...

  8. AE 3D摄像机工作原理

    看了AE教程的3D可视化音频和序列法导入三维模型之后对于视频解析3D是有了更深的认识.很感谢AE在CS6之后加入了3D摄像机跟踪器的功能.它是通过摄像机跟踪反求来得到影片中的平面特征点.然后由用户指定 ...

  9. [置顶] Ajax程序:处理异步调用中的异常(使用Asp.Net Ajax内建的异常处理方法)

    无论在Window应用程序,还是Web应用程序以对用户友好的方式显示运行时的异常都是很有必要,尤其对于可能有很多不确定因素导致异常的Web应用程序;在传统的Web开发中,处理异常的方式——设计专门一个 ...

  10. Android Scroller类的详细分析

    尊重原创作者,转载请注明出处: http://blog.csdn.net/gemmem/article/details/7321910 Scroller这个类理解起来有一定的困难,刚开始接触Scrol ...