Linux学习(一)新手必须掌握的Linux命令

1. 查看帮助命令

  1. help 命令
# 长格式
[root@localhost /]# ll --help
# 短格式,并不是所有命令都有短格式
[root@localhost /]# man -h
  1. man 命令
[root@localhost /]# man cd

 CentOS 7 上配置中文 man:

[root@localhost /]# yum install man-pages-zh-CN
[root@localhost /]# alias cman='man -M /usr/share/man/zh_CN'
[root@localhost ~]# cman cd

 man命令中常用按键以及用途

按键用处
空格键向下翻一页
PaGe down向下翻一页
PaGe up向上翻一页
home直接前往首页
end直接前往尾页
/从上至下搜索某个关键词,如“/linux”
?从下至上搜索某个关键词,如“?linux”
n定位到下一个搜索到的关键词
N定位到上一个搜索到的关键词
q退出帮助文档
  1. info 命令
[root@localhost /]# info cd

2. 常用系统工作命令

  1. echo 命令
# 输出字符串到控制台
[root@localhost /]# echo hello word
hello word

# 输出变量控制台
[root@localhost /]# echo $SHELL
/bin/bash
  1. date 命令,用于显示及设置系统的时间或日期
# 显示时间
[root@localhost /]# date
2020年 01月 03日 星期五 10:22:30 CST

# 以指定格式输出时间
[root@localhost /]# date "+%Y-%m-%d %H:%M:%S"
2020-01-03 10:22:44

# 设置时间为 2019-08-08 10:10:10
[root@localhost ~]# date -s "20190808 10:10:10"
2019年 08月 08日 星期四 10:10:10 CST
  1. reboot 重启系统
[root@localhost ~]# reboot
  1. poweroff 关机
[root@localhost ~]# poweroff 
  1. wget 下载网络文件
参数wget命令的参数以及作用
-b后台下载模式
-P下载到指定目录
-t最大尝试次数
-c断点续传
-p下载页面内所有资源,包括图片、视频等
-r递归下载
# wget + url
[root@localhost ~]# wget http://mirror.bit.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
  1. ps 命令,用于查看系统中的进程状态
参数作用
-a显示所有进程(包括其他用户的进程)
-u用户以及其他详细信息
-x显示没有控制终端的进程
[root@localhost ~]# ps -aux

7.top 命令,用于动态地监视进程活动与系统负载等信息

[root@localhost ~]# top
top - 11:18:37 up 25 min,  1 user,  load average: 0.00, 0.01, 0.05
Tasks: 108 total,   3 running, 105 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :   995896 total,   472736 free,   175152 used,   348008 buff/cache
KiB Swap:  2097148 total,  2096116 free,     1032 used.   610588 avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                                                              
  6982 root      20   0  557012  34432   5864 S  0.0  3.5   0:02.75 containerd                                                           
  6490 root      20   0  358512  27076   4952 S  0.0  2.7   0:01.04 firewalld                                                            
  6973 root      20   0  573820  15640   4572 S  0.0  1.6   0:00.57 tuned                                                                
  6421 polkitd   20   0  613000  10452   3460 S  0.0  1.0   0:00.21 polkitd                                                              
  6491 root      20   0  699544   9228   4916 S  0.0  0.9   0:00.25 NetworkManager                                                       
     1 root      20   0  127988   5740   3312 S  0.0  0.6   0:01.65 systemd                                                              
  6977 root      20   0  214444   5640   2792 S  0.0  0.6   0:00.31 rsyslogd    

第1行:系统时间、运行时间、登录终端数、系统负载(三个数值分别为1分钟、5分钟、15分钟内的平均值,数值越小意味着负载越低)。

第2行:进程总数、运行中的进程数、睡眠中的进程数、停止的进程数、僵死的进程数。

第3行:用户占用资源百分比、系统内核占用资源百分比、改变过优先级的进程资源百分比、空闲的资源百分比等。其中数据均为CPU数据并以百分比格式显示,例如“97.1 id”意味着有97.1%的CPU处理器资源处于空闲。

第4行:物理内存总量、内存使用量、内存空闲量、作为内核缓存的内存量。
第5行:虚拟内存总量、虚拟内存使用量、虚拟内存空闲量、已被提前加载的内存量。

  1. pidof 命令,查询某个进程的PID值
[root@localhost ~]# pidof dockerd
7786

9.kill 命令,用于终止某个指定PID的服务进程

# 终止上一步的 docker 进程
[root@localhost ~]# kill 7786

3. 系统状态检测命令

  1. ifconfig 获取网卡配置与网络状态等信息

  主要查看的就是网卡名称、inet参数后面的IP地址、ether参数后面的网卡物理地址(又称为MAC地址),以及RX、TX的接收数据包与发送数据包的个数及累计流量

[root@localhost ~]# ifconfig 
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.60.130  netmask 255.255.255.0  broadcast 192.168.60.255
        inet6 fe80::a4fd:75e8:eac8:c636  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:d4:cc:b7  txqueuelen 1000  (Ethernet)
        RX packets 392169  bytes 121485605 (115.8 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 361424  bytes 84759701 (80.8 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 49  bytes 4333 (4.2 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 49  bytes 4333 (4.2 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

2.uname 命令

  用于查看系统内核与系统版本等信息,一般会固定搭配上-a参数来完整地查看当前系统的内核名称、主机名、内核发行版本、节点名、系统时间、硬件名称、硬件平台、处理器类型以及操作系统名称等信息。

[root@localhost ~]# uname -a
Linux localhost.localdomain 3.10.0-862.el7.x86_64 #1 SMP Fri Apr 20 16:44:24 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

3.uptime 命令

  uptime 用于查看系统的负载信息。系统在最近1分钟、5分钟、15分钟内的压力情况;负载值越低越好,尽量不要长期超过1,在生产环境中不要超过5。

[root@localhost ~]# uptime
 06:17:26 up 14:38,  1 user,  load average: 0.00, 0.03, 0.05

4.free 命令,显示当前系统中内存的使用量信息

[root@localhost ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:           974M        615M        119M        2.4M        239M        196M
Swap:          2.0G        7.2M        2.0G

5.who 命令,查看当前登入主机的用户终端信息

[root@localhost ~]# who -Hu
名称   线路       时间           空闲  进程号 备注
root     pts/0        2019-12-28 04:55   .          2695 (192.168.60.1)

6.last 命令,用于查看所有系统的登录记录

[root@localhost ~]# last -a
root     pts/0        Sat Dec 28 04:55   still logged in    192.168.60.1
root     pts/0        Fri Dec 27 19:32 - 19:53  (00:20)     192.168.60.1

7.history 命令,用于显示历史执行过的命令。还可以使用“!编码数字”的方式来重复执行某一次的命令。

[root@localhost ~]# history
   77  ll
   78  cd ../
   79  ll
   80  cd ../
   81  ll
   82  rm -rf log

  历史命令会被保存到用户家目录中的.bash_history文件中。可以用cat命令查看其文件内容。

[root@localhost ~]# cat ~/.bash_history

  要清空当前用户在本机上执行的Linux命令历史记录信息,可执行如下命令:

[root@localhost ~]# history -c
  1. 查看系统版本
[root@localhost ~]# cat /etc/redhat-release 
CentOS Linux release 7.6.1810 (Core) 

4. 工作目录切换命令

1.pwd 命令,用于显示用户当前所处的工作目录

[root@localhost etc]# pwd
/etc

2.cd 命令,用于切换工作路径

# 切换到 etc 目录
[root@localhost etc]# cd /etc

# 切换到家目录
[root@localhost etc]# cd ~

# 切换到上次目录
[root@localhost ~]# cd -

3.ls 命令,用于显示目录中的文件信息。
  使用ls命令的“-a”参数看到全部文件(包括隐藏文件),使用“-l”参数可以查看文件的属性、大小等详细信息。

[root@localhost /]# ls -al
总用量 16
dr-xr-xr-x.  17 root root  224 9月  17 18:53 .
dr-xr-xr-x.  17 root root  224 9月  17 18:53 ..
lrwxrwxrwx.   1 root root    7 9月  17 18:48 bin -> usr/bin
dr-xr-xr-x.   5 root root 4096 9月  17 18:54 boot
drwxr-xr-x.  20 root root 3140 1月   7 2020 dev
...

  -d参数。查看目录的权限与属性信息:

[root@localhost /]# ls -ld /etc
drwxr-xr-x. 77 root root 8192 1月   7 2020 /etc

5. 文本文件编辑命令

1.cat 命令用于查看纯文本文件(内容较少的)。-n参数 显示行号。

[root@localhost ~]# cat /etc/redhat-release 
CentOS Linux release 7.6.1810 (Core) 

2.more 命令用于查看纯文本文件(内容较多的)。使用空格键或回车键向下翻页。

[root@localhost /]# more ~/.bash_history

3.head 命令,用于查看纯文本文档的前N行。

# 查看 bash_history 的前两行
[root@localhost /]# head -n 2  ~/.bash_history 
docker exec -it mysql8 /bin/sh
docker cp mysql:/var/lib/mysql /home/data/docker/mysql/data/

4.tail 命令,用于查看纯文本文档的后N行或持续刷新内容。

  如需查看文本内容的最后20行,只需要执行“tail -n 20 文件名”命令就可以。t当想要实时查看最新日志文件时,命令格式为 tail -f 文件名:

[root@localhost /]# tail -fn 10 /var/log/messages
Jan  3 11:34:01 localhost kernel: docker0: port 1(veth5926cac) entered forwarding state
Jan  3 11:34:01 localhost NetworkManager[6491]: <info>  [1578022441.5478] device (veth5926cac): carrier: link connected
Jan  3 11:34:01 localhost NetworkManager[6491]: <info>  [1578022441.5480] device (docker0): carrier: link connected
Jan  3 11:34:01 localhost dockerd: time="2020-01-03T11:34:01.626670062+08:00" level=info msg="Loading containers: done."
Jan  3 11:34:01 localhost dockerd: time="2020-01-03T11:34:01.650891788+08:00" level=info msg="Docker daemon" commit=9013bf583a graphdriver(s)=overlay2 version=19.03.4
... 

5.tr 命令,用于替换文本文件中的字符。

[root@localhost download]# echo "hello word" | tr [a-z] [A-Z]
HELLO WORD

6.wc 命令,用于统计指定文本的行数、字数、字节数

参数作用
-l只显示行数
-w只显示单词数
-c只显示字节数
[root@localhost download]#  wc -l  /etc/passwd
19 /etc/passwd

7.stat 命令,用于查看文件的信息

[root@localhost download]# stat  /etc/passwd

8.cut 命令,用于按“列”提取文本字符。

  一般而言,按基于“行”的方式来提取数据是比较简单的,只需要设置好要搜索的关键词即可。如果按列搜索,不仅要使用-f参数来设置需要看的列数,还需要使用-d参数来设置间隔符号。passwd在保存用户数据信息时,用户信息的每一项值之间是采用冒号来间隔的,接下来我们使用下述命令尝试提取出passwd文件中的用户名信息,即提取以冒号(:)为间隔符号的第一列内容:

[root@linuxprobe ~]# head -n 2 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
[root@linuxprobe ~]# cut -d: -f1 /etc/passwd
root
bin

9.diff 命令,用于比较多个文本文件的差异。

  使用--brief参数来确认两个文件是否不同,还可以使用-c参数来详细比较出多个文件的差异之处。

[root@localhost download]#  diff --brief readme.md readme2.md 
文件 readme.md 和 readme2.md 不同

最后使用带有-c参数的diff命令来描述文件内容具体的不同:

[root@localhost download]#  diff -c readme.md readme2.md 
*** readme.md	2020-01-03 14:43:04.583400959 +0800
--- readme2.md	2020-01-03 14:41:39.946522830 +0800
***************
*** 1,6 ****
--- 1,15 ----
  qwe
  qwe
...

6.文件目录管理命令

1.touch 命令,用于创建空白文件或设置文件的时间
  在创建空白的文本文件方面,这个touch命令相当简捷,简捷到没有必要铺开去讲。对touch命令来讲,有难度的操作主要是体现在设置文件内容的修改时间(mtime)、文件权限或属性的更改时间(ctime)与文件的读取时间(atime)上面。

参数作用
-a仅修改“读取时间”(atime)
-m仅修改“修改时间”(mtime)
-d使用指定字符串表示时间而非当前时间
[root@localhost download]# touch -d "20181212 12:12:12" readme.md 
[root@localhost download]# stat readme.md 
  文件:"readme.md"
  大小:152       	块:8          IO 块:4096   普通文件
设备:fd00h/64768d	Inode:34924069    硬链接:1
权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
环境:unconfined_u:object_r:admin_home_t:s0
最近访问:2018-12-12 12:12:12.000000000 +0800
最近更改:2018-12-12 12:12:12.000000000 +0800
最近改动:2020-01-03 15:00:38.680160564 +0800
创建时间:-

2.mkdir 命令, 用于创建空白的目录

# 创建一个目录
[root@localhost download]# mkdir test

# 创建多个目录,-p 如果父目录不存在同时创建父目录
[root@localhost download]# mkdir -p dir/{dir1,dir2}
  1. cp 命令,用于复制文件或目录
参数作用
-p保留原始文件的属性
-d若对象为“链接文件”,则保留该“链接文件”的属性
-r递归持续复制(用于目录)
-i若目标文件存在则询问是否覆盖
[root@localhost download]# cp readme.md readme2.md

4.mv 命令,用于剪切文件或将文件重命名

[root@localhost download]# mv readme.md README.md

5.rm 命令,用于删除文件或目录。

  在Linux系统中删除文件时,系统会默认向您询问是否要执行删除操作,如果不想总是看到这种反复的确认信息,可在rm命令后跟上-f参数来强制删除。另外,想要删除一个目录,需要在rm命令后面加一个-r参数才可以,否则删除不掉。

6. 打包压缩与搜索命令

1.tar 命令,用于对文件进行打包压缩或解压

# 压缩
[root@localhost ~]# tar -zcvf test.tar.gz /etc

# 解压
[root@localhost test]# tar -zxvf test.tar.gz

2.grep 命令,用于在文本中执行关键词搜索,并显示匹配的结果

[root@localhost test]# ps -aux | grep dockerd
root       8170  0.0  5.4 586116 54448 ?        Ssl  11:33   0:06 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
root       8916  0.0  0.0 112724   984 pts/0    S+   16:02   0:00 grep --color=auto dockerd

3.find 命令,用于按照指定条件来查找文件

# 查找 etc 目录下 ifcfg- 开头的文件
[root@localhost test]# find /etc -name ifcfg-**

Copyright: 采用 知识共享署名4.0 国际许可协议进行许可

Links: https://dukec.cn/archives/linux学习一新手必须掌握的linux命令

Buy me a cup of coffee ☕.