关山难越,谁悲失路之人;萍水相逢,尽是他乡之客。
百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程教程 > 技术文章 > 正文

11——6linux常用命令&编辑器iptables

guanshanw 2023-08-20 13:32 38 浏览 0 评论

Linux 介绍

组成:

内核 用来管理硬件资源

库: .so 共享对象,windows:dll 动态链接库 没有执行入口的程序

应用程序

作用:当桌面 ,当服务器

Linux的基本原则:

1、由目的单一的小程序组成;组合小程序完成复杂任务;

2、一切皆文件;

3、尽量避免捕获用户接口;

4、配置文件保存为纯文本格式;

命令格式:

命令 选项 参数

选项:

短选项: -

多个选项可以组合:-a -b = -ab

长选项: --

参数:命令的作用对象

linux命令分类:

过滤器 编辑器 交互工具

过滤器 ls cat 输入源是后面的参数对应的文件 默认输出源是标准输出源—屏幕

从一个来源,到一个输出源

输入输出重定向是针对过滤器来的

重定向:输出重定向 >

清空文件 > aa 也可以用来新建

重定向 ls >aa 文件会先被清空 只能重定向正确的信息

追加 >> 目标文件不会被清空

错误重定向 find / -name shrek > /tmp/findfile 2>$1

等价于 find / -name shrek &> /tmp/findfile 正确信息和错误信息一起重定向过去

管道 :

串联过滤器,将前面的输出当做后面的输入

ls -l /ect/ | grep '^d' |wc -l

统计某目录中文件夹的个数 ls -l /etc/ | grep '^d' | wc -l

在管道流动过程中复制一份出来 ls -l /etc/ | tee bbb.txt |grep '^d' | wc -l

常用命令

ls命令

-l:长格式

文件类型:

-:普通文件 (f)

d: 目录文件

b: 块设备文件 (block)

c: 字符设备文件 (character)

l: 符号链接文件(symbolic link file)

p: 命令管道文件(pipe)

s: 套接字文件(socket)

文件权限:9位,每3位一组,3组 权限(U,G,O)每一组:rwx(读,写,执行), r-- ,第一组:文件的属主用户权限。第二组:文件的属组用户权限,第三组:其他用户权限

文件硬链接的次数

文件的属主(owner)

文件的属组(group)

文件大小(size),单位是字节

时间戳(timestamp):最近一次被修改的时间

访问:access

修改:modify,文件内容发生了改变

改变:change,metadata,元数据

-h:做单位转换

-a: 显示以.开头的隐藏文件

. 表示当前目录

.. 表示父目录

-A

-d: 显示目录自身属性

-i: index node, inode

-r: 逆序显示

-R: 递归(recursive)显示

cd命令

change directory

家目录:每一个用户都有一个家目录,在自己的家目录中权限最大,root家目录是/root

主目录/, home directory

cd ~USERNAME: 进入指定用户的家目录

cd -:在当前目录和前一次所在的目录之间来回切换

cd ..返回上以及目录

帮助查询

1、 type: 显示指定属于哪种类型

结果是:pwd is a shell builtin 表明是内部命令

结果是:date is /bin/date 表明是外部命令

2、帮助查询

Shell内置命令查帮助手册:

help pwd

外部命令查看帮助手册:

man cp

MAN

翻屏:

向后翻一屏:SPACE

向前翻一屏:b

向后翻一行:ENTER

向前翻一行:k

查找:

/KEYWORD: 向后

n: 下一个

N:前一个

q: 退出

时间管理:

date date +'%Y-%m-%d %H:%S:%M'

系统时钟和硬件时钟一致 hwclock -s

echo命令

标准输出命令

echo -e "adfdf\tadfa\nasdf"

无交互修改密码:echo "1234567" | passwd --stdin root

文件系统:

/boot: 系统启动相关的文件,如内核、initrd,以及grub(bootloader)

/dev: 设备文件

设备文件:

块设备:随机访问,数据块

字符设备:线性访问,按字符为单位

设备号:主设备号(major)和次设备号(minor)

/etc:配置文件

/home:用户的家目录,每一个用户的家目录通常默认为/home/USERNAME

/root:管理员的家目录;

/lib:库文件

静态库, .a

动态库, .dll, .so (shared object)

/lib/modules:内核模块文件

/lib64

/media:挂载点目录,移动设备

/mnt:挂载点目录,额外的临时文件系统

/opt:可选目录,第三方程序的安装目录

/proc:伪文件系统,内核映射文件

/sys:伪文件系统,跟硬件设备相关的属性映射文件

/tmp:临时文件, /var/tmp

/var:可变化的文件

/bin: 可执行文件, 用户命令

/sbin:管理命令

绝对路径:以跟目录为起点到目标的路径。

相对路径:以当前目录为起点到目标的路径

文件查看:

tree:查看目录树

stat :查看文件详细信息

cat:查看文件内容

more:分页查询

less:分行查询

head:查看文件前部 head -9 /etc/passwd | tail -1 查看具体某一行

tail:查看文件尾部

tail -f: 查看文件尾部,不退出,等待显示后续追加至此文件的新内容

find:查找find /etc/ -name profile

grep 过滤 '^root' /etc/passwd

chmod:修改文件权限:chmod o+w a.txt

mkdir:创建空目录 mkdir –p /etc/aa/bb 将父目录一起创建:

touch 创建新文件

rm –rf 递归,不交互删除文件夹

文件处理:

文本排序:sort

-n:数值排序

-r: 降序

-t: 字段分隔符

-k: 以哪个字段为关键字进行排序

-u: 排序后相同的行只显示一次

-f: 排序时忽略字符大小写

文本切割:cut

-d: 指定字段分隔符,默认是空格

-f: 指定要显示的字段

-f 1,3

-f 1-3

提取所有用户名及其登录的shell:cat /etc/passwd | cut -d : -f1,7

文本统计:wc

-l 统计行

-w 统计单词

-c 统计字符

-L 给出最长行的长度

文本复制:cp

:文件复制

-r :拷贝整个目录

-i 存在覆盖前确认

-f 如果存在即覆盖

-a:归档复制,常用于备份

编辑器:

vi基本使用:

vim模式:

编辑模式(命令模式)

输入模式

末行模式

模式转换:

编辑-->输入:

i: 在当前光标所在字符的前面,转为输入模式;

a: 在当前光标所在字符的后面,转为输入模式;

o: 在当前光标所在行的下方,新建一行,并转为输入模式;

I:在当前光标所在行的行首,转换为输入模式

A:在当前光标所在行的行尾,转换为输入模式

O:在当前光标所在行的上方,新建一行,并转为输入模式;

输入-->编辑:ESC

编辑-->末行 :

末行-->编辑:ESC, ESC

关闭文件

末行模式关闭文件

:q 退出

:wq 保存并退出

:q! 不保存并退出

:w 保存

:w! 强行保存

:wq --> :x

移动光标(编辑模式)

1、逐字符移动:

h: 左

L: 右

j: 下

k: 上

#h: 移动#个字符;

2、以单词为单位移动

w: 移至下一个单词的词首

e: 跳至当前或下一个单词的词尾

b: 跳至当前或前一个单词的词首

#w:

3、行内跳转:

0: 绝对行首

^: 行首的第一个非空白字符

$: 绝对行尾

4、行间跳转

#G:跳转至第#行;

G:最后一行

gg :第一行

末行模式下

,直接给出行号即可

翻屏

Ctrl+f: 向下翻一屏

Ctrl+b: 向上翻一屏

Ctrl+d: 向下翻半屏

Ctrl+u: 向上翻半屏

删除

删除单个字符

x: 删除光标所在处的单个字符

#x: 删除光标所在处及向后的共#个字符

删除命令: d

d命令跟跳转命令组合使用;

#dw, #de, #db

dd: 删除当前光标所在行

#dd: 删除包括当前光标所在行在内的#行;

复制粘贴

Linux中只有剪切,没有删除

粘贴命令 p

复制命令 yy

替换:r /R

撤消编辑操作 u

撤消最近一次撤消操作:Ctrl+r

剪贴版操作

复制 双引号+a yy 调用剪贴板a

粘贴 双引号+a p 调用剪贴板b

查找

/PATTERN 从上往下匹配

?PATTERN 从下往上匹配

n 向上翻页

N 向下翻页

查找并替换

在末行模式下使用s命令

ADDR1,ADDR2s@PATTERN@string@gi

:1,$ s/nologin/bash/g /g表示不交互 将所有的nologin替换成bash

快捷键:从命令行进入前就进行匹配,让光标定位

Vim +5/path /etc/profile 光标定位在第五行的path处

vim +/root /etc/passwd 进入编辑前先匹配出所有的root

vim +$ passwd 进入就提前跳到最后行

编辑模式常用命令:

另存 :w aa.backup

读入另外一个文件 :r a.txt

显示执行某个命令的结果 :r ! ls

回复到最初状态 :e!

查找并替换 :1,$ s/nologin/bash/g /g表示不交互 将所有的nologin替换成bash

sed基本使用:

sed流编辑器,和正则搭配非常强大,可以帮我们在shell脚本中改配置文件

linux默认只打印不编辑文本,只有加了 –i参数以后才会编辑文本

系统中的实用教程: info sed

常用正则:

^表示一行的开头 如/^#/以#开头的匹配

$表示一行的结尾 如/}$表示以}结尾的匹配

\<表示词头 如\<abc表示以abc为首的词

\>表示词尾 如abc\>表示以abc结尾的词

. 任意一个字符 * 任意多个前面的字符

[]字符集 如[a-zA-Z]表示匹配所有的字母

[^a] 表示取反

S命令:替换
单个匹配:

基本格式 sed 参数 "/匹配的内容/替换的内容/g" 目标文件 /g指的是全行匹配

匹配替换:

去掉html中的所有tag标签:Sed s/<[^>]*>//g html.txt

在第三行将my替换成you Sed '3s/my/you/g' a.txt

在第三到六行将my替换成you Sed '3,6s/my/you/g ' a.txt

只替换每一行的第一个s Sed 's/s/S/1' a.txt

匹配bash一行,将root替换成bob sed -e "/bash/s/root/bob/g" /etc/passwd

多个匹配:

第1到3行的my换成有 3到最后的this换成that

Sed -e '1,3s/my/you/g' &ndash;e '3,$s/this/that/g' a.txt

去掉文件中的注释和空行 sed -e "/^#/d" -e "/^$/d" a.txt

根据文件:sed -f sss /etc/passwd

文件内容:

等价于执行脚本:./sss /etc/passwd

注意执行脚本前需要对文件添加可执行的权限 chmod u+x sss

脚本内容:

圆括号匹配

圆括号\(\)括起来的正则表达式所匹配的字符串可以当做字符串来使用

Sed中使用的是\1 \2

Sed 's/this is my \([^,]*\), .*is\(.*\)/\1:\2/g' my.txt

待匹配的字符串: this is my cat , is Betty

提取结果: cat:Betty

&的作用:

用&来当中被匹配的变量,前后都可以加东西

将my替换成mydog Sed 's/my/[&]dog/g' my.txt

sed命令
N命令

作用:把下一行的内容纳入当成缓冲区匹配,把奇数行并入偶数行,并且只匹配一次

待处理文本:

将所有换行符替换成逗号,两行合并成一行

sed -i 'N;s/\n/,/g' a.txt

结果:

i命令a命令

append insert用来添加行的

在第一行后插入一行

sed " 1 i this is my monkey , my monkey's name is wukong " a.txt

在第一行后追加一行

sed " 1 a this is my monkey , my monkey's name is wukong " a.txt

在最后一行以后追加一行

sed " $ a this is my monkey , my monkey's name is wukong " a.txt

匹配fish这一行,在后面追加一句

sed "/fish/a this is my monkey ,my monkey's name is wukong" my.txt

c命令

c命令是替换匹配行

将第一行替换:sed " 1 c this is my monkey , my monkey's name is wukong " a.txt

d命令

删除匹配:

sed /fish/d my.txt :将第二行删除:sed 2d my.txt

将第二行以后的内容全部删除:sed "2,$ d" a.txt

将orange和apple之间的删除掉 sed '/orange,/apple/d' a.txt

p命令

打印命令,把这个命令当成grep式的命令:Sed '/fish/p' my.txt

直接显示匹配到的这一行:Sed &ndash;n '/fish/p' ny.txt

n指的是默认情况不显示,只有在匹配处才显示

从一个模式到另一个模式 Sed -n '/dog/ , /fish/p' my.txt

从第一行匹配到匹配fish成功的那一行

Sed &ndash;n '1, /fish/p' my.txt

awk基本用法

awk是一个强大的文本分析工具,awk除了针对行,还可以针对列做操作

相对于grep的查找,sed的编辑,

awk在其对数据分析并生成报告时,显得尤为强大。

简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。 $0指一整行 $n指的是第n列

打印命令:

读取某一列的值:

chkconfig --list| awk '{print $4}'

先做判断,再打印 第一列为rdisc时候打印第四列

chkconfig --list| awk '$1=="rdisc" { print $4}'

列之间加连接语句:

chkconfig --list| awk '{ print $4 " on level " $5}'

将所有用户和UID显示出来:awk &ndash;F : '{$1 " UID is " $3}' /etc/passwd -F 制定分隔符

提取出所有用户: cat /etc/passwd | awk &ndash;F ':' '{print $1}'

搜索支持正则,例如找root开头的: awk -F: '/^root/' /etc/passwd

运行awt程序:

awk工作流程是这样的:先执行BEGING,然后读取文件,读入有/n换行符分割的一条记录,然后将记录按指定的域分隔符划分域,填充域,$0则表示所有域,$1表示第一个域,$n表示第n个域,随后开始执行模式所对应的动作action。接着开始读入第二条记录&middot;&middot;&middot;&middot;&middot;&middot;直到所有的记录都读完,最后执行END操作。

统计运行级别为3的服务:

chkconfig --list | awk 'BEGIN {ii=1} { if ($5=="3:on") ii+=1} END {print ii} '

awk &ndash;f 执行脚本

chkconfig --list | awk -f aaa

awk内置变量

awk有许多内置变量用来设置环境信息,这些变量可以被改变,下面给出了最常用的一些变量。

ARGC 命令行参数个数

ARGV 命令行参数排列

ENVIRON 支持队列中系统环境变量的使用

FILENAME awk浏览的文件名

FNR 浏览文件的记录数

FS 设置输入域分隔符,等价于命令行 -F选项

NF 浏览记录的域的个数

NR 已读的记录数

OFS 输出域分隔符

ORS 输出记录分隔符

RS 控制记录分隔符

$0变量是指整条记录。$1表示当前行的第一个域,$2表示当前行的第二个域,......以此类推。

awk编程实例:

下面统计/etc/passwd的账户人数

awk '{count++;print $0;} END{print "user count is ", count}' /etc/passwd

统计某个文件夹下的文件占用的字节数

ls -l |awk 'BEGIN {size=0;} {size=size+$5;} END{print "[end]size is ", size}'

[end]size is 8657198

显示/etc/passwd的账户

awk -F ':' 'BEGIN {count=0;} {name[count] = $1;count++;}; END{for (i = 0; i < NR; i++) print i, name[i]}' /etc/passwd

nano基本使用:

基本使用:nano-----ctrl+o---enter-----ctrl+x

用户管理:

useradd, userdel, usermod, passwd, chsh, chfn, finger, id, chage

useradd [options] USERNAME

-u UID

-g GID(基本组)

-G GID,... (附加组)

-c "COMMENT"

-d /path/to/directory

-s SHELL

-m -k

-M

-r: 添加系统用户

userdel:

userdel [option] USERNAME

-r: 同时删除用户的家目录

finger: 查看用户帐号信息

finger USERNAME

usermod

-u UID

-g GID

-a -G GID:不使用-a选项,会覆盖此前的附加组;

-c

-d -m:

-s

-l

-L:锁定帐号

-U:解锁帐号

chsh: 修改用户的默认shell

chfn:修改注释信息

密码管理:

passwd [USERNAME]

--stdin

-l

-u

-d: 删除用户密码

pwck:检查用户帐号完整性

组管理:

groupadd, groupdel, groupmod, gpasswd

创建组:groupadd

groupadd

-g GID

-r:添加为系统组

groupmod

-g GID

-n GRPNAME

groupdel

gpasswd:为组设定密码

newgrp GRPNAME <--> exit

chage

-d: 最近一次的修改时间

-E: 过期时间

-I:非活动时间

-m: 最短使用期限

-M: 最长使用期限

-W: 警告时间

权限管理:

chown, chgrp, chmod, umask

三种权限:

r:读

w:写

x:执行

三类用户:

u: 属主

g: 属组

o: 其它用户

chmod u+x /tmp/a.txt 给拥有者可执行的权限

ps:查看进程

分屏显示进程信息 :ps aux | more

从所有进程中查找java进程:ps aux |grep java

其他实用命令:

df

查看磁盘状况

netstat

查看网络状态: -ptnl

查ssh进程的网络状况 :netstat -ntpl | grep sshd

yum

yum install man 安装man命令对应的程序:是在线安装的

command not found 有一个原因是相关程序没有安装

iptables

设置参数:

-p 协议 后跟协议名称

-s 来源 后跟源ip

-d目的地 后跟目标ip

-j 对待策略 ACCEPT DROP REJECT(REJECT 是基于ACCEPT的)

--sport 源端口

--dport目标端口

-m 采用iptables的扩展模块

策略:INPUT(进入) FORWARD(转发) OUTPUT (发出)

-o 出口 eth0 eth1

-i 入口 eth0 eth1

配置文件操作:

-A 添加 -I 插入 -D 删除 -F清除 -L显示

在第二条处插入iptables &ndash;A INPUT 2 -s 192.168.0.2 --dport 22 -j ACCEPT

将第三条INPUT删除 iptables &ndash;D INPUT 3

匹配删除: iptables &ndash;D INPUT -s 192.168.0.2 &ndash;j ACCEPT

显示iptables iptables &ndash;L -n

清除iptables iptables&ndash;F 清除

示例:

iptables -A INPUT &ndash;p tcp --dport 66 --sport 55 -s 192.168.0.0 -d 192.168.0.254 -i eth0 -o eth0 &ndash;j DROP ACCEPT REJECT

iptables -A INPUT &ndash;p tcp --sport 1025:2222 -s 192.168.0.0 &ndash;j DROP

配置文件保存:

service iptables save

iptables配置文件位置: /etc/sysconfig/iptables

重启服务:

chkconfig iptables on

service iptables restart

实例:

拒绝访问iptables &ndash;A INPUT -s 192.168.0.2 &ndash;p tcp --dport 22 -j DROP

允许访问iptables &ndash;A INPUT -s 192.168.0.2 --dport 22 -j ACCEPT

设置所有数据包拒绝:iptables &ndash;P INPUT DROP iptables &ndash;F 清除不了iptables &ndash;P

设置所有数据包允许 iptables &ndash;P INPUT ACCEPT

我访问别人可以,别人访问我可以, 别人可以访问我的80端口

做一个小的防火墙:

2000/s以下可以正常访问, 2000/s-2200/s记录日志 日志在 /etc/syslog.conf中

iptables &ndash;A -m limit &ndash;limit 2000/s &ndash;j ACCEPT

iptables &ndash;A -m limit &ndash;limit 2200/s &ndash;j log

将网关绑定一个MAC地址 ,防止arp欺骗 arp &ndash;s gatewayIp gatewayMAC

相关推荐

七条简单命令让您玩转Git
七条简单命令让您玩转Git

凭借着出色的协作能力、快速部署效果与代码构建辅助作用,Git已经得到越来越多企业用户的青睐。除了用于开发商业及消费级应用之外,众多科学及政府机构也开始尝试使用这...

2023-10-07 12:14 guanshanw

基本完整的关于Git分支branch的操作
基本完整的关于Git分支branch的操作

Git使用背景项目中要用到dev或者其他分支开发完代码,需要将该分支合并到master的需求操作步骤下面以dev名称为lex为分支名为例来操作一遍客户端操作:...

2023-10-07 12:14 guanshanw

Git 进阶(合并与变基)
Git 进阶(合并与变基)

在Git中整合来自不同分支的修改主要有两种方法:合并(merge)以及变基(rebase)合并(merge)merge流程图merge的原理是找到这两个分...

2023-10-07 12:13 guanshanw

Git学习笔记 003 Git进阶功能 part5 合并(第一部分)

合并(merge)是很常用的操作。尤其是一个庞大的很多人参与开发的企业级应用。一般会设定一个主分支,和多个副分支。在副分支开发完成后,合并到主分支中。始终保持主分支是一个完整的,稳定的最新状态的分支。...

非标题党,三张图帮你理解git merge和git rebase的区别
非标题党,三张图帮你理解git merge和git rebase的区别

初始场景:基于正常的开发分支修改几个小bug,然后在合并到开发分支上。gitmergegitcheckoutfeaturegitmergeho...

2023-10-07 12:13 guanshanw

git 初次使用(01)
git 初次使用(01)

先从github上克隆代码下来:使用vscode克隆代码如下图,填写上github仓库地址:vscode有时候克隆代码速度比较慢,可以用命令行方式克隆gitc...

2023-10-07 12:12 guanshanw

Git 远程操作

4.Git远程操作命令说明gitremote远程版本库操作gitfetch从远程获取版本库gitpull下载远程代码并合并gitpush上传远程代码并合并4.1远程版本库操作gitre...

Git常用命令-总结
Git常用命令-总结

创建git用户$gitconfig--globaluser.name"YourName"$gitconfig--globaluser.em...

2023-10-07 12:12 guanshanw

git中删除从别人clone下来项目的git信息,并修改为自己的分支

如果你从别人的Git存储库中克隆了一个项目,并想要删除与该存储库相关的Git信息,并将其修改为你自己的分支,则可以执行以下步骤:使用gitclone命令克隆存储库:gitclone<u...

git系列-回滚和放弃本地修改

回滚历史提交就是reset的功能。这种情况是已经提交远程仓库,需要回滚到之前的提交。gitreset--hardcommitId//注:强制提交后,当前版本后面的提交版本将会删掉!gi...

GIT使用小技巧大全
GIT使用小技巧大全

在大型软件工程的开发过程中,版本控制是无法绕过去的;目前来说,最火的版本控制软件就是GIT了。早两年SVN比较火,不过被大神linus喷了几次后,就日落西山了,...

2023-10-07 12:11 guanshanw

git相关命令-上
git相关命令-上

这些命令都是看了文档后,个人觉得比较有用的一些,展示给大家。回到远程仓库的状态抛弃本地所有的修改,回到远程仓库的状态。gitfetch--all&...

2023-10-07 12:10 guanshanw

Git命令行接口:掌握Git的必备技能
Git命令行接口:掌握Git的必备技能

Git是一款强大的分布式版本控制工具,它支持命令行界面操作。熟练掌握Git命令行接口,是开发者使用Git的必备技能之一。在这篇文章中,我们将介绍Git命令行接口...

2023-10-07 12:10 guanshanw

Git命令详解
Git命令详解

相信各位小伙伴们应该都对git有一些了解,毕竟作为代码管理的神器,就算不是IT行业的小伙伴肯定也或多或少的听说过一些。今天就来和小伙伴们分享一下自己总结的常用命...

2023-10-07 12:10 guanshanw

工作7年收集到的git命令
工作7年收集到的git命令

概念git中的术语解释:仓库也叫版本库(repository)stage:暂存区,add后会存到暂存区,commit后提交到版本库git安装linux...

2023-10-07 12:10 guanshanw

取消回复欢迎 发表评论: