美文网首页
玩转Linux的神操作:五分钟搞定Bash特性与使用技巧

玩转Linux的神操作:五分钟搞定Bash特性与使用技巧

作者: 37f08a1d07fb | 来源:发表于2019-02-25 17:24 被阅读8次

    一个完整计算机的体系结构包括:硬件与软件,而软件又分为系统软件与应用软件,负责对硬件仅需管理与操作的是系统软件的内核部分,用户是无法与硬件或内核打交道的,用户通过应用程序或部分系统软件发出指令(可能是通过浏览器发送一封邮件),这些指令会被翻译并传给内核,内核在得知用户的需求后调度硬件资源来完成操作(比如,使用网卡发送数据包)。

    在Linux环境下,我们一般通过Shell来与内核交流,并最终实现我们想要使用计算机资源的目的。由于Linux的开放性特点,使得在Linux下对Shell的选择也很多,不同的Shell有不同的特点以及操作方式,我们这里了解下Linux技巧之一:Bash特性。

    一、bash简介

    ①shell

    bash的起源——shell。shell俗称壳,它是指UNIX系统下的一个命令解析器;主要用于用户和系统的交互。UNIX系统上有很多种Shell。首个shell,即Bourne Shell,于1978年在V7(AT&T的第7版)UNIX上推出。后来,又演变出C shell、bash等不同版本的shell。

    广义shell包含:

    1、GUI:Gnome、KDE、Xfce

    2、CLI:sh,csh,ksh,bash

    进程:在每个进程看来,当前主机上只存在内核和当前进程,进程是程序的副本,进程是程序执行实例。

    ②bashbash,全称为Bourne-Again Shell。它是一个为GNU项目编写的Unix shell。bash脚本功能非常强大,尤其是在处理自动循环或大的任务方面可节省大量的时间。bash是许多Linux平台的内定Shell,这也是我们介绍它主要的原因。

    1、支持命令历史、命令补全

    2、支持管道、重定向

    3、支持命令别名

    4、支持命令行编辑

    5、支持命令行展开

    6、支持文件名通配

    7、支持变量

    8、支持编程

    二、bash的示例和书写流程

    1、新建文件test.sh

    $ touch test.sh

    2、添加可执行权限

    $ chmod +x test.sh

    3、编辑test.sh,test.sh内容如下:

    #!/bin/bash

    echo "hello bash"

    exit 0

    说明:#!/bin/bash : 它是bash文件声明语句,表示是以/bin/bash程序执行该文件。它必须写在文件的第一行!echo "hello bash" : 表示在终端输出“hello bash”exit 0 : 表示返回0。在bash中,0表示执行成功,其他表示失败。4、执行bash脚本

    $ ./bash

    在终端输出“bash hello”

    三、bash特性

    1、命令历史:

    history:

    查看命令历史:history

    -c:清空命令历史

    -d OFFSET[n]:删除指定位置的命令

    例1:history -d 500  #删除第500个历史命令

    例2:history -d 500 3 #删除第500个命令起3个历史命令

    -w:保存命令历史至历史文件(家目录下.bash_history)中

    2、命令历史使用技巧:

    !n:执行命令历史中的第N条命令

    例:root@localhost /]# !44

    !-n:执行命令历史中倒数第N条命令

    例:[root@localhost /]# !-44

    !!:重新执行上一次命令

    !string:执行命令历史中最近一个已指定字符(string)串开头的命令

    !$:引用前一个命令的最后一个参数

    ESC,.:引用前一个命令的最后一个参数

    Alt+.:引用前一个命令的最后一个参数

    3、命令别名:

    alias CMDALIAS=‘COMMAND [options] [arguments]’

    例:[root@localhost /]# alias cls=clear

    在shell中定义的别名仅在当前shell生命周期中有效:别名有效范围为当前shell进程

    unalias:撤销别名

    例:[root@localhost /]# unalias cls

    \COMMAND:使用命令本身

    4、命令替换:

    $(COMMAND)

    `COMMAND`:(反引号)

    把命令中某个子命令替换为其执行结果的过程

    例1:[root@localhost ~]# echo "The current directory is $(pwd)."

                The current directory is /root.

    例2:[root@localhost ~]# touch ./file-$(date +%F-%H-%M-%S).txt

    [root@localhost ~]# ls

    anaconda-ks.cfg  file-2017-03-30-15-10-30.txt  install.log         sort.test

    Desktop          hello                         install.log.syslog

    5、bash支持的引号:

    ``:命令替换

    "":弱引用,可以实现变量替换

    ‘’:强引用,不完成变量替换

    6、文件名通配:globbing

    # man 7 glob 可获得以下列表:

    *:任意长度的任意字符

    ?:任意单个字符

    [ ]:匹配指定范围内的任意单个字符  

    [a-z], [A-Z], [0-9], [a-zA-Z]  

    [[:space:]]:空白字符  

    [[:punct:]]:标点符号  

    [[:lower:]]:小写字母  

    [[:upper:]]:大写字母  

    [[:alpha:]]:大小写字母  

    [[:digit:]]:数字  

    [[:alnum:]]:数字和大小写字母  

    [^]:匹配指定范围之外的任意单个字符  

    [^0-9]:非数字  

    [^[:alpha:]]:非字母

    7、环境变量:

    PATH:命令搜索路径

    HISTSIZE:命令历史缓冲区大小(默认1000条):

    例:[root@localhost ~]# echo $HISTSIZE

    1000  

    8、命令行编辑:

    Bash准备了大量的快捷键为用户使用,熟练掌握这些快捷键的全部或部分会使你在工作中受益颇多,开始的时候你可能需要花费大量的时间来记忆这些快捷键,但一旦你记住了他们,你的工作效率会直线上升。下面列出了常用的快捷键及其功能描述。

    光标跳转:

    Ctrl+a:跳到命令行首部

    Ctrl+e:跳到命令行尾

    Ctrl+f:光标右移一个字符

    Ctrl+b:光标左移一个字符

    Ctrl+u:删除光标至命令行首的内容

    Ctrl+k:删除光标至命令行尾的内容

    Ctrl+l:清屏,等同于clear命令

    Ctrl+c:终止进程

    Ctrl+z:挂起进程(可以通过jobs命令查看挂起的进程)

    Ctrl+w:删除光标前一个单词(以空格为分隔符)

    Alt+d:删除光标后一个单词

    9、命令行展开

    在Linux bash中可以使用命令行展开特性一步完成需要分开成多步完成的操作,达到事半功倍的效果。在Linux指令参数位置使用{}将相应的参数括起来,括号中的参数以逗号分隔,然后bash在执行这一指令时会自动将括号中的内容进行展开。

    例如:

    /tmp/{x,y}    #生成/tmp/x和/tmp/y

    mkdir {1..10}    #生成1-10为名的文件夹

    mkdir -p  {1..10}/{1..10}    #在名为1-10的文件夹里再生成1-10为名的文件夹

    总结:

    Linux 新手往往对命令行心存畏惧,部分原因是因为需要记忆大量的命令,毕竟掌握命令是高效使用命令行的前提。

    不幸的是,学习这些命令并无捷径,然而在你开始学习命令之初,有些工具还是可以帮到你的。“学而时习之,不进则退”,只要不断地学习不断地摸索,你早晚有一天也会成为Linux大牛!

    欢迎加入  51软件测试大家庭,在这里你将获得【最新行业资讯】,【免费测试工具安装包】,【软件测试技术干货】,【面试求职技巧】... 51与你共同学习,一起成长!期待你的加入: QQ                     群:                    755431660

    相关文章

      网友评论

          本文标题:玩转Linux的神操作:五分钟搞定Bash特性与使用技巧

          本文链接:https://www.haomeiwen.com/subject/nlwgyqtx.html