zoukankan      html  css  js  c++  java
  • Shell编程-基础

    1.Shell是什么

    • shell是命令行解释器,将用户语言根据ASCII码表转换成机器语言传给Linux内核。
    • Shell还是功能强大的脚本编程语言,易编写,易调试,灵活性强;在Shell中可以直接调用Linux系统命令。

    2.Shell分类

    • 1979年Unix使用的Bourne Shell,主文件名为sh,不支持历史命令;主要包括:sh、ksh、Bash、psh、zsh
    • C Shell 主要在BSD版的Unix系统中使用,与C语言类似;主要包括:csh、tcsh

    注意:

    • Unix中主要用的是Cshell,Linux中用的是Bash,也是标准shell
    • 通过echo $SHELL可以查看当前系统用的是哪种shell,结果:/bin/bash;
    • 其中/etc/shells中配置了可兼容的shell。

    3.Shell的脚本执行方式

    3.1 echo命令

    命令格式: echo [选项][输出内容]

    作用:将信息显示在显示屏上。

    选项:

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

    如:a 输出警告音

             向左删除键

           换行符

           回车键

           制表符,即Tab键

            v垂直制表符

           nnn 按照八进制ASCII码输出字符

           xhh 按照十六进制ASCII码输出字符。

    echo输出可以使用不同颜色,语法:echo -e “33[字背景颜色;文字颜色m字符串33[0m”

    3.2 shell脚本编写基础认识

    • 文件开头一定加#!/bin/bash,作用:如果调用非shell语言,也作为shell处理!
    • 可以直接调用linux命令,更适合做系统管理。

    3.3shell脚本执行

    方法一:赋予执行权限,直接运行,如:

               chmod 755 hello.sh

               ./hello.sh

    方法二:通过bash调用执行脚本

                bash hello.sh #通过bash直接解释脚本,可以不用赋执行权限。

    3.4 Bash基本功能

    3.4.1 命令别名及快捷键

    命令格式:alias 别名命令名='命令',如:alias vi=‘vim’

    若让别名永久生效,则可以写入.bashrc文件(环境变量配置文件),vi ~/.bashrc,后source .bashrc,立刻生效。

    删除别名:unalias 别名

    注意:定义了别名后,命令的执行顺序:使用绝对路径或相对路径的命令->别名命令->Bash内部命令->$PATH环境变量定义的目录找到的命令

    3.4.2常用快捷键

    ctrl+c 强制终止当前命令

    ctrl+l 清屏

    ctrl+a 光标移动到命令行首

    ctrl+e 光标移动到命令行尾

    ctrl+u从光标所在位置删除到行首

    ctrl+z把命令放到后台

    ctrl+r在历史命令中搜索

    3.4.3 历史命令

    1.history命令

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

    -c 清空历史命令

    -w 把缓存中的历史命令写入历史命令保存文件~/.bash_history(~用户家目录)

    如:直接使用history,不加参数可以查看到本次使用过的和之前的历史命令。使用history -w可以直接把当前的历史命令直接写入.bash_history中。

           使用cat .bash_history查看文件中保存的历史命令。

    注意:历史命令默认保存1000条,可以在环境变量配置文件/etc/profile中进行修改:HISSIZE=1000,修改成想要保存的值。

    2.历史命令的调用

    • 使用上、下箭头调用以前的历史命令
    • 使用“!n”重复执行第n条历史命令
    • 使用“!!”重复执行上一条命令
    • 使用“!字符串”重复执行最后一条以该字符串开头的命令

    注意:调用几调用的history中查出来的命令。

               常用的是第1条和最后1条。

    3.命令和文件补全

    原理:命令的补全,依赖的是$PATH中的路径去查找命令;

               文件补全,依赖的是目录。

    方法:使用tab键补全。

    作用:1.加快输入速度;

               2.检查输入是否存在错误。

    3.4.4 输出重定向

    1.标准输入输出

    注意:实际使用中“文件描述符”用的更多。

    2.输出重定向

    含义:默认输出是显示器,改变其输出对象,比如输出到文件中,称为输出重定向。

    • 常用的输出重定向语法:

    命令>文件 #把命令输出到指定的文件或设备中,注意是覆盖方式。

    命令>>文件 #把命令追加到指定的文件或设备中。

     注意:以上输出的都是正确内容,如果是错误的输出需要使用:

    错误命令 2>文件

    错误命令 2>>文件

    缺点:正确输出和错误输出要单独操作。

    • 正确输出和错误输出一起重定向

    命令格式:命令 &>文件,命令 > 文件 2>&1 #两个命令等同

               命令 &>>文件,命令 >> 文件 2>&1

              命令 >>文件1 2>>文件2 #正确的命令输出到文件1,错误的命令输出到文件2,这个命令用的比较多。

    3.输入重定向(实际使用少)

    • 命令:wc

    作用:统计键盘输入的字符

    命令格式:wc [选项][文件名]

    -c 统计字节数

    -w 统计单词数

    -l 统计行数

    • 输入重定向

    默认wc命令统计的是键盘输入的字符,可以通过输入重定向可以统计文件中的字符。

    如:wc <abc.log,或者wc abc.log

    3.4.5 管道符

    • 多命令顺序执行

    通过三个运算符进行连接,“;&& ||”,

    ; #如:date;ls;pwd多个命令顺序执行,命令间没有任何逻辑关系。注意:中间的命令执行错误,不影响其他命令的执行!

    && #命令1&&命令2,命令1正确才执行命令2

    || #命令1||命令2,命令1执行错误才执行命令2

    实际应用:如:ls && echo yes || echo no  #命令正确执行输出yes,命令错误输出no

    •  管道符

    命令格式:命令1 | 命令2

    #命令1的输出作为命令2的输入

    如:ls -l /home | more,netstat -an | grep ESTABLISHED,netstat -an | grep ESTABLISHED | wc -l (双管道符)

    3.4.6 通配符

    其他特殊符号:

    注意:

    • ‘’,""区别,如:aa=111,echo ‘$aa’-->$aa;echo "$aa"-->111
    • ``,里面是系统命令,比如:a=`ls`,echo "$s"-->显示ls查询出来的内容,等同于a=$(ls)
  • 相关阅读:
    关于JVM的一些想法
    hashMap理解以及jdk1.7、jdk1.8其中区别
    各数据库如何实现自增
    dubbo遇坑记录
    mysql建表语句问题
    @Configuration
    生成一个唯一的ID
    门面模式
    关于getClass().getClassLoader()
    元素链
  • 原文地址:https://www.cnblogs.com/dLarger/p/12660852.html
Copyright © 2011-2022 走看看