Shell基础

一、shell概述

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

我们输入的abc、、、24个字符是通过shell对照ASCII码翻译成二进制来让计算机识别的。我们从操作界面上输入命令,这个命令回车之后把此命令对照ASCII码翻译成指定的二进制,通过shell翻译成计算机内核能识别的二进制,然后内核调用硬件来处理,处理完之后再通过shell反馈给用户。

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

二、脚本执行方式

1) echo输出命令

1、echo [选项] [输出内容]

例如:[root@locahost ~]# echo “hello world”这样就会打印来。如果你输出的内容之间有空格,则需要加双引号。

注:选项:

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

控制字符

作用

\a

输出警告音

\b

退格键,也就是向左删除键

\n

换行符

\r

回车键

\t

制表符,也就是Tab键

\v

垂直制表符

\0nnn

按照八进制ASCII码表输出字符。其中0为数字零,nnn是三位八进制数

\xhh

按照十六进制ASCII码表输出字符,其中hh是两位十六进制数

例如:[root@locahost ~]# echo “hello\b  world”输出的结果是:hell world

2、 echo颜色输出

例如:[root@locahost ~]# echo –e”\e[1;31m hello world \e[0m”输出的结果是:hello world

#30m=黑色,31m=红色,32m=绿色,33m=黄色

#34m=蓝色,35m=洋红,36m=青色,37m=白色

2)第一个脚本

[root@locahost ~]# vim hello.sh

#!/bin/bash(必不可少,不可省略)

#这是第一个shell脚本

echo –e “\e[1;34m天上掉下个林妹妹\e[0m”

这样写完就先按ESC 退到全局模式下,然后按 :wq 保存退出

3)执行脚本

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

   Chmod 755 hello.sh(赋予权限)

   ./hello.sh(相对路径调用)或

   /root/hello.sh(绝对路径调用)

2、通过Bash调用执行脚本

   Bash hello.sh

三、Bash的基本功能

1) 命令别名与快捷键

1、 alias(查看系统中所有的命令别名)

例如:[root@locahost ~]# ls

其实就是ls=‘ls  --color=auto’

2、 alias 设定的名=‘原命令即别名’(设定命令别名)

3、 别名永久生效与删除别名

vi ~/.bashrc(写入环境变量配置文件之后重新登录即生效或者执行source  .bashrc即可生效)

unalias 别名(删除别名)

4、 命令生效顺序

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

第二顺位执行别名

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

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

5、 常用快捷键

Ctrl+c  强制终止当前命令               Ctrl+l    清屏

Ctrl+a  光标移动到命令行首             Ctrl+e    光标移动到命令行尾

Ctrl+u  从光标所在位置删除到行首       Ctrl+z    把命令放入后台

Ctrl+r   在历史命令中搜索

2) 历史命令

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

选项:-c:清空历史命令

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

1、历史命令默认会保存1000条,可以在环境变量配置文件/etc/profile中进行修改

2、历史命令的调用

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

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

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

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

3、 命令与文件补全

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

3) 输出重定向

1、标准输入输出

设备

设备文件名

文件描述符

类型

键盘

/dev/stdin

0

标准输入

显示器

/dev/sdtout

1

标准输出

显示器

/dev/sdterr

2

标准错误输出

Linux中一切皆文件

定义:原本输入命令想要在屏幕上显示的信息通过>,>>输出到文件当中

2、输出重定向

类型

符号

作用

标准输出重定向

命令>文件

以覆盖的方式,把命令的正确输出,输出到指定的文件或设备当中

命令>>文件

以追加的方式,把命令的正确输出,输出到指定的文件或设备当中

 

标准错误输出重定向

错误命令2>文件

以覆盖的方式,把命令的错误输出,输出到指定的文件或设备当中

错误命令2>>文件

以追加的方式,把命令的错误输出,输出到指定的文件或设备当中

 

注:标准输出重定向命令>、>>后可空格或着不空格也行。

2和重定向符号(>、>>)之间没有空格即可

     

正确输出和错误输出同时保存(2、4、5比较常用,2、4功能一样)

命令>文件2>&1

以覆盖的方式,把正确输出和错误输出都保存到同一个文件当中

命令>>文件2>&1

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

命令&>文件

以覆盖的方式,把正确输出和错误输出都保存到同一个文件当中

命令&>>文件

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

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

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

        

              注:命令 &>/dev/null(linux中的黑洞,只要扔进去就不会出现了直接抛弃)

             

              [root@localhost ~]# wc [选项][文件名]

              选项:

              -c统计字节数

              -w统计单词数

              -l统计行数

 

              命令<文件(把文件作为命令的输入)

              命令<<标识符

              ……

              标识符(把标识符之间内容作为命令的输入)

4) 多命令顺序执行

多命令执行符

格式

作用

           命令1;命令2

多个命令顺序执行,命令之间没有任何逻辑联系

&&

命令1&&命令2

逻辑与

当命令1正确执行,则命令2才会执行;

当命令1执行不正确,则命令2不会执行

||

命令1||命令2

逻辑或

当命令1执行不正确,则命令2才会执行;

当命令1正确执行,则命令2不会执行

例如:[root@localhost ~]# pwd;touch abc;ls;date

[root@localhost ~]# ls anaconda-ks.cfg&& echo yes

[root@localhost ~]# ls anaconda-ks.cfg&& echo no

[root@localhost ~]# 命令 && echo yes || echo no

 

5)    管道符

       命令格式:[root@localhost ~]# 命令1 | 命令2

(命令1的正确输出结果作为命令2的操作对象)

              例如:

                      [root@localhost ~]# ll –a /etc/ | more

[root@localhost ~]# netstat –an | grep ”ESTABLISHED”

 

6)  Bash中其他特殊符号

符号

作用

‘’

单引号。在单引号中所有的特殊符号,如“$”和“`”(反引号)都没有特殊含义。

“”

双引号。在双引号中特殊符号都没有特殊含义,但是“$”、“`”和“\”是例外,拥有“调用变量的值”、“引用命令”和“转义符”的特殊含义。

``

反引号。反引号括起来的内容是系统命令,在Bash中会先执行它。和$()作用一样,不过推荐使用$(),因为反引号非常容易看错。

$()

和反引号作用一样,用来引用系统命令。

#

在Shell脚本中,#开头的行代表注释

$

用于调用变量的值,如需要调用变量name的值时,需要用$name的方式得到变量的值

\

转义符,跟在\之后的特殊符号将失去特殊含义,变为普通字符。如\$将输出“$”符号,而不当做是变量引用

 

7)通配符

通配符

作用

匹配一个任意字符

*

匹配0个或任意多个任意字符,也就是可以匹配任何内容

[]

匹配中括号中任意一个字符。例如:[abc]代表一定匹配一个字符,或者是a或者是b,或者是c

[-]

匹配中括号中任意一个字符,-代表一个范围。例如:[a-z]代表匹配一个小写字母

[^]

逻辑非,表示匹配不是中括号内的一个字符。例如[^0-9]代表匹配一个不是数字的字符

Linux之shell基础的更多相关文章

  1. linux base shell 基础语法

    转载 本文主要是基础的基础,希望对大家有所帮助 一.Shell基本类型的变量: (1)Shell定义的环境变量: Shell在开始执行时就已经定义了一些和系统的工作环境有关的变量,用户还可以重新定义这 ...

  2. Linux中shell基础、重定向、管道符、环境变量

    1.什么是shell Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口(命令解释器).它接收用户输入的命令并把它送入内核去执行.起着协调用户与系统的一致性和在用户与系统之间进行交互的 ...

  3. Linux学习 -- Shell基础 -- 概述

    Shell是什么? 命令解释器 编程语言 Linux支持的Shell类型 cat /etc/shells 主要学习 bash 脚本执行方式 echo echo -e 单引号 -- 原始字符串  双引号 ...

  4. Linux学习——Shell基础

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

  5. linux系统shell基础知识入门

    什么是shell shell就是我们常说的命令行程序,它是一个作为用户与Linux系统间接口的程序,它允许用户向操作系统输入要执行的命令.在Linux中安装多个shell是可行的,一般系统有默认的sh ...

  6. Linux学习 -- Shell基础 -- Bash变量

    变量 默认是字符串型,数值型需要显示指定 等号两侧都不能有空格 单引号:原始字符串  双引号:保留转义 命令结果作为值:反引号 或 $() 环境变量一般用大写 自定义变量 变量定义    name=& ...

  7. linux base shell 基础语法2

    转载 http://blog.csdn.net/aggrelxf/article/details/8263110 单引 双引 反引用[] [[]] 将命令的输出读入一个变量中,可以将它放入双引号中,即 ...

  8. Linux学习 -- Shell基础 -- Bash基本功能

    历史命令 history -c   clear -w   写入 ~/.bash_history 默认保存1000条, 可在/etc/profile中修改 调用 Tab补全 命令.目录.文件 命令别名 ...

  9. linux系统shell基础知识入门二

    条件判断语句 test或[],这两是等价的.但用[]这种可能看起来更简洁 必须在[符号和检查条件之间留出空格,而test命令之后也总是应该有一个空格 如果要把test 和then 放一行上,那么必须在 ...

随机推荐

  1. 纯css制作电闪雷鸣的天气图标

    效果 效果图如下 ​ 实现思路 使用box-shadow属性写几个圆,将这些圆错落的组合在一起,形成云朵图案 after伪元素写下面的投影样式 before伪元素写黄色闪电的样式 dom结构 用两个嵌 ...

  2. Python面向对象编程——继承与派生

    Python面向对象编程--继承与派生 一.初始继承 1.什么是继承 继承指的是类与类之间的关系,是一种什么"是"什么的关系,继承的功能之一就是用来解决代码重用问题. 继承是一种创 ...

  3. charles 自动存储/auto_save

    本文参考:charles 自动存储 自动保存工具 auto_save "自动保存"工具会在你设定的间隔后,自动保存并清除抓取到的内容.假设你设置了3分钟,则每隔三分钟会保存一次, ...

  4. MYSQL之概念基础篇

    1数据库概述 1.1 数据管理技术的产生和发展 数据库技术是应数据库管理任务的需要而产生的.20世纪50年代中期以前,计算机主要是用于科学计算.当时的硬件状况是,外存只有纸带.卡片.磁带,没有磁盘等可 ...

  5. Windows下更换MAC地址

    使用TMAC软件是最佳方案.官网地址:www.technitium.com

  6. Android远程服务AIDL开发过程中容易遇见的两个问题

    问题 一 JavaBinder: Uncaught remote exception! (Exceptions are not yet supported across processes.) jav ...

  7. 使用spring拦截器实现日志管理

    使用HandlerInterceptor拦截器,可以拦截请求,实现通用的日志管理操作 一.添加拦截器类 在"src/main/java"代码文件夹的"org.xs.dem ...

  8. 简单粗暴的关键两部实现连接远程云服务器数据库SqlServer 2012

    要连上远程服务器的数据库,前面的那些数据库配置就不说了,网上都一样. 下面讲讲关键的两点,也是我尝试普通的方法无效后通过下面的方法成功连上的. 1.点开云服务器的安全组,看看里面的端口是否都放行了.我 ...

  9. JQuery学习笔记之手网琴效果

    这种东西在网上多的是,最近在学JQuery,所以就写了个随笔 <!DOCTYPE html> <html lang="en"> <head> & ...

  10. Docker 01 - CentOS 7 中安装 Docker 的详细步骤

    目录 1 初识 Docker 1.1 Docker 原理简介 1.2 Docker 核心概念 2 安装 Docker 2.1 查看系统内核版本 2.2 更新 yum 包 2.3 安装软件包 2.4 向 ...