Linux运维之需掌握的基本Linux命令

前言:本博客仅作记录学习使用,部分图片出自网络,如有侵犯您的权益,请联系删除 

目录

一、SHELL

二、执行命令

三、常用系统工作命令

四、系统状态检测命令

五、查找定位文件命令

六、文本文件编辑命令

七、文件目录管理命令

致谢


一、SHELL

Shell就是终端程序的统称,担当人与内核之间的翻译工作,用户把一些命令”告诉“终端程序,它就会调用相应的程序服务去完成某些工作。优势:

  • 通过上下方向键来调取过往执行过的Linux命令
  • 命令或参数仅需输入前几位就可以用Tab键补全
  • 强大的批处理脚本
  • 实用的环境变量功能

二、执行命令

 命令名称 [命令参数] [命令对象]

Linux命令的参数长格式与端格式示例:

长格式man --help
短格式man -h

4个快捷键:

  • Tab键:它能实现对命令、参数或文件的内容补全。
  • Ctrl+c键:对当前进程进行终止操作。
  • Ctrl+d键:代表键盘输入结束(End Of Input),简称EOF
  • Ctrl+l键:清空当前终端已有的内容,相当于清屏操作

三、常用系统工作命令

1、echo命令

echo命令用于在终端设备上输出字符串或变量提取后的值语法格式为:“echo [字符串] [变量]“

 # 例如把指定字符串"LinuxProbe.com"输出到终端屏幕的命令:
 [root@linux ~]# echo LinuxProbe.com
 LinuxProbe.com
 ​
 # 使用"$变量"的方式提取变量中SHELL的值,并将其输出到屏幕:
 [root@linux ~]# echo $SHELL
 /bin/bash

2、date命令

data命令用于显示或设置系统的时间与日期,语法格式为:"date [+指定的格式]"

date命令中常见的参数格式以及作用:

参数作用
%S秒(00~59)
%M分钟(00~59)
%H小时(00~23)
%l小时(00~12)
%m月份(1~12)
%p显示出AM或PM
%a缩写的工作日名称(例如:Sun)
%A完整的工作日名称(例如:Sunday)
%b缩写的月份名称(例如:Jan)
%B完整的月份名称(例如:january)
%q季度(1~4)
%y简写年份(例如:20)
%Y完整年份(例如2020)
%d本月中第几天
%j今年中第几天
%n换行符(相当于按下回车键)
%t跳格(相当于按下Tab键)

按照默认格式查看当前系统时间的date命令:

 [root@linux ~]# date
 Tue Jul  2 14:10:52 CST 2024

按照"年-月-日 小时:分钟:秒"的格式查看

 [root@linux ~]# date +"%Y-%m-%d %H:%M:%s"
 2024-07-02 14:13:1719900805

将系统的当前时间设置为2024年10月1日8点30分的date命令如下:

 [root@linux ~]# date -s "20241001 8:30:00"
 Tue Oct  1 08:30:00 CST 2024

再次使用date按照默认格式查看当前的系统时间:

 [root@linux ~]# date
 Tue Oct  1 08:30:00 CST 2024

date命令中的参数 %j可用来查看今天是当年中的第几天。这个参数能够很好的区分备份时间的新旧,即数字越大,越靠近当前时间。

 [root@linux ~]# date "+%j"
 257

3、timedatectl命令

timedatectl命令用于设置系统的时间,语法格式:“timedatectl [参数]

参数作用
status显示状态信息
list-timezones列出已知时间
set-time设置系统时间
set-timezone设置生效时间

查看系统时间与分区:

 [root@linux ~]# timedatectl status
                Local time: Tue 2024-10-01 08:41:52 CST
            Universal time: Tue 2024-10-01 00:41:52 UTC
                  RTC time: Tue 2024-07-02 06:27:58
                 Time zone: Asia/Shanghai (CST, +0800)
 System clock synchronized: no
               NTP service: active
           RTC in local TZ: no

手动设置时区:

[root@linux ~]# timedatectl set-timezone Asia/Shanghai

手动修改系统日期:

[root@linux ~]# timedatectl set-time 2024-10-01

手动修改时间:

[root@linux ~]# timedatectl set-time 9:30
[root@linux ~]# date
Tue Oct  1 09:30:00 CST 2024

4、reboot命令

reboot命令用于重启系统,输入后回车执行即可。

由于重启计算机这种操作会涉及硬件资源的管理权限,因此最好使用root管理员来重启,普通用户可能会被拒绝。

[root@linux ~]# reboot

5、poweroff命令

poweroff命令用于关闭系统,输入回车执行即可。

同上,该命令涉及硬件资源的管理权限,因此最好使用root管理员来重启,普通用户可能会被拒绝。

[root@linux ~]# poweroff

6、wget命令

wget命令用于在终端命令行里下载网络文件,语法格式:“wget [参数] 网址

参数作用
-b后台下载模式
-P下载到指定目录
-t最大尝试次数
-c断点续传
-p下载页面内所有资源,包括图片、视频等
-r递归下载

7、ps命令

ps命令用于看系统中的进程状态,语法格式为:“ps [参数]

参数作用
-a显示所有进程(包括其他用户的进程)
-u用户以及其他详细信息
-x显示没有控制终端的进程

Linux系统中时刻运行着许多进程,如果能够合理的管理它们,则可以优化系统的性能。五种常见的进程状态,分别为运行、中断、不可中断、僵死与停止,其各自含义如下所示:

  • R(运行):进程正在运行或运行队列中等待

  • S(中断):进程处于休眠中,当某个条件形成后或者接收到信号时,则脱离该状态

  • D(不可中断):进程不响应系统异步信号,即便用Kill命令也不能将其中断

  • Z(僵死):进程已经终止,但进程描述符依然存在,直到父进程调用wait4()系统函数后将进程释放

  • T(停止):进程收到停止信号后停止运行

除了上面五种进程状态,还有可能是高优先级(<)、低优先级(N)、被锁进内存(L)、包含子进程(s)以及多线程(l)这五种补充形式

当执行“ps aux”命令后通常会看到以下信息,列举部分输出值,正常输出值不包含中文注释:

USERPID%CPU%MEMVSZRSSTTYSTATSTARTTIMECOMMAND
进程的所有者进程ID号运算器占有率内存占用率虚拟内存使用量(单位是KB)占用的固定内存量(单位是KB)所在终端进程状态被启动的时间实际使用CPU的时间命令名称与参数

8、pstree命令

pstree命令用于以树状图的形式展示进程之间的关系

[root@linux ~]# pstree
systemd─┬─ModemManager───2*[{ModemManager}]
        ├─NetworkManager───2*[{NetworkManager}]
        ├─VGAuthService
        ├─accounts-daemon───2*[{accounts-daemon}]
        ├─alsactl
        ├─anacron
        ├─atd
        ├─auditd─┬─sedispatch
        │        └─2*[{auditd}]
        ├─avahi-daemon───avahi-daemon
        ├─bluetoothd
        ├─chronyd
        ├─colord───2*[{colord}]
        ├─containerd───7*[{containerd}]
        ├─crond
        ├─cupsd
...省略...

9、top命令

top命令用于动态的监视进程活动及系统负载等信息

上面命令都是静态的查看系统状态,不能实时滚动最新数据,而top命令能够动态地查看系统状态,完全可以将它看做是Linux中的“强化版的Windows任务管理器”,是相当好的性能分析工具

[root@linux ~]# top
top - 09:37:45 up  2:58,  2 users,  load average: 0.07, 0.02, 0.00
Tasks: 229 total,   2 running, 227 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.3 us,  1.1 sy,  0.0 ni, 97.7 id,  0.0 wa,  0.8 hi,  0.0 si,  0.0 st
MiB Mem :   9519.5 total,   5244.4 free,   2794.2 used,   1480.9 buff/cache
MiB Swap:      0.0 total,      0.0 free,      0.0 used.   6431.7 avail Mem 

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND  
   2393 root      20   0 3225476 337896 122536 S   2.7   3.5   0:57.86 gnome-s+ 
  31298 root      20   0  744004  46244  30672 S   0.8   0.5   0:02.41 gnome-t+ 
    970 root      20   0  694568  32340  16008 S   0.5   0.3   0:26.05 tuned    
  32368 root      20   0  264224   4428   3672 R   0.3   0.0   0:00.03 top      
      1 root      20   0  172984  10992   8056 S   0.0   0.1   0:02.53 systemd  
      2 root      20   0       0      0      0 S   0.0   0.0   0:00.01 kthreadd 
      3 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 rcu_gp   

top命令执行结果的前5行为系统整体的统计信息,其所代表的含义如下:

  • 第1行:系统时间、运行时间、登录终端数、系统负载(三个数值分别为1分钟、5分钟、15分钟内的平均值,数值越低意味着负载越低
  • 第2行:进程总数、运行中的进程数、睡眠中的进程数、停止的进程数、僵死的进程数
  • 第3行:用户占用资源百分比、系统内核占用资源百分比、改变过优先级的进程资源百分比、空闲的资源百分比等。其中数据均为CPU数据并以百分比格式显示
  • 第4行:物理内存总量、内存空闲量、内存使用量、作为内核缓存的内存量
  • 虚拟内存总量、虚拟内存空闲量、虚拟内存使用量、已被提前加载的内存量

10、nice命令

nice命令用于调整进度优先级,语法:“nice 优先级数字 服务名称

上面top命令输出结果中的PR和NI值代表的是进程的优先级,数字越低(取值范围是-20到19)、优先级越高。日常工作中,可以将一些不重要的进程优先级调低、让紧迫的服务获得更多的CPU和内存资源,合理分配系统资源。

[root@linux ~]# nice -n -20 bash

11、pidof命令

pidof命令用于查询某个指定服务进程的PID号码值,语法:“pidof [参数] 服务名称

每个进程的进程号码值(PID)是唯一的,可以用于区分不同的进程,来查询本机上的sshd服务程序的PID:

[root@linux ~]# pidof sshd
933

12、kill命令

kill命令用于终止某个指定PID值的服务进程,语法:“kill [参数] 进程的PID

使用kill命令终止上述查询到的PID所代表的进程终止掉,等同于强制停止sshd服务:

[root@linux ~]# kill 933

但也有时候提示进程无法删除,则可以加参数-9,,代表最高级别的强制杀死进程:

[root@linux ~]# kill -9 933

13、killall命令

killall命令用于终止某个指定名称的服务所对应的全部进程,语法:“killall [参数] 服务名称”

下面以httpd服务程序为例,来结束其全部进程:

[root@linux ~]# pidof httpd
13581 13580 13579 13577 13676
[root@linux ~]# killall httpd
[root@linux ~]# 

四、系统状态检测命令

1、ifconfig命令

ifconfig命令用于获取网卡配置与网络状态等信息,语法:“ifconfig [参数] [网络设备]"

使用ifconfig命令来查看本机当前的网卡配置与网络状态信息等,其实主要查看网卡名称、inet参数后的IP地址、ether参数后面的网卡物理地址(又称MAC地址)以及RX、TX的接收数据包与发送数据包的个数及累计流量

[root@linux ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.0.0.2  netmask 255.255.255.0  broadcast 10.0.0.255
        inet6 fe80::20c:29ff:fe6a:4052  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:6a:40:52  txqueuelen 1000  (Ethernet)
        RX packets 326472  bytes 428037282 (408.2 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 86887  bytes 6265745 (5.9 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
lo:...

2、uname命令

uname命令用于查看系统内核版本与系统架构等信息,语法:“uname [-a]

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

[root@linux ~]# uname -a
Linux linux 4.18.0-513.5.1.el8_9.x86_64 #1 SMP Fri Sep 29 05:21:10 EDT 2023 x86_64 x86_64 x86_64 GNU/Linux

如果要查看当前系统版本的详细信息,则需要查看redhat-release文件:

[root@linux ~]# cat /etc/redhat-release 
Red Hat Enterprise Linux release 8.9 (Ootpa)

3、uptime命令

uptime命令用于查看系统的负载信息

可以显示当前系统时间、系统已运行时间、启用终端数量以及平均负载值等信息。平均负载值指的是系统在最近1分钟、5分钟、15分钟内的压力情况,负载值越低越好:

[root@linux ~]# uptime
 10:16:58 up  3:37,  2 users,  load average: 0.13, 0.03, 0.01

4、free命令

free命令用于显示当前系统中内存的使用量信息,语法:“free [-h]

为了保证Linux系统不会因资源耗尽而突然宕机,运维人员需要时刻注意内存的使用量。结合-h参数以更人性化的方式输出当前内存的实时使用量信息。

[root@linux ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:          9.3Gi       2.7Gi       5.1Gi        32Mi       1.4Gi       6.3Gi
Swap:            0B          0B          0B
# 分别表示:内存总量 已用量 空闲量 进程共享的内存量 磁盘缓存的内存量 缓存的内存量 可用量

如果不使用-h(易读模式)则默认以KB为单位

5、who命令

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

可用快速显示出所有正在登录本机的用户名称以及他们正在开启的终端信息,如果有远程用户,还会显示出来访者的IP地址。

[root@linux ~]# who
root     seat0        2024-05-31 08:08 (login screen)

6、last命令

last命令用于调取主机的被访记录

Linux系统会将每次登录信息都记录到日志文件中,如果哪天想翻阅了,那就直接执行这条命令:

[root@linux ~]# last
root     tty2         tty2             Fri May 31 08:08    gone - no logout
root     seat0        login screen     Fri May 31 08:08    gone - no logout
reboot   system boot  4.18.0-513.5.1.e Fri May 31 08:07   still running
...

7、ping命令

ping命令用于测试主机之间的网络连通性,语法格式:”ping [参数] 主机地址“

参数作用
-c总共发送次数
-I指定网卡名称
-i每次间隔时间(秒)
-W最长等待时间

8、tracepath命令

tracepath命令用于显示数据达到目的主机途中所经过的路由信息语法:“tracepath [参数] 域名

当两台主机之间无法正常ping通时,要考虑是否中间有错误的路由信息,导致数据被某一台设备错误丢弃了,这时便可以使用tracepath命令追踪一下所有途径的路由信息,以便分析是哪台设备出问题:

[root@linux ~]# tracepath www.linuxprobe.com
 1?: [LOCALHOST]                      pmtu 1500
 1:  _gateway                                              0.498ms 
 1:  _gateway                                              0.199ms 
 2:  no reply	
 ...

9、netstat命令

netstat命令用于显示如网络连接、路由表、接口状态等的网络相关信息,语法:“netstat [参数]

参数作用
-a显示所有连接中的Socket
-p显示正在使用的Socket信息
-t显示TCP协议的连接信息
-u显示UDP协议的连接状态
-n使用IP地址,不使用域名
-I仅列出正在监听的服务状态
-i现在网卡列表的信息
-r显示路由表信息

10、history命令

history命令用于显示执行过的命令历史,语法:“history [-c]

执行history命令能显示出当前用户在本地计算机中执行过的最近1000条命令记录。也可以改变/etc/profile文件中的HISTSIZE变量值自定义。在使用history命令时,使用-c参数清空所有的命令历史记录。还可以用“!编码数字”的方式来重复执行某一次的命令。

[root@linux ~]# history
    1  systemctl disable firewalld --now
    2  systemctl status firewalld
    3  sed -i.bak 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
    4  grep SELINUX=disabled /etc/selinux/config
    5  setenforce 0
    6  getenforce
    7  hostnamectl set-hostname docker-a
    8  hostnamectl set-hostname docker-2322030238
    9  bash
  [root@linux ~]# !9	
  bash

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

[root@linux ~]# history -c

11、soscreport命令

soscreport命令用于收集系统配置及架构信息并输出诊断文档

当Linux系统出现故障需要联系技术支持人员时,大多数时候都要先使用这个命令来简单收集系统的运行状态和服务配置信息,以便让技术支持人员能够远程解决一些小问题,亦或是让他们能提前了解某些复杂问题。

[root@linux ~]# sosreport
...
Any information provided to Red Hat will be treated in accordance with
the published support policies at:

        Distribution Website : https://www.redhat.com/
        Commercial Support   : https://access.redhat.com/

The generated archive may contain data considered sensitive and its
content should be reviewed by the originating organization before being
passed to any third party.

No changes will be made to system configuration.

Press ENTER to continue, or CTRL-C to quit.
# 此处按下回车键进行确认
Optionally, please enter the case id that you are generating this report for []: 	
# 此处按下回车键进行确认
 Setting up archive ...
 Setting up plugins ...
... 
 Running plugins. Please wait ...

  Finishing plugins              [Running: dnf subscription_manager]  

五、查找定位文件命令

1、pwd命令

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

# 查看当前所处的工作目录
[root@linux ~]# pwd
/root

2、cd命令

cd命令用于切换当前的工作路径,语法:“cd [参数] [目录]

可以通过cd命令迅速、灵活地切换到不同的工作目录。还可以使用“cd -“命令返回到上一次所处的工作目录,使用”cd ..“命令进入上级目录,以及使用”cd ~“命令切换到当前用户的家目录,或使用”cd _username“切换到其他用户的家目录

[root@linux ~]# cd /etc
[root@linux etc]# cd /bin
[root@linux bin]# cd -
/etc
[root@linux etc]# 
# 快速回到家目录
[root@linux etc]# cd ~
[root@linux ~]# 

3、ls命令

ls命令用于显示目录中的文件信息,语法:"ls [参数] [文件名称]"

所处的工作目录不同,当前工作目录下能看到的文件也不同。使用ls命令的"-a"参数能看到全部文件(包括隐藏文件,使用“-l”参数可以查看文件的属性、大小等详细信息。因此整合参数执行ls命令即可查看当前目录中的所有文件并输出这些文件的属性信息

[root@linux ~]# ls -al
total 120
dr-xr-x---. 18 root root  4096 Oct  1 11:55 .
dr-xr-xr-x. 19 root root   270 May 16 10:21 ..
-rw-r--r--   1 root root 48680 Sep  3  2021 11.jpg
-rw-r--r--   1 root root     6 May 31 08:50 1.txt
-rw-------.  1 root root  1037 Mar 13  2024 anaconda-ks.cfg
...

如果想要查看目录属性信息,则需要额外添加一个-d参数

[root@linux ~]# ls -ld /etc
drwxr-xr-x. 141 root root 8192 Oct  1 10:16 /etc

4、tree命令

tree命令用于以树状图的形式列出目录内容及结构

[root@linux ~]# tree
.
├── 1.txt
├── A
│   └── B
│       └── C
├── anaconda-ks.cfg
├── Desktop
...

11 directories, 5 files

5、find命令

find命令用于按照指定条件来查找文件所对应的位置,语法:“find [查找范围] 寻找条件

在Linux系统中,搜索工作一般都是通过find命令来完成的,它可以使用不同的文件特性作为寻找(如文件名、大小、修改时间、权限等信息),一旦匹配成功则默认将信息显示到屏幕上。

参数作用
-name匹配名称
-perm匹配权限(mode为完全匹配,-mode为包含即可)
-user匹配所有者
-group匹配所有组
-mtime -n +n匹配修改内容的时间(-n值n天以内,+n指n天以前)
-atime -n +n匹配访问文件的时间(-n值n天以内,+n指n天以前)
-ctime -n +n匹配修改文件权限的时间(-n值n天以内,+n指n天以前)
-nouser匹配无所有者的文件
-nogroup匹配无所有组的文件
-newer f1 !f2匹配比文件f1新但比f2旧的文件
--type b/d/c/p/l/f匹配文件类型(后面的字幕字母依此表示块设备、目录、字符设备、管道、链接文件、文本文件)
-size匹配文件的大小(+50KB表示查找超过50KB的文件,而-50KB为查找小于50KB的文件)
-prune忽略某个目录
-exec ...... {}\;后面可跟用于进一步处理搜索结果的命令

-exec参数用于把find命令搜索到的结果交由紧随其后的命令作进一步处理,十分类似后面要提及的管道符技术,并且由于find命令对参数的特殊要求,因此虽然exec是长格式形式,但仍然只需要一个减号(-)

根据文件系统层次标准协议,Linux系统中的配置文件会保存到/etc目录中,获取到该目录中所有以host开头的文件列表:

[root@linux ~]# find /etc -name "host*" -print
/etc/host.conf
/etc/hosts
/etc/hostname
/etc/avahi/hosts
/etc/nvme/hostnqn
/etc/nvme/hostid

如果要在整个系统中搜索权限中包含SUID权限的所有文件,只需要使用-4000即可

[root@linux ~]# find / -perm -4000 -print
...
/usr/bin/fusermount3
/usr/bin/chage
/usr/bin/gpasswd
/usr/bin/newgrp
/usr/bin/mount
...省略...

# 在整个文件系统中找出所有归属于linux用户的文件并复制到/root/findresults目录
[root@linux ~]# find / -user linux -exec cp -a {} /root/findresults/\;

6、locate命令

locate命令用于按照名称快速搜索文件所对应的位置,语法:“locate 文件名称

locate命令是将一些常用的目录做成一个索引库文件,一般是叫做“/var/lib/mlocate/mlocate.db”,后续再搜索文件的时候就是根据这个数据库中包含的路径进行查找

第一次使用前,记得先执行下updatedb命令生成出索引数据库,然后再进行查找:

[root@linux ~]# updatedb
[root@linux ~]# ls -l /var/lib/mlocate/mlocate.db 
-rw-r----- 1 root slocate 3513513 Oct  1 12:35 /var/lib/mlocate/mlocate.db

搜索出所有包含“whereis”名称的文件所在位置:

[root@linux ~]# locate whereis
/usr/bin/whereis
/usr/share/bash-completion/completions/whereis
...

7、whereis

whereis命令用于按照名称快速搜索二进制程序(命令)、源代码以及帮助手册所对应的位置,语法:“whereis 命令名称

简单说,whereis命令也是基于了上述updatedb命令所生成出的索引库文件进行搜索,区别是不关心哪些相同名称的文件,仅仅是快速找到对应的命令文件及帮助文件所在位置

[root@linux ~]# whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz
[root@linux ~]# whereis pwd
pwd: /usr/bin/pwd /usr/share/man/man1/pwd.1.gz /usr/share/man/man1p/pwd.1p.gz

8、which命令

which命令用于按照指定名称快速搜索二进制程序(命令)所对应的位置,语法:“which 命令名称

which命令是在PATH变量所指定的路径中,按照指定条件搜索命令所在的路径。也就是既不关心同名文件(find与locate)、也不关心所对应的源代码和帮助文件(whereis),仅仅是想找到命令本身所在的路径

[root@linux ~]# which locate
/usr/bin/locate
[root@linux ~]# which whereis
/usr/bin/whereis

六、文本文件编辑命令

1、cat命令

cat命令用于查看纯文本文件(内容较少的),语法:“cat [参数] 文件名称

-n参数可以显示行号

[root@linux ~]# cat -n initial-setup-ks.cfg
     1	#version=RHEL8
     2	# License agreement
     3	eula --agreed
     4	# Use graphical install
     5	graphical
     6	ignoredisk --only-use=sda
     7	# Use CDROM installation media
     ...

2、more命令

more命令用于查看纯文本文件(内容较多的),语法:“more [参数] 文件名称

对于长篇的文本内容,推荐使用more命令来查看,more命令会在最下面使用百分比的形式来提示您已经阅读了多少内容,还可以使用空格或回车键向下翻页

[root@linux ~]# more initial-setup-ks.cfg 
#version=RHEL8
# License agreement
eula --agreed
# Use graphical install
graphical
ignoredisk --only-use=sda
# Use CDROM installation media
cdrom
# Run the Setup Agent on first boot
firstboot --enable

# Network information
network  --bootproto=dhcp --hostname=localhost.localdomain
repo --name="AppStream" --baseurl=file:///run/install/sources/mount-0000-cdrom/AppStream
# System bootloader configuration
bootloader --location=none
autopart
# Partition clearing information

--More--(41%)

3、head命令

head命令用于查看纯文本文件的前N行,语法:“head [参数] 文件名称”

只查看文本中的前10行内容

[root@linux ~]# head -n 10 initial-setup-ks.cfg 
#version=RHEL8
# License agreement
eula --agreed
# Use graphical install
graphical
ignoredisk --only-use=sda
# Use CDROM installation media
cdrom
# Run the Setup Agent on first boot
firstboot --enable

4、tail命令

tail命令用于查看纯文本文件的后N行持续刷新文件的最新内容,语法:“tail [参数] 文件名称

比如查看文本内容的最后10行

[root@linux ~]# tail -n 10 initial-setup-ks.cfg 
%addon com_redhat_subscription_manager 
%end
%addon ADDON_placeholder --enable --reserve-mb=auto
%end

%anaconda
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty
%end

tail命令最强悍的功能是能够持续刷新一个文件的内容,当想要实时查看最新日志文件时,“tail -f 文件名

[root@linux ~]# tail -f /var/log/messages
Oct  1 13:07:27 docker-2322030238 dnf[40262]: Red Hat Enterprise Linux 8 for x86_64 - AppStre 0.0  B/s |   0  B     00:00
Oct  1 13:07:27 docker-2322030238 dnf[40262]: Errors during downloading metadata for repository 'rhel-8-for-x86_64-appstream-rpms':
...

5、tr命令

tr命令用于替换文本内容中的字符,语法:“tr [原始字符] [目标字符]

想要快速的替换文本中的一些词汇,又或者把整个文本内容都进行替换,可以先使用cat命令读取待处理的文本,然后 通过管道符把这些文本内容传递给tr命令进行替换即可。

# 把某个文本中的英文全部替换为大写
[root@linux ~]# cat anaconda-ks.cfg | tr [a-z] [A-Z]

6、wc命令

wc命令用来统计指定文本文件的行数、字数或字节数,语法:“wc [参数] 文件名称

参数作用
-l只显示行数
-w只显示单词数
-c只显示字节数

在Linux系统中,/etc/passwd是用于保存系统账户信息的文件,要统计当前系统有多少个用户,可以使用下面的命令来进行查询:

[root@linux ~]# wc -l /etc/passwd
45 /etc/passwd

7、stat命令

stat命令用于查看文件的具体存储细节和时间等信息,语法:“stat 文件名称

在Linux系统中文件包含三种时间状态,分别是Access Time(最后一次内容被访问的时间,简称Atime),Modify Time(最后一次内容被修改的时间,简称Mtime)以及Change time(文件属性最后一次被修改的时间,简称Ctime)

[root@linux ~]# stat anaconda-ks.cfg 
  File: anaconda-ks.cfg
  Size: 1037      	Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d	Inode: 67767194    Links: 1
Access: (0600/-rw-------)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2024-10-01 11:55:31.597547561 +0800
Modify: 2024-03-13 22:40:56.710044932 +0800
Change: 2024-03-13 22:40:56.710044932 +0800
 Birth: 2024-03-13 22:40:56.666044929 +0800

8、grep命令

grep命令用于按行提取文本内容,语法:“grep [参数] 文件名称

grep命令是用途最广泛的文本搜索匹配工具,两个最常用的参数:-n参数用来显示搜索到信息的行号;-v参数用于反选信息(即没有包含关键词的所有信息行)

参数作用
-b将可执行文件(binary)当作文本文件(text)来搜索
-c仅显示找到的行数
-i忽略大小写
-n显示行号
-v反选选择--仅列出没有“关键词”的行

在Linux系统中,/etc/passwd文件保存着所有的用户信息,而一旦用户的登录终端被设置成/sbin/nologin,则不再允许登录系统,因此使用grep命令查找当前系统中 不允许登录系统的所有用户信息:

[root@linux ~]# grep /sbin/nologin /etc/passwd
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
...

9、cut命令

cut命令用于按列提取文本内容,语法:“cut [参数] 文件名称

系统文件在保存用户数据信息时,每一项之间是采用冒号来间隔的:

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

按列搜索,不仅要使用-f参数来设置需要看的列数,还需要使用-d参数来设置间隔符号

# 提取出passwd文件中的用户名信息,即提取以冒号(:)为间隔符号的第一列内容
[root@linux ~]# cut -d : -f 1 /etc/passwd
root
bin
...

10、diff命令

diff命令用于比较多个文件之间内容的差异,语法:“diff [参数] 文件名称A 文件名称B

不仅可以使用--brief参数来确认两个文件是否相同,还可以使用-c参数来详细比较出多个文件的差异之处,这是判断文件是否被篡改的有力神器。

# 先使用cat命令分别查看diff_A.txt和diff_B.txt
[root@linux ~]# cat diff_A.txt 
this is content of diff_A.txt
hahaha
[root@linux ~]# cat diff_B.txt 
this is content of diff_B.txt
hahaha

使用diff --brief命令显示比较后的结果,判断文件是否相同:

[root@linux ~]# diff --brief diff_A.txt diff_B.txt 
Files diff_A.txt and diff_B.txt differ

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

[root@linux ~]# diff -c diff_A.txt diff_B.txt 
*** diff_A.txt	2024-10-01 13:56:11.452583378 +0800
--- diff_B.txt	2024-10-01 13:56:29.866660189 +0800
***************
*** 1,2 ****
! this is content of diff_A.txt
  hahaha
--- 1,2 ----
! this is content of diff_B.txt
  hahaha

11、uniq命令

uniq命令用于去除文本中连续的重复行,语法:“uniq [参数] 文件名称”

[root@linux ~]# cat uniq.txt 
welcom to Linux
welcom to Linux
welcom to Linux
welcom to Linux
hahaha
Linux
[root@linux ~]# uniq uniq.txt 
welcom to Linux
hahaha
Linux

12、sort命令

sort命令用于对文本内容进行再排序,语法:“sort [参数] 文件名称

参数作用
-f忽略大小写
-b忽略缩进与空格
-n以数值型排序
-r反向排序
-u去除重复行
-t指定间隔符
-k设置字段范围
  • sort命令默认按照字母进行排序
  • 只要有两个一模一样的行,立马可以使用-u参数进行去重操作
  • 可以使用-n参数对数字进行从小到大排序

七、文件目录管理命令

1、touch命令

touch命令用于创建空白文件设置文件的时间,语法:“touch [参数] 文件名称

对touch命令来讲,有难度的操作主要体现在设置文件内容的修改时间(mtime)、文件权限或属性的更改时间(ctime)与文件的读取时间(atime)上面。

参数作用
-a仅修改“读取时间”(atime)
-m仅修改“修改时间”(mtime)
-d同时修改atime和mtime

示例:先使用ls命令查看一个文件的修改时间,随后修改它,然后再查看一下文件时间果然发生了变化:

[root@linux ~]# ls -l anaconda-ks.cfg 
-rw-------. 1 root root 1037 Jul  3 11:54 anaconda-ks.cfg
[root@linux ~]# echo "Visit the LinuxProbe.com to learn linux skills" >> anaconda-ks.cfg 
[root@linux ~]# ls -l anaconda-ks.cfg 
-rw-------. 1 root root 1084 Oct  1 14:09 anaconda-ks.cfg

如果不想要别人知道我们修改了它,使用touch命令修改文件时间为修改之前的时间即可

[root@linux ~]# touch -d "2024-07-03 11:54" anaconda-ks.cfg 
[root@linux ~]# ls -l anaconda-ks.cfg 
-rw-------. 1 root root 1084 Jul  3 11:54 anaconda-ks.cfg

2、mkdir命令

mkdir命令用于创建空白的目录,语法:“mkdir [参数] 目录名称

还可以结合-p参数来递归创建具有嵌套关系的文件目录

[root@linux ~]# mkdir linuxprobe
[root@linux ~]# cd linuxprobe/
[root@linux linuxprobe]# mkdir -p a/b/c/d/e
[root@linux linuxprobe]# cd a
[root@linux a]# cd b
[root@linux b]# 

3、cp命令

cp命令用于复制文件或目录,语法:“cp [参数] 源文件名称 目标文件名称

在Linux系统中,复制操作具体分为3种情况:

  • 如果目标文件是目录,则会把源文件复制到该目录中
  • 如果目标文件也是普通文件,则会询问是否要覆盖它
  • 如果目标文件不存在,则执行正常的复制操作

复制命令基本不会出错,记住在复制目录时要加上-r参数

参数作用
-p保留原始文件的属性
-d若对象为“链接文件”,则保留“链接文件”的属性
-r递归持续复制(用于目录)
-i若目标文件存在则询问是否覆盖
-a相当于-pdr

示例:创建一个名为install.log的普通空白文件,然后将其复制一份名为x.log的备份文件,在使用ls命令查看文件

[root@linux ~]# touch install.log
[root@linux ~]# cp install.log  x.log
[root@linux ~]# ls
install.log x.log

4、mv命令

mv命令用于剪切或重命名文件,语法:“mv [参数] 源文件名称 目标文件名称

剪切操作不同于复制操作,它会把源文件删除掉,只保留剪切后的文件。如果在同一个目录中将某个文件剪切后还粘贴到当前目录,其本质就是对文件进行了重命名操作:

[root@linux ~]# mv x.log linux.log
[root@linux ~]# ls
install.log  linux.log

5、rm命令

rm命令用于删除文件或目录,语法:“rm [参数] 文件名称”

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

参数作用
-f强制删除
-i删除前询问
-r删除目录
-v显示过程
[root@linux ~]# rm install.log 
rm: remove regular empty file 'install.log'? y
[root@linux ~]# rm -f linux.log 
[root@linux ~]# ls
[root@linux ~]# 

6、dd命令

dd命令用于按照指定大小的数据块个数来复制文件或转换文件,语法:“dd if=参数值 of=参数值 bs=参数值

dd命令是一个比较重要而且比较有特色的一个命令,能够让用户按照指定大小和个数的数据块来复制文件的内容。Linux系统中有一个名为/dev/zero的设备文件,这个文件不会占用系统存储空间,却可以提供无穷无尽的数据,因此使用它作为dd命令的输入文件,来生成一个指定大小的文件

参数作用
if输入的文件名称
of输出的文件名称
bs设置每个“块”的大小
count设置要复制“块”的大小

示例:用dd命令从/dev/zero设备文件中取出一个大小为560MB的数据块,然后保存成名为560_file的文件

[root@linux ~]# dd if=/dev/zero of=560_file count=1 bs=560M
1+0 records in
1+0 records out
587202560 bytes (587 MB, 560 MiB) copied, 5.64899 s, 104 MB/s	

如果想把光驱设备中的光盘制作成iso格式的镜像文件,在Linux系统中可直接使用dd命令来压制出光盘镜像文件

[root@linux ~]# dd if=/dev/cdrom od=RHEL-sever-8.0-x86_64-LinuxProbe.com.iso
13873152+0 records in
13873152+0 records out
7103053824 bytes (7.1 GB, 6.6 GiB) copied, 27.8812 s, 255 MB/S

7、file命令

file命令用于查看文件的类型,语法:“file 文件名称”

[root@linux ~]# file anaconda-ks.cfg 
anaconda-ks.cfg: ASCII text
[root@linux ~]# file /dev/sda
/dev/sda: block special (8/0)

8、tar命令

tar命令用于对文件进行打包压缩或解压,语法:“tar 参数 文件名称

Linux系统中主要使用的是.tar或.tar.gz或.tar.bz2格式,大部分都是由tar命令来生成的

参数作用
-c创建压缩文件
-x解开压缩文件
-t查看压缩包内有哪些文件
-z用Gzip压缩或解压
-j用bzip压缩或解压
-v显示压缩或解压的过程
-f目标文件名
-p保留原始的权限与属性
-P使用绝对路径来压缩
-C指定解压到的目录

一般使用“tar -czvf 压缩包名称.tar.gz 要打包的目录”命令把指定的文件进行打包压缩;相应的解压命令为“tar -xzvf 压缩包名称.tar.gz

致谢

在此,我要对所有为知识共享做出贡献的个人和机构表示最深切的感谢。同时也感谢每一位花时间阅读这篇文章的读者,如果文章中有任何错误,欢迎留言指正。 

学习永无止境,让我们共同进步!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/767950.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

echarts--Tree的label上添加图片

使用echarts的rich富文本&#xff0c;配合lable的formatter去实现 主要代码&#xff1a;label里 rich: {img1: {backgroundColor: {image: Cloudy,},height: 40}},formatter: function (param) {var res "";res {img1|} param.name;return res;}, 如果想要哪一节…

Python 生成Md文件带超链 和 PDF文件 带分页显示内容

software.md # -*- coding: utf-8 -*- import os f open("software.md", "w", encoding"utf-8") f.write(内部测试版2024 MD版\n) for root, dirs, files in os.walk(path): dax os.path.basename(root)if dax "":print("空白…

大模型补贴政策来了!!!

广州琶洲人工智能与数字经济试验区管理委员会 广州市海珠区科技工业商务和信息化局关于印发广州市海珠区建设人工智能大模型应用示范区实施细则的通知 各有关单位&#xff1a; 为进一步促进海珠区人工智能大模型产业发展&#xff0c;加快建设人工智能大模型应用示范区&#xf…

昇思MindSpore学习总结八——模型保存与加载

在训练网络模型的过程中&#xff0c;实际上我们希望保存中间和最后的结果&#xff0c;用于微调&#xff08;fine-tune&#xff09;和后续的模型推理与部署&#xff0c;接下来将介绍如何保存与加载模型。 1.构建模型 import numpy as np import mindspore from mindspore impo…

【RocketMQ】记录一次RocketMQ消费延迟问题排查思路

文章目录 背景问题排查Consumer负载均衡机制订阅关系的一致 背景 业务团队反馈使用我提供的RocketMQ集群&#xff0c;上游生产的消息&#xff0c;部分消息&#xff0c;消费程序需要等1分钟&#xff0c;甚至几分钟后&#xff0c;才能收到。 问题排查 见怪不怪&#xff0c;大部…

TapData 医疗美容行业数字化白皮书上线

随着颜值经济的发展&#xff0c;人们追求“美”的热情也不断高涨&#xff0c;而作为近年来被资本频频下注的赛道之一&#xff0c;医疗美容逐渐走进大众视野。 一方面&#xff0c;社会对外貌的重视程度不断提升&#xff0c;越来越多的人愿意通过医疗美容来提升自身形象&#xf…

后端加前端Echarts画图示例全流程(折线图,饼图,柱状图)

本文将带领读者通过一个完整的Echarts画图示例项目&#xff0c;演示如何结合后端技术&#xff08;使用Spring Boot框架&#xff09;和前端技术&#xff08;使用Vue.js或React框架&#xff09;来实现数据可视化。我们将实现折线图、饼图和柱状图三种常见的数据展示方式&#xff…

【python】PyQt5事件机制、定时器原理分析和实战演练

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

哨兵1SAR空间数据包协议数据单元文档(五)

《哨兵1SAR空间数据包协议数据单元》文档对数据包的结构进行了详细描述&#xff0c;并提供了用户数据的格式和解码算法。 原文链接: 哨兵1SAR空间数据包协议数据单元文档英文版 同系列中的其他文章篇链接: 哨兵1SAR空间数据包协议数据单元文档&#xff08;一&#xff09; 哨兵1…

亚太万人eVTOL展!2024深圳eVTOL将于9月登陆鹏城

2024年以来&#xff0c;北京、上海等十多个省市&#xff0c;先后发布了鼓励低空经济发展的行动方案&#xff0c;其中&#xff0c;eVTOL&#xff08;电动垂直起降航空器&#xff09;成为低空经济最火热的细分赛道。2023年&#xff0c;中国eVTOL产业规模达9.8亿元&#xff0c;同比…

【C++】相机标定源码笔记- RGB 相机与 ToF 深度传感器校准类

类的设计目标是为了实现 RGB 相机与 ToF 深度传感器之间的高精度校准&#xff0c;从而使两种类型的数据能够在同一个坐标框架内被整合使用。这在很多场景下都是非常有用的&#xff0c;比如在3D重建、增强现实、机器人导航等应用中&#xff0c;能够提供更丰富的场景信息。 -----…

64位Office API声明语句第120讲

跟我学VBA&#xff0c;我这里专注VBA, 授人以渔。我98年开始&#xff0c;从源码接触VBA已经20余年了&#xff0c;随着年龄的增长&#xff0c;越来越觉得有必要把这项技能传递给需要这项技术的职场人员。希望职场和数据打交道的朋友&#xff0c;都来学习VBA,利用VBA,起码可以提高…

工厂模式之简单工厂模式

文章目录 工厂模式工厂模式分为工厂模式的角色简单工厂模式案例代码定义一个父类&#xff0c;三个子类定义简单工厂客户端使用输出结果 工厂模式 工厂模式属于创造型的模式&#xff0c;用于创建对象。 工厂模式分为 简单工厂模式&#xff1a;定义一个简单工厂类&#xff0c;根…

Vue3的模板语法插值表达式用法

在template中输入“5 3” &#xff0c;是没有运算能力的&#xff0c;只会把字符直接显示出来&#xff0c;代码如下&#xff1a; <template><view>这是demo</view><view>5 3</view><navigator open-type"navigateBack"><vi…

永劫无间国服延迟高、报错、卡顿的处理措施一览

永劫无间国服延迟高、报错、卡顿怎么办&#xff1f;快速解决办法分享 第一个办法&#xff1a;改善延迟 如果是一直遇到永劫无间国服延迟高、报错、卡顿的问题&#xff0c;重启游戏也不管用的话&#xff0c;那应该就是网络问题&#xff0c;玩家可以启动雷神&#xff0c;让其快速…

服了!DELETE 同一行记录也会造成死锁!!

1 问题背景 “哥们&#xff0c;又双叒叕写了个死锁&#xff0c;秀啊&#xff01;&#x1f60f;” 就算是经常写死锁的同学看到估计都会有点懵&#xff0c;两条一模一样的 DELETE 语句怎么会产生死锁呢&#xff1f; 2 MySQL 锁回顾 看到这里的靓仔肯定对 MySQL 的锁非常了解&…

红酒与建筑:品味历史与艺术的交汇

在时间的长河中&#xff0c;红酒与建筑都是人类智慧的结晶&#xff0c;它们各自承载着历史的厚重与艺术的韵味。当这两者交汇时&#xff0c;仿佛是一场穿越时空的对话&#xff0c;将我们带入一个既古老又现代、既深沉又温柔的世界。今天&#xff0c;就让我们一起走进这个奇妙的…

企业消费采购成本和员工体验如何实现“鱼和熊掌“的兼得?

有企业说企业消费采购成本和员工体验的关系好比是“鱼和熊掌”&#xff0c;无法兼得&#xff1f; 要想控制好成本就一定要加强管控&#xff0c;但是加强管控以后&#xff0c;就会很难让员工获得满意的体验度。如果不加以管控&#xff0c;员工自由度增加了&#xff0c;往往就很难…

为什么要在成像应用中使用图像采集卡?

达到最大产量是工业和工厂自动化的关键标准之一。提高传感器分辨率和帧速率有助于实现这一目标&#xff0c;但也使带宽达到极限&#xff0c;并提出了新的传输问题。当前高带宽接口(如10GigE、相机直接与PC连接和嵌入式系统)的实现促使成像应用的许多用户询问如何以最佳配置最优…

Day63 代码随想录打卡|回溯算法篇---电话号码的字母组合

题目&#xff08;leecode T17&#xff09;&#xff1a; 给定一个仅包含数字 2-9 的字符串&#xff0c;返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下&#xff08;与电话按键相同&#xff09;。注意 1 不对应任何字母。 方法&#xff1a;…