最近不断在接触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. Shell脚本编程与文件系统修复

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

  8. 《Linux命令行与shell脚本编程大全》 第二十七章 学习笔记

    第二十七章:shell脚本编程进阶 监测系统统计数据 系统快照报告 1.运行时间 uptime命令会提供以下基本信息: 当前时间 系统运行的天数,小时数,分钟数 当前登录到系统的用户数 1分钟,5分钟 ...

  9. 学习笔记之Linux Shell脚本教程:30分钟玩转Shell脚本编程

    Linux Shell脚本教程:30分钟玩转Shell脚本编程 http://c.biancheng.net/cpp/shell/

随机推荐

  1. LINQ系列:Linq to Object生成操作符

    生成操作符从现有序列值中创建新的序列. 1. Empty  Empty操作符返回一个指定类型的空集. 1>. 原型定义 public static IEnumerable<TResult& ...

  2. 循环执行n次的代码

    var audio = document.createElement("audio");  var index = 0;    audio.src = "piano/3C ...

  3. Linux学习:用yum安装php,httpd,mysql

    见鸟哥的linux私房菜电子版832页.

  4. springMVC导入excel案例poi

    直接上代码: 第一步,controller 引入 private static final String CHECK_FILE = "checkExceFile"; /** * 对 ...

  5. [原创]一个纯css实现兼容各种主流移动pc浏览器的时间轴

    废话不多说 Demo 高度完全的自适应 中心思想是table 和第二列行高的50%的上下绝对定位竖线 第一次用codepen less完全不能用啊 连node png之类的都是关键词会被去掉... 马 ...

  6. uva 10125 - Sumsets

    题意: 输入n,然后输入n个数字,,要在这n个数字中找出a,b,c,d..满足a,b,c,d是不同元素,并且a + b + c = d...求出最大的d 直接暴力时间复杂度为O(n^4)..会超时.. ...

  7. java课程设计——算术运算测试个人博客

    1.团队课程设计链接 团队博客:http://www.cnblogs.com/yytx/p/7064790.html 2.个人负责模块 有关排行榜的界面设计和代码编写 3.自己的代码提交记录截图 4. ...

  8. java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListene解决办法

    照着以前写的项目搭一个框架,项目用到的是ssm,spring+spring mvc+mybatis,由Eclipse转战IDEA上,项目的文件夹有一些改变,在之前的小项目中喜欢把lib文件夹放在项目根 ...

  9. 【Java集合系列一】ArrayList解析

    一.基础简介 1.ArrayList继承关系 2.底层用数组来存储数据,数据会在ArrayList创建的时候一并初始化.如果创建ArrayList的时候,没有设置容量,则会delay到第一次add数据 ...

  10. this.$router

    router.go(n)这个方法的参数是一个整数,意思是在 history 记录中向前或者后退多少步,类似 window.history.go(n) router.push(location)想要导航 ...