zoukankan      html  css  js  c++  java
  • Linux之shell基础

    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

    输出警告音

    

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

    换行符

    回车键

    制表符,也就是Tab键

    v

    垂直制表符

    nnn

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

    xhh

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

     

    例如:[root@locahost ~]# echo “hello  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]代表匹配一个不是数字的字符

  • 相关阅读:
    hive与hbase整合
    待重写
    hive DML
    【知识强化】第六章 总线 6.1 总线概述
    【知识强化】第五章 中央处理器 5.1 CPU的功能和基本结构
    【知识强化】第四章 指令系统 4.3 CISC和RISC的基本概念
    【知识强化】第四章 指令系统 4.2 指令寻址方式
    【知识强化】第四章 指令系统 4.1 指令格式
    【知识强化】第三章 存储系统 3.6 高速缓冲存储器
    【知识强化】第三章 存储系统 3.5 双口RAM和多模块存储器
  • 原文地址:https://www.cnblogs.com/huhyoung/p/6263055.html
Copyright © 2011-2022 走看看