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]代表匹配一个不是数字的字符

  • 相关阅读:
    24. Swap Nodes in Pairs
    49. Group Anagrams
    280. Wiggle Sort
    274. H-Index
    K Closest Numbers In Sorted Array
    Closest Number in Sorted Array
    Last Position of Target
    Classical Binary Search
    350. Intersection of Two Arrays II
    Sort Integers II
  • 原文地址:https://www.cnblogs.com/huhyoung/p/6263055.html
Copyright © 2011-2022 走看看