Linux常用命令

一、目录/文件基本操作

 1.1 切换目录命令 cd

  cd      进入用户主目录;

  cd ~    进入用户主目录;

  cd -     返回进入此目录之前所在的目录;

  cd ..    返回上级目录

  cd ../..   返回上两级目录;

  cd /     切换到系统根目录

 1.2 显示用户当前工作目录的绝对路径 pwd

 1.3 显示目录内容列表 ls

  ls(list)是一个非常有用的命令,用来显示当前目录下的内容。配合参数的使用,能以不同的方式显示目录内容。
    * ls
    * ls -a    显示所有文件或目录(包含隐藏的文件)
    * ls -l     缩写成ll
    * ll -h    友好显示文件大小
 
  注意:在linux中,以 . 开头的文件都是隐藏的文件

 1.4 目录的创建与移除 mkdir / rmdir

  mkdir(make directory)命令可用来创建子目录。
     * mkdir wfx    在当前目录下创建wfx目录
     * mkdir –p wfx/demo   级联创建wfx以及demo
      •   -p 若所要建立目录的上层目录目前尚未建立,则会一并建立。
  rmdir(remove directory)命令可用来删除“空”的子目录。
     * rmdir wfx    删除wfx目录

 1.5 重新命名、移动文件 mv

  mv命令用来对文件或目录重新命名,或者将文件从一个目录移到另一个目录中。
    * mv a.txt b.txt    将a.txt文件重命名为b.txt
 
    * mv a.txt ../    将a.txt文件移动到上一层目录中
    * mv a/* .   将目录当前a目录中的所有文件移到当前目录(用.表示)中

 1.6 将源文件或目录复制到目标文件或目录中 cp

  cp(copy)命令用来将一个或多个源文件或者目录复制到指定的目的文件或目录。
  选项:
  • -f:强行复制文件或目录,不论目标文件或目录是否已存在;
  • -i:覆盖既有文件之前先询问用户;
  • -R/r:递归处理,将指定目录下的所有文件与子目录一并处理;
  • -b:覆盖已存在的文件目标前将目标文件备份;
  • -v:详细显示命令执行的操作。
    * cp a.txt b.txt    将a.txt复制为b.txt文件
    * cp a.txt ../    将a.txt文件复制到上一层目录中

 1.7 创建新的空文件 touch

  touch命令有两个功能:
    ① 是用于把已存在文件的时间标签更新为系统当前的时间(默认方式),它们的数据将原封不动地保留下来;
    ② 是用来创建新的空文件。

[root@iZbp1e6dcmuajgzZ home]# cd wfx
[root@iZbp1e6dcmuajgzZ wfx]# ll
total 4
drwxr-xr-x 2 root root 4096 Sep  3 21:48 demo
[root@iZbp1e6dcmuajgzZ wfx]# touch test
[root@iZbp1e6dcmuajgzZ wfx]# ll
total 4
drwxr-xr-x 2 root root 4096 Sep  3 21:48 demo
-rw-r--r-- 1 root root    0 Sep  3 22:41 test
[root@iZbp1e6dcmuajgzZ wfx]# ls -ll test
-rw-r--r-- 1 root root 0 Sep  3 22:41 test
[root@iZbp1e6dcmuajgzZ wfx]# ls -ll test
-rw-r--r-- 1 root root 0 Sep  3 22:41 test
[root@iZbp1e6dcmuajgzZ wfx]# touch test
[root@iZbp1e6dcmuajgzZ wfx]# ls -ll test
-rw-r--r-- 1 root root 0 Sep  3 22:43 test

 1.8 为文件创建连接 In

  ln命令用来为文件创件连接,连接类型分为硬连接和软连接两种,默认的连接类型是硬连接。
  如果要创建软连接必须使用"-s"选项(以路径的形式存在。类似于Windows操作系统中的快捷方式)。

 1.9 文件内容查看

   1.9.1 分屏上下翻页浏览文件内容 less

  less命令允许用户向前或向后浏览文件。
    * PageUp键    向上翻页
    * PageDown键    向下翻页
    * Q键       退出命令

   1.9.2 显示文件内容,每次显示一屏 more

  more命令全屏幕的方式按页显示文本文件的内容。
    * Enter键   向下翻滚一行
    * 空格     向下滚动一屏
    * Q 键     退出命令

   1.9.3 连接文件并打印到标准输出设备上 cat

// cat命令用来显示文件的内容。
[root@iZbp1e6dcmuajgzZ ~]# cd TEST
[root@iZbp1e6dcmuajgzZ TEST]# ll
total 4
-rw-r--r-- 1 root root 10 Dec  5  2019 test1.txt
[root@iZbp1e6dcmuajgzZ TEST]# cat test1.txt 
hello
boy
[root@iZbp1e6dcmuajgzZ TEST]# cat test1.txt > test2.txt
[root@iZbp1e6dcmuajgzZ TEST]# ll
total 8
-rw-r--r-- 1 root root 10 Dec  5  2019 test1.txt
-rw-r--r-- 1 root root 10 Sep  3 23:18 test2.txt
[root@iZbp1e6dcmuajgzZ TEST]# cat test2.txt 
hello
boy
[root@iZbp1e6dcmuajgzZ TEST]# 

   1.9.4 连接文件并打印到标准输出设备上 cut

  cut是一个选取命令,就是将一段数据经过分析,取出我们想要的。
  cut只擅长处理“以一个字符间隔”的文本内容
  选项:
    -b :以字节为单位进行分割。
    -d :自定义分隔符,默认为制表符。

[root@iZbp1e6dcmuajgzZ TEST]# who
root     pts/0        2020-09-03 21:43 (***.***.**.***)
root     pts/1        2020-09-03 22:41 (***.***.**.***)
[root@iZbp1e6dcmuajgzZ TEST]# who|cut -b 3
o
o
[root@iZbp1e6dcmuajgzZ TEST]# who|cut -b -3
roo
roo
[root@iZbp1e6dcmuajgzZ TEST]# who|cut -b -3
roo
roo
[root@iZbp1e6dcmuajgzZ TEST]# who|cut -b 3-
ot     pts/0        2020-09-03 21:43 (***.***.**.***)
ot     pts/1        2020-09-03 22:41 (***.***.**.***)
[root@iZbp1e6dcmuajgzZ TEST]# who|cut -b -3,3-
root     pts/0        2020-09-03 21:43 (***.***.**.***)
root     pts/1        2020-09-03 22:41 (***.***.**.***)
[root@iZbp1e6dcmuajgzZ TEST]# 

   1.9.5 在屏幕上显示指定文件的末尾若干行 tail

  tail命令是在实际使用过程中使用非常多的一个命令。
  它的功能是:用于显示文件尾部(后面的行)的内容。

  用法:tail -尾行数 文件名
    * tail -20 /etc/passwd    查看后20行数据
    * tail -f catalina.log   动态查看日志(*****)
  • tail命令默认在屏幕上显示指定文件的末尾10行。
  • ctrl+c 结束查看

   1.9.6 在屏幕上显示指定文件的开头若干行 head

  head命令用于显示文件的开头的内容。用法:同tail

  • 在默认情况下,head命令显示文件的头10行内容。

 1.10 比较给定的两个文件的不同 diff

  diff命令在最简单的情况下,比较给定的两个文件的不同。
  diff命令是以逐行的方式,比较文本文件的异同处。
    * 如果该命令指定进行目录比较,则将会比较该目录中具有相同文件名的文件,而不对其子目录文件进行任何比较操作。

[root@iZbp1e6dcmuajgzZ TEST]# ll
total 8
-rw-r--r-- 1 root root 10 Sep  3 23:21 test1.txt
-rw-r--r-- 1 root root 10 Sep  3 23:18 test2.txt
[root@iZbp1e6dcmuajgzZ TEST]# diff test1.txt test2.txt
1,2c1,5
< hello
< boy
---
> a
> s
> b
> r
> c
[root@iZbp1e6dcmuajgzZ TEST]# 

 1.11 在指定目录下查找文件 find

[root@iZbp1e6dcmuajgzZ ~]# find TEST/ -name "test1.txt"		// 用文件名查找文件
TEST/test1.txt
[root@iZbp1e6dcmuajgzZ ~]# find TEST/ -name "Test1.txt"
[root@iZbp1e6dcmuajgzZ ~]# find TEST/ -iname "Test1.txt"	// 用文件名查找文件,忽略大小写
TEST/test1.txt
[root@iZbp1e6dcmuajgzZ ~]#

//查找n那天修改的文件
find . -mtime n -print
//查找n天前修改的文件
find . -mtime +n -print
//查找n天至今修改的文件
find . -mtime -n -print
//查找n天新增文件
find . -ctime -1
//查找大于10M的文件
find . -size +10M

 1.12 分割任意大小的文件 split

  split命令可以将一个大文件分割成很多个小文件,有时需要将文件分割成更小的片段,比如为提高可读性,生成日志等。
  选项
    -b:值为每一输出档案的大小,单位为 byte。
    -d:使用数字作为后缀。
    -a length来指定后缀的长度
  实例文件被分割成多个带有字母的后缀文件,如果想用数字后缀可使用-d参数,同时可以使用-a length来指定后缀的长度:
    -bash-4.1$ split -b 10k date.file -d -a 3
    -bash-4.1$ ls
    date.file x000 x001 x002 x003 x004 x005 x006 x007 x008 x009

 1.13 文件编辑

   1.13.1 功能强大的流式文本编辑器 sed

  -i 表示inplace edit,就地修改文件,不备份
  -in-place 备份后,就地修改文件

   1.13.2 功能强大的纯文本编辑器 vi/vim

  vi/vim是Linux中最基本的文本编辑器。既可以查看文件也可以编辑文件。
  三种模式:命令行、插入、底行模式。
    * 切换到命令行模式:按Esc键;
    * 切换到插入模式:按 i 、o、a键;
      i   在当前位置生前插入
      I   在当前行首插入
      a   在当前位置后插入
      A   在当前行尾插入
      o   在当前行之后插入一行
      O   在当前行之前插入一行
    * 切换到底行模式:按 :(冒号);
 
  :q  退出
  :wq  保存并退出:
  :q!  不保存退出
 
  快捷键:
    dd  快速删除一行
    R  替换
    yy  拷贝当前行
    p  粘贴

 1.14 统计文件的行数、字数、字节数 wc

  wc命令可以计算文件的列数、字数或是Byte数。
  选项
    -l:只显示列数;
    -w:只显示字数。

 1.15 报告或忽略文件中的重复行 uniq

  uniq命令用于报告或忽略文件中的重复行,一般与sort命令结合使用。

 1.16 将文件进行排序并输出 sort

  sort命令将文件进行排序,并将排序结果标准输出。

 1.17 强大的文本搜索工具 grep

  查找符合条件的字符串。
  用法: grep [选项]... PATTERN [FILE]...
  选项
    -A<显示列数> 除了显示符合范本样式的那一行之外,并显示该行之后的内容。
    -b 在显示符合范本样式的那一行之外,并显示该行之前的内容。
    -C<显示列数> 除了显示符合范本样式的那一列之外,并显示该列之前后的内容。
    -i 忽略字符大小写。
    -o 只输出文件中匹配到的部分。
  举例
    * grep lang anaconda-ks.cfg  在文件中查找lang
    * grep lang anaconda-ks.cfg –color 高亮显示

 1.18 删除操作 rm

  rm  删除文件
  用法:rm [选项]... 文件...
    * rm a.txt    删除a.txt文件
  
  选项
    -f   不询问,直接删除
    -r   递归删除
 
  不询问递归删除(慎用)
    rm -rf a     不询问递归删除a
    rm -rf *      删除所有文件
    rm -rf /*   自杀

 1.19 打包和解压 tar

  tar命令位于/bin目录下,它能够将用户所指定的文件或目录打包成一个文件,但不做压缩。
  利用tar命令,可以把一大堆的文件和目录全部打包成一个文件,这对于备份文件或将几个文件组合成为一个文件以便于网络传输是非常有用的。
  一般Linux上常用的压缩方式是选用tar将许多文件打包成一个文件,再以gzip压缩命令压缩成xxx.tar.gz(或称为xxx.tgz)的文件。
  常用参数:
    -c或--create:创建一个新tar文件(备份文件)
    -v:显示运行过程的信息
    -f<备份文件>或--file=<备份文件>:指定文件名
    -z或--gzip或--ungzip:调用gzip压缩命令进行压缩
    -t:查看压缩文件的内容
    -x或--extract或--get:解开tar文件(从备份文件中还原文件)
  打包:
    * tar –cvf xxx.tar ./*
  打包并且压缩:
    * tar –zcvf xxx.tar.gz ./*
  解包
    * tar –xvf xxx.tar
  解包并且解压
    * tar -zxvf xxx.tar.gz -C /home/wfx  (解压到指定路径下)
 
  • 如果加z选项,则以.tar.gz来代表gzip压缩过的tar包。

 1.20 文件压缩 gzip

  gzip命令用来压缩文件。文件经它压缩过后,其名称后面会多处“.gz”扩展名。
  gzip命令对文本文件有60%~70%的压缩率。减少文件大小有两个明显的好处:
    ① 是可以减少存储空间;
    ② 是通过网络传输文件时,可以减少传输的时间。

 1.21 文件解压缩 gunzip

  gunzip命令用来解压缩文件。gunzip是个使用广泛的解压缩程序,它用于解开被gzip压缩过的文件,这些压缩文件预设最后的扩展名为.gz。

 1.22 下载文件 wget

  案例:下载资料

  • wget http://nginx.org/download/nginx-1.9.12.tar.gz

 1.23 软件包的管理 rpm 

  RPM Package Manager (RPM) 是一个强大的命令行驱动的软件包管理工具,用来安装、卸载、校验、查询和更新 Linux 系统上的软件包。
  
  选项
    -a 所有的包
    -q 查询
 
  案例
    * rpm –qa | grep java 查找rpm下的java包
    * rpm -e --nodeps java-1.8.0_231 ... 卸载java1.8

二、网络通讯命令

  ifconfig  显示或设置网络设备。
    * ifconfig  显示网络设备
    * ifconfig eth0 up 启用eth0网卡
    * ifconfig eth0 down  停用eth0网卡
  ping   探测网络是否通畅。
    * ping 127.0.0.1
  netstat  查看网络端口。
    * netstat -an | grep 3306 查询3306端口占用情况

三、系统相关命令

 3.1 性能查询

   3.1.1 查看Liunx系统负载信息 uptime

  uptime命令能够打印系统总共运行了多长时间系统的平均负载
  uptime命令可以显示的信息显示依次为:
    * 现在时间、系统已经运行了多长时间、目前有多少登陆用户、系统在过去的1分钟、5分钟和15分钟内的平均负载
 
  选项
    -V:显示指令的版本信息。
[root@iZbp1e6dcmuajgzZ ~]# uptime -V	// 查看版本
uptime from procps-ng 3.3.10	// 3.3.10版本
[root@iZbp1e6dcmuajgzZ ~]# uptime	// 系统负载信息
 13:58:29 up 67 days, 15:08,  1 user,  load average: 0.00, 0.01, 0.05
 // 显示内容说明:
 // 13:58:29  系统当前时
 // up 67 days  主机已运行时间,时间越大,说明你的机器越稳定。
 // 1 user  用户连接数,是总连接数而不是用户数
 // load average: 0.00, 0.01, 0.05   系统平均负载(在特定时间间隔内运行队列中的平均进程数。),统计最近1,5,15分钟的系统平均负载

   3.1.2 显示内存使用情况 free

  free命令可以显示当前系统未使用的和已使用的内存资源,还可以显示被内核使用的内存缓冲区。

  选项
    -b:以Byte为单位显示内存使用情况;
    -k:以KB为单位显示内存使用情况;
    -m:以MB为单位显示内存使用情况;
    -o:不显示缓冲区调节列;
    -s<间隔秒数>:持续观察内存使用状况;
    -t:显示内存总和列;
    -V:显示版本信息。

  可参考链接:https://www.cnblogs.com/ultranms/p/9254160.html

[root@iZbp1e6dcmuajgzZ ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           1838         734          75           0        1028         928
Swap:             0           0           0
/**
* Mem行:内存的使用情况。
* Swap行:交换空间的使用情况。
* total:内存总数;
* used:已经使用的内存数;
* free:空闲的内存数;
* shared:当前已经废弃不用;
* buff/cache:缓存内存数;
* available:还可以被应用程序使用的物理内存大小。
*/

   3.1.3 查看系统资源消耗情况 top

  top命令可以实时动态地查看系统的整体运行情况。
  选项
    -c:显示完整的治命令;
    -u<用户名>:指定用户名;
    -p<进程号>:指定进程;
 
  top交互命令
    在top命令执行过程中可以使用的一些交互命令。这些命令都是单字母的,如果在命令行中使用了-s选项, 其中一些命令可能会被屏蔽。
    q:退出程序;
    l:切换显示平均负载和启动时间信息;
    m:切换显示内存信息;
    t:切换显示进程和CPU状态信息;
    c:切换显示命令名称和完整命令行;
    M:根据驻留内存大小进行排序;
    P:根据CPU使用百分比大小进行排序;
    T:根据时间/累计时间进行排序;
    w:将当前设置写入~/.toprc文件中。
top - 14:35:24 up 67 days, 15:45,  1 user,  load average: 0.00, 0.01, 0.05
Tasks:  83 total,   2 running,  81 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.3 us,  0.0 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  1882160 total,    77344 free,   751924 used,  1052892 buff/cache
KiB Swap:        0 total,        0 free,        0 used.   950256 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND   
  829 root      20   0  484308   7548   3164 S  0.3  0.4   4:10.62 rsyslogd   
23137 root      20   0  161908   2248   1580 R  0.3  0.1   0:00.05 top       
    1 root      20   0   51856   3656   2280 S  0.0  0.2  10:18.04 systemd  
    2 root      20   0       0      0      0 S  0.0  0.0   0:00.09 kthreadd  

/**
top - 14:35:24[当前系统时间], 
	up 67 days[系统已经运行了16天],
	1 user[个用户当前登录], 
	load average: 0.00, 0.01, 0.05[系统负载,即任务队列的平均长度]
Tasks: 
	83 total[总进程数],
	2 running[正在运行的进程数],
	81 sleeping[睡眠的进程数],
	0 stopped[停止的进程数],
	0 zombie[冻结进程数],
%Cpu(s): 
	0.3 us[用户空间占用CPU百分比],
	0.0 sy[内核空间占用CPU百分比],
	0.0 ni[用户进程空间内改变过优先级的进程占用CPU百分比], 
	99.7 id[空闲CPU百分比], 
	0.0 wa[等待输入输出的CPU时间百分比], 
	0.0 hi[], 
	0.0 si[],
	0.0 st[],
KiB Mem: 
	1882160 total[物理内存总量],
	77344 free[空闲内存总量],
	751924 used[使用的物理内存总量],
	1052892 buff/cache[用作内核缓存的内存量] 
KiB Swap: 
	0 total[交换区总量], 
	0 free[空闲交换区总量], 
	0 used[使用的交换区总量], 
	950256 avail Mem[缓冲的交换区总量]
*/

   3.1.4 显示磁盘的相关信息 df

  df命令用于显示磁盘分区上的可使用的磁盘空间。默认显示单位为KB。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。

  选项
    -h:计算时是以1000 Bytes为换算单位而非1024 Bytes
    -a或--all:包含全部的文件系统。

[root@iZbp1e6dcmuajgzZ ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        40G  7.5G   30G  20% /
devtmpfs        909M     0  909M   0% /dev
tmpfs           920M     0  920M   0% /dev/shm
tmpfs           920M  608K  919M   1% /run
tmpfs           920M     0  920M   0% /sys/fs/cgroup
overlay          40G  7.5G   30G  20% /var/lib/docker/overlay2/7f4229668b39f9861d71014/merged
overlay          40G  7.5G   30G  20% /var/lib/docker/overlay2/10142cfd5d4f77ee60ba716/merged
tmpfs           184M     0  184M   0% /run/user/0

   3.1.5 显示每个文件和目录的磁盘使用空间 du

[root@iZbp1e6dcmuajgzZ ~]# cd TEST
[root@iZbp1e6dcmuajgzZ TEST]# ll
total 8
-rw-r--r-- 1 root root 10 Sep  3 23:21 test1.txt
-rw-r--r-- 1 root root  8 Sep  4 01:30 test2.txt
[root@iZbp1e6dcmuajgzZ TEST]# du -a		// 查看文件列表大小
4       ./test1.txt
4       ./test2.txt
12      .
[root@iZbp1e6dcmuajgzZ TEST]# du -ah		// 查看文件列表大小
4.0K    ./test1.txt
4.0K    ./test2.txt
12K     .
[root@iZbp1e6dcmuajgzZ TEST]# du -sh		// 查看所有文件的大小总和
12K     .

   3.1.6 查询线程 ps

  ps命令用于报告当前系统(正在运行)的进程状态。
  可以搭配kill指令随时中断、删除不必要的程序。
  ps命令是最基本同时也是非常强大的进程查看命令,使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等,总之大部分信息都是可以通过执行该命令得到的。
  
  选项
    -a:显示现行终端机下的所有程序,包括其他用户的程序。
    -e:列出程序时,显示每个程序所使用的环境变量。
    -f:显示UID,PPIP,C与STIME栏位。
    -u:以用户为主的格式来显示程序状况。
  
  实例
    查看所有进程:
      * ps –ef
    查找某一进程:
      * ps –ef | grep ssh
    java进程数:
      * ps -ef |grep java|grep -v grep|wc -l
    java线程数:
      * ps -ef H|grep java|grep -v grep|wc -l

   3.1.7 杀死进程 kill

  kill 8080  杀掉8080编号的进程

  kill -9 8080  强制杀死8080进程

 3.2 常用信息命令

   3.2.1 统计给定命令所花费的总时间 time

  输出的信息分别显示了该命令所花费的real时间、user时间和sys时间。

  • real时间是指挂钟时间,也就是命令开始执行到结束的时间。这个短时间包括其他进程所占用的时间片,和进程被阻塞时所花费的时间。
  • user时间是指进程花费在用户模式中的CPU时间,这是唯一真正用于执行进程所花费的时间,其他进程和花费阻塞状态中的时间没有计算在内。
  • sys时间是指花费在内核模式中的CPU时间,代表在内核中执系统调用所花费的时间,这也是真正由进程使用的CPU时间。
[root@iZbp1e6dcmuajgzZ ~]$ time ls
Desktop  Documents  Downloads  files  Music  Pictures  Public  temp  Templates  Videos

real    0m0.002s
user    0m0.000s
sys     0m0.001s

   3.2.2 查找并显示给定命令的绝对路径 which

  which命令用于查找并显示给定命令的绝对路径,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。

[root@iZbp1e6dcmuajgzZ diff]$ which top
/usr/bin/top

   3.2.3 显示目前登入系统的用户信息 who

   3.2.4 查看当前主机名 hostname

   3.2.5 显示系统信息 uname

  uname -a 显示本机详细信息

[root@iZbp1e6dcmuajgzZ ~]# uname -a
Linux iZbp1e6dcmuajgzZ 3.10.0-957.21.3.el7.x86_64 #1 SMP Tue Jun 18 16:35:19 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
//依次为:内核名称(类别),主机名,内核版本号,内核版本,内核编译日期,硬件名,处理器类型,硬件平台类型,操作系统名称

   3.2.6 显示或设置系统时间与日期 date

  date命令是显示或设置系统时间与日期。
  很多shell脚本里面需要打印不同格式的时间或日期,以及要根据时间和日期执行操作。
  延时通常用于脚本执行过程中提供一段等待的时间。
  日期可以以多种格式去打印,也可以使用命令设置固定的格式。
    * date  显示当前系统时间
    * date -s "2020-09-04 17:01:00"  设置系统时间
  日期格式字符串列表
    %H 小时,24小时制(00~23)
    %I 小时,12小时制(01~12)
    %k 小时,24小时制(0~23)
    %l 小时,12小时制(1~12)
    %M 分钟(00~59)
    %p 显示出AM或PM
    %r 显示时间,12小时制(hh:mm:ss %p)
    %s 从1970年1月1日00:00:00到目前经历的秒数
    %S 显示秒(00~59)
    %T 显示时间,24小时制(hh:mm:ss)
    %X 显示时间的格式(%H:%M:%S)
    %Z 显示时区,日期域(CST)
    %a 星期的简称(Sun~Sat)
    %A 星期的全称(Sunday~Saturday)
    %h,%b 月的简称(Jan~Dec)
    %B 月的全称(January~December)
    %c 日期和时间(Tue Nov 20 14:12:58 2012)
    %d 一个月的第几天(01~31)
    %x,%D 日期(mm/dd/yy)
    %j 一年的第几天(001~366)
    %m 月份(01~12)
    %w 一个星期的第几天(0代表星期天)
    %W 一年的第几个星期(00~53,星期一为第一天)
    %y 年的最后两个数字(1999则是99)
// 1、格式化输出
//now时间
[root@iZbp1e6dcmuajgzZ ~]# date +"%Y-%m-%d"
2020-09-04
[root@iZbp1e6dcmuajgzZ ~]# date +"%Y-%m-%d %H:%M:%S"
2020-09-04 17:05:36
//前一天
[root@iZbp1e6dcmuajgzZ ~]# date -d "1 day ago" +"%Y-%m-%d %H:%M:%S"
2020-09-03 17:07:06
//前一周
[root@iZbp1e6dcmuajgzZ ~]# date -d "1 week ago" +"%Y-%m-%d %H:%M:%S"
2020-08-28 17:07:24
//前一月
[root@iZbp1e6dcmuajgzZ ~]# date -d "1 month ago" +"%Y-%m-%d %H:%M:%S"
2020-08-04 17:07:31
//前一年
[root@iZbp1e6dcmuajgzZ ~]# date -d "1 year ago" +"%Y-%m-%d %H:%M:%S"
2019-09-04 17:07:40

//2、加减操作
//当天
[root@iZbp1e6dcmuajgzZ ~]# date +%Y%m%d
20200904
//前一天
[root@iZbp1e6dcmuajgzZ ~]# date -d "-1 day" +%Y%m%d
20200903
//后一天
[root@iZbp1e6dcmuajgzZ ~]# date -d "+1 day" +%Y%m%d
20200905
//上一月
[root@iZbp1e6dcmuajgzZ ~]# date -d "-1 year" +%Y%m%d
20190904
//下一月
[root@iZbp1e6dcmuajgzZ ~]# date -d "+1 month" +%Y%m%d
20201004
//前一年
[root@iZbp1e6dcmuajgzZ ~]# date -d "-1 year" +%Y%m%d
20190904
//下一年
[root@iZbp1e6dcmuajgzZ ~]# date -d "+1 year" +%Y%m%d
20210904

//3、设置时间(需root权限执行)
[root@iZbp1e6dcmuajgzZ ~]# date -s 17:15:11
[root@iZbp1e6dcmuajgzZ ~]# sudo date -s 17:15:11
//	把系统时间写入CMOS
[root@iZbp1e6dcmuajgzZ ~]# clock -w
[root@iZbp1e6dcmuajgzZ ~]# sudo clock -w

   3.2.7 将目前动作延迟一段时间(暂停、睡眠) sleep

  sleep命令暂停指定的时间。
  有时在写一些以循环方式运行的监控脚本,设置时间间隔是必不可少的。

//下面是一个Shell进度条的脚本演示在脚本中生成延时。
/**
#!/bin/bash

b=''
for ((i=0;$i<=100;i++))
do
printf "Progress:[%-100s]%d%%
" $b $i
sleep 0.5
b=#$b
done
echo
*/

   3.2.8 输出指定的字符串或者变量 echo

// echo命令用于在shell中打印shell变量的值,或者直接输出指定的字符串。
[root@iZbp1e6dcmuajgzZ ~]# echo wfx
wfx
[root@iZbp1e6dcmuajgzZ ~]# echo date
date
[root@iZbp1e6dcmuajgzZ ~]# echo `date`
Fri Sep 4 17:24:37 CST 2020

   3.2.9 退出当前的shell exit

  exit命令用于退出shell,并返回给定值。
  在shell脚本中可以终止当前脚本执行。执行exit可使shell以指定的状态值退出。
  若不设置状态值参数,则shell以预设值退出。状态值0代表执行成功,其他值代表执行失败。

   3.2.10 查询历史命令记录 history

  history命令用于显示指定数目的指令命令,读取历史命令文件中的目录到历史命令缓冲区和将历史命令缓冲区中的目录写入命令文件。

// 使用history命令显示最近使用的10条历史命令,输入如下命令:
[root@iZbp1e6dcmuajgzZ ~]# history 10
 1021  date +"%Y-%m-%d %H:%M:%S"
 1022  echo wfx
 1023  echo data
 1024  echo wfx
 1025  echo date
 1026  echo 'date'
 1027  echo wfx
 1028  echo date
 1029  echo `date`
 1030  history 10

   3.2.11 清屏幕 clear

   3.2.12 显示帮助信息 help

  help命令用于显示shell内部命令的帮助信息。
  help命令只能显示shell内部的命令帮助信息。而对于外部命令的帮助信息只能使用man命令查看。

  * help
  * help shell内部命令

   3.2.13 定时任务 crontab

  crontab命令被用来提交和管理用户的需要周期性执行的任务。
  与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。
 
  选项
    -e:编辑该用户的计时器设置;
    -l:列出该用户的计时器设置;
 
  crontab文件的含义:用户所建立的crontab文件中,每一行都代表一项任务,每行的每个字段代表一项设置,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段。
  格式如下:
    minute hour day month week command 顺序:分 时 日 月 周
  其中:
    minute: 表示分钟,可以是从0到59之间的任何整数。 
    hour:表示小时,可以是从0到23之间的任何整数。
    day:表示日期,可以是从1到31之间的任何整数。
    month:表示月份,可以是从1到12之间的任何整数。
    week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。
    command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。
 
  在以上各个字段中,还可以使用以下特殊字符:
    星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。
    逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”
    中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”
    正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。
 
  示例
    * 每1分钟执行一次
      command * * * * * command
    * 每小时的第3和第15分钟执行
      3,15 * * * * command
    * 在上午8点到11点的第3和第15分钟执行
      3,15 8-11 * * * command
    * 每隔两天的上午8点到11点的第3和第15分钟执行
      3,15 8-11 */2 * * command
    * 每个星期一的上午8点到11点的第3和第15分钟执行
      3,15 8-11 * * 1 command
    * 每晚的21:30重启smb 
      30 21 * * * /etc/init.d/smb restart
    * 每月1、10、22日的4 : 45重启smb 
      45 4 1,10,22 * * /etc/init.d/smb restart
    * 每周六、周日的1:10重启smb
      10 1 * * 6,0 /etc/init.d/smb restart
    * 每天18 : 00至23 : 00之间每隔30分钟重启smb 
      0,30 18-23 * * * /etc/init.d/smb restart
    * 每星期六的晚上11:00 pm重启smb 
      0 23 * * 6 /etc/init.d/smb restart
    * 每一小时重启smb 
      * */1 * * * /etc/init.d/smb restart
    * 晚上11点到早上7点之间,每隔一小时重启smb
      * 23-7/1 * * * /etc/init.d/smb restart
    * 每月的4号与每周一到周三的11点重启smb 
      0 11 4 * mon-wed /etc/init.d/smb restart
    * 一月一号的4点重启smb
      0 4 1 jan * /etc/init.d/smb restart
    * 每小时执行/etc/cron.hourly目录内的脚本
      01 * * * * root run-parts /etc/cron.hourly

四、其他命令

 4.1 重定向输出 > >>

  >   重定向输出,覆盖原有内容;
  >>   重定向输出,又追加功能;
  示例
    * cat /etc/passwd > a.txt    将输出定向到a.txt中
    * cat /etc/passwd >> a.txt  输出并且追加到a.txt中

 4.2 管道 |

  管道是Linux命令中重要的一个概念,其作用是将一个命令的输出用作另一个命令的输入
 
  示例
    * ls --help | more   分页查询帮助信息
    * ps –ef | grep java  查询名称中包含java的进程
    * ifconfig | more     网络设备信息
    * cat index.html | more
    * ps –ef | grep aio

 4.3 执行控制 &&

  命令之间使用 && 连接,实现逻辑与的功能。
  只有在 && 左边的命令返回真(命令返回值 $? == 0),&& 右边的命令才会被执行。 
  只要有一个命令返回假(命令返回值 $? == 1),后面的命令就不会被执行。

原文地址:https://www.cnblogs.com/sun9/p/13608809.html