LINUX运维常用命令详解一

1、ls
    文件属性: 
        -:普通文件 
        d:目录文件 
        b:块设备 
        c:字符设备文件 
        l:符号连接文件 
        p:命令管道 
        s:套接字文件 
    文件权限: 
        9位数字,每3位一组 
        文件硬链接次数 
        文件所属主(owner) 
        文件的属组(group) 
        文件大小(size),单位默认是字节 
    ls常用选项: 
        -l:显示文件属性,ls -l=ll 
        -h:做相应的单位转换显示 
        -a:显示所有文件 
        -A:显示.和..以为的所有文件 
        -d:显示目录自身属性 
        -i:显示文件的缩影接点号码(index node ,inode) 
        -r:逆序显示文件列表 
        -R:递归显示文件 
2、cd
    cd:change directory 
    cd:回到用户的家目录 
    cd ~username:进入指定用户的家目录 
    cd - :在当前目录和前一次所在的目录来回切换 
    cd ..:切换至其父目录 
3、printenv:显示当前环境变量信息

 

4、时间管理
    date:显示系统时间 
    clock:显示硬件时间 
    hwclock -W:把系统时间同步到硬件时间 
    hwclock -s:把硬件时间同步到系统时间 
    cal:显示日历 
5、命令帮助
    内部命令帮助:help COMMAND 
    外部命令帮助:man  COMMAND 
    命令手册:manual 
    whatis COMMAND:显示此命令在man帮助的哪个章节内。 
    ============================================================
    man的操作命令: 
    空格:向后翻一屏 
    b:向前翻一屏 
    ENTER:向后翻一行 
    k:向前翻一行 
    ============================================================
    关键字查找 
    /KEYWORD:向后查找关键字 
    ?KEYWORK:向前查找关键字 
    n:下一个关键字位置 
    N:前一个关键字 
    q:退出man帮助  
6、file
    file:用于查看普通文件和系统文件的类型
7、mkdir
    mkdir:创建目录 
    rmdir:删除目录 
       -p:递归创建 
       -V:显示创建信息  
8、rm
    rm:删除文件 
    -i:交互式删除 
    -f:暴力删除 
    -r:递归删除 
    命令可以组合利用 
9、touch
    touch:创建文件 
    -c:文件存在的时候不在创建 
    -a:只改变文件的访问时间 
    -m:只改变文件的修改时间 
    -t:自己设定文件的时间戳(年月日时分.秒),与a、m配合使用 
10、cp
cp:文件复制,规则:只有最后一个为目标。复制一个文件到一个文件  或者 多个文件
到一个目录! 
  cp /etc/passwd /tmp/   复制到目录下并保存原文件名 
  cp /etc/passwd /tmp/test 看test是文件还是目录,目录:负责到目录内,
文件则替换!
============================================================== 
  -r:递归复制目录 
  -i:交互式显示复制 
  -f:强制复制,覆盖 
  -p:保留源文件的属性,时间戳 
  -a:保留源文件的所有属性 
  -P:复制链接文件时保存为链接(默认是复制链接所指向的文件) 
  -d:复制时保持链接 
  -a:归档复制,常用与备份 
11、mv
    mv:移动或重命名文件 
    mv SRC(源) DEST(目标) 
    在统一目录下可以利用mv进行重命名: mv abc bcd 或者 mv -t 目标 源 
    12、cat 
    cat:连接并显示文件的信息,是全部显示文件内的信息 
      -n:在显示的时候可以显示行号,这个行号只是显示出来,跟文件内容没有  关系 
      -E:显示每一行的行结束符,所以linux中文本文件的行结束符是$符 
      -T:可以显示制表符 
      -v:显示其他的非打印字符 
      -A:显示所有的符号 
13、more 
    more:more的作用同cat是相同的,只不过这时我们可以通过手动来翻屏,更加方便
    ,more:只支持向后翻,翻到最后
    就直接退出了 
    less:显示文件信息,默认不退出显示,q即可退出 
      空格:向后翻一屏 
      b:向前翻一屏 
      ENTER:向后翻一行 
      k:向前翻一行 
    关键字查找 
      /KEYWORD:查找关键字 
14、head、tail
    head:显示文件的前几行,默认是10行 
      -NUM:显示前多少行 
    tail 
    tail:显示文件的后几行,默认是10行 
      -NUM:显示后多少行 
      -f:查看文件尾部,而且不退出,等待显示后续追加的新内容; 
15、cut
    cut:用于剪切数据的内容 
      -d:指定字段分隔符,默认的是空格  cut -d: -f7 空格符 cut -d'' 
      -f:指定要剪切显示的字段 
      -f 1  表示显示第一个字段  cut  -f1 
      -f 1,3表示显示第一个和第3个字段 
      -f 1-3表示显示从1到3的字段 
16、sort 、uniq、wc
    sort:文本排序,仅仅是对显示文件的排序,而不影响源文件的顺序,是根据ASSII码
    的字符升序来排列的。 
      -n:安装数值大小从小到大排列 
      -r:降序排列 
      -t:指定字段分隔符 
      -k:从哪个字符开始,就是指定关键字排列 
      -u:相同的行只显示一次 
      -f:忽略字符大小写 
    ================================================================
    uniq:报告或者忽悠重复行 
      -d:只显示重复行 
      -c:显示某一行的重复次数 
    ================================================================
    wc:文本统计,可以统计文件中一共有多少行数,多少个单词数,多少个字节数 -l:只显示行数 -w:只显示单词数 -c:只显示字节数 -L:显示最长的一行包含多少个字符

17、tr
    tr:转换或删除字符 
     tr [OPTION]...SET1 [SET2] 
      例如# tr ab AB   把小写ab都换位大写AB 
      -d:可以实现删除出现在字符集中的所有字符  
18、aliase
    aliase:定义shell命令的别名   alias CMDALIAS=COMMAND   unalias CMDALIAS是撤销命令别名
19、权限
    权限: r 、w 、x   文件:   r:可读,可利用类似 cat等命令查看文件内容   w:可写,可以编辑或删除此文件   x:可执行,可以再命令提示符下当做命令提交给内核运行。   目录:   r:可以对此目录执行LS以列出内部的所有文件   w:可以在此目录中创建文件   x:可以使用cd切换进此目录,也可以使用ls -l查看内部文件的的详细信息。
20、useradd 
    useradd NAME:增加用户     -u UID:指定用户所属主ID     -g GID:指定基本组ID或者组名(此组必须首先存在才能用)     -G GID:定额外组(附加组),可以指定多个,彼此之间用逗号隔开即可(此附加组必须首先存在才能用)     -c "COMMENT"指定注释信息     -d /path/to/somedirectory指定用户的家目录,不用的时候默认在home下面建立一个和用户同名的目录。     -s 指定shell,路径最后是etc/shells文件内规定的shell路径。     -M 不给用户创建家目录     -r 创建一个系统用户,共系统调用,并不建立家目录 userdel USERNAME:删除用户             (不加参数时,默认不删除用户的家目录)     -r :删除用户的同时也删除家目录
21、id
    id命令:查看当前用户的id信息     -g USERNAME:查看用户的gid     -u USERNAME:查看用户的uid     -G USERNAME:查看用户的所有组     -un:显示当前用户的用户名    -gn:显示当前用户的组名
22、finger 
    finger命令:查看用户账户信息     finger USERNAME
24、用户账户属性管理
    usermod:修改账户的属性   usermod [option] USERNAME     -u:修改UID     -g:修改GID     -G:修改附加组     -a -G:增加附加组,不覆盖之前的附加组     -c:修改用户的注释信息     -d:为用户知道新的家目录     -d -m :指定信家目录并移动此前家目录的文件至新的家目录内     -s:修改用户的默认shell     -l:修改用户名     -L:锁定用户账户     -U:解锁账户
25、用户密码管理
    passwd USERNAME      -l:锁定账户      -U:解锁账户      -d:删除用户密码      -n:用户密码最短时间      -x:用户密码最长使用时间    pwck:检查用户账户完整性
26、组管理
    groupadd:新建组  groupadd [option] GROUPNAME     -g :GID指定GID     -r :添加为系统组  groupmod:组属性  groupmod [option] GROUPNAME    -g GID:修改gid    -n NAME:修改组名  gpasswd:修改组密码  gpasswd GROUPNAME
27、chage 
    chage:更改用户账户信息    -d:最后一次修改时间    -E:过期时间    -I:非活动时间    -m:最短期限    -M:最长期限    -W:警告时间
28、chown 
    chown:改变文件属主、属组,只有管理员是也此命令  chown USERNAME file....(只改变目录本身)     -R 递归修改(修改目录及其内部文件的属主)     --reference=/path/to/somefile file... 把file的属主设定为与somefile的属主一样(不需要指定属主)    chown USERNAME:GRPNAME fiel... 同时改变属主和属组    chown USERNAME,GRPNAME fiel... 同时改变属主和属组    chown :GROUPNAME fiel....   修改属组
29、chgrp
    chgrp:修改文件属组  chgrp GROUPNAME file....(只改变目录本身)     -R 递归修改(修改 目录及其内部文件的属组)      --reference=/path/to/somefile file... 把file的属主设定为与somefile的属组一样(不需要指定属组)
30、chmod 
    chmod:修改文件的用户权限  chmod MODE file...     -R:递归修改     --reference=/path/to/somefile file...     chmod 755 file...  修改某类用户的某些权限   u:属主   g:属组   o:其他   a:所有     chmod 用户类别=MODE fiel..     chmod u=wr,g=w /fiel..     chmod uo=wr /file..  修改某类的用户某位或某些位权限     chmod 用户类别[-/+]MODE fiel..
31、echo
    echo:输出信息   echo "abc"   echo "字符串" | passwd --stdin USERNAME:利用管道修改用户密码
32、输入、输出重定向
    输出重定向
        :> 覆盖输出(会覆盖原文件内的内容)     
        : >> 追加输出(不覆盖原文件的内容)     
        set -C :禁止对已经存在文件使用覆盖重定向     
        set +c :关闭上述功能     
        2>:重定向错误输出,不能输出正确信息     
        2>>:追加方式实现错误输出     
        &>:重定向标准输出或错误输出至同一个文件。 时覆盖方式     
    输入重定向:<      
        <<:此处生成文档     
        cat << END :输入信息,直至输入END时结束。(EOF或者END代表文档输入结束)     
        cat >> /tmp/myfile.txt << END
33、grep
    grep:根据模式,搜索文本,并将符合模式的文本行显示出来 
       -i 忽略大小写    --colour(color)颜色显示
       -v 反向查找,显示没有被模式匹配的行
       -O 只显示被模式匹配的字符串
34、sed
    sed:流编辑器,把文本中的某一行读取到内存中进行处理,此内存空间称为模式空间。默认不编辑原文件,只对模式空间内的数据进行处理,处理结束后,将没模式空间打印至屏幕    sed 'AddressCommand'  file...
        -n :静默模式,不在显示模式空间中的内容
        -i :直接修改原文件
        -e :(-e SCRIPT -e SCRIPT) 可以同时执行多个脚本
        -f /PATH/TO/SED_SCRIPT: sed -f /path/to/sed_script file :执行脚本文件
        -r :使用扩展的正则表达式
        d:删除符合条件的行      fg:/etc/inittab    删除1-2行      sed '/root/d' /etc/fastab 删除包含root的行
        p:显示符合条件的行。      fg:sed '/^\//d' /etc/fastb 删除以/开头的行      sed '/^\//p' /etc/fastb 显示以/开通的行
        a \string:在指定的行后追加新的行,内容为string
        i \string:在指定的行前面添加新行,内容为string
        r FILE :将指定的文件的内容添加至符合条件的行处
        w FILE :将地址指定范围内的内容另存至指定的文件中
        s/pattern/string/ :查找并替换(默认只替换每行中第一次被pattern匹配到的字符串)  把pattern匹配的字符换为string
    修饰符:
        g 全局替换   s/pattern/string/g
        i 忽略字符大小写 s/pattern/string/i     s///=s###=s@@@ 在找/时就不用转意了。
    &:后向引用,引用模式匹配的整个串 
    sed练习:
        1、删除/etc/grub.conf文件中行首的空白符;       sed -r 's/^[[:space:]]+//g' /etc/grub.conf 
        2、替换/etc/inittab文件中"id:3:initdefault:"一行中的数字为5;      sed 's/id:3:initdefault/id:5:initdefault/g' /etc/inittab      sed 's@id:[0-9]\(:initedefault)@\15\2@g' /etc/inittab
        3、删除/etc/inittab文件中的空白行;      sed '/^$/d' /etc/inittab
        4、删除/etc/inittab文件中开头的#号;       sed 's/^#//g' /etc/inittab
        5、删除某文件中开头的#号及后面的空白字符,但要求#号后面必须有空白字符;     sed 's/^#[[:space:]]\{1,\}//g' /etc/inittab 或者 sed  -r 's/^#[[:space:]]+//g' /etc/inittab
        6、删除某文件中以空白字符后面跟#类的行中的开头的空白字符及#       sed -r 's/^[[:space:]]+#//' 1
        7、取出一个文件路径的父目录名称;        echo "/etc/rc.d" | sed -r 's@^(/.*/)[^/]+/?@\1@g'   以/.*/开头,[^\]指非斜杠,\1引用左边第一个括号内的内容一次。       echo "/etc/rc.d" | sed -r 's@^/.*/([^/]+)/?@\1@g'   提取本文件

35、vim 
    vim:文本编辑器,全屏、模式化的编辑器 
    vim模式: 
        编辑模式(命令模式):默认 
        输入模式 
        末行模式
    vim模式转换: 
    1、从编辑模式-->输入模式 
      i:在当前光标所在字符的前面,转为输入模式 
      a:在当前光标所在字符的后面,转为输入模式 
      o:在当前光标所在行的下方新建一行,并转为输入模式 
      I:在当前光标所在行的行首,转为输入模式 
      A:在当前光标所在行的行尾,转为输入模式 
      O:在当前光标所在行的上方新建一行,并转为输入模式 
     2、从输入模式-->编辑模式 
       键入esc键。 
     3、末行模式:必须从编辑模式进入末行模式 
       键入:即可。 
     4、末行模式-->编辑模式 
       敲esc键,一次或者多次。
    vim退出文件: 
    1、末行模式下关闭文件 
       w:保存文件 
       q:退出 
       wq:保存并退出 
       q!:不保存并退出 
       w!:强制保存 
       wq=x 保存退出 
    2、编辑模式下退出 
      大写ZZ:保存退出 
    vim下移动光标(编辑模式):  
        1、逐字符移动: 
     h:向左 
     l:向右 
     j:向下 
     K:向上 
     #h:移动#(数字)个字符 
    2、以单词为单位移动 
     w:移动下一个单词的词首 
     e:移动到当前单词的词尾或者下一个单词的词尾 
     b:移动到当前单词的词首或者上一个单词的词首 
     #w:一次跳#个单词。 
    3、行内跳转 
     0:跳到行首(绝对行首) 
     ^:跳到第一个非空白字符的行首 
     $:绝对行尾 
    4、行间跳转 
     #G:直接跳转至第#行上。 
     G:直接跳转至最后一行 
     末行模式下跳转:直接给出行号,回车即可。 
       vim翻屏: 
         ctrl+f:向下翻一屏 
         ctrl+b:向上翻一屏 
         ctrl+d:向下翻半屏 
         ctrl+u:向上翻半屏 
   vim删除字符: 
     x:删除光标所在处的单个字符 
     #x:删除光标所在处及向后的共#个字符 
   vim删除命令:d 
     d命令与跳转命令结合使用 
     d$:删除到行尾。 
     #d跳转符:删除跳转符指定的#个字符 
     dd:删除当前光标所在行 
     #dd:删除包括光标所在行之内的#行 
   末行模式下可以使用: 
      startADD,ednADDd 
      1,10d:删除第一行到第十行 
      .,100:删除当前行到100行。 
      .表示当前行 
       $:最后一行 
       +#:向下的#行 
       $-10:倒数第10行 
       vim删除的内容为保存在缓冲中,最后一次删除的内容可以粘贴。 
   vim粘贴命令:p 
     p(小写):如果删除的或复制的为正行内容,则粘贴至光标所在含行的下方,如果复制或删除的内容为非整行,则粘贴至光标所在字符的后面     
     P(大写):如果删除的或复制的为正行内容,则粘贴至光标所在含行的上方,如果复制或删除的内容为非整行,则粘贴至光标所在字符的前面 
     vim复制命令:y 
      y的用法同d 
      yy:复制一行 
      vim先删除内容,再转换为输入模式:c 
    c的用法同d命令 
      cc:删除一行,并进入输入模式。 
      c$:删除到行尾,并进入输入模式 
    vim下撤销编辑操作命令:u 
        u:撤销上一次操作,连续u命令可以撤销此前的n次操作 
        #u:直接撤销最近#次编辑操作 
    vim超找替换 
      /PATTERN:从行首向下查找PATTERN匹配的选项 
      ?PATTERN:从行尾向上查找PATTERN匹配的选项 
    vim查找并替换:s 
     在末行模式下使用s命令 
     用法与sed一样 
     ADDR1,ADDR2s@PATTERN@string@gi 
     g:全局 i:忽略大小写 
     .,$-1 :当前行到倒数第一行 
     1,$表示全文 
    vim下shell交互 
     :!COMMAND 回车查看,查看完以后再回车,进入vim编辑模式。 
    vim高级话题 
     1、显示或取消显示行号 
        :set nu 
        :set nonu 
     2、设定忽略或区分大小写 
       :set ignorecase  
       :set ic 忽略 
       :set noic 
     3、设定自动缩进 
       :set autoindent 
       :set ai 缩进 
       :set noai 
     4、查找到的文本高亮显示或取消高亮显示 
       :set hlsearch 高亮显示 
       :set nohlserch 取消 
    5、语法高亮 
       :syntax on 开启 
       :syntax off 关闭  
36、let    
    let:相当于一个小的计算器 
         let SUM+=$I ;sum等于sum+I 
         let I+=1:让I等于I加1 
         let I++:让I等于I加1 
         let I-=相当于let I--:I等于I减1  
37、locate     
    locate:查找文件,非实时的、模糊匹配,全系统文件数据库的查找命令 
     updatedb:手动生成文件数据库,新安装的系统没有数据库的,速度快  
38、find    
    find:实时查找、精确、遍历指定目录中的所有文件完成查找,速度慢、支持众多
查找标准 
    格式:find 查找路径 查找标准 查找到以后的处理运作 
    查找路径:默认为当前目录 
    查找标准:默认为指定路径下的所有文件 
    处理运作:默认为显示到屏幕 
匹配标准 
    -name 'FILENAME':对文件名进行精确匹配 
          还支持文件名通配符:*:任意长度的任意字符 
    -iname 'FILENAME':文件名匹配不区分大小写 
    -regex PATTERN:基于正则表达式进行文件名匹配 
    -user USERNAME:基于文件所属主进行匹配查找 
    -group GROUPNAME:基于文件的属组进行查找 
    -uid UID:基于文件的uid,用户被删了以后id号会保存下来 
    -gid GID:文件组 
    -nouser:查找没有属主的文件 
    -nogroup:查找没有属组的文件 
    -type :根据文件的类型来查找 
       f:普通文件 
       d:目录 
       p:管道 
       s:套接字 
       l:链接 
       -size:指定文件的大小 
      [+|-]#K:大于或者小于#k的文件 
    时间戳查找 
           单位为天 
           -mtime :修改时间 
           -atime :访问时间 
           -ctime:改变时间 
           支持[+|-]#: 
              5:五天那一天访问 
           -5:五天之内 
           +5:至少五  天之外 
          单位为分钟 
          -amin:访问时间 
          -cmin:修改时间 
          -tmin:改变时间 
           文件的权限查找 
             -perm mode(755):精确查找 
                  fg:find 路径 -pern 755 
             -perm /mode : 三位匹配一位就可以              
          -perm -mode:文件权限能完全包含此mode才可以显示 
           执行动作: 
         -print:默认的,显示 
         -ls:类似ls -l的形式显示匹配到的每个文件的详细信息 
         -ok COMMAND {} \;每个操作需要用户确认 执行命令,必须以\;结尾。
    {}代表匹配到的文件。          
            -exec COMMAND {} \;不需要确认,执行命令,必须以\;结尾。{}代表匹配到的文件。 
39、SUID    
    suid:运行某程序时,相应进程的属主是程序文件自身的属主,而不是启动者所属主 
       添加文件的SUID:chmod u+s FILE 
                   chmod u-s FILE 
     如果FILE本来原来就有执行权限,则SUID显示为s,否则为大S。 
    SGID:运行某程序时,相应进程的属组是程序文件自身的属组,而不是启动者所属的基本组 
    chmod g+s  FILE 
    chmod g-s  FILE 
    fg:一个团队,三个用户:hadoop、hbase、hive,一个开发目录/tmp/project,要求这三个用户可以同时修改同一个文件。查看、编辑、等权限 
     三个用户同属一个基本组,并要求基本组具有查看、编辑权限。。 
      groupadd devdeop 
      chown -R :develop /tmp/projest 
      usermod -a -G develop hadoop 
      chmod g+s /tmp/project 
      然后就可以进行创建、修改、删除同一个文件了。 
40、sticky 
    sticky:规定在一个公共目录,每个人都可以创建文件、删除自己的文件,但不能删除别人的文件。 
     chmod o+t DIR:对目录增加sticky权限 
     chmod o-t DIR:去掉目录的sticky权限 
     chmod 1755 /backup/test 表示文件具有sticky权限  
41、facl 
    facl:利用文件扩展保持额外的访问权限 
    setfacl:设置某文件的控制权限 
         -m:增加facl 
         u:设定用户的时候,后面加上u:UID:perm  
         fg:setfact -m u:UID:rw file 
         g:设置组 
        -x:取消facl 
    getfacl:查看文件的facl权限  
42、whoami 
    whoami:显示当前用户是谁,su半切换的时候显示的是切换之前的那个用户  
43、who    
    who:查看当前登录系统的用户以及他所登录的终端 
      -r:显示当前运行级别 
      -H:第一回列表显示各列名称 
    w:显示比who更详细的信息  
44、last 
    last:显示当前系统上的登录日志(/var/log/wtmp文件),包括系统用户和重启信息 
    last -n 数字:只显示最近几次的登录信息 
45、lastb     
    lastb:显示用户错误的登录常识 
    lastb -n 数字:只显示最近几次错误的登录信息。 
46、lastlog 
    lastlog:显示每个用户最近一次成功登录的信息 
    lastlog -u USERNAME:显示指定用户最近一次的登录信息 
47、basename    
    basename:显示一个目录的基名 
      basename /etc/abc/me 直接显示me 
      $0:命令名称或者脚本本身的路径。 
      basename $0:直接调用脚本本身路径 

48、mail 
    mail:邮件查看,可以查看邮件,查看以后就会放到用户的家目录内mbox文件夹内。 
     -s主题 
     mail -s "How are you " root   
     cat /etc/fast | mail   -s "How are you "   root  
49、hostname 
    hostname:显示当前主机的名称 
    hostname 主机名:更改主机名 
       fg:如当前主机的名字为空,或者(none)或者为(localhost),就将其改为www 
      [ -z` hostname` -o `hostname` == "(null)" -o `hostname` == "localhost" ] && host www. 
       -z:表示是否为空 
50、RANDOM     
    RANDOM:0-32768直接的随机数 
        echo $RANDOM:生成随机数

你可能感兴趣的:(Shell,shell脚本入门及实例)