Linux基础命令学习

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

防火墙相关操作

防火墙(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的秘密

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,793评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,567评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,342评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,825评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,814评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,680评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,033评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,687评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,175评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,668评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,775评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,419评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,020评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,206评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,092评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,510评论 2 343