linux基础命令二

alias:命令别名

alias:显示当前shell进程所有可用的命令别名
alias NAME="VALUE"
      定义别名NAME,其相当于执行命令VALUE
      [ps:在命令行中定义的别名,仅对当前shell进程有效,如果想永久有效,要定义在配置文件中
      仅对当前用户:~/.bashrc
      对所有用户有效:/etc/bashrc
      ps:编辑配置给出的新配置不会立即生效
      bash进程重新读取配置文件:
            source /path/to/config_file
            /path/to/config_file
撤销别名:unalias
      unalias [-a] name [name ...]
      ps:如果别名同原命令的名菜,则如果要执行圆明路,可使用"\COMMAND"

文件名通配符:*,?,[]

*:任意长度的任意字符
?: 任意单个字符
[]: 匹配指定范围内单个字符
    [0-9]
    [a-z]:不区分大小写
[^]:匹配指定范围外的任意字符
    [^0-9a-z]
专用字符集合:
    [:digit:]:任意数字,相当于0-9
    [:lower:]:任意小写字母
    [:upper:]:任意大写字母
    [:alpha:]:任意大小写字母
    [:alnum:]:任意数字或字母
    [:space:]:空格
    [:punct:]:标点符号

 bash的快捷键

  • ctrl+l:清屏,相当于clear
  • ctrl+a:光标跳至命令首部
  • ctrl+e:跳转至命令结尾
  •  ctrl+c:取消命令执行
  •  ctrl+u:删除命令行首至光标所在处的所有内容
  •  ctrl+k:删除光标所在处至命令行尾部的所有内容

I/O重定

 打开的文件都有一个fd:file descriptor(文件描述符)
        标准输入:keyboard,0
        标准输出:monitor,1
        标准错误输出:monitor,2
        I/O重定向:改变标准位置
        输出重定向:COMMAND > NEW_POS,COMMAND >> NEW_POS
            >:覆盖重定向,目标文件中的内容会被清除
            >>:追加重定向,新内容会追加至目标文件尾部
        set -C:禁止将内容覆盖输出至已有文件中:
            强制覆盖:>|
        set +C:允许
        2>:覆盖重定向错误输出数据流
        2>>:追加重定向错误输出数据流
        标准输出和错误输出各种定向至不同位置:
            COMMAND > /path/to/file.out 2> /path/to/error.out
        合并标准输出和错误输出为同一个数据流进行重定向:
            &>:覆盖重定向
            &>>:追加重定向
            COMMAND > /path/to/file.out 2>&1
            COMMAND >> /path/to/file.out 2>&1
        输入重定向:<
            tr命令:转换或删除字符
                tr [OPTION]... SET1 [SET2]
        HERE Documentation:<<
            cat << EOF
            cat > /path/to/somefile << EOF

I/O 管道

 COMMAND1 | COMMAND2 | COMMAND3 |...
 cat /etc/fstab | tr 'a-z' 'A-Z'
 ps:最后一个命令会在当前shell进程的子shell进程中执行

 tee 数据重定向

 tee [OPTION]... [FILE]...
-a:向文件中重定向时使用追加模式;
-i:忽略中断(interrupt)信号

 文本处理工具 

 wc:统计

 wc [OPTION]... [FILE]...
 wc [OPTION]... --files0-from=F
    -l:lines
    -w:words
    -c:characters

 cut:字段切分 

 cut OPTION... [FILE]...
    -d:delimiter 指明分隔符
    -f FILEDS:
    #:第#个字段
    #,#[,#]:离散的多个字段,例如,1,3,6
    #-#:连续的多个字段,例如1-6
    混合使用:1-3,7
     --output-delimiter=STRING:指明输出的分隔符

 sort:排序

 sort [OPTION]... [FILE]...
       -f:忽略字符大小写
       -r:逆序
       -t DELIMITER:字段分隔符
       -k #:以指定字段为标准排序
       -n:以数值大小排序
       -u:uniq,排序并去重

uniq:去重

 uniq [OPTION]... [FILE]...
      -c:显示每行重复出现的次数
      -d:仅显示重复过的行
      -u:仅显示未曾重复的行
ps:连续且完全相同方为重复

 find:文件查找

 find [OPTION]... [查找路径] [查找条件] [处理动作]
 查找路径:指定具体目标路径,默认为当前目录
 查找条件:指定的查找标准,可以文件名,大小,类型,权限,属主属组等标准进行,默认为找出指定路径下的所有文件
 处理动作:对符合条件的文件做什么操作;默认输出至屏幕
 查找条件:
         根据文件名查找:
                        -name "文件名称":支持使用glob
                            *,?,[],[^]
                        -iname "文件名称":忽略大小写
                        -regex "PATTERN":以PATTERN匹配整个文件路径字符串,而不仅仅是文件名
         根据属主属组查找:
                        -user USERNAME:查找属主为指定用户的文件
                        -group GROUPNAME:查找属组为指定组的文件
                        -uid UserID:查找属主为指定UID号的文件
                        -gid GroupID:查找属组为指定GID号的文件
                        -nouser:查找没有属主的文件
                        -nogroup:查找没有属组的文件
          根据文件类型查找:
                        -type TYPE:
                            f:普通文件
                            d:目录
                            l:符号链接
                            s:套接字
                            b:块设备
                            c:字符设备
                            p:管道
          组合条件:
                        与:-a
                        或:-o
                        非:!或-notvv23
                        !A -a !B = !(A -o B)
                        !A -o !B = !(A -a B)
                        找出/tmp目录下,属主不是root,且文件名不是fstab的文件
                            find /tmp \( -not -user root -a -not -name 'fstab' \) -ls
                            find /tmp -not \( -user root -o -name 'fstab' \) -ls
          根据文件大小:
                        -size [+|-]#UNIT
                            常用单位:k,M,G
                            #UNIT:(#-1,#],大于#-1,小于等于#
                            -#UNIT:[0,#-1]
                            +#UNIT:(#,oo)
          根据时间戳:
                        以天为单位:
                            -atime [+|-]#
                                #:[#,#+1)
                                +#:[#+1,oo]
                                -#:[0,#)
                            -mtime
                            -ctime
                        以分组为单位:
                            -amin
                            -mmin
                            -cmin
          根据权限查找:
                        -perm [/|-]MODE
                            MODE:精确权限匹配
                            /MODE:任何一类对象(u,g,o)的权限中,只要能一位匹配即可
                            -MODE:每一类对象都必须同时拥有为其指定的权限标准
                                -666:
          处理动作:
                        -print:默认的处理动作,显示至屏幕
                        -ls:类似于ls -l
                        -delete:删除查找到的文件'
                        -fls /path/to/somefile :查找到的所有文件的长格式信息保存至指定文件
                        -ok COMMAND {} \;对查到的每个文件执行由COMMAND指定的命令
                            对每个文件执行命令之前,都会交互式要求用户确认
                        -exec COMMAND {} \;对查找到的每个文件执行由COMMAND指定的命令
                            {}:用于引用查找到的文件名称自身
                                find /tmp -cmin -5 -exec mv {} {}.new \;  #改文件名
                        ps:find传递查找到的文件至后面指定的命令时,查找到所有符合条件的文件一次性传递给后面的命令
                        有些命令不能接受过多参数,此时命令执行可能会失败,另一种方式可规避此问题
                            find | xagrs COMMAND 

 示例

查找/var目录下属主为root且属组为mail的所有文件或目录
    find /var -user root -a -group mail 
    find /var -user root -group mail  #-a可以省略
查找/usr目录下不属于root,bin,hadoop的所有文件或目录
    find /usr -not \( -user root -o -user bin -o -user hadoop \)
    find /usr -not -user root -a -not -user bin -a -not -user hadoop
.查找/etc目录下最近一周内其内容修改过,同时属主不为root,也不是Hadoop的文件或目录
    find /etc -mtime -7 -a -not \( -user root -o -user hadoop \) 
查找当前系统上没有属主或属组,且最近一个周内未曾被访问过的文件
    find / -nouser -a -nogroup -a -atime -7
查找/etc目录下大于1M且类型为普通文件的所有文件
    find /etc -size +1M -type f
查找/etc目录下所有用户都没有写权限的文件
    find /etc -not -perm +222
查找/etc目录下至少有一类用户没有执行权限的文件
    find /etc -not -perm -111
查找/etc/init.d目录下,所有用户都有执行权限,且其他用户有些权限的文件
    find /etc/init.d -perm -113    

 

          

          

posted @ 2019-01-15 21:34  Coolc  阅读(162)  评论(0编辑  收藏  举报