鸟哥的私房菜-Linux命令总结

来源:互联网 发布:对接软件的php会员源码 编辑:程序博客网 时间:2024/06/07 19:31
1.文件或目录操作(要熟记的)

    mkdir 创建目录,-m表示创建时就制定mod 如 mkdir 711 xxx.txt;-p表示级联创建上层不存在的目录

    rmdir 移除空目录,如果非空目录就要rm -r xxx递归删除

    mv 移动或重命名现有目录或文件,如果没有指定目标路径就是重命名了(也可多个,同cp)常用参数f-强制覆盖 i-询问 u-如果比现有的新才覆盖。

    rm 删除文件或目录

    cp [-adfrsu] 源文件 目标文件:复制 cp可以复制多个文件到目录(如cp -air f1,f2 /home),常用参数a-复制属性且递归 i-提示是否覆盖 r-递归

    cd [相对路径或绝对路径]:切换目录,同dos,/表示根目录,../之类表示相对路径

    pwd 显示当前工作目录

    touch 更改文件或目录的时间

    tree 以树状显示文件目录,如果少的话,比ls好

    ls 列出目录内容,最常用之一,-al最常用

      -l:long详细信息

      -a:all,所有文件+子目录

      -c:以时间顺序显示

      -d:只显示目录

      -m:以逗号间隔

      -n:只显示文件或目录的名称

      -t:以更改时间为序显示
    ln:创建硬/软链接,软链接类似快捷方式
2.查看文件内容

    cat:连接并输出文件内容,-n可制定行号,等同nl命令。但是一次性显示,太多,一般用more/less,有个比较好用的是定向 cat...>>...

    tac:反序输出文件内容

    more:分页显示文件。ctrl+f/空格向下翻一页,回车向下一行,ctrl+b向上翻一页但对管道无用;

    less:分页显示文本,可前后翻,优于more。pageup/pagedown,上下左右箭头,/?下上搜索字符串,n/N在搜索结果中向前向后搜索,q退出;优于more

    head -n 数字 文件名:-n 10 显示前n行,-n -100 100行以前的

    tail -n 数字 文件名:-n 10 显示后n行, -n +100 100行以后的。

    nl:按行号显示文本内容,等效cat -n

    od:按照不同的进制显示文件内容
        
3.查找文件

    find [路径][参数]

    locate 范本样式:比find快,因为从数据库中查询

    whereis [可选] 文件:用于查找二进制,说明文件,source文件。

    which [可选] 文件:只能查找在$PATH路径下的执行文件

4.文件隐藏属性attr(很重要,尤其系统安全上,只支持ext2/ext3文件系统)

    lsattr [-adR] 文件或目录:查看隐藏属性

    chattr [+-=][ASacdistu] 文件或目录名:修改隐藏属性,其中比较重要的是:

          a:设置此属性后将只能增加,不能删改数据,只有root有此权限;

          i:设置此属性之后将不能增删改,只有root有此权限。

5.文件权限(rwx)

    chgrp:改变用户组

    chmod:改变rwx权限,需要制定u,g,o,a,不只是421哦~例如 chmod o-x,g=7 aaa.txt

    chown:改变owner甚至用户组

linux文件或目录的ls命令显示出来文件的权限共10个字符,第一个是文件类型,d是目录,-是文件,l是链接文件,b存储目录,c是串行设备如鼠标键盘;剩下的9个3个一组,分别是user,group,other,每组都有rwx的值。所以chmod命令相对多一点儿,另外,其他连个指令是需要root权限的。

6.文本操作(极重要)

    vim [可选] [文件](vi的升级版,增加高亮等)

    -n:表示从第n行显示

    如何只看后几行

    vim三种工作模式:命令行模式,输入模式,末行模式

    >1.命令行模式

        ctrl+b:上翻一页,ctrl+f:下翻一页(pageup/pagedown)

        j:上移一行,k:下移一行(上下左右箭头)

        o:移至行首,$:移至行尾(home/end)

        {:光标移至前一个开始花括号,}:光标移至下一个结束花括号(调程序相当有用)

         W/w:光标移至下一个字符

        

        y+w:复制光标所在字符串(word)

        y+y:复制光标所有行

        p:在光标处插入

        n+y+y:复制光标所在行+后面(n-1)行

 

        d+d:删除光标所在行

        n+d+d:删除光标所在行+后面(n-1)行

总结:复制用y,删除用d,行用y,单词用w,插入用p,上下左右箭头在vim里不能用吗?

>2.输入模式(指定开始插入的位置)

        Append:

        A:在当前光标所在行行尾追加

        a:.....................字符后追加

        Insert:

        I:.....................行的行首插入

        i:.....................处插入

        O:open

        O:.....................行的上方新增一行插入

        o:.....................行的下方新增一行插入

>3.末行模式(保存退出等)

        :n 加载文件(new)

        :w 保存文件

        :w newfile 另存为

        :wq 保存并退出

        :w!强制保存,对只读文件有用

        :q退出

        :q!强制退出

        :!强制执行(执行什么?)

        :/ 查找匹配字符串,高亮显示,n向下找,N向上找,好像look也可以。。。 
vim环境设置:

        set nu在每行开头显示行号(报错指定行号时有用)

        set none 取消行号 

7.文件备份归档和还原,压缩解压缩
      linux中每个设备都被当成一个文件来处理,所有的设备都要与某个文件树绑定,这就是装载。
      比较费解的是假设partition1给/,但是partition2给/home,所以如果想确定某个文件系统对应的分区,那就逆向找,遇到的第一个分区就是。

      linux中最常见的压缩命令就是gzip和bzip2,至于compress已经过时了,但是这俩命令指示压缩单个文件的,如果要打包就要用到tar,如果打包+压缩,那就tar+压缩参数。

      zip/unzip:zip压缩的后缀是.zip,指令没有解压缩功能,要用unzip

      gzip/gunzip/zcat:应用最广的压缩,后缀是.gz,可以解开compress,zip,gzip的压缩文件。gzip -d xxx可以解压缩,不需要用gunzip命令。语法:gzip [-cdtv#] 文件名 如gzip man.config,就生成了man.config.gz的文件,默认原文件就不存在了,加c参数就ok了。zcat是不解压直接读取压缩文件中的文本文件的命令。

      bzip2/bunzip2/bzcat:优于gzip,不替代原文件的参数是k,其他与gzip同。

      tar:打包命令,可以在打包的同时压缩,常见用法如下(-f参数一般单独用):
            tar [-j|-z] [cv] [-f 新建的文件名一般是.tar.gz/bz2] 原始文件 -打包+压缩
            tar [-j|-z] [tv] [-f 新建的文件名] -查看文件名 不解,为什么要加f参数?f是new的意思。。。
            tar [-j|-z] [xv] [-f 新建的文件名一般是.tar.gz/bz2] [-C 目录] -解压缩到特定目录

      dump:

      restore:

      cpio:可以备份任何东西但是不会主动找文件所以要配合使用find。

8.用户信息

      useradd:新建用户,比如useradd sky,默认情况下没有密码,需要passwd设置密码,groupadd是增加用户组。

      passwd:设置密码,所有用户均可使用。普通用户只能修改自己的,root可以重置所有的,而且无需指定旧密码。

      finger [可选][用户名],比如finger sky vbird,没有逗号的哦~~

      fwhois [用户名]:有局限性,需要在数据库中注册的用户才可以查到

      ID:显示用户的ID以及所属群组的ID,用法直接id就是当前用户的信息,或者id 用户名,比如id sky

      w/who:用来查看目前在系统上的用户,两者差不多,只是w更多,可以列出IP,工作内容等

      whoami:查看当前用户,因为极力不推荐用root登录,而用su或sudo来管理,忘记身份时就用此查看。

      last:当前系统所有登录记录,不知当前用户。

      whois:

      su:身份切换命令,需要输入切换后身份的密码,所以容易密码流露,一般用sudo比较好。su root和su -的区别,前者无法使用init等,因为切换时环境变量等并没有随之改变,后者就变了。

      sudo:切换身份执行命令 sudo [-u] 用户名 命令,默认只有root有此命令的权限,所以需要添加,用到visudo命令

      visudo:该命令是root账号用vi打开/etc/sudoers文件,修改用的。如修改谁可以使用sudo命令。  

9.帮助命令

    man [要查询的命令]:
        pageUp/pageDown:上下翻页 Home/End:首页/尾页 /字符串:向上查找 ?字符串:向下查找 n/N:向上,向下寻找匹配结果 q:退出

    info [要查询的命令] 与man的区别是info是分段落的,而且还有类似超链接的东西来调到不同的页面。

10.系统指令

      clear:清屏

      history:显示历史命令,-n表示显示的个数

      date:显示或设置系统时间

      echo:输出

      exit:退出shell,不是关机咯。不是任何时候exit都是退出命令,如果su之后,再输入exit那就是exit su身份,继续回到最初的登录身份咯。
      
      file:查看文件类型,asci,date,binary等等,linux严格来说没有扩展名,有的那些只是为了方便并不具有严格意义,是否可执行看x,其他类型看file结果

      df:列出文件系统的整体磁盘使用量(du是评估)
          语法:df [-ahikHTm] [目录或文件名],一般用df -h,结果包括filesystem,size,used,avail,use%,mounted on(表示挂载到那个文件树)      
      
      fsck:检查并修复磁盘,除非系统出现重大问题,否则使用此命令有可能引发问题。而且必须确保被检查的文件是卸载状态。

      badblocks:检查损坏的区块      

      fdisk:观察硬盘使用情况并分割硬盘

      free:显示内存信息,可以指定单位,k,kb,mb(一般用-m),总共,以用,空闲,share,buffer,cache。

      mount/unmount:装载/卸载

      quota:显示磁盘配额,因为默认所有用户的主文件夹都在/home下,一般/home是单独挂载点,多用户共享磁盘,所以就存在合理分配空间配额的问题。高级管理,暂且不关注。

      quotacheck:

11.网络命令:
      ping:通dos的ping命令

      ifconfig:查看当前网址,相当于windows下的ipconfig

      route:

      netstat:

      host:

      nslookup:


13.开关机指令

      login:登录

      logout:退出

      init:执行等级,所有的开关机操作都可以通过此实现,0-关机 1-单用户 2-多用户 3-完整 4-一般不用 5-x-window 6-重启,root的权限咯

      logname:登录名

      sleep:

      sync:将数据同步写入硬盘,为了防止丢失数据,一般在关机之前执行一下此命令以防万一虽然shutdown/reboot/halt都会执行。

      shutdown:shutdown [-t 秒数][-arkhncFf] 时间 [警告信息](主要使用的命令)
                -t表示过几秒后关机的意思,好像很少用到
                -r表示停掉服务后再重启,等效reboot;
                -h表示停掉服务后再关机,等效halt;
                -k并不会真正关机,只是发送警告信息给所有登陆者
                时间是必备参数,now表示马上,+10表示10分钟以后
                相对于其他关机命令,shutdown会更安全的关机

      reboot:重启,相当于shutdown -r

      halt:相当于shutdown -h,区别不是很清楚。
     
      poweroff:断电,这是很危险的,会损坏系统或硬件。

14.进程相关指令

      ps:查看当前进程状况,一般ps aux(没有-哈)表示所有进程,会很多,用ps aux | less就可以分屏了,管道的东东。如果只是当前用户就ps -l,a表所有信息,l表当前用户相关,不过只看当前似乎没有意义哈。PID,CPU,mem,start time等等

      top:ps是静态查看某个时刻的进程状况,而top则是动态跟踪进程运行的状态。

      &:将屏幕中的命令放到后台执行: command &

      ctrl+z:将一个正在执行的命令放到后台执行,可不是windows下的撤销咯~

      jobs:查看当前有多少在后台运行的命令,-l可以查看任务的PID

      fg:将后台任务调制前台,

      bg:将前台暂停的任务继续执行,不是调到前台哈~fg和bg的 参数都是%+PID(结合jobs查看)

      kill:杀死进程,kill -sigal %PID,-9立刻终止不管死活;-15停止一个程序默认处置;-2中断该进程

      killall:killall 程序名而非PID,终止程序。通过ps或者pgrep查看哪些程序在运行。pkill差不多。

      ps/top:监视系统进程和资源使用情况的命令,ps使用更多些,top可以按照占用cpu或内存大小排序显示,

      at:作业

      crontab:
      
15.管道相关(很好很强大)
      很多命令的执行结果要经过好几道工序才能得到我们想要的结果,这个时候就要用到管道命令,比如一屏显示不下,或者数据结果很多时,管道的界定符是 |,这与连续执行命令是不同的,管道的处理结果是继续前面一个命令的输出,环环相扣的,而联系执行只是顺序关系,内容并不相关。要求是前一个命令要有标准输出,管道可以读取标准输入,处理完再标准输出。
      PS:管道是可以单独使用的咯,只需要最后加上文件名就行了。。。

      cut:选取命令,针对每行数据进行处理。
           语法cut -d '分割字符' -f 字段,比如 echo $PATH | cut -d ':' f 3,5(取第三和第五个字段)
               cut -c '字符范围',比如export | cut -c 12-,输出第12个以后的字符,12-20就是12-20个字符。
      grep:也是选取命令,cut选取每行中符合条件的字段,而grep是选取符合条件的整行。
               gerp [-acinv] [--color=auto] '查找字符串' 文件名字,c 计算字符串出现的次数,i 忽略大小写,n输出行号,v 非操作即没有... color是颜色显示,比如last | grep 'root' 包含root的行,last | grep -v 'root'不包含root的行
      这俩命令分析日志时很有用,比如cut取ip时,但是cut精确度比较高,所以多个空格就不太好办,grep就灵活多了。

      sort:对数据排序,有点找到数据库中的感觉,但是处理的是文本,蛮好~
           sort [-fbMnrtuk] 文件或stdin,f忽略大小写,n对数字排序默认是文本,r反序,t指定分隔符默认tab键,k取第几个字段进行排序,比如cat /etc/passwd | sort -t ':' -k 3 -n 以:作为分隔符对第三列做数字排序
     
      uniq:排重,重复的只显示一个,相当于数据库中的distinct。uniq [-ic] i忽略大小写,c是计数出现的次数,没有c就是distinct,加上c就是group by +count(1)。比如统计登录情况 last | cut -d ' ' -f 1 | sort |uniq -c(sort uniq顺序不同结果也不同咯)

      wc(word calculate):统计文件中字符的行数,字数。wc [-lwm] l行数 w字数 m字符数

      tee:双向重定向,可以让输出在屏幕和文件双向输出,tee [-a] file 很简单的一个命令,-a表示以append的方式输出到file中,认证考试中常考,看来很有用咯~~。

      tr:字符串替换命令。tr[-ds] 串1 [串2] -d是删除,-s是替换,替换可以实现-d的功能,''呗(没有''吧哈哈)。替换可以用正则,比如[a-z] [A-Z]

      col:替换tab键为空格和去掉/的,似乎一般用不到。expand会将tab转换成指定个数的空格,似乎没啥大用处。

      join:这是比较拽的功能,再没有数据库下处理文本很强大。join [-ti] -1 字段 file -2 字段 file2,如join -t ":" -1 4 /etc/passwd -2 3 /etc/group 以":"作为分隔符,将passwd中的第四列与group中的第三列如果相同就合并,合并后的分隔符还是: 不过语法给出的格式似乎挺别扭,应该把2放到后面才是。。。需要注意的是最好先进行排序,否则有些数据会被略过。

      paste:join是符合条件的连接,而paste是直接连接,用tab键分隔。

      split:在程序语言中是分隔字符串为数组的一个方法,linux下用处就大了,是把大文件分隔成小文件。语法 split [-bl][容量或行数] file prefix, -b是按容量进行分割,-l是按行进行切割,后面指定大小,prefix是生成的小文件的前缀,比如 cd /tmp;split -b 300k /etc/termcap mytest,然后ll -k mytest*,然后还可以再合并cat mytest* >>mytestall

      xargs:这是个蛮好的一个命令,比如ls不是管道命令,但是又想对前面的结果进行ls那就用xargs了,相当于数据库中temp用法,比如cut -d ':' -f 1 /etc/passwd |head -n 3 |xargs finger 查出密码前三行记录的用户信息。-p是个蛮好的参数,会对拆出的每条命令执行前进行询问。

      -:减号的作用,有点类似~,但是是指代的前一个操作的stdout或者stdin,比如 tar -cvf - /home | tar -xvf -前一个-表示将home文件打包但不记录到文件而是用-代表stdout,后面一个-表示前面传来的stdin,省掉了生成和读文件的操作,实际需要的只是中间结果。也蛮好的~

16.shell语法:
      if...then...else...fi

      case...in...esae

      for()do...done

      while()do...done

      until()do...done      

16.固定参数总结:

      -R:递归查询子文件夹

      -f:force,强制

      -i:info,提示信息,文本中i是ingnore忽略大小写的意思。

      -h:habit,常规的b,kb,mb,gb等表示,磁盘内存时是这个意思。

      -c:calculate,计算,管道中是这个意思。

      --version:版本信息

      --help:help信息

      lsXXX:列出,显示

      q:退出

      ctrl+c取消,中断

      Ctrl+d终止键盘输入,相当于exit

17.常见问题:
      >如果了解当前系统使用情况?
      who查看当前有谁在线,netstat查看网络状态,ps aux查看后台执行的程序(因为是终端模式,所以后台运行很正常,不像windows一目了然)

      >如何同时执行多个命令?分号间隔,写在同一行。比如sync;sync;reboot
      linux的命令格式:commond [options] [文件或目录等],不要反了2和3咯

      >硬盘坏了怎么办?
      执行fsck /home/xxx修复,需要注意的是正常情况下不要乱执行此命令,有可能破坏好的系统,且执行此命令时要卸载状态。
0 0
原创粉丝点击