zoukankan      html  css  js  c++  java
  • 常用linux命令

    获取命令帮助

    命令帮助格式

    [ ] :可选
    | :多选1
    <> :必选
    ... :可出现多次
    {} :分组

    1.内部命令帮助:

       help COMMAND

    2.外部命令帮助:

      COMMADN --help   #大多数外部命令支持(简要说明)

    3.命令手册:

    用来存储在linxu系统上的手册页面,分章节显示,共8个章节,如下:

         1.用户命令:所有用户都可以使用的命令

         2.系统调用:

         3.库调用:

         4.特殊文件:设备文件,不是真正文件,指作为设备的访问入口存在,不存储任何内容

         5.文件格式:解释命令对应配置文件的语法,如 #man 5 paswd  表示查看passwd命令配置文件/etc/passwd的内容说明

         6.游戏

         7.杂项:不便归类的命令

         8.管理命令:管理员才可使用的命令

    man命令显示结果:

    标题                                    描述
    Name                        显示命令的名称和简介
    Synopsis                   显示命令的格式
    Description                描述每个命令的选项
    Author                       提供该命令开发人员的信息
    Reporting Bugs        提供提交bug报告的途径
    Copyright                 提供该命令源代码的版权信息
    See Also                  推荐查看相似的命令

    语法:

     man   [节号]   COMMAND  #外部命令一般用此命令(详细说明,内部命令一般用方法1),节号取值范围:1-8

        1.翻屏:

               向后翻一屏:SPACE
               向前翻一屏:b
               向后翻一行:ENTER
               向前翻一行:k

        2.查找:

               /KEYWORD:向后查找KEYWORD

                    n:下一个

                    N:前一个

              ?KEYWORD:向前查找KEYWORD

                    n:下一个

                    N:前一个

         3.退出man:q

    备注: man命令不指定节号,按章节号顺序查找,查找到停止。

    whatis COMMAND #显示命令在哪些章节

    #man man  #显示man命令的帮助手册

    4.在线文档:

    info COMMAND #用的较少

    5.命令帮助目录

    /usr/share/doc

    文件/目录管理命令

    目录是特殊文件

    节点:linux内核通过“节点”来识别每个文件,即每个文件都有一个节点号。

    设备文件: linux将硬件设备当成特殊的文件,称为设备文件,包括:字符型设备文件、块设备文件、网络设备文件。

    数据对:每个设备文件都有一个数值对,包括:主设备号、次设备号。同一个硬件设备上的设备文件的主设备号相同,次设备号不同,如sda划分2个分区,sda1和sda2

    创建普通文件

    文件命令规则:

       1.长度不能超过255个字符

       2.文件名不能含/

       3.严格区分大小写

    文件数据组成:

    1.实际数据:

      就是文件中的内容

    2.元数据:

       主要是描述文件(数据)属性的信息,如:访问权限、文件拥有者、访问、修改、改变时间,以及文件数据块的分布信息(Inode...即索引号),以支持指示存储位置、文件记录、历史数据、资源查找等功能。

       文件包含3个时间:

           access time:最后一次文件被访问的时间----

           modify time:最后一次文件被修改的时间----文件实际数据的修改时间

           change time:最后一次文件被改变的时间----文件元数据的变化时间,即文件属性改变的时间,包括权限,大小,属性等等 

      总结:当仅读取或访问文件(vim或cat命令)时,access time改变,而modify、change time不变

                当修改文件内容时,modify time,change time会改变,access time不一定变,如:echo >> 追加内容时,access time不变

                当修改文件权限、文件拥有者等元数据时,change time会改变,access、modify时间不会变

    1.touch  修改文件时间戳

       -a 只修改文件的访问时间(access time)

       -m 只修改文件的修改时间(modify time)

       -t   指定时间

      -c  不创建文件,只修改文件时间戳

    #touch -a -t 20100801100000 testfile1  #修改文件访问时间为2010-08-01 10:00:00
    #touch -m -t 20110801100000 testfile1 #修改文件的modify时间
    #touch -c testfile1  #修改已存在文件的access time和modify time
    备注:
      以上3条命令均修改了文件的属性,所以文件的改变时间会自动变为当前系统时间。
      不加-t选项,默认修改为当前系统时间。
    touch用法

     2.文本编辑器

    文本编辑器:只能编辑ASCII文件,ASCII只能存储纯文本。

    备注:word处理工具不是文本编辑器,是字处理器。

       1)nono 

       2)vim

    创建链接文件

    链接文件是目录中指向文件真实位置的占位符,在linux中,有两种链接文件:

    1.硬链接

      1)只能对文件创建硬链接(不能对目录)

      2)不能跨文件系统创建,即不能在不同挂载点之间创建。

      3)索引值与原文件一样,删除原文件,硬链接还在。

      4)文件大小与原文件一样

      5)创建硬链接,会增加文件被链接的次数

    创建SRC文件的硬链接名为DEST:
    
     方法1:ln SRC DEST  
    
     方法2:cp -l SRC DEST   

    2.软链接

      1)创建软链接会产生一个新的索引值

      2)不同挂载点之间,也可创建软链接。

      3)删除原文件,软链接将不可用

      4)文件很小,只存储文件信息,不存储文件数据。

    创建SRC文件的软链接名为DEST:
      方法1:ln -s SRC DEST
    方法2:cp -s SRC DEST

    stat 查看文件属性(文件元数据)

    stat FILENAME  #查看结果包括:文件access、modify、change time,文件大小、权限等信息。

          -f   查看文件系统状态

    file  查看文件类型

    file命令将文件分成3类:

     1.文本文件:包含可打印字符的文件

     2.可执行文件:可在系统上运行的文件

     3.数据文件:包含不可打印二进制字符、又不能在系统上运行的文件

    ELF:可执行可链接文件的存储格式,也是可执行二进制文件格式,在windows叫PE

    #file /bin/ls   #executable表示是一个可执行程序
    /bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped

    rm 删除文件

       -i   交换式,即给个删除提示,y删除,n不删除

       -f   强行删除,不提示

       -r   递归删除目录

       -rf   递归删除目录,不提示

    COMMADN  #使用原生的命令
    系统默认设置rm是rm -i的别名,使用
    m命令删除文件时,会以rm原本命令含义执行,即不会交互式提示。

    备注:linux没有回收站,文件一旦删除,就不会找回

    mkdir 创建空目录

         -p   创建多级目录

         -v    打印详细信息

    mkdir -p a/b/c  #逐级创建,当前目录下a目录,则创建目录a,a目录下无b目录,创建b目录,b目录下创建c目录

    mkdir ..abc   #当前目录下,创建隐藏文件

    rmdir  删除空目录

           -p  逐级删除

    mv 移动文件

    移动文件,文件的索引号、访问时间、修改时间不变,改变时间变为执行mv命令时的系统当前时间。

    mv一个带有软链接的文件后,软链接将不可用(硬链接不受影响)

     mv SRC DEST  #不同目录为移动,相同目录为重命名

      -i  交互式

      -f 强制

      -t  DEST SRC    #把SRC和DEST参数位置颠倒。

    cp 复制文件 

    复制产生是一个新文件,有自己的索引号

    cp  SRC...  DEST    #SRC可用有多个,SRC为多个时,DEST必须是一个目录

       -r  复制目录,递归拷贝

       -f  强制复制

       -i

      -p 保留原文件的属主、属组和时间戳(复制时,保留原文件的文件属性)

      -P 保持链接属性,即原文件如果是一个链接文件,复制后也是一个链接文件。

      -d 等同于-P

      -L 原文件如果是一个链接文件,复制后的文件是原链接指向的文件。(默认)

      -a 保持链接属性,归档复制,常用于备份。等 同于-rd

    install 复制文件 

    只能复制文件,且可以指定属性

           -d DIRECTIORY... 创建目录
           -t DEST SRC... 将SRC复制到DEST

    tree 查看目录树

    树型方式显示目录的结构

    ls 列目录

       -l  长格式显示

      -a  显示所有隐藏文件  .表示当前目录 ..表示上以级目录

      -R  递归显示

      -A 显示所有隐藏文件,但不显示.和..

      -d 显示目录自身属性

      -i 显示文件节点号

      -r ASCII降序显示(默认升序显示

      -h 单位换算,默认为k

      -F 文件和目录区分显示  

      -s  块大小

    #ls -l

    -rw-r--r-- 1 root root 0 Dec 12  2013 abc

    显示分8段(如上8种颜色),依次是:

    文件类型:

           -  普通文件

           d 目录文件

           b 块设备文件

           c 字符设备文件

           l  符号链接文件

          p 命令管道文件

          s 套接字文件

    文件权限:

    9位,每3位为1组,每一组rwx(读、写、执行,无权限的位用横线-表示),分别代表文件属主、文件属组、其他用户的权限

    rw-r--r--  #表示文件属主权限是读、写,文件属组权限是只读,其他用户权限是只读。

    文件硬链接的次数:

     文件的属主:

     文件的属组:

    文件大小(size):单位为字节

    时间戳(timestamp):最近一次修改的时间

    文件名:

    如果文件是设备文件,则没有文件大小这列,用设备号取代。

    crw-rw---- 1 root video    10, 175 Jun 22 00:42 agpgart

    主设备号,次设备号:10, 175

    #ls -lh

    drwxr-xr-x. 2 root root 4.0K May 17 17:35 script

    # ls -ild /root  
    129541 dr-xr-x---. 3 root root 4096 Jun 20 03:45 /root     #标红为节点号

    #ls -F

    proc.tcl*  test/      #文件名后面跟斜线表示目录,文件名后跟星号表示可执行的文件。

    cd 切换目录

    cd ~  切换到用户的home目录

    cd ~USERNAME  进入USERNAME用户的home目录

    cd -   在前一个目录和当前目录之间来回进行切换

    cd ..    #回到上级目录

    cd ../..   #回到上上级目录

    文件查找 find

    实时查找,精确匹配,遍历指定目录中的所有文件完成查找,所以查找慢。支持正则匹配

    格式:

          find  查找路径   查找标准   查找到后的处理动作

    查找路径:默认当前路径

    查找标准:

        -name 'FILENAME'  对文件名进行匹配,支持通配符

        -iname 'FILENAME'  文件名匹配时,不区分大小写。

       -regex PATTERN  基于正则表达式查找

       -user USERNAME 根据文件的属主进行查找

       -group GROUPNAME  根据属组进行查找

       -uid UID 根据UID进行查找

       -gid GID 根据GID进行查找

       -nouser 查找没有属主的文件

       -nogroup 查看没有属组的文件

       -type   根据文件类型查找

            f  普通文件

            d 目录

             。。。

       -size 根据文件大小查找,默认单位B

          [+|-]单位    # +表示大于,-表示小于,无+-符号表示等于,单位有k、M、G

          eg:  +10k 大于10k的文件   10k表示等于10k的文件

         组合条件查找

              -a:与,条件需同时满足(默认)

              -o:或,条件只需满足其一

              -not:非,条件取反

              eg:  find /tmp -nouser -o -type d 

          时间戳查找

                 -mtime 修改时间(天)

                 -ctime  改变时间(天)

                 -agtime:访问时间(天)

                   [+|-] 天数     # +5 大于5天,-5小于5天   5等于5天

                  备注:也支持-mmin、-cmin、-amin,不过单位是分钟

          权限查找

                 -perm [-|/]MODE     #MODE取值范围000~777(分别表示属主、属组、其他用户3个权限)

                           MODE  :待查找的文件的9位权限必须精确等于MODE权限,才能匹配成功

                           -MODE :待查找的文件的9位权限必须完全包含MODE权限,才能匹配成功

                            /MODE:待查找文件的9位权限当中任何一位匹配,才能匹配成功。

                       find ./ -perm -644   # 文件权限若为644、755则可用匹配上,若为751则匹配不上。

     处理动作:默认动作、打印到屏幕上

         -print  显示

         -ls   #显示每个文件的详细信息,等同于ls -l  

         -ok COMMAND {} ;    # {}表示查找出来的文件名,COMMAND表示执行的命令,ok比较交互式

              eg: find ./ -perm -006 -ok chmod +x {}    #对所有查找条件的文件,进行+x权限,执行加权限时,提供提示。

         -exec COMMAND {} ;   与上一条功能类似,至少执行命令时,不提示

             eg:  find ./ -perm -020 -exec mv {} {}.new ;  #查看属 组有写权限的文件,并修改其文件名为: 原文件名.new

    eg:

           find /var -user root -group mail    #查看/var目录下属主是root,属组是mail的所有文件

          查找/usr/目录下不属于root,bin或student的文件

          find /usr -not -user  root -a -not -user bin -a  -not -user  student 

          find /usr -not (-user root -o -user bin -o -user student)

          查找当前系统上没有属主或属组且最近1天内被访问过的文件,将其属主、属组均修改为root

          find  /( -nouser -o -nogroup) -a -atime -1 -exec chown root:root {} ;

         查找/etc目录下大于1M的文件,并将其文件名写入/tmp/etc.largefiles文件中

         find /etc -size +1M echo >> /tmp/etc.largefiles

    文本处理命令

    查看文本

    1.cat

        -n   打印行号

        -E   打印行结束符,linux系统行结束符是$,windows系统是$+回车键,Notepad++文本工具,可以设置行尾技术符为$

        -A  打印所有字符,包括:不可见的字符。

        -s  当相邻有多个空白行时,只保留单个空白行。

        -T 将制表符替换为^I

    2.tac

       与cat功能类似,不过是倒叙显示(最后1行显示在第1行,依次类推)

    3.more  分屏显示

        space:后翻一屏

        b:前翻一屏

        enter:后翻一行

    翻到最后自动退出

    4.less 分屏显示

        space:后翻一屏

        b:前翻一屏

        enter:后翻一行

        k:前翻一行

    翻到最后不会退出

    5.head  查看文件的前n行,默认10行

         -n :显示前n行 

    6.tail   查看文件的后n行,默认10行

        -n:显示后n行

        -f:等待显示后续追加到此文件的新内容,一般用于对日志文件监控

    文本裁剪 cut

         -d 指定字段分割符,默认为1个空格

          -f 指定要显示的字段

               -f 3  显示第3个字段

               -f 1,3 显示第1、3字段(离散用逗号)

               -f 1-3 显示第1到第3字段(连续用横线)

               -f 1-3,5 显示第1-3、5字段,可组合使用

    文本裁剪 sort

    sort命令默认按ASCII升序排序

          -r  降序排序

          -n  数字升序

          -t   字段分割符

         -k  指定按第哪个字段进行排序

         -u  排序后,相邻重复行只显示1次

         -f   排序时,忽略字母大小写

    sort -t: -k3 /etc/passwd   #指定冒号为分割符,对第3个字段进行排序。

    报告相邻重复行 uniq

          -d  只显示相邻重复行(重复行只显示1次)

          -c  打印文件中每行的相邻重复的次数

          -D 显示所有相邻重复行

    文本统计 wc

       -l 只显示行数

       -w 只显示单词数

       -c 只显示字节数

      -m 只显示字符数

       -L 显示最长的1行所包含的字符个数

    # wc /etc/fstab
    15 78 779 /etc/fstab   行数 单词数 字节数 文件名

    字符处理  tr

    格式:tr [OPTION]...  SET1 [SET2]

    tr -d  删除指定字符

    #tr 'ab' 'CD'
    happy boy!
    hCppy Doy!
    
    #tr -d 'ab'
    happy boy!
    hppy oy!
    
    #tr 'a-c' 'hmt' < /etc/passwd  #文件passwd中所有字符a替换为h,字符b替换为m,字符c,替换为t
    

    文本过滤 grep

    格式:

     grep [option] pattern [file]    #grep使用基本正则表达式

     选项:

            -i:匹配时,忽略大小写。 

            -v:反向查找,显示没有被模式匹配的行

            -n:显示匹配模式的行所在的行号

            -c:指定多个匹配模式

            --color:匹配字符串加颜色,默认加红色

           -A num: 显示匹配模式成功的行及后面的几行(after)

           -B num:显示匹配模式成功的行及前面的几行(before)

          -C num:显示匹配模式成功的行及前后各几行

          -o  只显示被模式匹配到的字符串

          -E 使用扩展正则表达式(EBR)

          -h  当在多个文件中,进行文本过滤时,不显示文件名称,只显示匹配的模式

    练习题:exercise

    1.找出某文件中的1位数,或2位数

       grep -E  '[0-9]{1,2}' /proc/cpuinfo

    2.显示当前目录所有文件中,内容含“hello”的行

    #grep "hello" `find ./ -name *`

    ./1:hello  

    ./def:hello world

    备注:显示格式 : 文件名:内容含"hello"的行

    #grep -h   "hello" `find ./ -name *`   # -h选项,只显示匹配的文本内容。

    hello

    hello wrold

    关于正则表达式的使用,见正则表达式博文

    文本过滤 egrep

     与grep功能类似,使用EBR引擎匹配

    其他

    date 时间管理

    linux有2个时钟:

    硬件时钟:即BIOS时间,纽扣电池给晶体振荡器供电,保证掉电时间不丢失。称为RTC(real time clock)

    系统时钟:即linux系统内核时间,linux启动时,系统内核会读取硬件时钟的设置,系统启动后,系统时钟独立运行。

    晶体振荡器:实现计时功能的器件

    硬件时钟命令:

          硬件时钟查看:hwclock --show | clock --show     #不加--show也可用

          硬件时钟设置:hwclock --set --date="08/04/16 09:20:10"  (月/日/年 时:分:秒)  或者clock  --set --date="08/04/16 09:20:10"

    系统时钟命令:

    语法: date [OPTION] ...  [+FORMAT]

                 date -s 08/04/15     #将日期设置为2015-8-14

                 date -s 08:21:10    #将时间设置为09:20:10    

                 date 0701092016.30  #将时间设置为206-07-01 09:20:30 

                 date       #查看当前系统时间

                 date -u   #查看系统时间对应的UTC时间(格林威治标准时间)

    格式化显示时间:

        date +%

                 %M 年

                %m 月

                %d 日

                %n  换行

                %T 时:分:秒

                %F   年-月-日  等同于%M-%m--%d

                %H 时

                %S 秒

                %s  自1970-01-01 00:00:00 至现在经过的秒数,时间戳。

    eg:  

    #date +"This yesr is: %Y. %n Today is %d."
    This year is 2013.
    Today is 26.

    时钟同步:

    hwclock
            -w       #将系统时间同步到硬件时间。
            -s       #将硬件时钟同步到系统时间。

    cal 日历

    cal 2013  #显示2013年日历

    cal 12 2013 #显示2013年12月日历

    printf  格式化打印

    printf "The year is 2013. Today is 26. "

    备注:printf默认无换行符,使用 指定换行符

    echo 显示消息

    echo 

             -n    #去掉行尾的换行符(默认有换行符) 

             -e   #反斜线逃逸字符,让转义符有意义。

    #echo -e “This year is 2017.
    Today is 22”  #不加-e选项,
    会当作普通字符显示,而不是换行符
    This year is 2017.
    Today is 22
    #echo -e  "hello world. hello beijing."
    hello worl. hello beijing.

    常见转义字符:

           换行符

            横向制表符,tab键

        v    纵向制表符

           退格:即删除前一字符。

        33 控制字符

    颜色设置

    echo -e

         33 :控制符,表示后面的字符接受控制

    eg:

        echo -e "33[1;31;46mHello33[0m,world."

    Hello,world

    解释:

           有多个设置值有多个时,使用分号隔开:如配置字体、背景色、字体颜色、加粗之间,需要使用分号隔开

            1:字体加粗

            3x:字体颜色

            4x:字体背景颜色

            x取值:

                     0:正常色

                     1:红色

                     2:绿色

                     3:黄色

                     4:橙色

                     5:紫色

                     6:蓝色

                     7:白色

            m:针对字体本身生效(最后一项设置于m之间不用也不能加分号)

    引用

             '' :强引用(一对单引号),让引号中的内容保留原意,不支持变量替换。$被当作普通字符

             “”:弱引用(一对双引号),让引号中的内容保留原意,支持变量替换

    备注:

           引号本身不输出,要显示单引号,外面用双引号括起来。反之亦然。

           

    # echo "THis's is a book"
    THis's is a book

    命令行展开

     1.花括号:以逗号隔开

        mkdir /mnt/test/{a,d}_{b,c}   #创建/mnt/test目录下,创建a_b、a_c、d_b、d_c四个目录

      

    type 查看命令类型

    type [OPTION] COMMAND   #查看命令的类型,内置、别名、外部命令

        -t    #简洁显示

              builtin:内置命令

              alias:别名

              file:外部命令

       -p    # 若COMMAND为外部命令,则显示完整文件名,否则不显示。

    [root@localhost ~]# type whoami
    whoami is /usr/bin/whoami
    [root@localhost ~]# type -t whoami
    file
    [root@localhost ~]# type -p whoami
    /usr/bin/whoami
    type

    which 查看命令执行路径

    # which pwd
    /bin/pwd

    whoami 查看当前登陆名

    #whoami

    root

    who  查看当前所有登陆会话

      -r 查看运行级别

      -H 打印列标题

    #who -H

    NAME   LINE                           TIME                                         COMMENT   #列标题
    root       tty1                   2017-06-22 00:44
    root      pts/0                 2017-06-22 00:47 (192.168.10.100)
    root       pts/1                2017-06-22 02:13 (192.168.10.100)

    last系列命令 显示登陆

    1.last    #显示/var/log/wtmp文件,显示用户登陆历史及系统重启历史

         -n x 显示最近x次的相关信息。

    2.lastb   #显示/var/log/btmp文件,显示用户错误的登陆尝试

         -n x 显示最近x次的相关信息

    3.lastlog #显示每个用户最近一次的成功登陆信息

          -u USERNAME  #显示用户USERNAME最近的登陆信息。

    111
  • 相关阅读:
    小程序那些坑
    2018-5-31 项目总结
    Android AndroidManifest学习笔记
    android 快捷键
    android的liveview装载数据
    android xml产生和解析
    SerializableMaplist传递数据
    android hander 线程用法
    DataGridView实现分页
    DataGridView添加另外一个控件。
  • 原文地址:https://www.cnblogs.com/zmdsg/p/7061924.html
Copyright © 2011-2022 走看看