zoukankan      html  css  js  c++  java
  • 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

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

  • 相关阅读:
    httpcontext in asp.net unit test
    initialize or clean up your unittest within .net unit test
    Load a script file in sencha, supports both asynchronous and synchronous approaches
    classes system in sencha touch
    ASP.NET MVC got 405 error on HTTP DELETE request
    how to run demo city bars using sencha architect
    sencha touch mvc
    sencha touch json store
    sencha touch jsonp
    51Nod 1344:走格子(贪心)
  • 原文地址:https://www.cnblogs.com/lanxiansen/p/10723078.html
Copyright © 2011-2022 走看看