一、shell概述

1.Shell是什么

shell是一个命令行解释器,他为用户提供了一个向linux内核发送请求以便运行程序的界面系统级程序,用户可以用shell来启动、挂起、停止甚至编写一些程序

shell还是一个功能相当强大的编程语言,易编写,易调试,灵活性较强。shell是解释执行的脚本语言,在shell中可以直接调用linux系统命令

2.Shell分类

1)Bourne Shell:从1979起Unix就开始使用Bourne Shell,Bourne Shell的主文件名为sh

2)C Shell:C Shell主要在BSD版的Unix系统中使用,其语法和C语言非常类似,所以叫C Shell

Shell的两种主要语法类型有Bourne和C,这两种语法彼此不兼容。Bourne家族主要包括sh、ksh、Bash(linux中的标准shell)、psh、zsh;C 家族主要包括:csh(unix中主要使用的shell)、tcsh

TIP:可以使用命令:echo ¥SHELL来输出当前系统使用的是什么shell

3)Bash:Bash与sh兼容,现在使用的linux就是使用Bash作为用户的基本Shell

3.Linux支持的Shell

二、脚本执行方式

1.echo输出命令

echo [选项] [输出内容]

选项:

-e:支持反斜线控制的字符转换

控制字符

说明

\a 输出警告音
\b 退格键,也就是向左删除键
\n 换行符
\r 回车键
\t 制表符,也就是Tab键
\V 垂直制表符
\0nnn 按照八进制ASCII码输出字符。其中0为数字零,nnn是三位八进制数
\xhh 按照十六进制ASCII码输出字符。其中hh是两位十六进制数

[root@localhost ~]# echo -e "\e[1;31m你好\e[0m"

#使用红色字体输出你好

#30m=黑色,31m=红色,32m=绿色,33m=黄色,34m=蓝色,35m=粉红,36m=青色,37m=白色

上面这行示例代码中\e代表颜色,[1代表开启眼色,31m代表我要使用红色,\e[0m代表关闭颜色

2.第一个脚本

1)使用命令“vi hello.sh”创建一个脚本

2)文本中输入:”#!bin/bash”(做一个声明)

3)正文输入:echo –e “Hello World!”,然后保存退出

3.脚本执行

1)赋予执行权限,直接运行

chmod 755 hello.sh

./hello.ssh

2)通过Bash调用执行脚本

bash hello.sh

三、bash的基本功能

1.命令别名与快捷键

alias

#查看系统中所有的命令别名

alias 别名=’原命令’

#设定命令别名(需要注意的是只是用命令行增加别名的话只是临时使用,相当于windows当中的临时环境变量)

1)别名永久生效

vi ~/.bashrc

#写入环境变量配置文件(需要注意的是写入后是重启设备后才会生效,如果需要直接生效需要再加一条命令source .bashrc相当于更新一下那么就可以直接生效了)

2)删除别名

unalias 别名

#删除别名(只是删除临时别名)

3)命令生效顺序

第一顺位执行用绝对路径或相对路径执行的命令

第二顺位执行别名

第三顺位执行bash的内部命令

第四顺位执行按照¥PATH环境变量定义的目录查找顺序找到的第一个命令

4)常用快捷键

ctrl+c 强制终止当前命令
ctrl+l 清屏
ctrl+a 光标移动到命令行首部
ctrl+e 光标移动到命令行尾部
ctrl+u 从光标所在位置删除到行首
ctrl+z 把命令放入后
ctrl+r 在历史命令中搜索

2.历史命令

1)历史命令

history [选项] [历史命令保存文件]

选项:

-c:清空历史命令

-w:把缓存中的历史命令写入历史命令保存文件”~/.bash_history”

history看到的是所有历史命令,.bash_history中的历史命令是系统退出时候自动写入的。

需要注意的是历史命令会默认保存1000条,可以在环境变量配置文件/etc/profile中进行修改

2)历史命令的调用

使用上下箭头调用以前的历史命令

使用”!n”重复执行第n条历史命令

使用”!!”重复执行上一条命令

使用”!字符串”重复执行最后一条以该字符串开头的命令

3)命令与文件补全

在bash中,命令与文件补全是非常方便与常用的功能,我们只要在输入命令或文件时,按下Tab键就会进行自动补全

3.输出重定向

1)标准输入输出

设备

设备文件名

文件描述符

类型

键盘 /dev/stdin 0 标准输入
显示器 /dev/sdtout 1 标准输出
显示器 /dev/sdterr 2 标准错误输出

2)输出重定向

类型

符号

作用

标准输出重定向 命令 > 文件 以覆盖的方式,把命令的正确输出输出到指定的文件或设备当中
命令 >> 文件 以追加的方式,把命令的正确输出输出到指定的文件或设备当中
标准错误输出重定向 错误命令 2>文件 以覆盖的方式,把命令的错误输出输出到指定的文件或设备当中
错误命令 2>>文件 以追加的方式,把命令的错误输出输出到指定的文件或设备当中

标准输出重定向将命令的结果保存在文件中(只要命令的结果有输出就会保存)

错误输出重定向(注意符号两边没有空格

类型

符号

作用

正确输出和错误输出同时保存

(注意区分是否存在空格)

命令 > 文件 2>&1 以覆盖的方式,把正确输出和错误输出都保存到同一个文件当中
命令 >> 文件 2>&1 以追加的方式,把正确输出和错误输出都保存到同一个文件当中
命令 &>文件 以覆盖的方式,把正确输出和错误输出都保存到同一个文件当中
命令 &>>文件 以追加的方式,把正确输出和错误输出都保存到用一个文件当中
命令>>文件1 2 >>文件2 把正确的输出追加到文件1中,把错误的追加到文件2中

ls &>/dev/null只执行命令,不保存也不显示运行结果,/dev/null可以当作是垃圾回收站

命令 >> 文件 2>&1

以追加的方式把正确输出和错误输出都保存到同一个文件中去1

命令 &>>文件

以追加的方式把正确输出和错误输出都保存到同一个文件中去2

命令>>文件1 2 >>文件2

把正确的输出追加到文件1中,把错误的追加到文件2中

3)输入重定向

wc [选项] [文件名]

ctrl+d退出

选项 说明
-c 统计字节数
-w 统计单词数
-l 统计行数

使用wc统计文件行数、单词数、和字节数,也可以不用中间的那个<符号也可以统计

4.管道符

1)多命令顺序执行

多命令执行符

格式

作用

;
这是一个分号
命令1 ; 命令2 多个命令顺序执行,命令之间没有任何逻辑联系
&& 命令1 && 命令2 逻辑与
当命令1正确执行,则命令2才会执行
当命令1执行不正确,则命令2不会执行
|| 命令1 || 命令2 逻辑或
当命令1执行不正确,则命令2才会执行
当命令1执行正确,则命令2不会执行

多个命令顺序执行

逻辑与

逻辑或

TIP:可以通过类似:ls && echo yes || echo no这样的方式来判断命令是否有误

2)管道符

命令1 | 命令2

#命令1的正确输出作为命令2的操作对象

例如:

ls –l  /etc | more来分屏查看命令执行结果

netstat –an | grep ESTABLISHED来监听我的服务器使用情况

netstat –an | grep ESTABLISHED | wc –l 来查看有多少人在使用我们的服务器

5.通配符

1)通配符

通配符

作用

? 匹配一个任意字符
* 匹配0个或任意多个任意字符,也就是可以匹配任何内容
[] 匹配中括号中任意一个字符,例如[abc]代表一定匹配一个字符,或者a或者b或者c
[-] 匹配括号中任意一个字符,-代表一个范围,例如[a-z]代表匹配一个小写字母
[^] 逻辑非,表示匹配不是括号内的一个字符,例如:[^0-9]代表匹配一个不是数字的字符

例如:

ls test* 列出test开头的所有文件

主要匹配文件名或者目录

2)Bash中其他特殊符号

符号

作用

‘’ 单引号。在单引号中所有的特殊符号,如$和`都没有特殊含义
“” 双引号。在双引号中的特殊符号都没有特殊含义,但是$、`和\是例外,拥有“调用变量的值”、“引用命令”和“转义符”的特殊含义
`` 反引号。反引号括起来的内容是系统命令,在bash中会先执行他。和$()作用一样。不过推荐使用$(),因为反引号非常容易看错
$() 和反引号作用一样,用来引用系统命令
# 在shell脚本中,#开头的代行注释
$ 用于调用变量的值,如需要调用变量name的值时,需要用$name的方式得到变量的值
\ 转义符,在跟\之后的特殊符号将失去特殊含义,变为普通字符。如\$将输出$符号,而不当作是变量引用

十、Shell基础的更多相关文章

  1. shell基础二十篇 一些笔记

    shell基础二十篇 转自 http://bbs.chinaunix.net/thread-452942-1-1.html 研讨:Bash 内建命令 read (read命令更具体的说明见博客收藏的一 ...

  2. shell基础(转)

    shell基础1:文件安全与权限 http://bbs.chinaunix.net/forum/viewtopic.php?t=434579&highlight=wingger 附:Linux ...

  3. 十大基础排序算法[java源码+动静双图解析+性能分析]

    一.概述 作为一个合格的程序员,算法是必备技能,特此总结十大基础排序算法.java版源码实现,强烈推荐<算法第四版>非常适合入手,所有算法网上可以找到源码下载. PS:本文讲解算法分三步: ...

  4. Shell基础学习小结

    0 shell基础概念 Shell是解释性语言,使用脚本编程语言的好处是,它们多半运行在比编译型语言还高的层级,能够轻易处理文件与目录之类的对象:缺点是它们的效率通常不如编译型语言.Shell命令有本 ...

  5. Shell基础-环境变量配置文件

    Shell基础-环境变量配置文件 source 配置文件 或者 . 配置文件: 把环境变量写入配置文件后,需要用户重新登陆才能生效,而是用source命令,则能直接生效 主要的配置文件: /etc/p ...

  6. Linux实战教学笔记17:精简shell基础

    第十七节 精简shell基础 标签(空格分隔): Linux实战教学笔记 1,前言 1.1 为什么学习shell编程 Shell脚本语言是实现Linux/UNIX系统管理及自动化运维所必备的重要工具, ...

  7. shell基础及变量

    一 Shell概述 1.Shell的作用——命令解释器,“翻译官” shell作为一个人机接口,用于解释用户输入的命令,将命令解释为Linux内核可以执行的2进制代码,并将执行的结果返回在标准终端上. ...

  8. Shell 基础教程

    一个比较好的shell基础教程: http://www.runoob.com/linux/linux-shell.html

  9. Linux基础学习(10)--Shell基础

    第十章——Shell基础 一.Shell概述 1.Shell是什么: (1)Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来 ...

  10. Linux Shell基础(下)

    Linux Shell基础(下) 目录 一.shell特殊符号cut命令 二.cut.sort.wc.uniq命令 三.tee.tr.split命令 四.简易审计系统 五.fork, exec, so ...

随机推荐

  1. Ambiguous mapping. Cannot map 'labelInfoController' method

    使用springboot项目中,启动时出现Ambiguous mapping. Cannot map 'labelInfoController' method , 原因是,@RequestMappin ...

  2. 【Alpha版本发布】爬虫队长正在待命!

    一.基础功能简介 本团队的爬虫能够从网上搜索相关内容, 并归类,把所爬到的网页或各种类型的文档下载到本地上. 上届团队Beta版本爬虫的主要功能如下: a)可爬取网页,问答页并进行问答文件分类. b) ...

  3. 【Alpha发布】贡献分分配

    最后贡献分分配: (1211)王嘉豪:32 (1186)黄雨萌:36 (1182)佘彦廷:40 (1208)何小松:50 (1200)鲁聃:62 (1174)邢浩:64 (1193)刘乾:66

  4. Internet History, Technology and Security (Week3)

    Week3. Welcome to week 3! This is our fourth and final week of History where we make the connection ...

  5. AWS EC2安装docker时的问题

    在AWS EC2的实例(Ubuntu)里面安装docker时,使用通常的安装步骤 :~$ sudo apt-get update :~$ sudo apt-get install docker 安装完 ...

  6. Scrum 项目7.0——第一个Sprint的总结和读后感

          总结: 通过这一次的Sprint,我了解了Sprint的整个流程,也学会了编制backlog,也了解了在软件工程中,一个团队的任务是怎么样分配和一个项目是怎么样开展的.从对软件工程的认识只 ...

  7. xshell 常用快捷键

    1.连接mysql数据库mysql -uroot -p -h127.0.0.1 -P3306 2.列出所有sessionshow full processlist; 3.查看20条执行时间最长的SQL ...

  8. http和https的优缺点,区别与工作原理

    文章内容 超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可 ...

  9. 使用userData兼容IE6-10,chrome,FF 及360等浏览器的本地存储

    开发过程中涉及本地存储的使用,IE很多版本都不支持localStorage,没办法,就得兼容使用userData了.废话不说了,看代码: (function(window){var LS;(funct ...

  10. Windows下CURL扩展无效之终极解决办法。

    本地开发环境使用WAMP快速搭建,在使用PHP的CURL时可能会存在无法载入情况,这里提供终极解决方法. 1.在php.ini配置文件中启用 php_curll.dll 扩展: (环境已经自动附带 l ...