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的一些命令。
评论区