开发人员的 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
         

posted @ 2013-01-03 11:22  琴水玉  阅读(440)  评论(0编辑  收藏  举报