zoukankan      html  css  js  c++  java
  • Linux常用命令总结

    【命令使用求助】

      命令名 --help

      如:date --help

    【管道操作】

    -|

       管道,配合其他命令使用。将上一条命令的输出作为下一条命令的输入。

    【信息分析处理】

    #awk  #sed  #grep  #wc  #echo  #cut  #sort

    -awk:文本分析工具。awk 会把每行进行一个拆分,用相应的命令对拆分出来的“段”进行处理。

      (1)行工作模式,读入文件的每一行,会把一行的内容,存到$0里

      (2)使用内置的变量FS(段的分隔符,默认用的是空白字符),分割这一行,把分割出来的每个段存到相应的变量$(1-100)

      (3)输出的时候按照内置变量OFS(out FS),输出

      (4)读入下一行继续操作

    语法:awk ‘匹配模式+行为’ filename

    示例:

      provins=($(awk '{print $2}' provinsInfo.txt)):将文本provinsInfo.txt中每行按空格分隔后的第2个(从1开始)字符串放入数组provins中。

      echo "String:number" | awk -F':'  ‘{print $2}’  :将字符串"String:number"按‘:’进行分隔,并取第2部分

    -sed:文本处理工具

    语法:sed -参数 '行为'

    示例:

      sed -i ‘/linux/d’ log.txt:直接在log.txt文件中删除包含linux的行

      sed ‘$d’ log.txt:删除log.txt文件的最后一行

      sed -n ‘3p’ log.txt:打印log.txt文件中的第3行

    -grep:文本的条件筛选工具

    语法:cat filename | grep '筛选条件'

    示例:

      cat xferlog | grep ‘20170915’:筛选出文件xferlog中包含字符‘20170915’的记录(行)。

            grep -v:筛选出包含筛选条件的记录(行)。

            grep -c:输出匹配行的条数

            grep -n:输出匹配行所在的行号

      cat xferlog | egrep ‘20170915|20170916’:筛选出文件xferlog中包含字符‘20170915’‘20170916’的记录(行)。

    -wc:文本信息统计工具

    语法:wc filename

        -l:列出文本行数

        -w:列出文本字数(英文单字)

        -m:列出字符数

    示例:

      wc -l config.txt:显示config文件的行数。(其他写法:grep -n “” 文件名)

      wc config.txt:显示结果为:n1  n2  n3  config.txt  n1为文本行数,n2为文本字数,n3为文本字符数

    -echo:文本打印或控制台输出

    语法:echo String

    示例:

      echo “${username}=vike”:在控制台打印。

      echo -n "first line":不打印换行符,后续内容将与“first line”同行显示

    -cut:按条件截取字符串

    语法:cat filename | cut -b n-m 截取文件的第n-m行字符

          echo String | cut -d '分隔符' n    根据自定义分隔符截取第n段

    示例:

      cat config.txt | cut -b 2-8:截取config.txt文件中的2-8行。

      echo config | cut -b 3 :截取config字符串的第三个字符。

    -sort:将文本内容按ASCII码值进行排序,升序打印。

    语法:sort filename

    示例:

      sort config.txt:以文件的各行为单位,按ASCII码排序打印输出,原文本未做修改。

    【系统信息查询】

    #du (disk usage)  #df  #stat

    作用:显示目录(或文件)所占磁盘空间的大小。

    参数说明:

    • -0 每个结果显示后不换行

    • -a或–all 为每个指定文件显示磁盘使用情况,或者为目录中每个文件显示各自磁盘使用情况。

    • –apparent-size 显示目录或文件自身的大小

    • -B或–block-size=SIZE 以SIZE为计量单位显示目录或文件大小;SIZE可以为任意整数,也可以为KB 1000, K 1024, MB 10001000, M 10241024, 类似地对于G, T, P, E, Z, Y。

    • -b或–bytes 以byte为单位显示目录或文件大小,等价于’–apparent-size –block-size=1′

    • -c或–total 除了显示目录或文件的大小外,同时显示所有目录或文件的总和。

    • -D或–dereference-args 显示指定符号连接的源文件大小。

    • –files0-from=F 显示文件F 中以NUL 结尾的文件名对应占用的磁盘空间;如果F 的值是”-”,则从标准输入读入文件名

    • -h或–human-readable 以K,M,G为单位,提高信息的可读性。

    • -H或–si 与-h参数相同,但是K,M,G是以1000为换算单位,而不是以1024为换算单位。

    • -k或–kilobytes 以1024 bytes为单位,等价于–block-size=1K。

    • -l或–count-links 重复计算硬连接的文件。

    • -L或–dereference 统计符号连接源文件大小。

    • -P或–no-dereference 不同符号链接源文件的大小,默认。

    • -m或–megabytes 以1MB为单位,等价于–block-size=1M。

    • -s或–summarize 仅显示总计,即当前目录占用空间的总和。

    • -S或–separate-dirs 显示每个目录的大小时,并不含其子目录的大小。

    • -x或–one-file-system 忽略位于其他文件系统上的目录。

    • -X FILE或–exclude-from=FILE 忽略在FILE文件中指定目录或文件。

    • –exclude=PATTERN 忽略符合PATTERN规则的目录或文件。

    示例:

       du -ah --max-depth=1 :查看目录下的所有文件的大小,以K、M、G的单位显示。

          -a  表示目录中每个文件显示各自磁盘使用情况

          -h  以K,M,G为单位,提高信息的可读性。

          --max-depth=n 表示只深入到第n层目录,此处设置为1,即表示只深入到第一层子目录

      df -h:显示磁盘分区上的可使用的磁盘空间。默认显示单位为KB。

          -h  以K,M,G为单位,提高信息的可读性。

      stat -c 格式代码  文件名:获取关于文件的额外信息,包括文件系统和文件。

    【用户及权限操作】  

    #chmod    #chown  #passwd

    -chmod:修改文件(夹)权限

    语法:chmod mode file

      其中mode是指:owner+[rwx]

      owner:u 表示该档案的拥有者,g 表示与该档案的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。

      此外mode也可以是数字:r=4,w=2,x=1。

    示例:

      chmod ugo+r file.txt :将文件 file.txt 设为所有人添加读取的权限。

      chmod 777 file.txt :将文件file.txt 设为所有人皆可读可写可执行。

     -chown:修改文件(夹)所属的用户或用户组

    语法:chown own:group file

      其中own指文件所属用户,group指文件所属的群组

    示例:

      chown root: file.txt:改变文件file.txt的拥有者和群组

      chown :aiusr file.txt:改变文件file.txt的组群

    -passwd:修改系统用户的密码

    语法:passwd username 

      回车后再依次输入旧密码和两遍新密码即可修改完成

      (先登录root,获得root权限) passwd aiusr :修改用户aiusr的密码。

    【文件操作】 

    #mkdir  #cd  #cp  #scp  #mv  #rm  #touch  #cat  #head  #tail  #vi

    -mkdir:创建文件夹

    语法:mkdir [mode] dirname

    示例:

      mkdir 760 data:创建名为data的文件夹,权限为创建者可读可写可执行,同组的可读可写,普通用户无任何权限。

    -cd:进入某个路径下的文件夹

    语法: cd filepath

    示例:

      cd /home/data:进入目录/home/data

    -cp:复制文件

    语法:cp filepath1/filename1 filepath2/filename2

    示例:

      cp  /home/data/1.txt /home/data/backup/2.txt:复制/home/data/目录下的文件1.txt到目录/home/data/backup/下,命名为2.txt。

    -scp:复制文件至远程服务器

    语法:scp filepath1/filename1 remote_username@remote_ip:filepath2/filename2

    示例:

      scp  home/vike/data/1.txt universal@192.168.1.246:/home/zw/data/1.txt:复制当前主机下/home/data/目录下的文件1.txt到远程主机universal(ip:192.168.1.246)的/home/zw/data/目录下。

    -mv:移动文件(重命名文件)

    语法:mv filepath1/filename1 filepath2/filename2

    示例:

      mv  /home/data/1.txt /home/data/backup/2.txt:移动/home/data/目录下的文件1.txt到目录/home/data/backup/下,命名为2.txt。

      mv  /home/data/1.txt /home/data/2.txt:将/home/data/目录下的文件1.txt重命名为2.txt。

    -rm:删除文件

    语法:rm filepath/filename

    示例:

      rm  /home/data/1.txt:删除/home/data/目录下的文件1.txt

        -f  强制删除文件或者文件夹,不提示

        -r 递归处理,将目录下的文件及其子文件夹全部删除

        -i 删除文件或目录前先询问用户(输入y或n后再进行操作)

    -touch:创建文件

    语法:touch filepath/filename

    示例:

      touch  /home/data/2.txt:在/home/data/目录下创建文件2.txt

    -cat:打开文件  

    语法:cat filepath/filename

    示例:

      cat  /home/data/1.txt:打开/home/data/目录下的文件1.txt

      cat -n filename:打开文件,并显示行号。

    -head,-tail:查看文件前/后n行(不填写参数时默认显示10行)

    语法:head [-n] filepath/filename;

          tail [-n] filepath/filename

    示例:

      head  /home/data/1.txt:打印/home/data/目录下文件1.txt的前10行

      tail  -50  /home/data/1.txt:打印/home/data/目录下文件1.txt的后50行

    -vi,-vim:编辑文件(打开文件后--i(输入),:q!(退出),:wq(保存退出))

    语法:vi filepath/filename

    示例:

      vi  /home/data/1.txt:编辑/home/data/目录下的文件1.txt

    【搜索】 

    #find    #locate    #whereis

    进程

    #ps -ef  查看进程

    #crontab -l  查看当前定时任务

    #crontab -e  编辑当前定时任务

    crontab格式  分  时  日  月  周  命令行

              *    *    *    *    *    xxxx

          * :所有取值  / :每  X-Y:从X连续到Y  X,Y:离散的X和Y

    【其他】 

    #字符串/数值比较参考:http://blog.csdn.net/weiyuweizhi/article/details/7488388):

      整数比较:
        -eq       等于,如:if [ "$a" -eq "$b" ]
        -ne       不等于,如:if [ "$a" -ne "$b" ]
        -gt       大于,如:if [ "$a" -gt "$b" ]
        -ge       大于等于,如:if [ "$a" -ge "$b" ]
        -lt       小于,如:if [ "$a" -lt "$b" ]
        -le       小于等于,如:if [ "$a" -le "$b" ]
        <       小于(需要双括号),如:(("$a" < "$b"))
        <=       小于等于(需要双括号),如:(("$a" <= "$b"))
        >       大于(需要双括号),如:(("$a" > "$b"))
        >=       大于等于(需要双括号),如:(("$a" >= "$b"))

      字符串比较:
        =       等于,如:if [ "$a" = "$b" ]
        ==     等于,如:if [ "$a" == "$b" ], 与=等价
                     注意:==的功能在[[]]和[]中的行为是不同的,如下:
                       1 [[ $a == z* ]]    # 如果$a以"z"开头(模式匹配)那么将为true
                       2 [[ $a == "z*" ]] # 如果$a等于z*(字符匹配),那么结果为true
                       3 [ $a == z* ]      # File globbing 和word splitting将会发生
                       4 [ "$a" == "z*" ] # 如果$a等于z*(字符匹配),那么结果为true

        !=      不等于,如:if [ "$a" != "$b" ], 这个操作符将在[[]]结构中使用模式匹配.
        <       小于,在ASCII字母顺序下.如:
                     if [[ "$a" < "$b" ]]
                     if [ "$a" < "$b" ]     在[]结构中"<"需要被转义.
        >       大于,在ASCII字母顺序下.如:
           if [[ "$a" > "$b" ]]
           if [ "$a" > "$b" ]  在[]结构中">"需要被转义.
        -z       字符串为"null".就是长度为0.
        -n       字符串不为"null"

    #字符串截取切割(参考:http://www.jb51.net/article/56563.htm) 

    假设有变量 var=http://www.aaa.com/123.htm.

    1. # 号截取,删除左边字符,保留右边字符。

      echo ${var#*//}

      其中 var 是变量名,# 号是运算符,*// 表示从左边开始删除第一个 // 号及左边的所有字符

      即删除 http://,结果是 :www.aaa.com/123.htm

    2. ## 号截取,删除左边字符,保留右边字符。

      echo ${var##*/}

      ##*/ 表示从左边开始删除最后(最右边)一个 / 号及左边的所有字符

      即删除 http://www.aaa.com/,结果是 123.htm

    3. %号截取,删除右边字符,保留左边字符

      echo ${var%/*} 

      %/* 表示从右边开始,删除第一个 / 号及右边的字符

      结果是:http://www.aaa.com

    4. %% 号截取,删除右边字符,保留左边字符

      echo ${var%%/*}

       %%/* 表示从右边开始,删除最后(最左边)一个 / 号及右边的字符

      结果是:http:

    5. 从左边第几个字符开始,及字符的个数

      echo ${var:0:5}

      其中的 0 表示左边第一个字符开始,5 表示字符的总个数。

      结果是:http:

    6. 从左边第几个字符开始,一直到结束。

      echo ${var:7}

       其中的 7 表示左边第8个字符开始,一直到结束。

      结果是 :www.aaa.com/123.htm

    7. 从右边第几个字符开始,及字符的个数

      echo ${var:0-7:3}

      其中的 0-7 表示右边算起第七个字符开始,3 表示字符的个数。

      结果是:123

    8. 从右边第几个字符开始,一直到结束。

       echo ${var:0-7}

       表示从右边第七个字符开始,一直到结束。

      结果是:123.htm

    注:(左边的第一个字符是用 0 表示,右边的第一个字符用 0-1 表示)

    #停止后台运行的脚本/进程

    1、筛选出需要的脚本,获取进程ID:

      ps -ef | grep '脚本名'

    2、强行终止脚本

      kill -9 进程ID

  • 相关阅读:
    【年度总结】——踏雪留痕
    ios提交程序后出现的各种问题
    c++动态库中使用命名空间的问题
    第八章 网络的时代—网络开发(4)
    USB otg 学习笔记
    servlet_3
    Windows server 2012清除并重建SID
    实时监听输入框值变化:oninput & onpropertychange
    JQuery 自动触发事件
    jquery input change事件
  • 原文地址:https://www.cnblogs.com/vikezhu/p/6670254.html
Copyright © 2011-2022 走看看