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

原文地址:https://www.cnblogs.com/vikezhu/p/6670254.html