测试开发-linux
ls命令ls [-a -h -l](可选选项) [linux路径](可选参数)ls:以平铺的方式展示当前工作目录下的内容-a选项显示隐藏文件可见后缀前面带.的都是隐藏文件-l选项以列表的形式展示更多信息可简写成ll-h选项必须搭配-l使用人性化显示文件大小这里的 ls -lh / 中的/是根目录的意思为linux路径cd命令与pwd命令切换工作目录cd [linux路径]cd无参数切换home目录默认状态下home目录就是工作目录pwd查看当前我们所处于的工作目录cd ..返回上一级cd ~返回home目录cd -返回上一次目录)mkdir命令mkdir用于创建新的文件夹mkdir [-p] linux路径-p选项可选自动创建不存在的父目录适用于创建连续多层级的目录linux路径:必写参数touch命令touch用于创建一个文件touch linux路径cat命令查看文件内容cat linux路径more命令与cat命令相同查看文件内容但是more命令支持翻页more linux路径按空格翻页按q退出cp命令复制文件/文件夹cp [-r] 参数1 参数2-r选项可选用于复制文件夹时用表示递归参数1linux路径表示要复制的文件或者文件夹参数2:linux路径表示复制到什么地方mv命令移动文件/文件夹mv 参数1 参数2参数1linux路径要移动的文件/文件夹参数2linux路径移动到什么地方如果目标文件/文件夹不存在则进行改名rm命令删除文件/文件夹rm [-r -f] 参数1 参数2 参数3 参数N-r选项删除文件夹-f选项force强制删除不会弹出提示信息普通用户一般用不到只有root用户才会用到rm支持通配符*用来模糊匹配例如rm *test表示任意以test结尾的内容grep命令可以通过关键字过滤文件的行grep [-n - i -c] 关键字 文件路径可以作为内容的输入端口-n选项显示过滤出的行号-i选项忽略关键字大小写-c选项统计行数关键字需要查找有这个内容的行wc命令统计文件的行数单词数字节数wc [-w -l -c -m] 文件路径可以作为内容的输入端口-w选项统计单词数量-l选项统计行数-c选项统计字节数-m选项统计字符数量管道符l将管道符左面的输出作为管道符右边的输入which命令which 要查找的命令查找命令的本体位于何处因为linux中的命令实质是一个二进制命令相当于Windows中的.exe文件一样find命令查找指定文件find 起始路径 -name 被查找的文件名 #根据文件名称查找被查找的文件名可以模糊匹配find 起始路径 -size |-n [kMG] #根据文件大小查询表示大于-表示小于k代表单位kbM代表单位MBG代表单位GB ,n代表数字find 文件路径 -name *.log -mtime 7 -delete*.log通配符查找所有以.log结尾的日志文件-mtime按照文件修改时间查找7七天以前的文件-delete选项找到符合条件的文件直接删除echo命令echo 输出的内容在命令行上输出指定内容如果想要将结果输出需要用反引号包围起来重定向符:将左侧命令的执行结果覆盖写到右侧指定的文件中:将左侧命令的执行结果追加写到右侧指定的文件中tail命令查看文件尾部的内容追踪文件的最新更改tail [-f -num] linux路径-f选项表示持续追踪-num选项查看文件尾部多少行不写默认10行vim文本编辑器vim linux路径若文件不存在则创建新文件并且编辑如果文件存在则编辑命令模式下按下yy在按p会复制一行按下dd会删除一行按下u会撤销一行Linux用户root用户为超级管理员拥有最高权限普通用户权限有限例如普通用户在根目录无法创建文件所有普通用户只有在home目录下不受限制出了home目录只有只读和执行的权限没有修改的权限切换用户su - [用户名]不加用户名默认root用户sudo命令临时以root的权限执行命令sudo 其他命令但是为普通用户配置sudo认证使用visudo命令会自动用vim编辑器打开/etc/sudoers在文件名的最后添加(键盘按G跳到最后一行末尾按o在最后一行插入)用户名 ALL(ALL) NOASSWD:ALL最后按:wq退出用户和用户组以下需要root用户执行创建用户组groupadd 用户组名删除用户组groupdel 用户组名查看当前用户所属组groups创建用户user add 用户名 [-g -d]-g选项指定所属的组如果没有添加这个选项则会自动创建同名的组并且加入如果先创建了组然后再创建同名的用户则会无法创建会提示有同名的组需要添加-g选项-d选项指定用户的home目录如果不指定则默认/home/用户名删除用户userdel [-r] 用户名-r选项删除用户的home目录如果不添加则保留查看用户信息id [用户名]修改用户所属的组usermod -aG 用户组 用户名-aG中的-a append追加不覆盖原有组-G supplementary groups附加组⚠️ 如果不用-a只用-g或-G不带-a会替换掉所有附加组只保留你指定的那个getent命令getent passwd查看系统有哪些用户getent group查看系统有哪些组查看权限控制信息chmod命令修改文件/文件夹的权限注意只有文件/文件夹的所属用户或者root用户才有权限修改chmod [-R] 权限u?,g?,o?/数字文件/文件夹[-R]选项recursive:递归的文件夹内的所有内容都有同样的规则chown命令修改用户所属的用户/用户组chown [-R] [用户]:[用户组] 文件/文件夹yum命令rpm包软件管理器可以下载linux软件并且可以自动配置依赖yum [-y] [install|remove|search] Linux文件名-y选项自动确认yum命令需要root权限并且联网systemctl命令ln命令创建软连接类似于Windows中的快捷方式ln -s 参数1 参数2参数1被链接的文件/文件夹参数2要连接去的地方IP地址和主机名IP地址什么是ip地址就类似于我们的身份证号是我们在网上的唯一标识现在一般都是v4的格式由4 组数字组成中间用点.隔开。每组数字范围是 0-255。例子192.168.1.1或8.8.8.8一台设备一般有2个ip地址一个是外网ip一个是内网ip公网ip:运行商移动联通给路由器分配的地址内网ip也就是我们一般所常说的ip地址这是路由器分配给我们的电脑手机电视的地址以下的ip地址都是我们的内网ip在Windows系统可以通过winr键输入cmd回车输入ipconfig命令查看WiFi无线局域网WLAN中的IP v4地址普通家庭常用的ip地址是192.168.公司、学校校园网、大型园区网或某些特定的宽带运营商的IP v4地址是以10.开头处于常见的Ip地址还有一些特殊的ip地址也需要我们了解例如127.0.0.1或者是0.0.0.0都代指本机主机名在Linux中我们可以通过hostname命令查看自己的主机名我们也可以使用hostnamectl set-hostname 主机名修改主机名需要rootDNS域名又叫我们熟悉的网址如www.baidu.com计算机的世界只认数字。服务器之间通信靠的是IP 地址比如14.215.177.38。人类的世界记不住数字。我们擅长记有意义的单词比如baidu.com。DNS (Domain Name System域名系统)就是那个把“人类语言”翻译成“计算机语言”的系统。域名DNS解析就是把域名转换成 IP 地址的动作解析流程比如我们要浏览baidu.com网站1.先查本地host文件或者浏览器缓存如果有直接拿到IP地址进入浏览器windows系统一般为C\Windows\System32\drivers\etc\hostsLinux一般为/etc/hosts2.如果没有则访问dns服务器查询是一种映射关系3.最后返回结果并缓存接下来拓展几个知识知识拓展网卡计算机接受数据的物理硬件负责把设备连接到网络把电信号转化为网络可以懂的语言分为两种有线网卡插网线的口和无线网卡(连WiFi的模块)就像我们手机的SIM卡槽没有它手机就不能打电话上网MAC地址网卡的身份证号出厂时烧录在硬件里通常不可更改。全球唯一格式如00:1A:2B:3C:4D:5E。它是局域网内找设备的底层标识子网掩码它是一种规则用来判断另一台计算机是“内人”同处于一个局域网下比如家里面的WiFi手机电脑电视都是连着同一个WiFi还是“外人”互联网彼此之间的通信则需要经过网关例如我的ip是“192.168.1.5我的字码掩码是255.255.255.0子网掩码决定了哪些段是固定的哪些段是可以变化的。255完全固定0随意变化0-255所以只要子网在192.168.1.0到192.168.1.255之间的都属于子网可以直接通过MAC寻址找到另一台设备网关网关通常就是路由器如果想访问外网百度抖音微信则需要通过网关联通互联网。网关通常有两个接口一个是内网网关一个是外网网关我们在Windows电脑上使用ipconfig命令时看到的默认网关就是内网网关。外网网关就是运营商分配给我们的公网ip这是路由器连接光猫、连接运营商网络的接口。nmap命令nmap ip地址nmap 127.0.0.1 产看本机的使用端口的情况netstat命令netstat -ant | grep 端口号查看指定端口的占用情况ss命令代替netstat命令它是 Linux 系统中用来查看网络连接状态、监听端口和套接字信息的强大工具ss [-t -u -l -n -p]参数英文全称通俗作用-tTCP只看TCP 协议端口网页、MySQL、SSH 都用这个-uUDP只看UDP 协议端口DNS、视频流用这个-lListen只看监听状态的端口 开着门等别人连接-nNumber用纯数字显示端口 / IP不转成文字精准不混乱-pProcess显示占用端口的进程名 / PID知道哪个程序在用这个端口telnet命令主动去敲一台服务器的「端口门」测试这扇门能不能打开、能不能连通查看本机的22端口的是否可以连接ps命令查看进程的相关信息ps [-e -f]-e选项查看全部进程-f选项以格式化显示查看全部信息kail命令关闭进程kail [-9] 进程ID-9选项强制关闭top/htop命令实时监控系统资源 进程看 CPU、内存占用谁在拖慢服务器操作作用top打开监控M按内存占用排序P按CPU 占用排序k杀死进程输入 PIDq退出后台运行符号作用命令结尾加程序在后台运行终端可以继续用curl 命令访问接口、下载文件、测试服务是否正常参数作用curl URL访问网页 / 接口-I只看响应头测接口是否存活-O下载文件ssh 命令作用远程连接 Linux 服务器ssh 用户名服务器IP ssh centos7192.168.1.100scp /rsync 文件传输在本地和远程服务器之间传文件scp简单传输文件scp(简单拷贝)scp local_file userremote:/path/上传。scp -r folder userremote:/path/递归上传文件夹。scp userremote:/var/log/app.log ./下载日志scp 本地文件 用户名服务器IP:目标路径 # 把本地测试脚本传到服务器 scp test.py centos7192.168.1.100:/home/centos7/rsync增量传输rsync(增量同步更强大)测开推荐传大量小文件或断点续传时用。rsync -avz source/ userremote:/dest/-a归档模式保留权限、时间等。-v显示过程。-z压缩传输省流量快。特点如果中断了下次运行只会传差异部分而不是重传。rsync -av 本地文件夹 服务器IP:目标路径sed命令用于修改文字比如“替换文字”“删除行”“替换行”sed [选项] 动作 文件名-i选项直接修改文件内容-n选项只打印被选中的行不填的话默认打印所有的行假设我们有一个文件test.txt内容如下apple is red banana is yellow grape is purple apple is sweet场景 A替换文字 (Substitute)想把所有的 apple 换成 orange# 只是显示结果不修改文件 sed s/apple/orange/ test.txt # 全局替换一行有多个 apple 也全换掉加 g 标志 sed s/apple/orange/g test.txt # 【重要】直接修改文件内容 sed -i s/apple/orange/g test.txt解释s代表 substitute (替换)格式是s/旧内容/新内容/标志。场景 B删除行 (Delete)想删除包含 banana 的那一行。# 显示删除后的结果 sed /banana/d test.txt # 直接修改文件删除该行 sed -i /banana/d test.txt解释/关键词/表示匹配包含该关键词的行d代表 delete (删除)。场景 C打印特定行只想看第 2 行到第 3 行。# -n 表示不打印其他行只打印匹配的 sed -n 2,3p test.txt解释2,3表示范围p代表 print (打印)。场景 D在特定行前后插入内容在第 1 行后面插入一行 This is a fruit list。sed 1a\This is a fruit list test.txt解释1表示第 1 行a代表 append (在后面追加)。如果是i则是在前面插入 (insert)。awk 命令文本分析工具 (Pattern Scanning and Processing Language)核心功能主要用于提取和统计。比如取出某一列数据、计算总和、格式化输出。特点它把每一行看作一条记录把行里的内容按空格或指定符号切分成“列”字段。1. 基本语法awk [选项] 条件 { 动作 } 文件名核心概念$0代表整行。$1代表第 1 列。$2代表第 2 列以此类推。NF当前行有多少列 (Number of Fields)。NR当前是第几行 (Number of Records)。2. 小白必会的 4 个场景假设我们有一个文件score.txt(模拟成绩表用空格分隔)Name Math English Alice 90 85 Bob 80 95 Charlie 70 60场景 A提取某一列只想看所有人的名字第 1 列和数学成绩第 2 列。awk {print $1, $2} score.txt输出Name Math Alice 90 Bob 80 Charlie 70解释{print $1, $2}意思是打印第 1 列和第 2 列中间默认用空格隔开。场景 B带条件筛选只想看数学成绩大于 80 分的人awk $2 80 {print $1, $2} score.txt输出Alice 90解释$2 80是条件只有满足这个条件的行才会执行后面的{print ...}。场景 C自定义分隔符如果文件是用逗号分隔的比如Alice,90,85怎么告诉 awk# -F 指定分隔符为逗号 awk -F , {print $1} data.csv场景 D简单的统计计算计算数学成绩的总分。awk NR1 {sum $2} END {print Total Math Score:, sum} score.txt解释NR1跳过第一行标题。sum $2把第 2 列累加到变量 sum 中。END { ... }在所有行处理完后执行一次打印。