【shell入门】Shell用法
参考:http://www.cnblogs.com/Lynn-Zhang/p/5758287.html
1.sh/bash/csh/Tcsh/ksh/pdksh等shell的区别
- sh(全称 Bourne Shell): 是UNIX最初使用的 shell,而且在每种 UNIX 上都可以使用。
Bourne Shell 在 shell 编程方面相当优秀,但在处理与用户的交互方面做得不如其他几种 shell。 - bash(全称 Bourne Again Shell): LinuxOS 默认的,它是 Bourne Shell 的扩展。
与 Bourne Shell 完全兼容,并且在 Bourne Shell
的基础上增加了很多特性。可以提供命令补全,命令编辑和命令历史等功能。它还包含了很多 C Shell 和 Korn Shell
中的优点,有灵活和强大的编辑接口,同时又很友好的用户界面。 - csh(全称 C Shell): 是一种比 Bourne Shell更适合的变种 Shell,它的语法与 C 语言很相似。
- Tcsh: 是 Linux 提供的 C Shell 的一个扩展版本。
Tcsh 包括命令行编辑,可编程单词补全,拼写校正,历史命令替换,作业控制和类似 C 语言的语法,他不仅和 Bash Shell 提示符兼容,而且还提供比 Bash Shell 更多的提示符参数。 - ksh (全称 Korn Shell): 集合了 C Shell 和 Bourne Shell 的优点并且和 Bourne Shell 完全兼容。
- pdksh: 是 Linux 系统提供的 ksh 的扩展。
pdksh 支持人物控制,可以在命令行上挂起,后台执行,唤醒或终止程序。
- sh(全称 Bourne Shell): 是UNIX最初使用的 shell,而且在每种 UNIX 上都可以使用。
如果不好理解的话,Shell 个人感觉可以对应成 win 中的 bat,通过代码来实现一些自动定时任务,自动备份或者执行的任务。
1、chmod +x file 加上执行权限,否则会提示无执行权限。
2、注意执行脚本时候或者全目录,或者 ./file.sh ,如果不加的话,linux 默认会从PATH 里去找该 file.sh。
3、看了这篇教程,发现脚本后缀名可以任意修改,仍然可以正常运行。
4、语法类PHP,方便学习。
首先,什么是脚本语言?
脚本语言是像剧本一样教计算机办某个事情的语言。
比如你想让计算机执行复制某个文件的操作,如:cp ~/Desktop/*.txt ~/text
你可以在文本编辑器写入上边的代码并且保存此文件,然后你通过执行这个文本文件来执行上面的代码,并不需要重复手动输入上边的代码。
下面这句话是我在网上看到的:
所以脚本其实就是短小的、用来让计算机自动化完成一系列工作的程序,这类程序可以用文本编辑器修改,不需要编译,通常是解释运行的。
1.Shell 变量
定义变量时,变量名不加美元符号($,PHP语言中变量需要),如:
ww=wwwwwwwwwwww
echo $ww
echo ${ww}
使用一个定义过的变量,只要在变量名前面加美元符号即可,变量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界.
只读变量
使用 readonly 命令可以将变量定义为只读变量,只读变量的值不能被改变。
下面的例子尝试更改只读变量,结果报错:
#!/bin/bash
myUrl="http://www.w3cschool.cc"
readonly myUrl
myUrl="http://www.runoob.com"
删除变量
使用 unset 命令可以删除变量。语法:变量被删除后不能再次使用。unset 命令不能删除只读变量。
aaarticlea/png;base64,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" alt="" />
Shell 字符串
字符串是shell编程中最常用最有用的数据类型(除了数字和字符串,也没啥其它类型好用了),字符串可以用单引号,也可以用双引号,也可以不用引号。单双引号的区别跟PHP类似
Linux 的字符串截取很有用。有八种方法。
假设有变量 var=http://www.aaa.com/123.htm
1. # 号截取,删除左边字符,保留右边字符。
echo ${var#*//}
其中 var 是变量名,# 号是运算符,*// 表示从左边开始删除第一个 // 号及左边的所有字符
即删除 http://
结果是 :www.aaa.com/123.htm
2. ## 号截取,删除左边字符,保留右边字符。
echo ${var##*/}
##*/ 表示从左边开始删除最后(最右边)一个 / 号及左边的所有字符
即删除 http://www.aaa.com/
结果是 123.htm
3. %号截取,删除右边字符,保留左边字符
echo ${var%/*}
%/* 表示从右边开始,删除第一个 / 号及右边的字符
结果是:http://www.aaa.com
4. %% 号截取,删除右边字符,保留左边字符
echo ${var%%/*}
%%/* 表示从右边开始,删除最后(最左边)一个 / 号及右边的字符
结果是:http:
5. 从左边第几个字符开始,及字符的个数
echo ${var:0:5}
其中的 0 表示左边第一个字符开始,5 表示字符的总个数。
结果是:http:
6. 从左边第几个字符开始,一直到结束。
echo ${var:7}
其中的 7 表示左边第8个字符开始,一直到结束。
结果是 :www.aaa.com/123.htm
7. 从右边第几个字符开始,及字符的个数
echo ${var:0-7:3}
其中的 0-7 表示右边算起第七个字符开始,3 表示字符的个数。
结果是:123
8. 从右边第几个字符开始,一直到结束。
echo ${var:0-7}
表示从右边第七个字符开始,一直到结束。
结果是:123.htm
注:(左边的第一个字符是用 0 表示,右边的第一个字符用 0-1 表示)
Shell 注释
以"#"开头的行就是注释,会被解释器忽略。
sh里没有多行注释,只能每一行加一个#号
Shell 基本运算符
Shell 和其他编程语言一样,支持多种运算符,包括:
- 算数运算符
- 关系运算符
- 布尔运算符
- 字符串运算符
- 文件测试运算符
原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用。
expr 是一款表达式计算工具,使用它能完成表达式的求值操作。
例如,两个数相加(注意使用的是反引号 ` 而不是单引号 ')
#!/bin/bash val=`expr 2 + 2`
echo "两数之和为 : $val"
【shell入门】Shell用法的更多相关文章
- shell入门-shell特性
1.关于! 命令:!! 说明: 执行上一条命令 [root@wangshaojun ~]# pwd/root[root@wangshaojun ~]# !!pwd/root 命令:!n (n表示数字) ...
- 10_Linux基础-SHELL入门1
@ 目录 10_Linux基础-SHELL入门1 一. 输入输出重定向 二. 2个特殊文件 三. here document 四. tee命令 五. 清空文件内容 六. SHELL入门 SHELL的变 ...
- linux shell 入门
本文是本人学习linux shell入门收集整理,不完全原创. 参考博文: http://www.cnblogs.com/suyang/archive/2008/05/18/1201990.html ...
- 【shell】shell编程(一)-入门
如今,不会Linux的程序员都不意思说自己是程序员,而不会shell编程就不能说自己会Linux.说起来似乎shell编程很屌啊,然而不用担心,其实shell编程真的很简单.背景 什么是shell编程 ...
- Shell expr的用法 bc 命令 let命令
Shell expr的用法 bc 命令 let命令 数学运算 let命令 expr命令 bc命令 $(()) $[] http://www.80ops.cn/archives/245. ...
- hbase基本概念和hbase shell常用命令用法
1. 简介 HBase是一个分布式的.面向列的开源数据库,源于google的一篇论文<bigtable:一个结构化数据的分布式存储系统>.HBase是Google Bigtable的开源实 ...
- 【转载】HBase基本概念和hbase shell常用命令用法
1. 简介 HBase是一个分布式的.面向列的开源数据库,源于google的一篇论文<bigtable:一个结构化数据的分布式存储系统>.HBase是Google Bigtable的开源实 ...
- Linux shell入门基础(六)
六.Shell脚本编程详解 将上述五部分的内容,串联起来,增加对Shell的了解 01.shell脚本 shell: # #perl #python #php #jsp 不同的脚本执行不同的文本,执行 ...
- Linux shell入门基础(一)
Linux shell入门基础(一): 01.增加删除用户: #useradd byf userdel byf(主目录未删除) userdel -r byf 该用户的属性:usermod 用 ...
随机推荐
- JZOJ 5842
Description 给定一个n*m 的 01 矩阵,求包含[l,r]个 1 的子矩形个数. Input 第一行,两个正整数n,m.接下来n 行,每行一个长度为 m 的 01 串,表示给定的矩阵.接 ...
- P2065 贪心的果农
P2065 贪心的果农 题目描述 果农的花园里种着N棵果树.收获的季节终于来到了,果农决定,在接下来的M天时间里完成自己的收获工作.他的收获方式极其暴力——他将会将某棵果树砍倒来获取上面的果实.然而如 ...
- WTForm
Flask-WTForm: from flask import Flask,render_template,request,redirect from wtforms.fields import co ...
- vue2.x生命周期
vue2.x生命周期 1. beforeCreate 在实例初始化之后,数据观测(data observer) 和 event/watcher 事件配置之前被调用. 2. created 实例已经创建 ...
- 免费生成https证书以及配置
http升级到https需要在nginx的配置中加入证书信息,查询资料后确定生成证书两种方案 第一种:自签名证书,然后开启 CloudFlare 的 CDN 服务 //确定是否安装openss ...
- Python框架之Django学习笔记(十一)
话说上次说到数据库的基本访问,而数据库我们主要进行的操作就是CRUD,也即是做计算处理时的增加(Create).读取(Retrieve)(重新得到数据).更新(Update)和删除(Delete),俗 ...
- C++模板编程-模板基础重点
模板基础 1.模板参数自动推导,如果是已知的参数类型与个数,这调用模板时可以不写类型. Cout<<max<int>(1,3);可以写为Cout<<max(1,3) ...
- 快速获取Android应用包名和Activity名
一.获取包名 方法1: 先说明一下这里讲的方法是通用的,而网上其他方法获取PackageName不通用(因为他是建立在root的基础上的,我不敢保证你的设备已经root). ①在android设备上点 ...
- Halcon18 windows 下载
Halcon18 windows 下载地址:http://www.211xun.com/download_page_13.html HALCON 18 是一套机器视觉图像处理库,由一千多个算子以及底层 ...
- Behavior trees for AI: How they work
http://www.gamasutra.com/blogs/ChrisSimpson/20140717/221339/Behavior_trees_for_AI_How_they_work.php ...