侧边栏壁纸
  • 累计撰写 373 篇文章
  • 累计创建 60 个标签
  • 累计收到 109 条评论

目 录CONTENT

文章目录

Linux 基本指令入门

Z同学
2022-10-24 / 0 评论 / 1 点赞 / 67 阅读 / 6,100 字
温馨提示:
本文最后更新于 2022-10-24,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

1. 介绍

基于多个目录,介绍一下Linux的一些常见指令。

这些命令不止是在命令行中可以看到。更多的可能我们在linux的各种脚本中也能看到相关的命令。

2. 系统常见命令

介绍一些系统信息控制的命令、

2.1 echo 命令

echo命令用于在终端输出字符串或变量提取后的值。

命令格式:echo [字符串 | $变量]

示例: 在命令行模式中定义一个临时变量name,值为 zinyan.com。我们就可以通过echo进行获取该变量的值

[root@iZuf67nf0xc0mvdhecbuppZ ~]# export name="zinyan.com"
[root@iZuf67nf0xc0mvdhecbuppZ ~]# echo $name
zinyan.com
[root@iZuf67nf0xc0mvdhecbuppZ ~]# 

例如,我们可以通过echo 将文本写入指定的文件内:

[root@iZuf67nf0xc0mvdhecbuppZ ~]# echo "Z同学的网站是:zinyan.com 微信关注公众号:zinyan" > zinyan.txt
[root@iZuf67nf0xc0mvdhecbuppZ ~]# ls
zinyan.txt
[root@iZuf67nf0xc0mvdhecbuppZ ~]# vim zinyan.txt
    
Z同学的网站是:zinyan.com 微信关注公众号:zinyan
~
~

在这个命令中,如果当前目录没有zinyan.txt 文件,就会默认创建一个zinyan.txt文件,并将内容写到文件中。

如果当前目标有zinyan.txt文件,就会将文件中的内容替换为我们要输入的值。

而我们如果需要在该文件中,追加字符,而不是覆盖字符,就将>替换为>>

[root@iZuf67nf0xc0mvdhecbuppZ ~]# echo "这是我追加的一段话。不要覆盖" >> zinyan.txt
[root@iZuf67nf0xc0mvdhecbuppZ ~]# vim zinyan.txt 

同学的网站是:zinyan.com 微信关注公众号:zinyan
这是我追加的一段话。不要覆盖
~                                                                                                      
~                                                                                                      
~        

相同的,如果文件不存在,也会在目录中创建一个新文件进行存储哦。

我们如果在脚本中配置例如,我们想知道当前文件目录路径: 有以下两种常见写法。

[root@iZuf67nf0xc0mvdhecbuppZ ~]# echo $(pwd)
/root
[root@iZuf67nf0xc0mvdhecbuppZ ~]# echo `pwd`
/root

例如我们平常通过pwd指令就能知道当前目录的路径了。如果是在脚本中,那么就需要一个脚本句子。而echo就可以派上用场了。

2.2 date 命令

date命令用于显示和设置系统的时间和日期。

命令格式:date [选项] [+格式]

格式 说明
%a 当地时间的星期名缩写(例如: 日,代表星期日)
%A 当地时间的星期名全称 (例如:星期日)
%b 当地时间的月名缩写 (例如:一,代表一月)
%B 当地时间的月名全称 (例如:一月)
%c 当地时间的日期和时间 (例如:2005年3月3日 星期四 23:05:25)
%C 世纪;比如 %Y,通常为省略当前年份的后两位数字(例如:20)
%d 按月计的日期(例如:01)
%D 按月计的日期;等于%m/%d/%y
%F 完整日期格式,等价于 %Y-%m-%d
%j 按年计的日期(001-366)
%p 按年计的日期(001-366)
%r 当地时间下的 12 小时时钟时间 (例如:11:11:04 下午)
%R 24 小时时间的时和分,等价于 %H:%M
%s 自UTC 时间 1970-01-01 00:00:00 以来所经过的秒数
%T 时间,等于%H:%M:%S
%U 一年中的第几周,以周日为每星期第一天(00-53)
%x 当地时间下的日期描述 (例如:12/31/99)
%X 当地时间下的时间描述 (例如:23:13:48)
%w 一星期中的第几日(0-6),0 代表周一
%W 一年中的第几周,以周一为每星期第一天(00-53)

示例效果:

得到当前时间

[root@iZuf67nf0xc0mvdhecbuppZ ~]# date
Mon Oct 24 16:09:53 CST 2022

按照指定格式化获取时间:

[root@iZuf67nf0xc0mvdhecbuppZ ~]# date "+%Y-%m-%d %H:%M:%S"
2022-10-24 16:11:26
[root@iZuf67nf0xc0mvdhecbuppZ ~]# 

查询当前是今年的第几天: (也可以在格式中添加中文字符。)

[root@iZuf67nf0xc0mvdhecbuppZ ~]# date "+第%j"
297
[root@iZuf67nf0xc0mvdhecbuppZ ~]# date "+第%j天"
第297天
[root@iZuf67nf0xc0mvdhecbuppZ ~]# 

注意了,一定要在""的开头添加+号才能正确使用哦。

我们除了可以序列化得到系统时间,还可以通过date命令修改当前系统的时间:

[root@iZuf67nf0xc0mvdhecbuppZ ~]# date -s "20221111 10:24:00"
Fri Nov 11 10:24:00 CST 2022
[root@iZuf67nf0xc0mvdhecbuppZ ~]# date
Fri Nov 11 10:24:03 CST 2022
[root@iZuf67nf0xc0mvdhecbuppZ ~]# 

可以看到,我们将当前系统时间,改为了2022-11月-11日,10:24分了。

我们如果时间不准确,想自动进行校准。那么可以通过ntp校时工具进行校准。这里就不介绍了。

2.3 wget 命令

wget命令用于在终端中下载文件。

命令格式:wget [参数] 下载地址

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

参数是可选参数,不输入也不影响。

实例:例如将zinyan的logo文件,下载到root/zinyan/img 文件夹中。

[root@iZuf67nf0xc0mvdhecbuppZ ~]# wget -P /root/zinyan/img/ https://zinyan.com/upload/2020/10/%E4%BC%81%E4%B8%9A%E5%BE%AE%E4%BF%A1%E6%88%AA%E5%9B%BE_20201029101308-52ccdf7abd434c9480f89301ffb1e26d.png

wget的其他指令都是为了执行下载操作。

2.4 ps 命令

ps命令用于查看系统中的进程状态。

命令格式:ps [参数]。

参数 作用
-a 显示现行终端机下的所有程序,包括其他用户的程序
-u 以用户为主的格式来显示程序状况
-x 显示没有控制终端的进程,同时显示各个命令的具体路径
-e 列出程序时,显示每个程序所使用的环境变量
-f 显示当前所有的进程
-t 指定终端机编号,并列出属于该终端机的程序的状况
[root@iZuf67nf0xc0mvdhecbuppZ ~]# ps -ef | grep sshd
root      1097     1  0 15:55 ?        00:00:00 /usr/sbin/sshd -D
root      1357  1097  0 15:55 ?        00:00:00 sshd: root@pts/0
root     12123  1359  0 16:23 pts/0    00:00:00 grep --color=auto sshd

2.5 top 命令

top命令动态地监视进程活动与系统负载等信息。

命令使用示例:top

[root@iZuf67nf0xc0mvdhecbuppZ ~]# top

top - 16:26:51 up 31 min,  1 user,  load average: 0.00, 0.05, 0.06
Tasks:  73 total,   1 running,  72 sleeping,   0 stopped,   0 zombie
%Cpu(s):  1.0 us,  1.0 sy,  0.0 ni, 98.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  1014560 total,   168224 free,   120008 used,   726328 buff/cache
KiB Swap:        0 total,        0 free,        0 used.   743848 avail Mem 

PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                             
  998 root      20   0  805148   9808   4632 S  3.3  1.0   0:01.59 aliyun-service                      
 1671 root      10 -10  138392  16784  11360 S  2.3  1.7   0:35.64 AliYunDun                           
 1592 root      10 -10   42432   4692   3152 S  0.3  0.5   0:02.21 AliYunDunUpdate                     
12149 root      20   0  161888   2156   1544 R  0.3  0.2   0:00.02 top                                 
    1 root      20   0  125476   3932   2620 S  0.0  0.4   0:01.10 systemd                             
    2 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kthreadd                            
    4 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 kworker/0:0H                        
    5 root      20   0       0      0      0 S  0.0  0.0   0:00.06 kworker/u4:0                        
    6 root      20   0       0      0      0 S  0.0  0.0   0:00.10 ksoftirqd/0                         
    7 root      rt   0       0      0      0 S  0.0  0.0   0:00.00 migration/0                         
    8 root      20   0       0      0      0 S  0.0  0.0   0:00.00 rcu_bh                              
    9 root      20   0       0      0      0 S  0.0  0.0   0:00.49 rcu_sched                           
   10 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 lru-add-drain                       
   11 root      rt   0       0      0      0 S  0.0  0.0   0:00.00 watchdog/0                          
   13 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kdevtmpfs                           
   14 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 netns                               
   15 root      20   0       0      0      0 S  0.0  0.0   0:00.00 khungtaskd                          
   16 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 writeback                           
   17 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 kintegrityd                         
   18 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 bioset                              
   19 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 bioset                              
   20 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 bioset        

上面部分是一些系统信息,下面是一个进程表格: 如果要退出top阅读模式可以通过: ctrl+c

列名 含义
PID 进程ID
USER 进程所有者的用户名
PR 进程优先级
NI nice值。负值表示高优先级,正值表示低优先级
VIRT 进程使用的虚拟内存总量,单位kb
RES 进程使用的、未被换出的物理内存大小,单位kb
SHR 共享内存大小,单位kb
S 进程状态D:不可中断的睡眠状态R:正在运行S:睡眠T:停止Z:僵尸进程
%CPU 上次更新到现在的CPU时间占用百分比
%MEM 进程使用的物理内存百分比
TIME+ 进程使用的CPU时间总计,单位1/100秒
COMMAND 命令名

2.6 pidof 命令

pidof命令用于查询指定服务进程的PID值。

命令格式:pidof [参数] 服务名称

参数 说明
-s 仅返回一个进程号
-c 只显示运行在root目录下的进程,这个选项只对root用户有效
-o 忽略指定进程号的进程
-x 显示由脚本开启的进程

示例 查询mysql服务的pid值:

[root@iZuf67nf0xc0mvdhecbuppZ ~]# pidof mysqld
1005

2.7 kill 命令

kill命令用于终止指定PID的服务进程。

命令格式:kill [参数] [进程PID]。

示例:删除pid为1239的进程:

[root@iZuf67nf0xc0mvdhecbuppZ ~]# kill -9 1247
[root@iZuf67nf0xc0mvdhecbuppZ ~]# 

如果服务有,就会关闭。如果该Pid下没有服务就会输出:-bash: kill: (1247) - No such process

我们如果要删除某个服务的所有进程。一个pid一个pid删除就有点繁琐了。这个时候就可以使用killall +进程名称。

例如:删除所有mysqld的进程:

[root@iZuf67nf0xc0mvdhecbuppZ ~]# killall mysqld
[root@iZuf67nf0xc0mvdhecbuppZ ~]# 

2.8 ifconfig 命令

ifconfig命令用于获取网卡配置与网络状态等信息。

[root@iZuf67nf0xc0mvdhecbuppZ ~]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.16.25.59  netmask 255.255.0.0  broadcast 172.16.255.255
        ether 00:16:3e:21:e7:c9  txqueuelen 1000  (Ethernet)
        RX packets 126775  bytes 172393043 (164.4 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 19398  bytes 3675106 (3.5 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
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

[root@iZuf67nf0xc0mvdhecbuppZ ~]# 

输出说明:

  • 第一部分的第一行显示网卡状态信息。
    • eth0表示第一块网卡。
    • UP代表网卡开启状态。
    • RUNNING代表网卡的网线被接上。
    • MULTICAST表示支持组播。
  • 第二行显示网卡的网络信息。
    • inet(IP地址):172.16.132.195。
    • broadcast(广播地址):172.16.143.255。
    • netmask(掩码地址):255.255.240.0。
  • RX表示接收数据包的情况,TX表示发送数据包的情况。
  • lo表示主机的回环网卡,是一种特殊的网络接口,不与任何实际设备连接,而是完全由软件实现。与回环地址(127.0.0.0/8 或 ::1/128)不同,回环网卡对系统显示为一块硬件。任何发送到该网卡上的数据都将立刻被同一网卡接收到。

2.9 uname 命令

uname命令用于查看系统内核与系统版本等信息。

通常使用 uname -a 显示全部信息。

[root@iZuf67nf0xc0mvdhecbuppZ ~]# uname -a
Linux iZuf67nf0xc0mvdhecbuppZ 3.10.0-1062.18.1.el7.x86_64 #1 SMP Tue Mar 17 23:49:17 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

2.10 uptime 命令

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

示例:查看系统的负载信息。

[root@iZuf67nf0xc0mvdhecbuppZ ~]# uptime
 16:39:14 up 43 min,  1 user,  load average: 0.11, 0.08, 0.06
[root@iZuf67nf0xc0mvdhecbuppZ ~]# 

输出说明:

负载信息 命令输出值
当前服务器时间 14:20:27
当前服务器运行时长 2 min
当前用户数 2 users
当前负载情况 load average: 0.03, 0.04, 0.02(分别取1min,5min,15min的均值)

方便我们查询当前系统下的用户数量,启动情况等等。

2.11 free 命令

free用于显示当前系统中内存的使用量信息。

命令语法:free [-bkmotV] [-s <间隔秒数>]

参数 说明
-b 以Byte为单位显示内存使用情况
-k 以KB为单位显示内存使用情况
-m 以MB为单位显示内存使用情况
-h 以合适的单位显示内存使用情况,最大为三位数,自动计算对应的单位值。

示例:显示当前系统的内存使用情况:

[root@iZuf67nf0xc0mvdhecbuppZ ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:           990M        118M        160M        480K        711M        724M
Swap:            0B          0B          0B

命令输出说明:

参数 说明
total 物理内存总数
used 已经使用的内存数
free 空间的内存数
share 多个进程共享的内存总额
buff/cache 应用使用内存数
available 可用的内存数
Swap 虚拟内存(阿里云ECS服务器默认不开启虚拟内存)

2.12 who 命令

who 命令显示关于当前在本地系统上的所有用户的信息。

显示当前登录系统的用户信息,以及来源ip值

[root@iZuf67nf0xc0mvdhecbuppZ ~]# who 
root     pts/0        2022-10-24 15:55 (119.30.243.87)
[root@iZuf67nf0xc0mvdhecbuppZ ~]# who -l -H  #显示用户登录来源
NAME     LINE         TIME             IDLE          PID COMMENT
LOGIN    tty1         2022-10-24 15:55              1012 id=tty1
LOGIN    ttyS0        2022-10-24 15:55              1013 id=tyS0
[root@iZuf67nf0xc0mvdhecbuppZ ~]# who -m -H  #只显示当前用户
NAME     LINE         TIME             COMMENT
root     pts/0        2022-10-24 15:55 (118.31.243.87)
[root@iZuf67nf0xc0mvdhecbuppZ ~]# who -q  #精简模式显示
root
# users=1

2.13 last 命令

last 命令用于显示用户最近登录信息。

示例:

[root@iZuf67nf0xc0mvdhecbuppZ ~]# last
root     pts/0        118.31.243.87    Mon Oct 24 15:55   still logged in   
root     pts/0        118.31.243.75    Mon Oct 24 15:55 - 15:55  (00:00)    
reboot   system boot  3.10.0-1062.18.1 Mon Oct 24 23:55 - 16:45  (-7:-9)    

wtmp begins Tue Nov 30 15:31:43 2021

这些信息都是以日志文件的形式保存在系统中。

2.14 history 命令

history命令用于显示历史执行过的命令。

命令行默认记录1000条执行过的历史命令,被记录在~/.bash_history文件中。

[root@iZuf67nf0xc0mvdhecbuppZ ~]# history 14
    1   MAKRER=SHOW_LOCALE;printf $MAKRER""; locale; MAKRER=SHOW_LOCALE;printf $MAKRER"";
    2   CHECK_TYPE=SHELL; echo "INFO=${CHECK_TYPE} PID=$$ PPID=$PPID TTY=$(tty) SHELL=$0 HOME=$HOME PWD=$PWD| CHECK_SHELL_END"
    3  echo
    4  export name="Tom"
    5  ls
    6  echo $name
    7  export name="zinyan.com"
    8  echo $name
    9  echo "Z同学的网站是:zinyan.com 微信关注公众号:zinyan" > zinyan.txt
   10  ls
   11  vim zinyan.txt 
   12  echo "这是我追加的一段话。不要覆盖" >> zinyan.txt
   13  vim zinyan.txt 
   14  echo "这是我追加的一段话。不要覆盖" >> zinyan1.txt

例如,我上面就显示的最近的14条执行命令。

我们也可以手动清理history的记录:

[root@iZuf67nf0xc0mvdhecbuppZ ~]# history -c
[root@iZuf67nf0xc0mvdhecbuppZ ~]# 

2.15 df 命令

df命令检查文件系统的磁盘空间占用情况。

可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。

命令语法:df [参数] [目录或文件名]

参数 说明
-a 列出所有的文件系统,包括系统特有的/proc等文件系统。
-k 以KBytes为单位,返回各文件系统容量。
-m 以MBytes为单位,返回各文件系统容量。
-h 以GBytes、MBytes、KBytes为单位,返回各文件系统容量。
-H 以M=1000K取代M=1024K的进位方式显示各文件系统容量。
-T 显示文件系统类型。
-i 显示inode信息。

示例:获取磁盘使用情况。

[root@iZuf643vgkvvhkq30ju8kuZ ~]# df
Filesystem     1K-blocks    Used Available Use% Mounted on
devtmpfs          496768       0    496768   0% /dev
tmpfs             507280       0    507280   0% /dev/shm
tmpfs             507280     452    506828   1% /run
tmpfs             507280       0    507280   0% /sys/fs/cgroup
/dev/vda1       41152812 1926876  37322228   5% /
tmpfs             101456       0    101456   0% /run/user/0
[root@iZuf643vgkvvhkq30ju8kuZ ~]# 

上面实例中,命令是字节信息展示。不够直观。那么我们可以通过-h命令将字节转换为G,M,K等格式:

[root@iZuf643vgkvvhkq30ju8kuZ ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        486M     0  486M   0% /dev
tmpfs           496M     0  496M   0% /dev/shm
tmpfs           496M  452K  495M   1% /run
tmpfs           496M     0  496M   0% /sys/fs/cgroup
/dev/vda1        40G  1.9G   36G   5% /
tmpfs           100M     0  100M   0% /run/user/0
[root@iZuf643vgkvvhkq30ju8kuZ ~]# 

2.16 du 命令

du命令查看磁盘使用空间。du与df命令不同点在于,du命令用于查看文件和目录磁盘的使用空间。

命令语法:du [参数] [文件或目录名称]

参数 说明
-a 列出所有的文件与目录容量。
-h 以G、M、K为单位,返回容量。
-s 列出总量。
-S 列出不包括子目录下的总量。
-k 以KBytes为单位,返回容量。
-m 以MBytes为单位,返回容量。

列出当前目录下的所有文件夹的容量。

[root@iZuf643vgkvvhkq30ju8kuZ ~]# du
4       ./.ssh
8       ./.pip
44      .

但是左侧列出的容量没有单位,我们如何知道它的容量呢?可以添加-h

[root@iZuf643vgkvvhkq30ju8kuZ ~]# du -h
4.0K    ./.ssh
8.0K    ./.pip
44K     .

如果要查询当前目录下的所有文件夹和文件的容量,就可以使用组合参数:-ah

[root@iZuf643vgkvvhkq30ju8kuZ ~]# du -ah
0       ./.ssh/authorized_keys
4.0K    ./.ssh
4.0K    ./.pydistutils.cfg
4.0K    ./.bash_logout
4.0K    ./.tcshrc
4.0K    ./.bash_profile
4.0K    ./.bash_history
4.0K    ./.bashrc
4.0K    ./.pip/pip.conf
8.0K    ./.pip
4.0K    ./.cshrc
44K     .

2.17 fdisk 命令

fdisk命令用于磁盘分区。

命令语法:fdisk [-l] 装置名称

参数 说明
-l 输出后面装置名称的所有的分区内容。若仅有 fdisk -l时, 则系统将会把整个系统内能够搜寻到的装置的分区均列出来。
[root@iZuf643vgkvvhkq30ju8kuZ ~]# fdisk -l

Disk /dev/vda: 42.9 GB, 42949672960 bytes, 83886080 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x0002b49c

   Device Boot      Start         End      Blocks   Id  System
/dev/vda1   *        2048    83886046    41941999+  83  Linux
[root@iZuf643vgkvvhkq30ju8kuZ ~]# 

例如对某个目录进行分区操作:

[root@iZuf643vgkvvhkq30ju8kuZ ~]# fdisk /dev/vda
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): m
Command action
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition
   g   create a new empty GPT partition table
   G   create an IRIX (SGI) partition table
   l   list known partition types
   m   print this menu
   n   add a new partition
   o   create a new empty DOS partition table
   p   print the partition table
   q   quit without saving changes
   s   create a new empty Sun disklabel
   t   change a partition's system id
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit
   x   extra functionality (experts only)

Command (m for help): p         #查看磁盘状态

Disk /dev/vda: 42.9 GB, 42949672960 bytes, 83886080 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x0002b49c

   Device Boot      Start         End      Blocks   Id  System
/dev/vda1   *        2048    83886046    41941999+  83  Linux

Command (m for help): q            #代表退出

[root@iZuf643vgkvvhkq30ju8kuZ ~]# 

2.18 grep 命令

grep命令用于查找文件里符合条件的字符串。

grep全称是Global Regular Expression Print,表示全局正则表达式版本,它能使用正则表达式搜索文本,并把匹配的行打印出来。

命令格式:grep [参数] [正则表达式] [文件]。

参数 说明
-c或–count 计算符合样式的列数
-d recurse或-r 指定要查找的是目录而非文件
-e [范本样式] 指定字符串做为查找文件内容的样式
-E 或 --extended-regexp 将样式为延伸的正则表达式来使用
-F 或 --fixed-regexp 将样式视为固定字符串的列表
-G 或 --basic-regexp 将样式视为普通的表示法来使用
-i 或 --ignore-case 忽略字符大小写的差别
-n 或 --line-number 在显示符合样式的那一行之前,标示出该行的列数编号
-v 或 --revert-match 显示不包含匹配文本的所有行

示例:查询字符串在文本中出现的列数:

[root@iZuf6az4lngmcw7o0j4vhoZ ~]# grep -c localhost /etc/hosts
2

以递归的方式查找目录下含有关键字的文件。

[root@iZuf6az4lngmcw7o0j4vhoZ ~]# grep -r *.sh /etc
Binary file /etc/udev/hwdb.bin matches
/etc/NetworkManager/dispatcher.d/11-dhclient:    for f in $ETCDIR/dhclient.d/*.sh; do
/etc/bashrc:    for i in /etc/profile.d/*.sh; do
/etc/profile:for i in /etc/profile.d/*.sh /etc/profile.d/sh.local ; do
[root@iZuf6az4lngmcw7o0j4vhoZ ~]# 

2.19 ll命令

ll命令查看当前目录下的所有文件(包括隐藏文件)。

[root@iZuf69wbc0n7hojexgim4oZ ~]# ll -a
total 44
dr-xr-x---.  4 root root 4096 Oct 24 17:12 .
dr-xr-xr-x. 18 root root 4096 Oct 24 17:12 ..
-rw-------   1 root root   95 Oct 24 17:12 .bash_history
-rw-r--r--.  1 root root   18 Dec 29  2013 .bash_logout
-rw-r--r--.  1 root root  176 Dec 29  2013 .bash_profile
-rw-r--r--.  1 root root  176 Dec 29  2013 .bashrc
-rw-r--r--.  1 root root  100 Dec 29  2013 .cshrc
drwxr-xr-x   2 root root 4096 Apr 26  2020 .pip
-rw-r--r--   1 root root  206 Oct 24 17:12 .pydistutils.cfg
drwx------   2 root root 4096 Apr 26  2020 .ssh
-rw-r--r--.  1 root root  129 Dec 29  2013 .tcshrc
[root@iZuf69wbc0n7hojexgim4oZ ~]# 

可以把隐藏文件和文件夹都进行展示。

2.20 touch 命令

touch命令用于修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件。

命令格式:touch [参数] [文件]

参数 说明
-c 如果指定文件不存在,不会建立新文件
-r 使用参考文件的时间记录
-t 设置文件的时间记录

示例:创建两个文件:

[root@iZuf69wbc0n7hojexgim4oZ ~]# touch zin1.txt yan2.txt
[root@iZuf69wbc0n7hojexgim4oZ ~]# ls
yan2.txt  zin1.txt
[root@iZuf69wbc0n7hojexgim4oZ ~]# 

ps:更多其他和文件相关的命令可以通过https://zinyan.com/?p=7 了解

2.21 chmod 命令

chmod命令用于修改文件权限mode,-R参数以递归方式对子目录和文件进行修改。

用户权限每组三位,rwx分别表示读、写、执行权限,对应八进制表示为4、2、1。

例如efi目录的root用户权限为drwxr-xr-x.。

  • 该目录对root用户具有读写和执行所有权限。
  • 该目录对root组其他用户有读和执行权限。
  • 该目录对其他用户有读和执行权限。

权限表示对应八进制权限表示为:

  • 属主权限:4+2+1=7。
  • 属组权限:4+1=5。
  • 其他用户权限:4+1=5。

即755。

例如给zin1.txt 添加增加属主的执行权限。其中,u+x表示增加属主的执行权限,u表示属主,g表示属组,o表示其他,a表示所有用户。

u+ 是添加,u- 是撤销。

[root@iZuf69wbc0n7hojexgim4oZ ~]# ls
yan2.txt  zin1.txt
[root@iZuf69wbc0n7hojexgim4oZ ~]# chmod u+x zin1.txt
[root@iZuf69wbc0n7hojexgim4oZ ~]# ll
total 0
-rw-r--r-- 1 root root 0 Oct 24 17:15 yan2.txt
-rwxr--r-- 1 root root 0 Oct 24 17:15 zin1.txt
[root@iZuf69wbc0n7hojexgim4oZ ~]# ^C
[root@iZuf69wbc0n7hojexgim4oZ ~]# 

例如,我们要修改某个文件权限为744权限:

[root@iZuf69wbc0n7hojexgim4oZ ~]# chmod 744 yan2.txt
[root@iZuf69wbc0n7hojexgim4oZ ~]# ll
total 0
-rwxr--r-- 1 root root 0 Oct 24 17:15 yan2.txt
-rwxr--r-- 1 root root 0 Oct 24 17:15 zin1.txt
[root@iZuf69wbc0n7hojexgim4oZ ~]# 

3. 其他

本篇只是介绍了一些比较常见的命令,其中有部分命令在很久前写的博客中有介绍。这里就不介绍了。

希望能够在今后使用相关命令时,能够快速使用相关命令。

https://zinyan.com/?p=23 汇总介绍了vim的一些命令。

1

评论区