Shell用法

    1. 参考: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 支持人物控制,可以在命令行上挂起,后台执行,唤醒或终止程序。

    2. 如果不好理解的话,Shell 个人感觉可以对应成 win 中的 bat,通过代码来实现一些自动定时任务,自动备份或者执行的任务。

      1、chmod +x file 加上执行权限,否则会提示无执行权限。

      2、注意执行脚本时候或者全目录,或者 ./file.sh ,如果不加的话,linux 默认会从PATH 里去找该 file.sh。

      3、看了这篇教程,发现脚本后缀名可以任意修改,仍然可以正常运行。

      4、语法类PHP,方便学习。

    3. 首先,什么是脚本语言?

      脚本语言是像剧本一样教计算机办某个事情的语言。

      比如你想让计算机执行复制某个文件的操作,如: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 命令不能删除只读变量。

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"
时间: 2024-11-05 05:01:35

Shell用法的相关文章

CreateObject("Wscript.Shell")用法

WScript.Shell是WshShell对象的ProgID,创建WshShell对象可以运行程序.操作注册表.创建快捷方式.访问系统文件夹.管理环境变量. 该对象有一个run方法. Run 方法创建一个新的进程,该进程以 intWindowStyle 窗口样式执行 strCommand. 语法 WshShell.Run (strCommand, [intWindowStyle], [blnWaitOnReturn]) 参数 strCommand 在 strCommand 参数内部的环境变量被

typeset shell 用法

typeset用于设置变量属性,如大小写,宽度,左右对齐等都可以用typeset来控制, 当用typeset改变一个变量的属性时,这种改变是永久的,下面以ksh为例,演示typeset的几种典型用法 1,无选项的执行typeset,则显示所有变量/home/lee#typesettypeset COLORStypeset -x COLORTERMtypeset -x DISPLAYtypeset -x GDMSESSIONtypeset -x GNOME_DESKTOP_SESSION_IDty

scrapy shell 用法(慢慢更新...)

scrapy shell 命令 1.scrapy shell url #url指你所需要爬的网址 2.有些网址数据的爬取需要user-agent,scrapy shell中可以直接添加头文件, 第①种方法 scrapy shell -s USER_AGENT="Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.86 Safari/537.36" url #url指你所

bash shell用法小记

shell的使用博大精深,,本人梳理基础知识,整理一下简单的用法,具体的请因需求自行研究. 1. 计算 # echo $((1+2)) 3 # echo $((1+2+3)) 6 # echo 3+2+5 |bc 10 2. if的用法 if [ $i -eq 0 ]; then     xxx else     xxx fi 整数比较: -eq 等于,如:if [ "$a" -eq "$b" ]    -ne 不等于,如:if [ "$a" -

shell 用法小记录

awk : gsub 替换 netstat -tnpl | gawk '$NF ~/\/mongod$/{gsub(/.+:/,"",$4);print $4}'|sort -n 把$4 已:结尾的全部替换为空 shell  数组 ${#ports[@]}   #得出数组长度 ${ports[@]} = ${ports[*]}  得出数组值 ${ports[@]:8}   得出数组后8个 ${ports[@]::8} = ${ports[@]:0:8} 得出数组前8个 ${ports[

SHELL用法六(Find语句)

1.SHELL编程Find语句案例实战 1)SHELL编程四剑客工具:Find.Grep.Sed.Awk,通过四剑客可以完成常规Linux指令无法完成或者比较复杂的功能,学好SHELL编程四剑客有助于SHELL编程能力再上一层楼. 2)SHELL编程四剑客之一的Find工具,主要是用于Linux操作系统去查找某个文件和目录所在的位置的(绝对路径),Find工具的语法格式: find(工具) path(路径) -option(参数) -action(动作): find path -option [

SHELL用法九(awk练习)

1.SHELL编程Awk语句案例实战 Awk主要是用于对文本文件进行处理,通常是逐行处理,其语法参数格式为, AWK常用参数.变量.函数详解如下: awk 'pattern + {action}' file (1) AWK基本语法参数详解: 单引号''是为了和shell命令区分开; 大括号{ }表示一个命令分组; pattern是一个过滤器,表示匹配pattern条件的行才进行Action处理; action是处理动作,常见动作为Print; 使用#作为注释,pattern和action可以只有

shell 用法笔记

1:t="asdasd sdasd" 定义式变量一般有字符串和数字 ${t}和$t使用变量 2:o="sdfjkflsjl sdkafjljkdasl ${t}" echo o打印变量      echo $o $t     链接变量 基本操作可以参考手则,作为脚本使用很方便 terminal中sh,进入,exit退出,也可写成脚本,开头写#!/bin/sh或#!/bin/bash的话保存文件,cd到相应目录,chmod+x ./p.sh 然后 ./p.sh执行 也

shell ${} 用法

假设我们定义了一个变量为:file=/dir1/dir2/dir3/my.file.txt我们可以用 ${ } 分别替换获得不同的值:${file#*/}:拿掉第一条 / 及其左边的字符串:dir1/dir2/dir3/my.file.txt${file##*/}:拿掉最后一条 / 及其左边的字符串:my.file.txt${file#*.}:拿掉第一个 . 及其左边的字符串:file.txt${file##*.}:拿掉最后一个 . 及其左边的字符串:txt${file%/*}:拿掉最后条 /