成功最有效的方法就是向有经验的人学习!

Linux基础命令快速入门版本

文章目录

系统命令

runlevel                     # 查看当前的运行级别
systemctl status firewalld   # 开启网络服务功能
          stop               # 关闭
          restart            # 重启
          reload             # 重载
reboot                       # 重启
halt                         # 关机
poweroff                     # 关机

文件操作

cat                      # 在命令提示符下查看文件内容
more                     # 在命令提示符中分页查看文件内容
less                     # 命令行中查看文件可以上下翻页反复浏览
head 5n /etc/passwd      # 命令行中查看文件头几行
tail 5n /etc/passwd      # 命令行中查看文件尾几行
wc                       # 统计文件的单词数 行数等信息

目录管理

pwd                   # 查看你当前所在的目录
cd                    # 切换目录
ls                    # 查看显示目录的内容
du                    # 统计目录和文件空间的占用情况
mkdir                 # 创建新目录
touch                 # 创建文件
rm                    # 删除文件
ln                    # 创建硬链接
ln -s                 # 创建软链接
cp                    # 复制文件或目录
mv                    # 移动文件或目录
which                 # 查看linux命令所在的目录

账号与权限

1.组管理
groupadd group_name                            # 创建一个新用户组 
groupdel group_name                            # 删除一个用户组 
groupmod -n new_group_name old_group_name      # 重命名一个用户组

2.用户管理
useradd zhangsan                               # 创建账户张三
passwd zhangsan                                # 给用户设置密码
userdel -r zhangsan                            # 删除张三及他的宿主目录

3.用户组管理
gpasswd -a zhangsan root                       # 将张三用户加入root组
groups zhangsan                                # 确认zhangsan用户在root组
gpasswd -d lisi root                           # 将李zhangsan户从root组中删除

4.权限管理
chown -R zhangsan /aaa                         # 将文件夹/aaa的多有者修改为zhangsan
chown root:root /aaa                           # 将/aaa文件夹的属主和属组都改成root
chmod 777 /aaa                                 # 给文件夹文件/aaa设置权限为777

磁盘

查看磁盘使

df -hl :查看磁盘使用情况

[root@linux-node1 ~]# df -hl
Filesystem           Size  Used Avail Use% Mounted on
/dev/mapper/cl-root   37G  2.9G   35G   8% /
devtmpfs             898M     0  898M   0% /dev
tmpfs                910M   16K  910M   1% /dev/shm
tmpfs                910M   34M  877M   4% /run

查看指定目录使用

df -h /home查看指定目录磁盘使用情况

[root@linux-node1 ~]# df -h /home
Filesystem           Size  Used Avail Use% Mounted on
/dev/mapper/cl-root   37G  2.9G   35G   8% /

查看大于1G文件夹

du -sh ./* | grep G: 查看当前目录下个文件大于1G的文件夹

[root@linux-node1 /]# du -sh ./*|grep G
2.2G    ./usr
1.2G    ./home

大于10M小于100M,倒序排列

find / -type f -size +10M -a -size -100M -print0 | xargs -0 du -h | sort -nr : 查找文件大于10M小于100M,倒序排列

[root@linux-node1 /]# find / -type f -size +10M -a -size -100M  -print0 | xargs -0 du -h | sort -nr
85M     /usr/bin/docker
80M     /var/lib/rpm/Packages
48M     /usr/bin/containerd
47M     /boot/initramfs-0-rescue-8b956f09fe0549c4b6182589acceab30.img

find / -type f -size +10M -a -size -100M   # 查找根文件夹下大于 10M小于 100M

CPU

top

top :查看cpu 内存等使用情况

[root@linux-node1 /]# top
top - 03:24:29      # 表示当前时间
up 4 days, 22:56,   # 系统已经运行时间 
2 users,            # 当前登录用户数
load average: 0.01, 0.03, 0.05  # 系统负载,即任务队列的平均长度。 三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值
Tasks: 123 total(进程总数),   2 running(正在运行进程数), 121 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 
us,  0.0  # 用户空间占用CPU百分比
sy,  0.0  # 内核空间占用CPU百分比
ni,100.0  # 用户进程空间内改变过优先级的进程占用CPU百分比
id,  0.0  # 空闲CPU百分比
wa,  0.0  # 等待输入输出的CPU时间百分比
hi,  0.0  # 硬中断(Hardware IRQ)占用CPU的百分比
si,  0.0  # 软中断(Software Interrupts)占用CPU的百分比
st
KiB Mem :  1863224 total(物理内存总量),   219592 free,   498732 used,  1144900 buff/cache
KiB Swap:  2097148 total(交换区总量),  2094580 free,     2568 used.  1043628 avail Mem

进程id 进程所有者  优先级  
 PID    USER       PR      RES    SHR S %CPU %MEM     TIME+ COMMAND                                          
6583    root       20      5156   3796 S  0.3  0.3  10:54.90 vmtoolsd       
7284    root       20      2252   1580 R  0.3  0.1   0:00.03 top                 
   1    root       20      3844   2436 S  0.0  0.2   2:04.28 systemd      

查看CPU是用率

sar -u 1 5: 每1秒采集一次CPU使用率,共采集5次

[root@linux-node1 /]# yum install sysstat  # 安装sar工具
[root@linux-node1 /]# sar -u 1 5  # 每1秒采集一次CPU使用率,共采集5次
03:58:40 AM     CPU     %user     %nice   %system   %iowait    %steal     %idle
03:58:41 AM     all      0.00      0.00      3.61      0.00      0.00     96.39
03:58:42 AM     all      0.00      0.00      0.00      0.00      0.00    100.00
03:58:43 AM     all      0.00      0.00      0.00      0.00      0.00    100.00
Average:        all      0.00      0.00      0.62      0.00      0.00     99.38

查看CPU基本信息

cat /proc/cpuinfo: 查看CPU基本信息

[root@linux-node1 ~]# cat /proc/cpuinfo
processor       : 0                # 系统中逻辑处理核的编号
vendor_id       : GenuineIntel     # CPU制造商 
cpu family      : 6                # CPU产品系列代号
model           : 142              # CPU属于其系列中的哪一代的代号
model name      : Intel(R) Core(TM) i7-7500U CPU @ 2.70GHz   # CPU属于的名字及其编号、标称主频
stepping        : 9                # CPU属于制作更新版本
cache size      : 4096 KB          # CPU二级缓存大小
physical id     : 0                # 单个CPU的标号
siblings        : 1                # 单个CPU逻辑物理核数          
cpu cores       : 1                # cpu个数

查看CPU个数

cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l :查看CPU个数

[root@linux-node1 ~]# cat /proc/cpuinfo
processor       : 0                # 系统中逻辑处理核的编号
vendor_id       : GenuineIntel     # CPU制造商 
cpu family      : 6                # CPU产品系列代号
model           : 142              # CPU属于其系列中的哪一代的代号
model name      : Intel(R) Core(TM) i7-7500U CPU @ 2.70GHz   # CPU属于的名字及其编号、标称主频
stepping        : 9                # CPU属于制作更新版本
cache size      : 4096 KB          # CPU二级缓存大小
physical id     : 0                # 单个CPU的标号
siblings        : 1                # 单个CPU逻辑物理核数          
cpu cores       : 1                # cpu个数

内存

查询内存详情

free -m :查询内存详情

[root@linux-node1 ~]# free -m
              total        used        free      shared              buff/cache   available
Mem:           1819         486         190          32                1142        1020
Swap:          2047           2        2045
              总内存       已使用       可用空间    多进程共享内存        磁盘缓存大小

查看内存详细信息

cat /proc/meminfo :查看内存详细信息

[root@linux-node1 ~]# cat /proc/meminfo
MemTotal:        1863224 kB
MemFree:          195568 kB
MemAvailable:    1044924 kB
Buffers:               0 kB

vmstat查看内存

vmstat:查看内存

[root@linux-node1 shdir]# vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0   2568 181696      0 1057272    0    0     9    52  107  155  2  1 97  0  0

r   # 表示运行队列(就是说多少个进程真的分配到CPU),当这个值超过了CPU数目,就会出现CPU瓶颈了。
b   # 表示阻塞的进程,这个不多说,进程阻塞,大家懂的。
swpd   # 虚拟内存已使用的大小,如果大于0,表示你的机器物理内存不足了
free   #空闲的物理内存的大小,我的机器内存总共8G,剩余3415M。
buff   # 用来存储目录里面有什么内容,权限等的缓存,我本机大概占用300多M
cache  # cache直接用来记忆我们打开的文件,给文件做缓冲
si     # 每秒从磁盘读入虚拟内存的大小,如果这个值大于0,表示物理内存不够用或者内存泄露了,要查找耗内存进程解决掉。
so     # 每秒虚拟内存写入磁盘的大小,如果这个值大于0,表示物理内存不够用或者内存泄露了,要查找耗内存进程解决掉。
bi     # 块设备每秒接收的块数量,当处理拷贝大量数据(2-3T)的机器上看过可以达到140000/s,磁盘写入速度差不多140M每秒
bo     # 块设备每秒发送的块数量,例如我们读取文件,bo就要大于0。bi和bo一般都要接近0,不然就是IO过于频繁,需要调整。
in     # 每秒CPU的中断次数,包括时间中断
cs     # 每秒上下文切换次数,例如我们调用系统函数,就要进行上下文切换,线程的切换,也要进程上下文切换,这个值要越小越好

us  # 用户CPU使用百分比
sy  # 系统CPU使用百分比
id  # idle(空闲CPU百分比),一般来说,id + us + sy = 100,一般我认为id是空闲CPU使用率,us是用户CPU使用率,sy是系统CPU使用率。
wt  # 等待IO CPU时间(大于0代表系统资源不足)

显示内存使用详细信息

vmstat -s: 显示内存使用详细信息

[root@linux-node1 ~]# vmstat -s
      1863224 K total memory
       497780 K used memory
       599272 K active memory
       620812 K inactive memory
       188652 K free memory
            0 K buffer memory
      1176792 K swap cache
      2097148 K total swap
         2568 K used swap
      2094580 K free swap
       608294 non-nice user cpu ticks
          625 nice user cpu ticks
       539067 system cpu ticks
     63631049 idle cpu ticks
        15051 IO-wait cpu ticks
            0 IRQ cpu ticks
        10324 softirq cpu ticks
            0 stolen cpu ticks
       420669 pages paged in
      3118282 pages paged out
            7 pages swapped in
          627 pages swapped out
     73440819 interrupts
    111933117 CPU context switches
   1574604468 boot time
      1097163 forks

负载

什么是系统平均负载?

什么是系统平均负载?

# 1. 系统平均负载是指在特定时间间隔内运行队列中的平均进程数。
# 2. 如果每个CPU内核的当前活动进程数不大于3的话,那么系统的性能是良好的。
# 3. 如果每个CPU内核的任务数大于5,那么这台机器的性能有严重问题。
# 4. 如果你的linux主机是1个双核CPU的话,当Load Average 为6的时候说明机器已经被充分使用了。
# 5. 1可以被认为是最优的负载值。负载是会随着系统不同改变得。
# 6. 单CPU系统1-3和SMP系统6-10都是可能接受的。

查询系统当前负载信息

uptime: 查询系统当前负载信息

[root@linux-node1 ~]# uptime
 21:03:50 up 5 days,  5:14,  2 users,  load average: 0.02, 0.04, 0.05

'''显示内容说明:'''
10:19:04             # 系统当前时间 
up 257 days, 18:56   # 主机已运行时间,时间越大,说明你的机器越稳定。 
12 user              # 用户连接数,是总连接数而不是用户数 
load average         # 系统平均负载,统计最近1,5,15分钟的系统平均负载

查看负载信息

cat /proc/loadavg:查看负载信息

[root@linux-node1 ~]# cat /proc/loadavg 
0.00 0.01 0.05 2/384 4482

# 0.00 0.01 0.05 表示最近1分钟,5分钟,15分钟 系统的平均负载; 系统负载越高,代表CPU越繁忙;
# 2/384 2代表此时运行队列中的进程个数;384 代表系统中进程的总数
# 4482 代表到此为止创建的最后一个进程的ID.

进程查询常用命令

ps -ef

ps -ef|grep python : 查看python相关进程

-e  : 显示运行在系统上的所有进程
-f  : 扩展显示输出
[root@linux-node1 ~]# ps -ef|grep python
所有者     进程id  父进程id
root       6852      1     0 Nov23 ?        00:01:23 /usr/bin/python2 -Es /usr/sbin/tuned -l -P
root      37276      1     0 Nov24 ?        00:00:25 /usr/bin/python /usr/bin/salt-master
root      37285  37276     0 Nov24 ?        00:00:00 /usr/bin/python /usr/bin/salt-master

ps -aux

ps -aux | grep python:查看python相关进程

-a  :  显示现行终端机下的所有程序,包括其他用户的程序
-u  :  以用户为主的格式来显示程序状况
-x  :  显示所有程序,不以终端机来区分
[root@linux-node1 ~]# ps -aux | grep python
所有者    进程id  cpu占用 内存占用
root       6852  0.0  0.8 573820 16424 ?        Ssl  Nov23   1:23 /usr/bin/python2 -Es /usr/sbin/tuned -l -P
root      37276  0.0  2.1 389128 40640 ?        Ss   Nov24   0:25 /usr/bin/python /usr/bin/salt-master
root      37285  0.0  1.0 306196 20276 ?        S    Nov24   0:00 /usr/bin/python /usr/bin/salt-master

程序的名字来查询进程

pgrep -ln sshd : 通过程序的名字来查询进程的工具,一般是用来判断程序是否正在运行

[root@linux-node1 ~]# pgrep -ln sshd
32946 sshd

显示进程间的关系

pstree -apnh|grep sshd显示进程间的关系

-a  :  显示每个程序的完整指令,包含路径
-p  :  显示程序识别码
-n  :  用程序识别码排序,预设是以程序名称来排序。
-h  :  列出树状图时
[root@linux-node1 ~]# pstree -apnh|grep sshd
  |-sshd,6851 -D
  |   `-sshd,32946    
  |           `-grep,39535 --color=auto sshd

显示sshd进程的所有进程号

pidof sshd:显示sshd进程的所有进程号

[root@linux-node1 ~]# pidof sshd
32946 6851

杀死进程

kill 和 pkill 杀死进程

[root@linux-node1 ~]# kill -9  2233    # 杀死进程2233
[root@linux-node1 ~]# pkill zabbix     # 杀死zabbix进程

查看22端口运行的服务

netstat -anptu|grep 22: 查看22端口运行的服务

[root@linux-node1 ~]# netstat -anptu|grep 22
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      6851/sshd           
tcp        0      0 192.168.56.11:22        192.168.56.1:62530      ESTABLISHED 32946/sshd: root@pt 
tcp6       0      0 :::22                   :::*                    LISTEN      6851/sshd    

crond简介

什么是crond?

什么是crond?

  • crond 是linux用来定期执行程序的命令。
  • 当安装完成操作系统之后,默认便会启动此任务调度命令。
  • crond命令每分锺会定期检查是否有要执行的工作,自动执行任务

crond作用

crond作用

  • 系统执行:系统周期性所要执行的工作,如备份系统数据、清理缓存
  • 个人执行:某个用户定期要做的工作,例如每隔10分钟检查邮件服务器是否有新信

crond管理

crond管理

/sbin/service crond start       # 启动服务

/sbin/service crond stop        # 关闭服务

/sbin/service crond restart     # 重启服务

/sbin/service crond reload      # 重新载入配置

crond语法

crond基本使用

crond基本使用

[root@linux-node1 ~]# crontab -l      # 查看当前定时任务
[root@linux-node1 ~]# crontab -e      # 添加新的定时任务
*/1 * * * * echo "Hello World!"
[root@linux-node1 ~]# tail -f /var/log/cron         # 查看定时任务执行日志
[root@linux-node1 ~]# crontab -r                    # 清空任务计划

crond基本语法

crond基本语法

'''1. 每隔一分钟执行一次 ls 命令'''
*/1    12    *   *    *    ls
#分     时   日   月   周    |《==============命令行=======================》|

'''2. 参数说明'''
"*"  : 代表取值范围内的数字
"/"  : 代表"每"
"-"  : 代表从某个数字到某个数字
","  : 分开几个离散的数字
'''3. 定时任务常用配置'''
*/2     *       *       *      *      ls             # 每2分钟执行一次ls命令
5       *       *       *      *      ls             # 指定每小时的第5分钟执行一次ls命令
30      5       *       *      *      ls             # 指定每天的 5:30 执行ls命令
30      7       8       *      *      ls             # 指定每月8号的7:30分执行ls命令
30      5       8       6      *      ls             # 指定每年的6月8日5:30执行ls命令
30      6       *       *      0      ls             # 指定每星期日的6:30执行ls命令[注:0表示星期天,1表示星期1,以此类

添加调度任务

新增调度任务可用两种方法

'''法1:在命令行输入: crontab -e 然后添加相应的任务,wq存盘退出 '''
[root@linux-node1 ~]# crontab -e            
*/1 * * * * echo "Hello World!"

'''法2: 直接编辑/etc/crontab 文件'''
[root@linux-node1 ~]# vim /etc/crontab
*/1 * * * * root  echo "test02"

添加一块硬盘

先给VMware添加一块60G硬盘

file

必须重启虚拟机才能识别到新加磁盘

[root@linux-node1 ~]# fdisk -l              # 查看硬盘信息和分区情况(下面这个sdb就是上面添加的硬盘)
磁盘 /dev/sdb:64.4 GB, 64424509440 字节,125829120 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节

sda(第一块盘): sda1标识第一块盘中第一个分区
sdb(第二块盘)
sdc(第三开盘)

查看当前磁盘使用情况

[root@redis ~]# df -hl           # 查看当前分区使用情况
文件系统              容量   已用   可用   已用%  挂载点
/dev/mapper/cl-root   13G    9.9G   2.8G    79%    /
devtmpfs              3.8G     0    3.8G    0%     /dev

格式化刚刚新加硬盘 /dev/sdb

创建分区

file

格式化分区

[root@redis ~]# mkfs.ext3 /dev/sdb1      # 将分区格式化为ext3类型

创建LVM扩展根分区

创建物理卷

[root@redis ~]# pvcreate /dev/sdb1      # 用刚刚添加硬盘,创建物理卷

查看创建的物理卷的详细信息

[root@redis ~]# pvscan             # 查看当前所有物理卷
[root@redis ~]# pvdisplay          # 查看创建的物理卷的详细信息(我们需要获取现有根分区使用的卷组名称,这里是 “cl”)

file

卷组扩容

[root@redis ~]#  vgextend cl /dev/sdb1       # 对 cl 卷组扩容 
[root@redis ~]#  lvextend -L +60G /dev/mapper/cl-root  

file

xfs用以下命令来扩磁盘空间

[root@redis ~]#  xfs_growfs /dev/mapper/cl-root           # 扩展磁盘空间
[root@redis ~]#  df -hl                                   # 可以看到根分区已经扩展

file

find命令

find作用

  1. Linux find命令用来在指定目录下查找文件。
  2. 任何位于参数之前的字符串都将被视为欲查找的目录名。
  3. 如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。

find常用参数

选项 含义
-name 根据文件名称查找
-size -n +n 根据文件大小查找
-mtime -n 根据文件修改时间查找
-type 根据文件类型查找
-perm 根据文件权限查找

find参数基本使用

您暂时无权查看此隐藏内容!

find应用

大于9M的文件

  • 1.find . -size +9M | xargs ls -lh: 查找当前目录下大于9M的文件详细信息
[root@linux-node1 /]# find . -size +9M | xargs ls -lh
-rw-r--r--  1 root root  24M Jul  7 04:18 ./aaa/Python-3.7.0/libpython3.7m.a
-rwxr-xr-x  1 root root  14M Jul  7 04:19 ./aaa/Python-3.7.0/Programs/_testembed
-rwxr-xr-x  1 root root  14M Jul  7 04:18 ./aaa/Python-3.7.0/python
-rw-r--r--  1 root root  22M Jul  6 23:53 ./aaa/Python-3.7.0.tgz
-rw-------. 1 root root  47M Jan  7  2019 ./boot/initramfs-0-rescue-8b956f09fe0549c4b6182589acceab30.img
-rw-------. 1 root root  21M Jan  7  2019 ./boot/initramfs-3.10.0-514.el7.x86_64.img
-rw-------. 1 root root  14M Jan  7  2019 ./boot/initramfs-3.10.0-514.el7.x86_64kdump.img

以 .log 结尾且大于5M的文件

  • 2.find . -type f -name "\*.log" -size +1M -exec cp -av {} /tmp \;
  • 查找当前目录下以 .log 结尾且大于5M的文件,并复制到/tmp目录下
[root@linux-node1 /]# find . -type f -name "*.log" -size +1M -exec cp -av {} /tmp \;
cp: ‘./tmp/audit.log’ and ‘/tmp/audit.log’ are the same file
cp: ‘./tmp/journal.log’ and ‘/tmp/journal.log’ are the same file

更改时间在三天到五天的文件

  • 3.find /var -mtime +3 -mtime -5 :在/var下查找更改时间在三天到五天的文件
您暂时无权查看此隐藏内容!

1分钟前3分钟内修改的文件

  • 4.find . -mmin +1 -mmin -3:查找当前文件夹下1分钟前3分钟内修改的文件
[root@linux-node1 /]# find . -mmin +1 -mmin -3
./aa.py

grep命令

grep作用

  • grep命是 文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来 。
  • grep家族总共有三个成员构成:grep、egrep、fgrep
  • grep 是linux中最为常用的三大文本(awk,sed,grep)处理工具之一

grep常用参数

选项 含义
-v 排除
-n 显示行号
-E 支持扩展正则表达式(与egrep作用相同)
-i ==ignore-case忽略大小写
-w ==word以单词格式查找
-c 统计匹配上的行数(统计包含xxx的有多少行)
-o 显示匹配过程

grep命令操作练习

您暂时无权查看此隐藏内容!

grep常用方法

查找包含root字符串的文件

  • 1.grep -n 'root' /etc/passwd :查找/etc/passwd下包含 root字符串的文件
[root@linux-node1 /]# grep -n 'root' /etc/passwd
1:root:x:0:0:root:/root:/bin/bash
10:operator:x:11:0:operator:/root:/sbin/nologin

查找不包含root关键字的行

  • 2.grep -Ev "root|nologin" /etc/passwd:查找不包含root和nologin关键字的行
[root@linux-node1 /]# grep -Ev "root|nologin" /etc/passwd
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt

包含root关键字的行

  • 3.grep "root" /etc/{passwd,shadow}:查找/etc/passwd和/etc/shadow文件中包含root关键字的行
[root@linux-node1 /]# grep "root" /etc/{passwd,shadow}
/etc/passwd:root:x:0:0:root:/root:/bin/bash
/etc/passwd:operator:x:11:0:operator:/root:/sbin/nologin

统计文件包含root字符串行的数量

  • 4.grep -c root /etc/passwd:统计/etc/passwd文件中包含root字符串行的数量
[root@linux-node1 /]# grep -c root /etc/passwd       # 统计包含root单词的行数
2

[root@redis ~]# grep -o root /etc/passwd | wc -l     # 统计root单词出现的次数
4

grep综合使用

 grep -E -v "^$|^#" /etc/nginx/nginx.conf          # 去除空号和以#号开头的行
 seq 1 20 |grep -m 5 -E '[0-9]{2}'               # 输出匹配的前五个结果
 seq 1 20 |grep -c -E '[0-9]{2}'                 # 输出匹配多少行
 echo "a bc de" |xargs -n1 |grep '^b'             # 匹配以字符串"b"开头的行
 echo "a ab abc abcd abcde" |xargs -n1 |grep -n 'de$'        # 匹配以"de"字符串结尾的行
 grep -r 'sshd' /etc --include *.conf             # 递归搜索/etc 目录下包含 "sshd"字符串 的 conf 后缀文件
 seq 41 45 |grep -E '4[12]'                    # 匹配41/42数字

sed命令

sed作用

  1. sed 命令将当前处理的行读入模式空间进行处理,处理完把结果输出,并清空模式空间。
  2. 然后再将下一行读入模式空间进行处理输出,以此类推,直到最后一行。
  3. 还有一个暂存空间,可以暂时存放一些处理的数据,但不能直接输出,只能放到模式空间输出。
  4. 这两个空间其实就是在内存中初始化的一个内存区域,存放正在处理的数据和临时存放的数据

sed常用参数

'''常用选项 '''
-n   # 不打印模式空间
-e   # 执行脚本、表达式来处理
-f   # 执行动作从文件读取执行
-i   # 修改原文件
-r   # 使用扩展正则表达式

sed常用命令

'''常用命令 '''
s/regexp/replacement/  # 替换字符串
p    # 打印当前模式空间
P    # 打印模式空间的第一行
d    # 删除模式空间,开始下一个循环
D    # 删除模式空间的第一行,开始下一个循环
=    # 打印当前行号
a \text    # 当前行追加文本
i \text    # 当前行上面插入文本
c \text    # 所选行替换新文本
q          # 立即退出 sed 脚本
r          # 追加文本来自文件
w filename # 写入当前模式空间到文件
!          # 取反、 否定

sed常用地址

'''常用地址 '''
$              # 匹配最后一行
/regexp/       # 正则表达式匹配行
number         # 只匹配指定行
addr1,addr2    # 开始匹配 addr1 行开始,直接 addr2 行结束
addr1,+N       # 从 addr1 行开始,向后的 N 行
addr1,~N       # 从 addr1 行开始,到 N 行结束

02.sed常用方法

sed常用方法

nl /etc/passwd | sed '2,5d'                               # 将2~5行内容删除,然后打印到屏幕上
nl /etc/passwd | sed '2,5c "new content"'                 # 将2~5行的内容替换成字符串 "new content"
nl /etc/passwd | sed '/root/d'                            # 删除/etc/passwd所包含root的行
nl /etc/passwd | sed -e '3,$d' -e 's/root/mewusername/'   # 提取到前两行数据,并将 root替换成 newusername

sed匹配打印

tail /etc/services |sed -n '/^blp5/p'                # 打印匹配 blp5 开头的行
tail /etc/services |sed -n '1p'                      # 打印第一行
tail /etc/services |sed -n '1,3p'                    # 打印第一行至第三行
seq 10 |sed -n '1~2p'                                # 打印奇数行
tail /etc/services |sed -n '$p'                      # 打印最后一行
tail /etc/services |sed -n '$!p'                     # 不打印最后一行
tail /etc/services |sed -n '/^blp5/,/^com/p'         # 匹配以"blp5开头"到"com开头"的所有行
tail /etc/services |sed -n '/blp5/,$p'               # 匹配以"blp5"开头行到最后一行
tail /etc/services |sed -n "$a,3p"                   # 引用系统变量,用引号

sed匹配删除

tail /etc/services |sed '/blp5/d'                    # 删除包含"blp5"的行
tail /etc/services |sed '1d'                         #  删除第一行
tail /etc/services |sed '1~2d'                       # 删除第一到第二行
sed '/^#/d;/^$/d' /etc/nginx/nginx.conf              # 去除空格或开头#号的行

sed匹配替换

tail /etc/services |sed 's/blp5/test/'                # 替换 blp5 字符串为 test
tail /etc/services |sed -n 's/^blp5/test/p'           # 替换开头是 blp5 的字符串并打印
tail /etc/services |sed 's/48049/&.0/'                # 使用&命令引用匹配内容并替换
tail /etc/services | sed '1,4s/blp5/test/'            # 将1到4行的"blp5"替换成"test"
tail /etc/services | sed '/48129\/tcp/s/blp5/test/'   # 匹配"48129/tcp"并将此行的"blp5"替换成"test"
tail /etc/services |sed -e '1,2d' -e 's/blp5/test/'   # 删除前两行并将"blp5"替换成"test"

sed添加新内容

i: 匹配行上面添加
a: 匹配航下面添加
c: 将匹配航替换成新内容
 tail /etc/services |sed '/blp5/i \test'               # 在 blp5 上一行添加 test
 tail /etc/services |sed '/blp5/a \test'               # 在 blp5 下一行添加 test
 tail /etc/services |sed '/blp5/c \test'               # 匹配"blp5"的行替换成"test"
 tail /etc/services |sed '2a \test'                    # 在第二行下面添加"test"

sed文本操作

# vim a.txt : 编写一个测试文件
1 2 3
4 5 6
7 8 9
tail /etc/services |sed '/blp5/r a.txt'               # 将文件读取追加到匹配行下面
tail /etc/services |sed '/blp5/w b.txt'               # 将匹配行写入"b.txt"

awk命令

awk作用

  1. awk是一种编程语言,用于在linux下对文本和数据进行处理
  2. awk的处理文件和数据处理方式是逐行扫描,寻找到匹配的行,并在这些行上进行你想要的操作
  3. 如果没有指定处理动作,则把匹配的行显示到屏幕上

awk常用指令

//              # 匹配代码块,可以是字符串或正则表达式
{}              # 命令代码块,包含一条或多条命令
$0              # 表示整个当前行
$1              # 每行第一个字段
NF              # 字段数量变量
NR              # 每行的记录号,多文件记录递增
/[0-9][0-9]+/      # 两个或两个以上数字
/[0-9][0-9]*/      # 一个或一个以上数字
-F'[:#/]'         # 定义三个分隔符
FNR             # 与NR类似,不过多文件记录不递增,每个文件都从1开始
\t              # 制表符
\n              # 换行符
FS              # BEGIN时定义分隔符
RS              # 输入的记录分隔符, 默认为换行符(即文本是按一行一行输入)
~               # 匹配,与==相比不是精确比较
!~              # 不匹配,不精确比较
==              # 等于,必须全部相等,精确比较
!=              # 不等于,精确比较
&&             # 逻辑与
||              # 逻辑或
+               # 匹配时表示1个或1个以上

awk使用

awk常用指令

您暂时无权查看此隐藏内容!

awk基本语法 

tail -n3 /etc/services |awk -F'[ /]+' '{print $2}'    # 以"空格"或"斜线"分隔
awk -v a=123 'BEGIN{print a}'                         # 变量赋值
tail -n3 /etc/services |awk 'BEGIN{print "服务\t\t端口\t\t\t描述"}{print $0}END{print "===结束==="}' 
# BEGIN{} END{}结合使用

正则匹配

tail /etc/services |awk '/^blp5/{print $0}'          # 匹配开头是 blp5 的行
tail /etc/services |awk '/^[a-z0-9]{8} /{print $0}'  # 匹配第一个字段是 8 个字符的行
tail /etc/services |awk '/blp5/ && /tcp/{print $0}'  # 匹配记录中包含 blp5 或 tcp 的行
awk '! /^#|^$/' /etc/nginx/nginx.conf                # 不匹配开头是#和空行
tail /etc/services |awk '/^blp5/,/^com/'             # 匹配以 "blp5开头" 到 "com开头" 之间的所有行

NF

您暂时无权查看此隐藏内容!

NR

tail -n5 /etc/services |awk '{print NR,$0}'             # 打印行号+内容
tail -n5 /etc/services |awk 'NR==3{print $2}'           # 打印第三行第二列的值
tail -n5 /etc/services |awk 'NR<=3{print NR,$0}'        # 打印前三行

操作符

'''数字 0,空字符串和未定义的值 '''
seq 3 |awk '{print $0*2}'                               # 乘法
seq 3 |awk '{print $0/2}'                               # 除法
seq 5 |awk '$0%2==0{print $0}'                          # 取余
seq 5 |shuf |awk '{print $0|"sort"}'                    # 先打乱再排序

附:

网络基础命令

ifconfig                # 查看网卡信息
ip addr                 # 查看网卡信息
hostname                # 设置主机名
route -n                # 查看路由表和网关信息
netstat                 # 查看本机开启端口号
ping                    # 测试网络连通性
traceroute              # 路由跟踪
nslookup                # 域名解析测试
ifdown                  # 禁用网卡
ifup                    # 启用网卡

路由相关命令

route add -net           # 加静态路由
route del -net           # 删除静态路由
route add default gw       # 加网关
route del default gw       # 删网关
内容查看本文隐藏内容查看需要消耗6土豆币,请先
土豆币按需购买,不退换,请考虑清楚后购买。
赞(2) 打赏
未经允许不得转载:陈桂林博客 » Linux基础命令快速入门版本
分享到

大佬们的评论 抢沙发

全新“一站式”建站,高质量、高售后的一条龙服务

微信 抖音 支付宝 百度 头条 快手全平台打通信息流

橙子建站.极速智能建站8折购买虚拟主机

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫打赏

微信扫一扫打赏

登录

找回密码

注册