zoukankan      html  css  js  c++  java
  • linux shell命令

    别名:

    alias ll="ls -l"

    命令的查找步骤:

    1. 如果是使用相对命令(如./command直接执行当前目录下的command文件),那么直接在当前目录下找到这个文件并执行。
    2. 绝对命令(如/usr/mysql/command)的方式,那么直接执行这个文件。
    3. 如果没有使用绝对路径,也没有./,那么先查看有没有设置的alias,否则就去PATH环境变量配置的路径下寻找,然后执行第一个寻找到的文件。

    所以,如果不是在PATH中配置的目录中的文件,不能直接使用名字执行,要在相应目录下使用./执行。

    关于login shell和non-login shell

    • login shell是登录的时候获取的shell环境。

    login shell只会触发/etc/profile和~/bash_profile。

    其中~/bash_profile会调用~/.bashrc。

    • non-login shell会在不需登录而获取的shell。如直接执行bash命令。

    non-login shel只会调用~/.bashrc

    通配符和特殊符号

    #通配符

    通配符和正则不一样,正则只能用在grep中,而且更加复杂一些。通配符可以用在普通命令的参数(如文件名参数)中。

    符号==>  ? , * , [] , [-] , [^]

    各符号说明;

    • ?           ==>     匹配任何一个单独的未知字符.
    • *              ==>     匹配任何数目的未知字符.
    • []             ==>     匹配[]内所指的任何一个单独的字符.
    • [-]            ==>     匹配[-]所指的范围内任何一个单独的字符.(字符一般位数字,如[1-9])
    • [^]           ==>     匹配非[^]的所指的任何一个单独字符.

     

    范例:

    删除当前目录下的所有文件

    [laopi@Think ~]$ rm ./*

    删除当前目录下文件名刚好五个字母的文件

    [laopi@Think ~]$ rm ./?????

    删除当前目录下文件名含有数字的的文件

    [laopi@Think ~]$ rm ./*[0-9]*              <==注意中括号两边均有*

    删除当前目录下文件名不含abc中任意字母的文件

    [laopi@Think ~]$ rm ./*[^abc]*             <==注意中括号两边均有*

    删除当前目录下文件名非小写字母开头的文件

    [laopi@Think ~]$ rm ./[^a-b]*              <==注意中括号右边均有*

     

    #特殊符号

    符号与说明;

    #          <==批注符号,这个最常使用在脚本当中,视为说明后面的数据均不执行.

             <==转义符号,将特殊符号或通配符还原成一般字符.

    |          <==管道,分隔两个管道命令的界定.

    ;          <==连续命令的分隔符.

    $          <==使用变量前导符.

    !          <==逻辑运算意义上的"非"

    /          <==目录符号.

    > 和>>       <==数据流定向,输出向导,分别为替换和累加.

    < 和<<       <==数据流定向,输入向导.

    ''         <==单引号,不具有变量置换功能.

    ""         <==双引号,据有变量功能.

    ``         <==两个`中间为可以先执行的命令,也可以用$()替换

    -          <==后面接命令参数

    输出流重定向

    [root@localhost ~]# ll -a > lla.txt

    [root@localhost ~]# cat lla.txt

    总用量 2288

    dr-xr-x---. 14 root root 4096 8月 16 00:55 .

    drwxr-xr-x. 20 root root 4096 8月 15 22:01 ..

    -rw-------. 1 root root 1047 5月 26 06:21 anaconda-ks.cfg

    -rw-------. 1 root root 7670 8月 15 23:41 .bash_history

    -rw-r--r--. 1 root root 18 12月 29 2013 .bash_logout

    -rw-r--r--. 1 root root 176 12月 29 2013 .bash_profile

    还有输入流重定向,就不在研究了。

    一条语句执行多个命令

    不考虑成功失败:command1; command2

    第一个成功就执行下一个: command1&& command2

    第一个失败就执行下一个: command1|| command2

    管道命令

    使用|将一个命令的结果作为参数传给下一个命令。

    特殊场景,管道中-的用途:

    某些命令需要用到文件名 (例如 tar) 来进行处理时,该 stdin 与 stdout 可以利用减号 "-" 来替代, 举例来说:

    [root@www ~]# tar -cvf - /home | tar -xvf -

      上面这个例子是说:『我将 /home 里面的文件给他打包,但打包的数据不是纪录到文件,而是传送到 stdout; 经过管线后,将 tar -cvf - /home 传送给后面的 tar -xvf - 』。后面的这个 - 则是取用前一个命令的 stdout, 因此,我们就不需要使用 file 了!

     

    xargs

    xargs将管道的结果按照空格符或者换行符分割后,逐个传递给下一个命令。

    在第一个命令的结果,对于第二个命令来说,是多个参数,要调用第二个命令多次的时候,xargs就派上用场了。

     

     

  • 相关阅读:
    ubuntu 16.04 连接无线网络
    linux的内存管理-抛砖引玉
    linux的进程调度-抛砖引玉
    AliOS Things 异步事件框架Yloop
    AliOS Things 云端物联网操作系统
    linux performance tools
    linux进程调度
    linux 内核Lockup机制浅析
    cache和内存屏障
    linux设备模型及实例
  • 原文地址:https://www.cnblogs.com/xiaolang8762400/p/7368486.html
Copyright © 2011-2022 走看看