最近不断在接触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. 中国linux论坛

    linux在国内经过十多年的发展,已慢慢走向成熟.昔日如雨后春笋般成长的linux网站,现在已出现了明显的两极分化.一部分已成长壮大,公司化运作,一部分面临域名出售或关闭的境地.  以笔者经验,以下十 ...

  2. java学习面向对象之this

    在我们讲构造函数的时候,我们知道,如果同时在java的堆内存当中,同时存在好几个刚进内存,但是又没来得及初始化的同一个类的对象.在这种情况下,那么如何去区分栈内存当中的构造函数是属于那个对象的呢,其实 ...

  3. Shredding Company(dfs)

    Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 3519   Accepted: 2009 Description You h ...

  4. POJ3087 Shuffle'm Up(模拟)

    题目链接. AC代码如下; #include <iostream> #include <cstdio> #include <cstring> #include &l ...

  5. Linux Kernel 本地拒绝服务漏洞

    漏洞名称: Linux Kernel 本地拒绝服务漏洞 CNNVD编号: CNNVD-201308-090 发布时间: 2013-08-08 更新时间: 2013-08-08 危害等级:    漏洞类 ...

  6. i++和++i的老问题

    对于++j,该式是指先将j的值自加1,然后再取j的值.自增过后参与计算 i的值也为10:对于i++,该表达式是指先取i的值做运算,再将i加1.参见过计算后再自增

  7. Swap Nodes in Pairs——LeetCode

    Given a linked list, swap every two adjacent nodes and return its head. For example,Given 1->2-&g ...

  8. firefox HackBar组件模拟请求POST请求

    组件下载地址:https://addons.mozilla.org/zh-CN/firefox/addon/hackbar/

  9. hdu 4289 最小割,分拆点为边

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2609 #include <cstdio> #incl ...

  10. erlang mnesia数据库设置主键自增

    Mnesia是erlang/otp自带的分布式数据库管理系统.mnesia配合erlang的实现近乎理想,但在实际使用当中差强人意,总会有一些不足.mnesia数据表没有主键自增的功能,但在mnesi ...