• 开发人员的 Linux 命令学习清单



           作为一个开发人员,尤其是 服务端应用开发者, 掌握适量的 Linux 常用命令是非常有助于工作的。很多日常任务,比如查看服务器日志,数据文件处理、批量修改,不再需要使用主开发语言实现,而只需要掌握和使用一些命令和工具就可以了。不过,作为开发者和作为系统管理员, 学习 linux 命令工具的程度也显然是有差异的。

      

           作为开发者, 应该掌握如下使用频繁的 linux 命令工具:

            1.   文件目录相关:   ls, cp, rm , mv,  cat , head, tail ,  cd ,  pwd, mkdir ,  touch,  rename,  less,  find, which, locate,  chmod, chown, less, ln,  tar,  umask

            2.   文本处理:   grep, sed, awk, tr,  uniq,  sort,  join,  cut,  tee,  wc,  echo

            3.   进程查看:   ps,  top,  kill,   who,  

            4.    网络工具:  netstat ,  scp ,   ssh,  ping,   wget, ifconfig,  arp

            5.    环境设置与服务器软件:  apache,  set,  alias, . ,  source, sudo ,  su,  date,  read

            6.    帮助信息:  --help,  man ,   

            7.    其它:  xargs 

            总共也就  50 条左右的命令。


            使用 man cmdname | wc -l 可查看该命令说明有多少行,阅读前有个底。shift + g  可以直达 man 文档末尾。num+shift+g 可以直达第 num 行。  试一试:

            man ls | wc -l     243

            man find | wc -l  1572

            

            任务: 分别计算上述命令的MAN文档的行数

             STEP1:  将上述命令放置到一个文本文件中, 命令为 cmds.list  

    ls, cp, rm , mv,  cat , head, tail ,  cd ,  pwd, mkdir ,  touch,  rename,  less,  find, which, locate,  chmod, chown, less, ln,  tar,  umask
     grep, sed, awk, tr,  uniq,  sort,  join,  cut,  tee,  wc, 
    ps,  top,  fg,  kill,   who,  
    netstat ,  scp ,   ssh,  ping,   wget
    set,  alias, . ,  source, sudo ,  su,  date, 
     man ,
    xargs  

              STEP2:使用 tr 命令先将 ,  转化为 换行,并去掉空格和空行; 

                 $ tr ',' '\n' < cmds.list | tr -d ' ' | grep -v '^$' > result.mid

              STEP3:   使用简单 while&read 循环,输出每一个命令的man文档的行数

                 $  while IFS='' read CMD_NAME; do echo -ne $CMD_NAME "\t"; man $CMD_NAME | wc -l ; done < result.mid 

              STEP4:   整合: 重定向通常可以使用管道来替代。下面是完整命令

                 $ cat cmds.list | tr ',' '\n'  | tr -d ' ' | grep -v '^$' | while IFS='' read CMD_NAME; do echo -ne $CMD_NAME "\t"; man $CMD_NAME | wc -l ; done | sort -nrk 2 

    less 	1583
    less 	1583
    wget 	1579
    find 	1572
    ps 	1166
    top 	1158
    awk 	902
    ssh 	901
    man 	710
    grep 	636
    sudo 	520
    tar 	492
    netstat 	356
    ping 	340
    sed 	280
    xargs 	275
    ls 	243
    date 	204
    locate 	189
    cp 	172
    sort 	160
    scp 	156
    chmod 	146
    tr 	137
    chown 	125
    ln 	120
    rm 	108
    mv 	105
    kill 	104
    tail 	103
    join 	103
    who 	99
    touch 	93
    uniq 	89
    cut 	88
    cat 	82
    wc 	70
    head 	68
    umask 	67
    su 	66
    mkdir 	63
    rename 	57
    pwd 	57
    tee 	53
    which 	31
    source 	0
    set 	0
    fg 	0
    cd 	0
    alias 	0
    . 	0 

            注意到,一般命令MAN文档的行数(包括空行)在 100-400 之间,重量级的命令则有很详细的说明,约500- 2000 行 比如 find 近 1500 多行!  小型命令可以一个个选项地尝试, 掌握大型命令就要讲究技巧了。先掌握日常工作需要的那些,不必求全。

                       

           选项通用部分:
            1.    -q  静默方式, 不打印操作相关的任何信息;   -v  “罗嗦”方式, 打印操作相关信息

           常用命令:
            .  ls  列举目录内容(所含文件的元信息)
               -a 所有 -h 大小人类可读 -l 详细信息 -i 索引节点号 -m 以逗号分隔 -1 每行一个 -r 反序显示 -R 递归显示子目录内容 -t 按修改时间排序
            .  rm   删除文件或目录    (1)  -i ,  -I[once]  是否提示用户    (2)  -r ,  -R  删除目录时使用;  (3) -f  强制删除
            .  mv   移动文件或重命名。 记住语法格式即可
                     (1) mv srcName  destName  (2) mv src1 src2 ... destDirectory (3) mv -t destDirectory src1 src2 ...
            .  cp   复制文件或建立链接。 语法格式同 mv
                    -i 提示用户  -r 复制目录,递归复制  -s 建立软链接 -l 建立硬链接
            .  mkdir 若目录不存在,则根据指定目录名称创建目录;否则报错。
                 -p 指定目录路径上的目录若不存在,则创建相应目录,而不报错。eg. mkdir -p a/b 若目录 a 不存在,则先创建目录 a , 再创建目录 b. 
            .  
            .  which 定位命令的全路径 -a 显示匹配参数的所有路径  
            .  head  显示文件开头的指定部分,或者除去指定末尾的所有部分。 可以使用两种方式指定 -c 字节数,  -n 行数 ; 
                  eg.  head -n  5  data.txt 显示 data.txt 的前5行;  head -n -5 data.txt 显示 data.txt 除去最后5行的所有行  
            .  pwd 显示当前所在目录的全路径; cd 切换到指定目录
            .  cat 连接多个文件的内容并打印到标准输出。  -E 在行尾显示 $ ;  -n 在行头显示行号
            .  wc 统计指定文件。 -c 字节数  -m 字符数 -l 行数 -w 单词数 -L 最长行长度 
            .  tee 从标准输入中读取内容,并写到标准输出和指定的文件中; 用于将同一内容批量复制到多个文件中。
                   若存在则覆盖,不存在则创建 -a 追加内容而不是覆盖。 
            .  uniq 报告或删除重复行,常与 sort 连用。 -d 只打印有重复的行; -u 只打印没有重复的行; -c 统计行及重复出现的次数
                           -s N 比较时跳过前N个字符; -f N 比较时跳过前N个字段; -w N 只比较至多前N个字符 
            .  cut  打印文件每一行的选定部分到标准输出,作用单位是文件行。用于剪切指定内容。 
                    -b [range] 指定范围的字节  -c [range] 指定范围的字符 -f [range] 指定范围的字段 -d 指定字段分割符
                    范围指定: N 第N个 ;  N- 从第N个到末尾 ; -N 从第一个到第N个; M-N 从第M到第N个(边界包含) 
                    eg. cut -c 1-4 cmds.list 打印文件 cmds.list 中每一行的前4个字符; cut -f 2 cmds.list 打印第二个字段
            .  who 查看登录用户及运行概况 -u 用户列表 -b 系统启动时间 -r 运行级别  -q 登录用户数


        grep: 从指定文件中搜索匹配模式的行,并打印。 若没有指定,则从标准输入中读入内容。

               -A  Num  打印匹配行及接下来的 Num 行  -B Num 打印匹配行及之前的 Num 行
               -c  只打印匹配行数      --color 高亮显示匹配部分   
               -E  使用扩展正则表达式     -e PATTERN  使用 PATTERN 作为模式  -P 使用 perl 表达式
               -F  使用固定字符串匹配     -f inputfile 从指定文件中读取模式,每行一个
               -n  打印匹配行时显示行号   
               -H  搜索多个文件时,打印文件名   -h 不打印文件名
                -i  忽略大小写
                -l  只打印含有匹配的文件名    -L  打印没有任何匹配的文件名
                -r  递归搜索     -v 搜索不匹配的行   -x 选择完全匹配整行的行

         sed: 流编辑器, 使用指定编辑命令文本过滤和处理
              -e  script  使用 script 的编辑命令处理文件
              -f  script-file    使用 script-file 给出的命令集合编辑文件,每行一个编辑命令
              -i  就地编辑,直接改变所编辑的文件
              -r  在编辑命令中使用扩展正则表达式

             编辑命令  a 追加文本   i 插入文本  q 退出sed   s/regexp/replacement
             

  • 相关阅读:
    springboot配置redis缓存
    【spark】local模式运行
    mybatis从入门到精通(二) 增删查改
    学习设计模式
    学习设计模式
    mybatis从入门到精通(一) 入门
    学习NIO 之 使用方法
    学习 NIO 之 零拷贝
    Java并发
    学习设计模式
  • 原文地址:https://www.cnblogs.com/lovesqcc/p/4037784.html
Copyright © 2020-2023  润新知