• bash内建命令


    bash内建命令

    1、local命令

    基本介绍

      local命令是用来定义一个局部变量的,它只能定义在函数中,并且随着函数的结束而被销毁

    基本语法

      local  [option]  name[=value]

    使用案例

    #!/bin/bash
    
    function func(){
    
    local key=123
    
    echo $key
    
    }
    
    func

    2、alias命令

    基本介绍

      alias命令使用来设置一个命令的别名。

    为什么需要设置别名?

      当我们使用一个命令时,你可能需要通过选项来打开这个命令的许多功能,但是这个命令你又常常使用,因此, 每次你使用都敲击一遍是很麻烦的事情,因此,bash提供了一个别名alias。

    基本语法

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

    使用注意

      当设置了一个别名后,使用这个命令就会默认去找别名来执行,当你想要需要改变一些参数,那么这样就麻烦了,因此,bash提供了一种做法,可以屏蔽别名只需在命令前面加一个反斜线;当然还有另一种做法就是使用命令的全路径

    例子:

      cp  /etc/fstab  /tmp/

      /bin/cp  /etc/fstab  /tmp/

      取消一个别名使用unalias  name命令

    使用案例

    [root@oldboy ~]# alias
    
    alias cp='cp -i'
    
    alias grep='grep --color'
    
    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'
    
    [root@oldboy ~]# alias mysql='mysql -u root -p123456 -h localhost'
    
    [root@oldboy ~]# alias
    
    alias cp='cp -i'
    
    alias grep='grep --color'
    
    alias l.='ls -d .* --color=auto'
    
    alias ll='ls -l --color=auto'
    
    alias ls='ls --color=auto'
    
    alias mv='mv -i'
    
    alias mysql='mysql -u root -p123456 -h localhost'

    3、logout命令

    基本介绍

      bash提供了一个logout命令可以退出当前登录bash程序

      当然,我们也能使用bash提供的快捷键ctrl+d退出登录bash程序

    4、jobs命令

    基本介绍

      jobs命令可以查看后台运行的程序。当运行一个程序时,他默认时在前台运行,也就是阻塞在当前shell进程上运行,你只有退出当前程序才能去执行其他命令,因此,这样不是很方便去处理其它命令,此时bash提供了一个&操作符,使用一个命令或者说程序运行在后台。

    基本语法

    jobs  [-lnprs]

      常用选项

        -l :(小写 L)提供了更多的关于列出的每一个作业的信息。此信息包括了作业号、当前作业、进程组标识、状态和启动作业的命令。

        -n :显示自从最后一次通知后停止或退出的作业。

        -p:显示了所选定的作业的进程组引导符的进程标识。

    案例演示

    [root@oldboy scripts]# cat while.sh
    
    #!/bin/bash
    
    while true;do
    
            echo 123>/dev/null
    
            sleep 10
    
    done;
    
    [root@oldboy scripts]# bash while.sh &
    
    [1] 3098

    5、fg命令

    基本介绍

      当我们将一个程序运行在后台后,又想将它拿到前台来执行,那么可以使用fg命令

    基本语法

      fg  [jobsID]

    使用案例

    [root@oldboy ~]# jobs
    
    [1]+  Stopped                 vim /etc/fstab
    
    [root@oldboy ~]# fg 1
    
    vim /etc/fstab
    
    #
    
    # /etc/fstab
    
    # Created by anaconda on Mon Dec 24 23:39:48 2018
    
    #
    
    # Accessible filesystems, by reference, are maintained under '/dev/disk'
    
    # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
    
    #
    
    /dev/mapper/vg_oldboy-lv_root /                       ext4    defaults        1 1
    
    UUID=bae75a9c-b1d0-4562-b822-da366629a93b /boot                   ext4    defaults        1 2
    
    /dev/mapper/vg_oldboy-lv_swap swap                    swap    defaults        0 0
    
    tmpfs                   /dev/shm                tmpfs   defaults        0 0
    
    devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
    
    sysfs                   /sys                    sysfs   defaults        0 0
    
    proc                    /proc                   proc    defaults        0 0
    
     

    6、bg命令

    基本介绍

      将linux 的作业放入到后台运行

    基本语法

      bg  [%jobsID]

    7、disown命令

    基本介绍

      disown命令使已经在运行的用户进程使其不受HUP信号的影响

    基本语法

      disown  [options...]

      常用选项

        如果不指定选项表示从作业表中全部删除

          -h jobspec:来使某个作业忽略HUP信号

          -ah:来使正在运行的作业忽略HUP信号。

          -rh:来使正在运行的作业忽略HUP信号。

    8、nohup命令

    基本介绍

      当我们使用logout命令时,就会给终端发送 hangup 信号来通知其关闭所有子进程。但是,有时候我们不希望当前终端退出后进程就被终止了,因此,提供了nohup命令或者setsid命令来拒绝接受hup信号或者说忽略hup信号

    基本语法

      nohup|setsid  COMMAND

    使用案例

      模拟在已有ssh模拟终端上开启一个忽略后台运行的ssh客户端登录程序,然后退出当前shell登录程序,然后再登录查看那个忽略后台运行的ssh客户端登录程序

    使用案例

    [

    root@oldboy ~]# nohup ping www.sohu.com &
    
    [1]2896
    
    [root@oldboy ~]# jobs
    
    [2]+  Running                 nohup ping www.sohu.com &
    
    [root@oldboy ~]# logout
    
    [root@oldboy ~]# ps -ef|grep www
    
    root       2895      1  0 20:39 ?        00:00:00 ping www.sohu.com

    9、mapfile命令

    基本语法

      从标准输入中或者文件中读取指定的行到数组变量中。mapfilereadarray作用类似

    基本语法

      mapfile  [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]

        常用选项

          -n  count:指定要读取多少行

          -O  index:表示从哪个位置开始读取,默认位置是0

          -s  count:放弃读取count

          -u  文件:表示从文件中读取内容到数组而不是从标准输入中读取到数组

    10、pushd命令

    基本介绍

      将一个目录路径加入到一个栈中,并且切换当指定的目录下去,同时每次pushd进入这个路径栈后会打印当前栈中的路径有哪些路径

    基本语法

      pushd  [paths....]

    基本使用

    [root@oldboy CA]# pushd /tmp
    
    /tmp /etc/pki/CA
    
    [root@oldboy tmp]# pushd /usr
    
    /usr /tmp /etc/pki/CA
    
    [root@oldboy usr]# pushd
    
    /tmp /usr /etc/pki/CA

    11、popd命令

    基本语法

      意为弹出的意思,对于栈这种数据结构来说,弹出一般是弹出后pushd进去的路径。但是popd后的路径,在路径栈中不能找到,除非再一次pushd

    基本语法

      popd [options...]

      常用选项

        +N:表示将第N个目录删除,但是是从左边开始计数的(注意:N是从0

    开始的),同时弹出时会切换到弹出的目录

        -N:表示将第N个目录删除,但是是从右边开始计数的(注意:N是从0

    开始的),同时弹出时会切换到弹出的目录

        -n:表示弹出时不切换目录

    基本使用

    [root@oldboy etc]# pushd /bin
    
    /bin /etc /tmp /usr /etc/pki/CA
    
    [root@oldboy bin]# popd +1
    
    /bin /tmp /usr /etc/pki/CA
    
    [root@oldboy bin]# popd +0
    
    /tmp /usr /etc/pki/CA
    
    [root@oldboy tmp]# pushd /etc/
    
    /etc /tmp /usr /etc/pki/CA
    
    [root@oldboy etc]# popd -1
    
    /etc /tmp /etc/pki/CA

    12、break命令

    基本语法

    停止一个循环的执行,与这个相似的还有continue,只不过这个是跳过本次循环

    基本语法

      continue [n]

      break  [n]

    基本使用

    #!/bin/bash
    
    declare -i x=0
    
    while true;do
    
            if [ $x -eq 10 ];then
    
               break
    
            fi
    
            let x=$x+1
    
            echo $x
    
    done
    
    [root@oldboy scripts]# bash while.sh
    
    1
    
    2
    
    3
    
    4
    
    5
    
    6
    
    7
    
    8
    
    9
    
    10
    
     

    13、printf命令

    基本介绍

      printf命令用于格式化输出

    基本语法

      printf  FORMAT

      格式化输出字符

        %%:转义%

         :换行

        e:回退

         :制表符

    基本使用

    [root@oldboy ~]# printf "as	daa"
    
    as      daa

    14、builtin命令

    基本介绍

      允许用户自定义与bash内建命令相同的函数,但是调用时需要使用builtin命令来明确指明是调用自定义的还是内建的

    基本语法

      builtin  [COMMAND  [ARGS...]]

    15、pwd命令

    基本介绍

      打印当前的绝对路径

    基本语法

      pwd  [-LP]

    16、dirs命令

    基本介绍

      打印目录栈中的一些目录路径信息,这些路径是通过pushd命令添加进去的

    基本语法

      dirs  [options...]

    常用选项

      -p:将目录栈中的路径垂直显示

      -l:将目录栈中的路径横向显示

      -v:将目录内容带索引的显示

      -c:清除目录栈中所有的路径

        注意:如果在目录栈中存在当前所在的路径,那么清除全部路径时,不能清除当前所在路径

    基本使用

    [root@oldboy etc]# pushd /var
    
    /var /etc
    
    [root@oldboy var]# pushd /usr
    
    /usr /var /etc
    
    [root@oldboy usr]# pushd /bin
    
    /bin /usr /var /etc
    
    [root@oldboy bin]# dirs -v
    
     0  /bin
    
     1  /usr
    
     2  /var
    
     3  /etc
    
    [root@oldboy bin]# dirs -l
    
    /bin /usr /var /etc
    
    [root@oldboy bin]# dirs -p
    
    /bin
    
    /usr
    
    /var
    
    /etc
    
    [root@oldboy bin]# cd
    
    [root@oldboy ~]# dirs -p
    
    ~
    
    /usr
    
    /var
    
    /etc
    
    [root@oldboy ~]# dirs -l
    
    /root /usr /var /etc
    
    [root@oldboy ~]# dirs -v
    
     0  ~
    
     1  /usr
    
     2  /var
    
     3  /etc

    17、enable命令

    基本介绍

      显示启用或者禁用的内建命令

    基本语法

      enable  [options...]  [COMMAND]

    常用选项

      -a  [COMMAND]:显示所有的启用的内建命令

      -n  COMMAND:关闭指定的内建命令

    基本使用

    [root@oldboy ~]# enable -a |grep let
    
    enable let
    
    [root@oldboy ~]# enable -n let
    
    [root@oldboy ~]# enable -a |grep let
    
    enable -n let
    
    [root@oldboy ~]# let x=1
    
    -bash: let: command not found
    
    [root@oldboy ~]# enable -a let
    
    [root@oldboy ~]# let x=1
    
    [root@oldboy ~]# echo $x
    
    1
    
    [root@oldboy ~]# enable -a |grep let
    
    enable let

    18、cd命令

    基本介绍

      进入某个目录,但是这个目录必须有可执行的权限

    基本语法

      cd  [DIR...]

    基本使用

    [root@oldboy ~]# cd /home/oldboy
    
    [root@oldboy oldboy]#

    使用注意

      cd命令后边可以不接目录表示进入用户的家目录,当然我们可以是用cd  ~进入家目录。同时cd命令还有一个小技巧,就是使用cd  - ,能够在两个目录之间来回切换。这个来回切换是可以用一个环境变量来维护的,旧路劲环境变量$OLDPWD

    基本使用

    [root@oldboy ~]# cd $OLDPWD
    
    [root@oldboy home]# cd $OLDPWD
    
    [root@oldboy ~]# cd $OLDPWD
    
    [root@oldboy home]# cd $OLDPWD
    
    [root@oldboy ~]# cd $OLDPWD
    
    [root@oldboy home]# cd $OLDPWD

    19、read命令

    基本介绍

      从标准输入中或者文件中读取内容存入变量中

    基本语法

      read [-a aname] [-d delim] [-n nchars]  [-N  nchars]  [-p prompt] [-t timeout] [-u fd] [name ...]

    常用选项

      -a  arr:将分割后的字段一次存入指定的arr数组中

      -p  str:提示字符串

      -t  time:超出时间就退出

      -s:静默模式

      -d  delimiter:指定分隔符

      -n:限制读取n个字符自动结束读取(在没有读满n个字符前,如果按下了回车或者换行符,那么都会自动结束)

      -N:严格要求读满N个字符才自动结束读取(即使中途遇到回车或者换行都不结束)

      -u  fd:表示从文件中读取内容

      -e:表示如果输入内容来自终端,则调用readline库进行读取

    案例演示

    [root@oldboy ~]# read -a arr
    
    1 2 3
    
    [root@oldboy ~]# echo ${arr[0]}
    
    1
    
    [root@oldboy ~]# echo ${arr[1]}
    
    2
    
    [root@oldboy ~]# echo ${arr[2]}
    
    3
    
    [root@oldboy ~]# read -n 5 -a arr
    
    aaaaa[root@oldboy ~]# echo ${arr}
    
    aaaaa
    
    a[root@oldboy test]# read -d "a" -a arr   //a字符作为终端结束输入字符
    
    s
    
    d
    
    f
    
    g
    
    h
    
    h
    
    r
    
    a[root@oldboy test]# echo ${arr[1]} //结束输入
    
    d
    
    [root@oldboy test]# echo ${arr[0]}
    
    s

    未完,待续........

  • 相关阅读:
    学习网页栅格系统的几篇好文
    [转载]iis6配置使用页面Gzip压缩提速
    img标签的src=""会引起的Page_Load多次执行
    基于sliverlight + wcf的web 文字版IM 示例
    Enterprise Library 4.1学习笔记8缓存应用程序块之FileDependency
    windows 2008上启用防火墙后sqlserver 2005经常出现连接超时的解决办法
    负载均衡环境下的web服务器处理
    Ado.Net连接池的速度测试
    [转载]网页栅格系统研究(1):960的秘密
    css基础:把所有背景图都集成在一张图片上,减少图片服务器请求次数
  • 原文地址:https://www.cnblogs.com/lanxiansen/p/10723078.html
Copyright © 2020-2023  润新知