最近不断在接触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. union 代替or的情况

    技巧2:union 代替or的情况 当SQL语句中,or 条件上面有一个为子查询,并且子查询上的表与源表不同,这个时候就可以用union代替or或者你发现执行计划中的 filter 有 or 并且 o ...

  2. asp.net 由于代码已经过优化或者本机框架位于调用堆栈之上,无法计算表达式的值

    看MS给的解决方案:(http://support.microsoft.com/kb/312629/ ) 症状:如果使用 Response.End.Response.Redirect 或 Server ...

  3. datagridview,textbox,combobox的数据绑定,数据赋值,picturebox的用法

    一:datagridview数据绑定 二:textbox的数据绑定(datetimepicker) 总结: 最好还是写成双向绑定那种,不要再写出发事件了,只要在给textbox赋值就能重新绑定了,不然 ...

  4. hdu 1175 连连看 DFS

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1175 解题思路:从出发点开始DFS.出发点与终点中间只能通过0相连,或者直接相连,判断能否找出这样的路 ...

  5. libvirt基于安装

  6. Golang下通过syscall调用win32的dll(calling Windows DLLs from Go )

    很多同学比如我虽然很喜欢golang,但是还是需要调用很多遗留项目或者其他优秀的开源项目,这时怎么办呢?我们想到的方法是用package里的syscall结合cgo 注意此处有坑: 在我调试时显示no ...

  7. OC类方法和实例方法 及常用的for/in方法

    类方法前面有+,实例方法前面有- 类方法和实例方法的区别在于,类方法不能使用实例变量. 使用类方法主要原因有: 1.类方法的使用不依赖于实例化一个对象,也就是说如果一个功能的实现不需要实例化对象,就可 ...

  8. Python字符串连接的5种方法

    总结了一下Python字符串连接的5种方法: 加号 第一种,有编程经验的人,估计都知道很多语言里面是用加号连接两个字符串,Python里面也是如此直接用 "+" 来连接两个字符串: ...

  9. Java中的字符串流的读取和写入(创建文件并判断重复账户)

    各位我又来了!!哎!好心酸!我还没注册到三天!!没法登上博客的首页!!心累!! import java.io.BufferedOutputStream; import java.io.Buffered ...

  10. Android给ListView设置分割线Divider样式

    给ListView设置分割线,只需设置如下两个属性: android:divider="#000" //设置分割线显示颜色 android:dividerHeight=" ...