zoukankan      html  css  js  c++  java
  • Linux常用命令(8)bash应用技巧

    查看系统存在的shell

    [root@localhost ~]# cat /etc/shells
    /bin/sh
    /bin/bash
    /sbin/nologin
    /bin/tcsh
    /bin/csh
    [root@localhost ~]# 

      bash中常用的快捷键:

        ctrl+l 清屏、crtl+u 删除命令行光标前面的所有内容

    1、命令补齐

      命令补齐允许用户输入文件起始的若干个字母后,按<Tab>键补齐文件名

      这在软件包安装的时候非常有用,因为linux中软件包的命令都很长,一个个字母敲容易出错,也很麻烦

    2、命令历史

      命令历史允许用户浏览先前输入的命令并重新调用它们,用history命令可以显示使用过的命令列表,按方向键可以查找以前执行过的命令

    [root@localhost abc]# history
     1005  ping -s 1024 192.168.1.1
     1006  ping -c 4 -s 1024 192.168.1.1
     1007  ping -s 60000000 192.168.1.1
     1008  clear
     1009  ifconfig
     1010  clear
     1011  history
     1012  clear
     1013  cat /etc/shells
     1014  cd bac
     1015  cd /abc
     1016  ls
     1017  history
    [root@localhost abc]# 

      使用!+命令前的序号,就可以调用相应的命令

    [root@localhost abc]# !1016
    ls
    adir      afile      afile.zip   issue.soft  test         test.zip
    adir.tar  afile.bz2  issue.hard  prem        test.tar.gz
    [root@localhost abc]# 

     

    3、命令别名

      范例: alias copy=cp   使用的时候就可以用copy替代cp

          alias drm="rm -rf"  命令的组合,需要用双引号括起来

      查看别名信息:alias

      删除别名:unalias copy

    查看系统别名
    
    [root@localhost ~]# 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'
    [root@localhost ~]# 
    
    定义别名drm="rm -rf"
    [root@localhost ~]# alias drm="rm -rf"
    
    使用别名删除test目录
    [root@localhost ~]# drm test
    
    删除别名drm
    [root@localhost ~]# unalias drm

    4、输入/输出重定向

      Shell对于每一个进程预先定义3个文件描述字(0、1、2),分别低对应于:

        0  (STDIN)标准输入

        1  (STDOUT)标准输出

        2  (STDERR)标准错误输出

      1)> 或 >> 输出重定向

        范例:ls -l /tmp > /tmp.msg

           date >> /tmp.msg

    输出重定向,ls -l /tmp命令的结果信息不显示到屏幕上,而是输出到tmp.msg文件中
    [root@localhost ~]# ls -l /tmp > /tmp.msg
    
    我们查看一下tmp.msg文件中的内容
    [root@localhost ~]# cat /tmp.msg
    total 100
    drwx------. 2 luxh luxh  4096 Nov 14 04:42 keyring-h3yH6m
    drwx------. 2 luxh luxh  4096 Nov 22 05:09 keyring-YG0Kwl
    drwx------. 2 gdm  gdm   4096 Nov 22 05:08 orbit-gdm
    drwx------. 2 luxh luxh  4096 Nov 22 05:09 orbit-luxh
    drwx------. 2 gdm  gdm   4096 Nov 22 05:09 pulse-84tzFLbuLWkG
    drwx------. 2 luxh luxh  4096 Nov 22 05:09 pulse-Ijt6UMdvv23E
    drwx------. 2 root root  4096 May 16  2012 pulse-ztOQIKtvdyh9
    drwx------. 2 luxh luxh  4096 Nov 22 05:09 virtual-luxh.2MU7ZX
    drwx------. 2 luxh luxh  4096 Nov 13 06:16 virtual-luxh.DEg7dT
    drwx------. 2 luxh luxh  4096 Nov 20 04:29 virtual-luxh.eKfxnY
    drwx------. 2 luxh luxh  4096 Nov 16 18:16 virtual-luxh.q0XCV9
    drwx------. 2 luxh luxh  4096 Nov 15 04:15 virtual-luxh.Uib40l
    drwx------. 2 luxh luxh  4096 Nov 21 05:07 virtual-luxh.yq7GZg
    drwx------. 2 luxh luxh  4096 Nov 14 04:45 virtual-luxh.zu4sqy
    drwxrwxrwt. 2 root root  4096 Nov 15 04:14 VMwareDnD
    drwx------. 2 luxh luxh  4096 Nov 22 05:09 vmware-luxh
    drwx------. 2 root root 36864 Nov 22 05:07 vmware-root
    [root@localhost ~]# 
    把date命令的结果信息追加到tmp.msg
    [root@localhost ~]# date >> /tmp.msg
    [root@localhost ~]# cat /tmp.msg
    total 100
    drwx------. 2 luxh luxh  4096 Nov 14 04:42 keyring-h3yH6m
    drwx------. 2 luxh luxh  4096 Nov 22 05:09 keyring-YG0Kwl
    drwx------. 2 gdm  gdm   4096 Nov 22 05:08 orbit-gdm
    drwx------. 2 luxh luxh  4096 Nov 22 05:09 orbit-luxh
    drwx------. 2 gdm  gdm   4096 Nov 22 05:09 pulse-84tzFLbuLWkG
    drwx------. 2 luxh luxh  4096 Nov 22 05:09 pulse-Ijt6UMdvv23E
    drwx------. 2 root root  4096 May 16  2012 pulse-ztOQIKtvdyh9
    drwx------. 2 luxh luxh  4096 Nov 22 05:09 virtual-luxh.2MU7ZX
    drwx------. 2 luxh luxh  4096 Nov 13 06:16 virtual-luxh.DEg7dT
    drwx------. 2 luxh luxh  4096 Nov 20 04:29 virtual-luxh.eKfxnY
    drwx------. 2 luxh luxh  4096 Nov 16 18:16 virtual-luxh.q0XCV9
    drwx------. 2 luxh luxh  4096 Nov 15 04:15 virtual-luxh.Uib40l
    drwx------. 2 luxh luxh  4096 Nov 21 05:07 virtual-luxh.yq7GZg
    drwx------. 2 luxh luxh  4096 Nov 14 04:45 virtual-luxh.zu4sqy
    drwxrwxrwt. 2 root root  4096 Nov 15 04:14 VMwareDnD
    drwx------. 2 luxh luxh  4096 Nov 22 05:09 vmware-luxh
    drwx------. 2 root root 36864 Nov 22 05:07 vmware-root
    Thu Nov 22 06:59:05 PST 2012
    [root@localhost ~]#

      2)< 输入重定向

        范例:wall < user.info

    [root@localhost ~]# cat user.info
    amani1::1001:503::/home/amani1:/bin/bash 
    amani2::1002:503::/home/amani2:/bin/bash
    
    把user.info文件中的内容作为输入进行广播
    [root@localhost ~]# wall < user.info
    [root@localhost ~]# 
    Broadcast message from root@localhost.localdomain (Thu Nov 22 07:07:56 2012):
    
    amani1::1001:503::/home/amani1:/bin/bash 
    amani2::1002:503::/home/amani2:/bin/bash

      3)2> 错误输出重定向

        范例:cp -R /usr /backup/usr.bak 2> /bak.error  备份/usr目录,如果出错,将错误信息输出到bak.error

    查看一个不存在的目录,会在屏幕上提示错误信息
    [root@localhost ~]# ls /aaaa
    ls: cannot access /aaaa: No such file or directory
    
    将错误信息重定向到ls.err文件
    [root@localhost ~]# ls /aaaa 2> ls.err
    [root@localhost ~]# cat ls.err
    ls: cannot access /aaaa: No such file or directory
    [root@localhost ~]#

     

    5、管道

      将一个命令的输出传送给另一个命令,作为另一个命令的输入。

      使用方法:

        命令1|命令2|命令3|......|命令n

      如:

        ls -l /etc | more

        ls -l /etc | grep init

        ls -l /etc | grep init | wc -l

    将ls -l /etc 命令输出的内容传给more命令分页浏览
    
    [root@localhost ~]# ls -l /etc | more
    total 1720
    drwxr-xr-x.   3 root root   4096 May  6  2012 abrt
    drwxr-xr-x.   4 root root   4096 May  6  2012 acpi
    -rw-r--r--.   1 root root     45 Nov 22 08:19 adjtime
    -rw-r--r--.   1 root root   1512 Jan 12  2010 aliases
    -rw-r--r--.   1 root root  12288 May  6  2012 aliases.db
    drwxr-xr-x.   2 root root   4096 May  6  2012 alsa
    drwxr-xr-x.   2 root root   4096 May  6  2012 alternatives
    -rw-r--r--.   1 root root    541 Jul 18  2011 anacrontab
    -rw-r--r--.   1 root root    148 May 14  2009 asound.conf
    -rw-r--r--.   1 root root      1 Jun 24  2011 at.deny
    drwxr-x---.   3 root root   4096 May  6  2012 audisp
    drwxr-x---.   2 root root   4096 May  6  2012 audit
    drwxr-xr-x.   4 root root   4096 May  6  2012 avahi
    drwxr-xr-x.   2 root root   4096 May  6  2012 bash_completion.d
    -rw-r--r--.   1 root root   2681 Sep 23  2011 bashrc
    drwxr-xr-x.   2 root root   4096 Dec  7  2011 blkid
    drwxr-xr-x.   2 root root   4096 May  6  2012 bluetooth
    drwxr-xr-x.   2 root root   4096 May  6  2012 bonobo-activation
    -rw-r--r--.   1 root root     27 Dec  8  2011 centos-release
    drwxr-xr-x.   2 root root   4096 Nov 10  2010 chkconfig.d
    drwxr-xr-x.   5 root root   4096 May  6  2012 ConsoleKit
    drwxr-xr-x.   2 root root   4096 May  6  2012 cron.d
    --More--
    
    
    将ls -l /etc 命令输出的内容传给grep命令查找出含有init的行
    [root@localhost ~]#  ls -l /etc | grep init
    drwxr-xr-x.   2 root root   4096 May  6  2012 init
    lrwxrwxrwx.   1 root root     11 May  6  2012 init.d -> rc.d/init.d
    -rw-r--r--.   1 root root    884 May  5  2012 inittab
    lrwxrwxrwx.   1 root root     15 May  6  2012 rc.sysinit -> rc.d/rc.sysinit
    [root@localhost ~]# 
    
    
    将ls -l /etc 命令输出的内容传给grep命令查找出含有init的行,
    再把grep命令输出的内容传送给wc -l命令进行统计有多少行
    
    [root@localhost ~]# ls -l /etc | grep init | wc -l
    4
    [root@localhost ~]# 

    6、命令连接符

      1);  用;间隔的各命令按顺序依次执行

    例如,显示当前所在目录,然后显示当前目录有什么文件,最后显示系统时间
    [root@localhost ~]# pwd;ls;date
    /root
    2012             Documents           Music                Templates
    a b              Downloads           Pictures             test
    abc              install.log         Public               user.info
    anaconda-ks.cfg  install.log.syslog  sudo-1.8.4p4         Videos
    Desktop          ls.err              sudo-1.8.4p4.tar.gz
    Fri Nov 23 05:34:04 PST 2012
    [root@localhost ~]#

      2)&&  前后命令的执行存在逻辑与关系,只有&&前面的命令执行成功后,它后面的命令才被执行

    例如,给Lily发送一封情书,情书发送成功就删掉
    [root@localhost ~]# write Lily < /root/love.txt && rm /root/love.txt
    
    先执行ls命令,执行成功后再执行pwd
    [root@localhost ~]# ls && pwd
    2012             Documents           Music                Templates
    a b              Downloads           Pictures             test
    abc              install.log         Public               user.info
    anaconda-ks.cfg  install.log.syslog  sudo-1.8.4p4         Videos
    Desktop          ls.err              sudo-1.8.4p4.tar.gz
    /root
    [root@localhost ~]# 
    
    
    先执行la命令,由于没有la命令,就会执行出错,后面的pwd命令就不会执行
    [root@localhost ~]# la && pwd
    bash: la: command not found
    [root@localhost ~]# 

      3)||  前后命令的执行存在逻辑或关系,只有||前面的命令执行失败后,它后面的命令才被执行

    先执行ls命令,执行成功,后面的pwd命令就不会执行了
    [root@localhost ~]# ls || pwd
    2012             Documents           Music                Templates
    a b              Downloads           Pictures             test
    abc              install.log         Public               user.info
    anaconda-ks.cfg  install.log.syslog  sudo-1.8.4p4         Videos
    Desktop          ls.err              sudo-1.8.4p4.tar.gz
    
    先执行la命令,由于没有la命令,就会执行出错,后面的pwd命令就会执行
    [root@localhost ~]# la || pwd
    bash: la: command not found
    /root
    [root@localhost ~]#

    7、命令替换符

      将一个命令的输出作为另一个命令的参数

      格式:命令1 `命令2`   `是键盘上数字1左边的那个撇号

      如:ls -l `which touch`

    which touch命令的输出就作为 ls -l 的参数
    [root@localhost ~]# ls -l `which touch` -rwxr-xr-x. 1 root root 50644 Dec 7 2011 /bin/touch [root@localhost ~]#

       

  • 相关阅读:
    Nbimer族助手 部分控件不能用的解决方法(转)
    jquery中通过全局变量来禁止多次ajax请求
    Three.JS 从世界坐标系转换到屏幕坐标系
    php 判断是手机版还是电脑端
    6个html5页面适配iphone6的技巧
    http://stackoverflow.com/questions/6065169/requestanimationframe-with-this-keyword
    javascript模仿php 函数 trim ltrim rtrim (原创)
    JavaScript中Trim(),TrimStart(),TrimEnd()的实现
    如何定位摄像机,使物体在屏幕上始终具有相同的像素宽度和高度?(threes)
    鸿基台式机安装
  • 原文地址:https://www.cnblogs.com/luxh/p/2783515.html
Copyright © 2011-2022 走看看