美文网首页
Linux基础命令学习

Linux基础命令学习

作者: 小白小白啦 | 来源:发表于2019-12-27 14:16 被阅读0次

再次记录学习到的命令,以防后面使用忘记又去百度。

防火墙相关操作

防火墙(iptables)是对主机的网络进行过滤也可以实现NAT(Network Address Translation)功能,也就是局域网中共用一个IP上网。有时间的可以读读大神的文章http://www.zsythink.net/archives/tag/iptables/在此记录常用命令

防火墙流程图摘自大神博客
如果记不住命令可以使用iptables --help | grep -w '\\-v'进行查询,其中\表示转义也就是查询iptables命令中-v的含义

查看filter表INPUT链规则,

-t 表示操作的表table
-L --list
省略-t选项默认为filter表
v verbose查看更丰富信息
n 显示ip地址 --numeric numeric output of addresses and ports
--line-number 显示编号也可以写成--line
x为exact显示精确的数值
iptables -t filter --line-number -nvxL INPUT

实验准备

对于防火墙实验可以利用docker进行,docker pull ubuntu拉取ubuntu镜像,然后run起来两个容器iptables-1和iptables-2,在这两个容器里面进行实验。

docker run --privileged -itd  --name iptables-1 --hostname iptables-1 ubuntu:latest /bin/bash
docker run --privileged -itd  --name iptables-2 --hostname iptables-2 ubuntu:latest /bin/bash

--privileged表示以root权限进入容器,不然无法执行iptables命令,--hostname为容器命名,不然是一串字符串,不好分辨。在两个容器里面安装ping、iptables、ifconfig命令。

apt update
apt install iptables && net-tools && iputils-ping

然后通过ifconfig查看本机ip,docker默认的网络模式是bridge,这些容器处在一个局域网中,非常适合做实验。

实验

清空filter表INPUT链规则

-F --flush Delete all rules in chain or all chains
iptables -F INPUT

增加规则,对来自172.17.0.4的请求拒绝

-I --insert插入规则, -s --source,-j --jump target
iptables -t filter -I INPUT -s 172.17.0.4 -j DROP
-A --append追加规则
iptables -t filter -A INPUT -s 172.17.0.4 -j ACCEPT
指定新增规则编号
iptables -t filter -I INPUT 2 -s 172.2.0.4 -j ACCEPT

删除规则

iptables --line -nvL INPUT #查看规则
iptables -t filter -D INPUT 2 # 删除第二条规则
iptables -D INPUT -s 172.17.0.4 -j ACCEPT # 根据规则删除,删除来自172.17.0.4,动作为ACCEPT的规则

修改规则

将filter表 INPUT链编号为1的规则修改为-s 172.17.0.4 -j ACCEPT
iptables -t filter -R INPUT 1 -s 172.17.0.4 -j ACCEPT
将filter表FORWARD链默认规则修改为DROP
iptables -t filter -P FORARD DROP

NAT进行宿主机和docker端口映射

为了能实现对docker中的运行的容器增加端口映射,网上搜索说是通过iptables方法,看了方法感觉好长的命令,就想着把iptables好好看看,我感觉学习什么就得从基础来看,这样就能理解记忆,现在这个长命令理解了,记录一下。

 iptables -t nat -A PREROUTING -d 宿主机IP -p tcp -m tcp --dport 宿主机端口 -j DNAT --to-destination 容器IP:容器端口
 # 如果需要将192.168.1.2容器上的443端口映射到宿主机(192.168.2.140)的443端口
 iptables -t nat -A PREROUTING -d 192.168.2.140 -p tcp -m tcp --dport 443 -j DNAT --to-destination 192.168.1.2:443

现在就好理解了,-t nat表示使用nat表,-A PREROUTING表示在PREROUTING上面APPEND一条规则,-d表示destination,对宿主机192.168.2.140的请求进行转发,-p tcp表示匹配tcp协议,-m tcp表示匹配(match)tcp扩展模块,--dport表示destination port对443端口进行转发,-j DNAT表示动作为DNAT,--to-destination字面上就看出来了。

安装ping、ifconfig基础包

apt install net-tools //ifconfig
apt install iputils-ping //ping

tar打包

有时候需要将多个文件或者文件夹打包然后更好地进行传输,需要使用到tar命令。

tar czvf archivename.tar.gz *.txt

将当前目录下的以txt结尾的文件打包压缩为archivename.tar.gz。其中c为create、z为zip一种压缩算法,如果不加z则打包过程不进行压缩、v为verbose列出压缩的文件、f为file即压缩文件的名字。

tar tvf archivename.tar.gz

t为list列出压缩包中文件的信息。
如果文件太大了,可以将文件进行分割

split -b 1G archivename.tar.gz *archivename.tar.gz.part*

将分割的文件链接起立,重新变成一个

cat archivename.tar.gz.part* > archivename.tasr.gz

将打包的文件解压

tar xzvf archivename.tar.gz

x为extract,如果打包的时候使用了z,解压的时候也要加上。

U盘挂载

fdisk -l # 查看插入的U盘设置标志符
# 进入文件夹创建挂载目录
mkdir /mnt
cd /mnt && mkdir usb
mount /dev/device /mnt/usb 
# 使用完成后再U盘拔除之前需要卸载
umount /mnt/usb
或者
umount /dev/device
# 列出所有的挂载
mount

逻辑卷

我的理解就是逻辑卷把多块硬盘设备变成一个整体来使用。
逻辑卷就是使用逻辑卷组管理(Logic Volume Manager)创建出来的设备,也是Linux操作系统可以认识的设备。事实上,LVM是介于硬盘祼设备和文件系统的中间层

lsblk # 列出系统的块设备信息
└─[$] <> lsblk          
NAME                  MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
loop0                   7:0    0   956K  1 loop /snap/gnome-logs/81
sda                     8:0    0   477G  0 disk 
└─sda1                  8:1    0   477G  0 part 
  ├─ubuntu--vg-root   253:0    0   1.4T  0 lvm  /
  └─ubuntu--vg-swap_1 253:1    0   976M  0 lvm  [SWAP]
sdb                     8:16   0 931.5G  0 disk 
└─ubuntu--vg-root     253:0    0   1.4T  0 lvm  /
sdc                     8:32   1  29.5G  0 disk 
  • NAME :这是块设备名。
  • MAJ:MIN :本栏显示主要和次要设备号。
  • RM :本栏显示设备是否可移动设备。注意,在本例中设备sdb和sr0的RM值等于1,这说明他们是可移动设备。
  • SIZE :本栏列出设备的容量大小信息。
  • RO :该项表明设备是否为只读。RO值为0,表明他们不是只读的。
  • TYPE :本栏显示块设备是否是磁盘或磁盘上的一个分区。在本例中,sda和sdb是磁盘,而sr0是只读存储(rom)。
  • MOUNTPOINT :本栏指出设备挂载的挂载点。

物理卷(Physical Volume, PV),也就是物理磁盘分区,比如说/dev/sdb1。如果要想使用LVM来管理这个物理卷,可使用fdisk工具将其ID改为LVM可以识别的值(也就是8e)。
卷组(Volume Group, VG),也就是PV的集合。

逻辑卷(Logic Volume, LV),也就是PV中划出来的一块逻辑磁盘。

物理卷创建以及查看 pvcreate、pvdisplay;卷组创建以及查看vgcreate、vgdisplay;逻辑卷创建以及查看lvcreate、lvdisplay


pv、vg、lv
operate

正则表达式学习

将/etc/passwd文件拷贝到用户目录进行练习

cp /etc/passwd ~/

正则表达式单个字符

特定字符

grep "1" passwd

范围内字符

[0-9]、[a-z] 、[A-Z] grep [0-9] passwd
取反 [^0-9]就是不包含数字0-9的字符串, grep [^0-9] passwd

任意字符

使用.表示任意一个字符,注意[.]\.区别
grep . passwd 查找出所有的字符 grep [.] passwd 仅仅查找出点号这个字符,grep '\.' passed 也是仅仅查找出点号这个字符,\在正则表达式中表达转义的意思

正则表达式其他符号

边界字符

^ ,表示开始位置匹配,grep '^root' passwd只匹配以root开始的行
$,表示结尾位置匹配,grep 'bash$' passwd只匹配以bash结尾的行,在vim中$也表示结尾的意思

空行表示^$

元字符

\w:匹配任何字类字符,包括下划线([A-Za-z0-9_])
\W:匹配任何非字类字符,([^A-Za-z0-9_])
\b:代表单词的分割 grep '\bx\b' passwd仅仅查找出单词x

重复字符表示

grep '[A-Z][a-z]' passwd 表示一个大写字符一个小写字符
grep 'm..c' passwd 匹配四个字符,开始是m结尾是c
grep '[0-9][0-9]' passwd这个并不是仅仅匹配两个字符,因为正则表达式是贪婪模式,所以要加一些限定grep '\b[0-9][0-9]\b' passwd

重复

*:零次或多次匹配前面的字符或子表达式
+:一次或多次匹配前面的字符或子表达式grep 'se\+' passed,这个+号使用的时候记得加上\
?:零次或一次匹配前面的字符或子表达式grep 'se\?' passed,这个?号使用的时候记得加上\
如果只是搜索字符se需要加上(),记得加上转义字符grep '\(se\)\+' passwd

重复特定次数{n,m}

*:{0,}
+:{1,}
?:{0,1}
grep '[0-9]\{2,3\}' passwd

正则表达式字符组合

任意字符串的表示:.*
逻辑的表示|
grep 'bin/\(false\|ture\)' passwd 匹配bin/false或者bin/ture记得加上转义字符

总结

awk 命令

统计docker镜像大小,将docker images最后一列取出来,然后将以GB结尾的提取出来,再提取出数字,然后求和。

docker images | awk '{print $NF}' | grep -P '[0-9.]+GB$' -o | grep -P '[0-9.]+' -o | awk 'BEGIN{sum=0}{sum+=$1}END{print sum}'

vim命令

vim中有三个模式,分别是按下Eas键的一般模式、按下i或者A之后的编辑模式、以及按下:或者?后的末行指令模式。编辑模式不能直接转到末行指令模式,必须要通过Eas进入一般模型再转换。下面记录一下常用指令,供以后查阅。

模式 指令 作用
一般 i 在光标前插入insert
A 在光标后追加append
h 向左移动光标,h在键盘左边
l 向右移动光标,l在键盘右边
j 向下移动光标,j的形状像向下的箭头
k 向上移动光标
x 剪切一个字母
:q 退出不保存
:wq 保存退出
0 移动光标到当前行首
$ 移动光标到当前行尾
dw 删除一个word直到下一个单词 delete word
d$ 从当前光标删除到行尾
de 从当前光标删除到当前单词末尾
d是operator,w、$、e是motion 如果直接操作motion,w就是移动单词、$移动到末尾、e移动到单词末尾,w,e前面可以加数字,2w就是移动两个word,dw、de中间也可以加数字,就是删除几个word
dd 删除当前行,2dd就是删除下面两行
u 撤销操作
U 撤销当前行的所有操作,回到原始状态
Ctrl + R 将撤销给撤销了
p 粘贴前面删除的东西
rx 字符替换,先移动光标到需要喜欢的字符上面,按r,然后输入想要换成的字符即可
ce 修改word到末尾 change
c$ 和d$类似,修改到末尾
Ctrl+f 向后翻一页,forward, Ctrl+b前翻一页back
Ctrl+G 显示光标所在文档的位置,以及文件的名称
gg 回到文档起始位置
G 回到文档末尾
20G或者20gg 回到文档地20行
/error 查找error,从光标处向下查找,n查找下一个,N查找上一个。如果想从当前光标向上查找?error
%,)、]、} 跳转到匹配光标
s/old/new/g 全局继续查找替换,substitute,s/old/new当前行第一次出现替换
0,$s/old/new 全局替换,0表示第一个,$表示最后一行
s/old/new/gc 进行交互替换
:!ls -la 执行外部的命令
v 进入选择模式
:r !ls 读取外部输入
o 在光标当前行下面插入新的一行 open a line
O 在光标当前行上面插入新的一行
R 替换模式,直接在要替换的word上面输入R然后输入其他词
y 复制
p 粘贴

参考资料

Linux中创建及管理LVM逻辑卷
Linux系统命令及Shell脚本实践指南
LVM逻辑卷管理器
实例妙解Sed和Awk的秘密

相关文章

  • Linux运维之道(5)——Linux基础命令

    @(Linux)[基础命令, Linux学习] Linux中提供了什么我们日常操作所需要的基础命令,我们需要经常使...

  • Linux系统基础命令汇总

    Linux系统学习,总结汇总了linux系统下基础常用的命令: 一.Linux系统基础常用命令 1.命令da...

  • Linux学习笔记20200331

    1.Linux自学计划 学习目的:了解Linux系统,熟练使用Linux命令,为后续学习大数据分析打下基础学习资源...

  • 2020-01-05 linux 基本参数学习网站

    linux 命令大全Linux 基础

  • Linux实用命令

    Linux实用命令 前面已经说过,我们学习Linux,最基础的就是要掌握Linux实用命令的使用,这对提高我们的生...

  • Linux常用命令

    1.Linux命令1.基础命令Linux基础命令使用格式为:命令名 [选项]... [参数]...其中,不同的[选...

  • LINUX基础学习

    #LINUX基础学习 ##命令行下的基础知识 Linux区分英文的大小写。 date :查看时间 cal:查看日历...

  • Linux基础学习-分析

    #LINUX基础学习 ##命令行下的基础知识 Linux区分英文的大小写。 date :查看时间 cal:查看日历...

  • Linux命令集

    学习Linux操作系统必备的指令,基于Linux指令管理Linux操作系统,必备Linux指令有哪些? 基础命令相...

  • Linux基础笔记

    linux基础 命令 vi基础 路径

网友评论

      本文标题:Linux基础命令学习

      本文链接:https://www.haomeiwen.com/subject/mlgroctx.html