zoukankan      html  css  js  c++  java
  • bash的基础特性

    一 、命令别名(alias)

    别名的创建

    ①不带参数时显示当前shell的所有可用的别名,如:

    [root@Centos6-1 ~]# alias
    alias cp='cp -i'
    alias l.='ls -d .* --color=auto'
    alias ll='ls -l --color=auto'
    alias ls='ls --color=auto'
    alias mv='mv -i'
    alias rm='rm -i'
    alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
    
    

    ②自定义别名的方法,格式如下:

     alias [-p] [name[=value] ... ]

        -p:Print all defined aliases in a reusable format

    自定义一个命令别名:

    [root@Centos6-1 ~]# alias cdnet='cd /etc/sysconfig/network-scripts'
    [root@Centos6-1 ~]# cdnet
    [root@Centos6-1 network-scripts]# pwd
    /etc/sysconfig/network-scripts
    [root@Centos6-1 network-scripts]# 

    注意:别名对命令的定义仅对当前shell进程有效,如果想永久有效那么需要定义在配置文件中,有两种配置文件:

    1、仅对当前用户有效的: ~/.bashrc

    [root@Centos6-1 ~]# vim ~/.bashrc
    # .bashrc
    
    # User specific aliases and functions
    
    alias rm='rm -i'
    alias cp='cp -i'
    alias mv='mv -i'
    alias cdnet='cd /etc/sysconfig/network-scripts'
    # Source global definitions
    if [ -f /etc/bashrc ]; then
            . /etc/bashrc
    fi
    [root@Centos6-1 ~]# source .bashrc //想要立即生效需要重读配置文件或者重新ssh,另外 source还可以写成. 如:
    [root@Centos6-1 ~]# . .bashrc

    2、对所有用户有效:/etc/bashrc

      修改方式和上面一样

    别名的撤销

    撤销别名使用 unalias命令

    用法:

      unalias: unalias [-a] name [name ...]

      Options:
        -a remove all alias definitions.

    二、 glob

    bash中用于实现文件名通配的机制,通过通配符实现,通配符有以下几种:

      (1) *  表示任意长度任意字符

        a*b 符合条件的文件名有:aab a123b ab abab....以a开头以b结尾的

     (2)?  表示任意单个字符

        a?b 符合条件的有:a1b abb acb....以a开头中间只能有一个字符以b结尾

        a??b 符合条件的有:a11b a12b ....以a开头中间只能有两个字符以b结尾

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

        a[0-9]b 符合条件的有:a1b,a2b,a3b.....

        a[a-z]b 符合条件的有:aab,acb,adb....注意:这里不区分大小写

        a[A-Z]b 仅匹配中间是大写的字符

     (4)[^] 表示取反

        a[^0-9]b 表示匹配数字以外的字符

        a[^A-Z]b 表示匹配小写字母和数字

        a[^0-9a-z] 表示只匹配特殊字符

    专用字符集合表示法

      注意:下面出现的[]并非上面提到的[],如果要使用下面的专用字符集合还需要再加上一层[],如 [[:digit:]]

      [:digit:]:任意数字,相当于0-9 

      [:lower:]:任意小写字母,例如  ls a[[:lower:]]b

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

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

      [:alnum:]:任意数字或字母

      [:space:]:所有的空格

      [:punct:]:标点符号

    练习题:

    (1)显示/var目录下所有以l开头,以一个小写字母结尾且中间出现至少一位数字的文件或目录

    [root@Centos6-1 ~]# ls -d /var/l*[0-9]*[[:lower:]]

    (2)显示/etc目录下以任意一位数字开头且以非数字结尾的文件或目录

    [root@Centos6-1 ~]# ls /etc/[0-9]*[^0-9]

    (3)显示/etc目录下以非字母开头,后面跟了一个字母及其他任意长度任意字符的文件或目录

    [root@Centos6-1 ~]# ls /etc/[^[:alpha:]][[:alpha:]]*

    (4)复制/etc目录下所有以m开头以非数字结尾的文件或目录至/tmp/magedu目录中

    [root@Centos6-1 ~]# ls -d /etc/m*[^0-9]
    /etc/magic  /etc/makedev.d  /etc/mke2fs.conf  /etc/modprobe.d  /etc/motd  /etc/mtab  /etc/my.cnf
    [root@Centos6-1 ~]# cp -a /etc/m*[^0-9] /tmp/magedu

    (5)复制/etc目录下所有以.d结尾的文件或目录至/tmp/magedu.com目录中

    [root@Centos6-1 ~]# ls -d /etc/*.d
    /etc/bash_completion.d  /etc/depmod.d       /etc/ld.so.conf.d  /etc/modprobe.d  /etc/profile.d  /etc/rc2.d  /etc/rc5.d  /etc/rsyslog.d   /etc/sudoers.d
    /etc/chkconfig.d        /etc/dracut.conf.d  /etc/logrotate.d   /etc/pam.d       /etc/rc0.d      /etc/rc3.d  /etc/rc6.d  /etc/rwtab.d     /etc/xinetd.d
    /etc/cron.d             /etc/init.d         /etc/makedev.d     /etc/popt.d      /etc/rc1.d      /etc/rc4.d  /etc/rc.d   /etc/statetab.d  /etc/yum.repos.d
    [root@Centos6-1 ~]# cp -a /etc/*.d /tmp/magedu.com

    (6)复制/etc目录下所有以.conf结尾且以m,n,r,p开头的文件或目录至/tmp/magedu.com目录中

    [root@Centos6-1 ~]# ls /etc/[mnrp]*.conf
    /etc/mke2fs.conf  /etc/nsswitch.conf  /etc/resolv.conf  /etc/rsyslog.conf
    [root@Centos6-1 ~]# cp -a /etc/[mnrp]*.conf /tmp/magedu.com

    三、bash快捷键

    Ctrl+l:清屏操作,相当于clear命令

    Ctrl+a:跳转至命令首部(开始处)

    Ctrl+e:跳转至命令结尾处

    Ctrl+c:取消命令执行

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

    Ctrl+k:删除光标所在处至命令行尾部的所有内容

  • 相关阅读:
    CentOS 7 手动安装Mysql 5.7步骤
    OneNote无法登录
    在CDH集群外提交Spark流处理程序报错NoClassDefFoundError kafka consumer
    在VSCode中格式化Vue代码末尾不加分号双引号变单引号
    修改sudoers
    Dolphin Scheduler初始化Postgresql数据库失败
    centos7虚拟机分配静态IP但是得不到IP、不能上网一种可能的原因和解决办法
    安装GCC-8.3.0及其依赖
    REdis zset和double
    REdis Asynchronous AOF fsync is taking too long
  • 原文地址:https://www.cnblogs.com/sun292393989/p/8997977.html
Copyright © 2011-2022 走看看