前言
Linux是一种自由和开放源代码的类Unix操作系统,广泛应用于服务器领域和嵌入式系统等多个领域。Linux操作系统具有很多优点,例如安全性高、稳定性好、可靠性强、灵活性大等等。
前端开发人员需要使用Linux下的命令行工具进行文件管理、网络配置、软件安装等操作。其次,Linux平台提供了很多强大的开发工具和环境,例如Git版本控制、Vim编辑器、Docker容器等,这些工具可以在前端开发、测试以及部署过程中起到重要作用。此外,Linux下还有很多支持Web开发的应用程序和服务,例如Apache、Nginx、PHP、MySQL等,这些工具可以帮助前端开发人员搭建起完整的Web开发环境。
一、Linux主要从业方向
①运维
系统运维、自动化运维、数据库运维 (DBA)、大数据运维、网络运维云计算运维
②开发
(1)应用开发
- 服务器后台开发
- 嵌入式开发
- 桌面应用开发
(2)底层开发
- 驱动开发
- 内核开发
- 安卓开发
二、获取Linux环境的几种常见方式
①虚拟机
- VMWare
- VirtualBox
②WSL2
- 优点:方便
- 缺点:
- 不够原汁原味,很多东西被优化掉
- 没有界面
- 性能不够好
③云服务器
- 一般不免费,常见的厂商有: 阿里云,腾讯云华为云
- 方便,随时随地可以学习Linux
- 稳定,原汁原味
④物理机双系统
- 稳定,纯正Linux系统
- 安装繁琐
⑤树莓派
- 方便
- 性能有点差
下载 VMware Workstation Pro网址如下:下载 VMware Workstation Pro | CNVMware Workstation Pro 是业界标准的桌面 Hypervisor,用于在 Linux 或 Windows PC 上运行虚拟机。了解原因。 | VMware CNhttps://www.vmware.com/cn/products/workstation-pro/workstation-pro-evaluation.html
安装步骤挺简单,已跳过
终端工具Mobaxterm的使用
优点:
- 功能十分强大,支持SSH,FTP,串口VNC,X server等功能;
- 支持标签,切换也十分方便
- 众多快捷键,操作方便
- 有丰富的插件,可以进一步增强功能
官网下载地址:
配置:
- 去除buttons bar:菜单view —>勾选show menu bar
- 去除标签页的数字: 菜单view—>去除show tab numbers
- 右健粘贴:settings —> Configuration —> terminal —>paste using right-click 打勾
- 关闭左侧SFTP侧边栏:settings —> Configuration —> SSH —>automaticall switch to SSH-browser tabafterlogin去掉对勾
创建session
菜单栏 sessions —> new session —> ssh
在虚拟机创建用户后
文件传输工具winSCP的使用
作用: Window主机与Linux服务器文件传输工具
官网下载:WinSCP :: Official Site :: DownloadWinSCP is a free file manager for Windows supporting FTP, SFTP, S3 and WebDAV.https://winscp.net/eng/download.php新建站点 :新建会话—>填入主机信息
连接站点: 双击对应站点即可
ls / Linux目录结构介绍
根目录 /
🌟bin 是binary的缩写,主要存放一些常用的命今,比如 ls, cp, mv 之类的
boot 主要存放一些Linux启动时需要用到的核心文件
🌟dev 是 device 的嬉写,主要存放一些Linux的设备文件
🌟 etc 主要存放系统用户所需要的配置文件和子目录
🌟 home 主要存放用户目录
🌟 lib 是library的缩写,主要存放一些动态库,供应用程序调用
lost+found:一般是空的,当系统非法关机后,相关文件会存放在此目录
media :自动挂载一些Linux系统自动识别的设备,比如U盘,光驱等
mnt:提供给用户的用于挂载临时别的文件系统(手动挂载),比如另外的硬盘等
opt:提供给主机额外安装软件所需要的目录
proc:这个目录是一个虚拟的目录,它是系统内存的映射,可以通过直接访问这个目录来获取系统信息。
root:超级用户的主目录
sbin:s是super user的简称,此目录主要存放一些系统管理员所用到的系统管理程序
snv:主要存放一些系统服务启动之后所要用到的数据
run:主要存放一些系统运行时需要用到的一些文件
usr: 主要存放一些用户的应用程序及文件,类似于windows下的program files
bin:存放系统用户所使用的应用程序
sbin:存放超级用户所使用的高级程序及系统守护程序
src:内核源代码默认的放置目录
tmp: 存放一些临时文件
var:主要存放一些经常被修改的文件,比如日志文件,电子部件等
Linux系统文件或目录颜色的含义
Linux系统常用终端快捷键
- ctrl+f 向前移动光标
- ctrl+b向后移动光标
- ctrl+ a 光标移动到行首
- ctrl+e 光标移动到行尾
- ctrl+p 向上翻页,相当于 pageUp
- ctrl+n 向下翻页,相当于 pageDown
- ctrl + h 删除光标前一个字符
- ctrl+ d 删除光标所在字符
- ctrl + u 删除光标至开始全部内容 (不包括光标所在字符)
- cIrl+ k 删除光标至末尾全部内容 (包括光标所在字符)
- ctrl+ w 删除光标前单词
- ctrl+y粘贴使用 ctrl+w,ctrl+u 和 ctrl+k 快捷键擦除的文本
Tab键的妙用
(1)作用
- 提示可能要输入的命令/路径
- 补全命令 / 路径
(2)用法
- 如果命令/路径是唯一的,则敲击一次 tab 键 自动补全
- 如何命令/路径不唯一,则敲击两次,则会将所有可能性全部列出来
文件权限介绍
- r readable
- w writeable
- x executable
通配符介绍
- * 匹配0个或多个字符串
- ? 匹配1个字符
- [abcd] 匹配 abcd 中何意一个字符
- [a-z] 匹配 a-z 范围里的任意一个字符
- [!abc] 不匹配方括号里的任何一个字符;与[^abc]一致
帮助命令①: man
(1)作用:查看帮助手册
(2)语法:
- man [man options] [[section] page ..] ...
- man -k [apropos options] regexp
- man -k [man options][section] term.
- man -f [whatis options] page
- man -I [man options] file
- man -w|-W [man options] page
(3)参数:
- -f 显示给定关键字的简短描述信息
- -k 根据关键词搜索帮助手册
- -w 显示手册文件所在位置
(4)常用章节
(5)快捷操作
- 空格键 下翻一页
- 回车键 下滚一行
- j 下滚一行
- k 上滚一行
- b 回翻一页
- f 下一页
- q 退出
- /word 搜索word关键词
(6)案例
- 查看 cp命令 的帮助手册 man cp
- 查看 sleep命令 的简要信息 man -f sleep
- 查看第了个章节的sleep信息 man 3 sleep
- 查看 passwd文件的详细介绍 man 5 passwd
- 查看 Is 命令帮助手册文件所在位置 man -w Is
- 搜索跟 disk 相关的帮助手册 man -k disk
帮助命令②:info
(1)作用: 阅读info格式的文件
(2)语法:info[OPTION]..[MENU-ITEM···]
(3)参数:
- -w 显示info文档的物理位置
- -f 指定要访问的info文件
- -n 在首个浏览过info文件中指定节点
- -O 跳转至命令行选项节点
(4)常用操作:
- n 显示下一节点的页面内容
- p 显示上一节点的页面内容
- l 返回上一个访问节点的页面内容
- 空格键 向前滚动一页
- 退格键/del 向后滚动一页
- b / e 一个节点内容的开始 / 结束
- h 打开info教程
- d 回到info的初始节点
- 回车键 跳转到链接文本
- q 退出
(5)案例:
- 查看Is 命令的info文档 info ls
- 显示Is命令info文档的物理位置 info -w ls
帮助命令③:whatis
(1)作用:查询一个命令执行什么功能,并将查询结果打印到终端上
(2)语法:whatis 命令
(3)案例:查询 sleep 命令的功能 whatis sleep
⭕whatis 命令等同于 man-f 命令
创建空文件与修改时间戳命令: touch
(1)作用:
1.改变已有文件的时间戳属性
⭕注意: 在修改文件的时间属性的时候,用户必须是文件的属主,或拥有写文件的访问权限
2.创建新的空文件
(2)语法:touch [OPTION]··· FILE···
(3)参数:
- -a 改变文件的读取时间记录
- -m 改变文件的修改时间记录
- -r 使用参考文件的时间记录,与--file 的效果一样
- -c 不创建新文件
- -d 使用指定字符串表示时间式
- -t 设定文件的时间记录,格式与 date 命令相同
- --no-create 不创建新文件
(4)案例:
- 创建一个空文件 touch file.txt (前提: file.txt文件不存在)
- 创建多个空文件
- touch filel.txt file2.txt file3txt
- touch filefl..3).txt
- 修改已有文件的时间戳为当前系统时间 (包括修改时间及访问时间) touch file.txt (前提: file.txt文件已存在)
- 修改文件的 access 时间 touch -a file.txt
- 修改文件的 modify 时间 touch -m file.txt
- 强制避免创建新文件
- touch -c nofile.txt
- touch --no-create nofile.txt
- 将访问和修改时间从一个文件复制到另一个文件
- touch file.txt -r ref file.txt
- 修改文件时间为明天 touch -d "tomorrow" file.txt
- 修改文件时间为任意时间 touch -t 2201011030.55 file.txt
目录创建命令: mkdir
(1)作用:创建目录
⭕注意: 默认状态下,如果要创建的目录已经存在,则提示已存在,而不会继续创建目录。新建的目录与它所在目录下的文件有重名也不行
(2)语法:mkdir [OPTION]···DIRECTORY···
(3)参数:
- -p 递归创建多级目录
- -m 建立目录的同时设置目录的权限
- -v 显示目录的创建过程
(4)案例:
- 在当前目录下创建一个名为 dirl 的子目录 mkdir dirl
- 创建多个目录
- mkdir dir2 dir3 dir4
- mkdir dir(5.7)
- 递归创建目录 mkdir -p dir7/dir8/dir9
- 在din 目录下建立子目录dir10,并且设置文件权限700 mkdir -m 700 dirl/dir10
- 显示目录的创建过程 mkdir -v dir(1..13)
删除命令: rm
(1)作用:删除文件或目录 remove
(2)语法:rm[OPTION]···[FILE]··
(3)参数:
- -f 忽略不存在的文件,不会出现警告信息
- -i 删除前会询问用户是否操作
- -r/-R 递归删除
- -v 显示指令的详细执行过程
(4)案例:
- 删除一个文件 rm file.txt
- 删除一个目录 rm -r dir
- 强制删除文件/目录(不带提示) rm f file.txt
- 删除当前目录下所有文件 rm -rf *
- 删除前逐一一询问确认 rm i filel.txt file2.txt file3.txt
删除空目录命令: rmdir
(1)作用:删除空目录 remove directory
(2)语法:rmdir [OPTION]···DIRECTORY···
(3)参数:
- -p 用递归的方式删除指定的目录路径中的所有父级目录,非空则报错
- -v 显示命令的详细执行过程
(4)案例:
- 删除空目录 rmdir dir
- 递归删除多重目录 mdir -p dir/dir2/dir3
- 显示指令详细执行过程 rmdir -v dir
移动或重命名命令: mv
(1)作用:
- 移动件
- 重命令文件
(2)语法:
- mv[OPTION]···[-T] SOURCE DEST
- mv[OPTION]···SOURCE···DIRECTORY
- mv[OPTION]···-t DIRECTORY SOURCE
(3)参数:
- -i 若存在同名文件,则向用户询问是否覆盖
- -f 夏盖已有文件时,不进行任何提示
- -b 当文件存在时,夏盖前为其创建一个备份
- -u 当源文件比目标文件新,或者目标文件不存在时,才执行移动此操作
(4)案例:
- 将文件fle.txt 移动到目录 dir 中 mv file.txt /dir
- 将file.txt 重命名为 newfile.txt mv file.txt newfile.txt
- 将目录dir1移动到目录dir2中(前提是目录dir2已存在,若不存在则改名) mv dirl dir2
- 将文件 filel.txt 改名为 file2txt,如果fle2.txt已经存在,则询问是否覆盖 mv -i filel.txt file2.txt
- 将文件 filel.txt 改名为 file2.txt,如果file2txt已经存在,则直接覆盖 mv -f filel.txt file2.txt
- 文件被覆盖前做备份 mv -b filel.txt file2.txt
- 源文件比目标文件新时才执行更新 mv -u filel.txt file2.txt
- 移动当前文件夹下的所有文件到上一级目录 mv* ../
- 将当前目录的一个子目录里的文件移动到另一个子目录里 mv dir3/* dir2
复制命令:cp
(1)作用:复制文件或目录
(2)语法:
- cp[OPTION]···[T] SOURCE DEST
- cp[OPTION]···SOURCE···DIRECTORY
- cp[OPTION]··· -t DIRECTORY SOURCE
(3)参数:
- -f 若目标文件已存在,则会直接爱盖
- -i 若目标文件已存在,则会询问是否覆盖
- -a 通常在复制目录时便用,它保留链接、文件属性,并复制目录下的所有内容
- -r 递归复制文件和目录
- -b 覆盖已存在的文件目标前将目标文件备份
- -v 详细显示cp 命令执行的操作过程
(4)案例:
- 复制文件 cp filel.txt file2.txt
- 复制目录 cp -r dirl dir2
- 复制文件,若目标文件已存在,则询问是否夏盖 cp -i filel.txt file2.txt
- 复制文件,若目标文件已存在,则直接覆盖,不提示 cp -f filel.txt file2.txt
- 复制文件,若目标文件已存在,则先进行备份 cp -b filel.txt file2.txt
- 复制目录,并且保留源目录所有属性都一致 cp -a dirl dir2
显示文件状态信息命令: stat
(1)作用:显示文件或文件系统的详细信息
(2)语法:stat [OPTION]···FILE···
(3)参数:
- -L 支持符号链接
- -f 显示文件系统的信息
- -t 以简洁的方式输出
(4)三种时间
- atime: access time 访问时间:读取文件(more/less/cat/tail)、修改文件(vim/nano)时改变
- mtime: modify time 修改时间:修改文件(vim/nano)时改变
- ctime:changetime 状态改变时间:修改文件(vim/nano)、文件属性变化(chmod/chown)时改变
(5)案例:
- stat file.txt 查看文件file.txt的信息
- stat -f file.txt 查看fie.txt文件所在文件系统信息
- stat -t file.txt 以简洁方式输出信息
批量文件重命名命令: rename
(1)作用:用字符串替换的方式批量改变文件名
(2)语法:rename 's/old-name/new-name/’ files
(3)语法:原字符串: 将文件名需要替换的字符串;目标字符串: 将文件名中含有的原字符替换成目标字符串; 文件: 指定要改变文件名的文件列表
(4)通配符:
- ? 可替代单个字
- * 可替代多个字符
(5)参数:
- -n 模拟运行,实际命令没进行重命名
- -v 输出每步执行信息
- -f 强制改写
(6)案例:
- 将myfile.txt改为myfile.doc rename 's/.txt/.doc/ myfile.txt
- 模拟将filel.txt,file2txt,file3.txt改为file01.txt,file02.txt,fle03.txt rename -n 's/file/file0/* myfile.txt
- 实际更改上一步,并输出执行过程信息 rename -v 's/file/file0/' myfile.txt
提取文件或目录名命令:basename
(1)作用: 提取文件路径名的文件名
(2)语法:
- basename NAME[SUFFIX]
- basename OPTION···NAME···
(3)参数:
- -a 支持处理多个文件
- -s 删除指定后缀
(4)案例:
- 提取文件名 basename/etc/passwd
- 提取目录名(删除最后的/) basename/usr/local/
- 提取多个输入 base -a /etc/passwd /usr/local/
- 删除指定后缀
- basename /etc/sysctl.conf .conf
- basename -s .conf/etc/sysctl.conf
提取路径目录部分命令: dirname
(1)作用:去除文件名中的非目录部分
(2)语法:dirname[OPTION] NAME.
(3)案例:
- 提取文件的路径 dirname /usr/bin/cat
- 提取目录的路径 dirname/home/liangxu/commands/
修改、查看文件属性命令: chattr_lsattr
(1)作用:更改文件属性
(2)语法:chattr[-RVf]+-=[aAcCdDeijsStTu] files···
(3)参数:
- -R 递归处理目录下的所有文件
- -v 设号文件或目录版本
- -V 显示指令执行过程
- + 开启文件或目录的该项属性
- - 关闭文件或目录的该项属性
- = 指定文件或目录的该项属性
(4)案例:
- 解锁 chattr i file.txt
- 只允许文件追加内容(对日志文件特别有用) chattr +a file.txt
- 对一个目录中的所有文件添加限制 chattr -R +i dir
- 查看文件属性 sattr file.txt
识别文件类型命令: file
(1)作用:识别文件类型
(2)语法:file[参数]文件
(3)参数:
- -b 列出文件类型,不显示文件名称
- -c 详细显示指令执行过程
- -f 指定名称文件,显示多个文件类型信息
- -L 直接显示符号连接所指向的文件类别
- -m 指定魔法数字文件
- -z 尝试去解读压缩文件的内容
- -i 显示MIME类别
(4)查看文件的类型:
- file file.txt
- file dir
- file /dev/sda
(5)案例:
- 查看文件类型,但不显示文件名 file -b file.txt
- 显示MIME类别 file -i file.txt
- 查看某个符号链接文件(快捷方式)的类型 file /dev/cdrom
- 直接查看某个符号链接文件(快捷方式)所对应的目标文件的文件类型 file -L /dev/cdrom
生成和校验文件的md5值命令: md5sum
(1)作用:生成和校验文件的md5值
(2)语法:md5sum···[OPTION]···[FILE]···
(3)参数:
- -b 以二进制模式读取文件
- -t 以文本模式读入文件内容
- -c 根据已生成的md5值,对现存文件进行校验
- --status 校验完成后,不生成错误或正确的提示信息,可以通过命令的返回值来判断
(4)案例:
- 生成filetxt文件的md5值:md5sum file.txt
- 不同模式计算同一个文件的md5值:
- md5sum -b file.txt
- md5sum -t file.txt
- md5校验 md5sum -c file.md5
- md5校验,不显示任何输出, 用返回码 1表示成功与否 md5sum -c --status file.md5 echo S ?
查找目录或文件命令: find
(1)作用:搜索指定文件
(2)语法:find[路径][参数][条件]
(3)参数:
- -name name,inamename: 文件名称符合name 的文件。iname会忽略大小写
- -perm 匹配权限 (mode为完全匹配,-mode为包含即可)
- -user 匹配所有者
- -group 匹配所有组
- -mtime-n+n 匹配修改内容的时间(n指n天以内,+n指n天以前)
- -atime-n +n 匹配访问文件的时间 (n指n天以内,+n指n天以前)
- -ctime-n+n 匹配修改文件权限的时间(-n指n天以内,+n指n天以前)
- -nouser 匹配无所有者的文件
- -nogroup 匹配无所有组的文件
- -newerf !f2 匹配比文件新但比 f2 旧的文件
- -type b/d/c/p//f 匹配文件类型(后面的字幕字母依次表示块设备、目录、字符设备、管道、链接文件、文本文件)
- -size 匹配文件的大小(+50KB为章找超过50KB的文件,而-50KB为查找小于50KB的文件)
- -prune 忽略某个目录
- -exex···{}\; 后面可跟用于进一步处理搜索结果的命令
搜索命令位置命令: which
(1)作用: 查找命令文件所在位置
(2)语法:which [-a] filename···
(3)案例:查找文件所在位置
- which bash
- which ls
- which fdisk
查找文件命令: whereis
(1)作用 :查找命令的二进制程序,源代码文件和man手册页面相关文件的路径
(2)语法:whereis [options][-BMS directory... -f] name
(3)参数:
- -b 查找二进制程序或命令
- -B 从指定目录下查找二进制程序或命令
- -m 查找man手册文件
- -M 从指定目录下查找man手册文件
- -s 只查找源代码文件
- -S 从指定目录下查找源代码文件
(4)案例:
- 查找Is命令的程序路径和man手册页位置 whereis ls
- 查找Is命令的二进程程序路径 whereis -b ls
- 查找Is命令的man手册页路径 whereis -m ls
查找符合条件的文档命令: locate
(1)作用:快速查找文件或目录
(2)语法:locate[参数][文件]
(3)参数:-i 忽略大小写
(4)案例:
- 查找系统中所有file.txt文件 locate file.txt
- 搜索路径中包含/etc/sh的文件 locate /etc/sh
- 查找和whereis相关的所有文件 locate whereis
- 查找/home/liangxu/commands/locate/目录下所有以开头的文件,不区分大小写 locate -ilocate/f
改变文件所属用户或组命令: chown
(1)作用:改变文件或目录的用户和用户组
(2)语法:chown[参数] 所属主: 所属组文件
(3)参数:
- -R 对目前目录下的所有文件与目录进行相同的变更
- -C 显示所属信息变更信息
(4)案例:
- 改变file.txt文件的所属主与所属组 sudo chown alvin:alvin file.txt
- 只改变file.txt文件的所属主 sudo chown alvin file.txt
- 只改变file.txt文件的所属组 sudo chown :alvin file.txt
- 改变指定文件的所属主与所属组,并显示过程 sudo chown -c liangxu:liangxu file.txt
- 改变指定目录及其内所有子文件的所属主与所属组 sudo chown -R alvin:alvin dir
改变文件或目录所属组: chgrp
(1)作用: 更改文件用户组
(2)语法:chgrp[参数][目录]
(3)参数:
- -v 显示指令执行过程
- -R 递归处理,将指定目录下的所有文件及子目录一并处理
- --reference 把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同
(4)案例:
- 改变文件的用户组 sudo chgrp alvin file.txt
- 改变文件的用户组,并显示命令执行过程 sudo chgrp -v alvin file.txt
- 根据参照文件改变文件的用户组 sudo chgrp --reference=reffile.txt file.txt
- 将dir及其子目录下的所有文件的用户组改为alvin sudo chgrp -R alvin dir
改变用户对文件或目录的权限: chmod
(1)作用:改变文件或目录权限 只有文件的属主和超级用户 root 才能执行此命令
(2)语法:
- chmod [OPTION]···MODE[MODE]···FILE···
- chmod[OPTION]···OCTAL-MODE FILE···
- chmod [OPTION]··· --reference=RFILE FILE···
(3)两种模式:
1️⃣符号模式
1.格式:[ugoa][[+-=][rwx]]
2.对象:
对象 | 用户类型 | 说明 |
u | user | 文件所有者 |
g | group | 文件所有者所在组 |
o | others | 所有其他用户 |
a | all | 所用用户相当于 ugo |
3.操作:
操作 | 说明 |
+ | 为指定的用户类型增加权限 |
- | 去除指定用户类型的权限 |
= | 设置指定用户权限的设置,即将用户类型的所有权限重新设置 |
4.权限:
权限 | 名字 | 说明 |
r | 读 | 设置为可读权限 |
w | 写 | 设置为可写权限 |
x | 执行 | 设置为可执行权限 |
2️⃣数字模式
(4)参数:
-R 对目前目录下的所有文件与子目录进行相同的权限变更(即以递归的方式逐个变更)
(5)案例:
- 将文件file.txt设置为所有人都可读取 chmod a+r file.txt
- 将当前目录下所有文件及递归目录文件设置为所有人可读取 chmod -R a+r*
- 将file.txt设置为只有该文件拥有者才可以执行 chmod u+x file.txt
- 将ffle.txt 设置为文件拥有者及其同组人员可写入,但其他人不可写入 chmod ug+w,o-w file.txt
- 将file.txt设置为所有人都可读可写可执行
- chmod a+r,a+w,a+x file.txt
- chmod 777 file.txt
- 将 filetxt设置为文件拥有者可读可写可执行此外的其他人可读可执行 chmod 755 file.txt
- 将file.txt 设置为文件拥有者可读可写,此外其他人都没任何权限 chmod u=rw.go= file.txt
文本搜索工具: grep
(1)作用:文本搜索工具
(2)语法:grep[参数]文件
(3)参数:
- -i 忽略大小写
- -c 只输出匹配行的数量
- -l 只列出符合匹配的文件名,不列出具体的匹配打
- -n 列出所有的匹配行,显示行号
- -h 查询多文件时不显示文件名
- -s 不显示不存在、没有匹配文本的错误信息
- -v 显示不包含匹配文本的所有行
- -w 匹配整词
- -x 匹配整行
- -r 递归搜索
- -q 禁止输出任何结果,已退出状态表示搜索是否成功
- -b 打印匹配行距文件头部的偏移量,以字节为单立
- -o 与-b结合使用,打印匹配的词据文件头部的偏移量,以字节为单位
- -F 匹配固定字符串的内容
- -E 支持扩展的正则表达式
(4)案例:
- 搜索某个文件中,包含某个关键词的内容 grep liangxu /etc/passwd
- 搜索多个文件中,包含某个关键词的内容 grep liangxu /etc/passwd /etc/shadow
- 搜索多个文件中,包含某个关键词的内容,不显示文件名称 grep -h liangxu /etc/passwd /etc/shadow
- 递归搜索,不仅搜索指定目录,还搜索其内子目录内是否有关键词文件 grep -rl hello *
- 输出在某个文件中,包含某个关键词行的数量 grep -c root /etc/passwd /etc/shadow
- 忽略大小写 grep -i LIANGXU /etc/passwd
- 在文件中查找要搜索的内容,并显示行号 grep -n liangxu /etc/passwd
- 反向查找 grep -v liangxu /etc/passwd
- 搜索当前工作目录中,包含某个关键词内容的文件,未找到则提示 grep -I hello*
- 搜索某个文件中,精准匹配到某个关键词的内容:
- grep -x hello filel.txt
- grep -x hello file3.txt
- 判断某个文件中,是否包含某个关键词,通过返回状态值输出结果(0为包含,1为不包含),方便在Shell脚本中判断和调用:
- grep -q hello filel.txt
- grep -q hello file2.txt
文件内查找指定字符串命令: egrep
(1)作用:查找指定的字符串
(2)语法:egrep[参数][文件]
(3)参数:同grep
(4)案例:
- 查找包含一个或一个以上"a”的内容 egrep 'a+' file.txt
- 查找包含linux或666的内容 egrep 'linux|666' file.txt
- 查找包含linux整体的内容 egrep '(linux)' file.txt
- 查找包含一个或多个inux整体的内容 egrep '(linux)+'file.txt
- 查找以#开头的内容 egrep'^#' file.txt
- 查找以linux结尾的内容 egrep 'linux$' file.txt
- 查找连续出现3次ab的内容 egrep '(ab){3} file.txt'
- 查找包括abc或abd的内容 egrep 'ab[cd]' file.txt
查看文本内容命令: cat concatenate
(1)作用:在终端上显示文件内容
(2)语法:cat[OPTION]...[FILE]···
(3)参数:
- -n 显示行数(空行也编号)
- -s 去除重复的空行
- -b 显示行数(空行不编号)
- -e 每行结束处显示S符号
- -t 将TAB字符显示为 ^符号
(4)案例:
- 查看file.txt文件内容 cat file.txt
- 查看多个文件内容 cat fileltxt file2.txt
- 查看 file.txt文件内容,并显示行数编号 cat -n file.txt
- 去除重复的空行 cat -s file.txt
- 重定向文件内容
- catfile.txt sfileltxt # 如果filel.txt不存在,则创建,并且内容会被覆盖
- catfile.txt>> fileltxt # 如果fleltxt不存在,则创建,并且内容会被追加到末尾
- 将flel.txt和file2txt合并为一个文件 cat filel.txt file2.txt > combinedfile.txt
- 使用cat创建文件(按键Enter 入文本,完成后按CRTL-D保存文件) cat> file.txt
逐页阅读文本命令: more
(1)作用:分页显示文本文件内容
(2)语法:more [options] file···
(3)基本操作:
- 回车:下滚一行
- 空格:下翻一页
(4)参数:
- -num 指定每屏显示的行数
- +num 从第num行开始显示
- -p 先清除屏幕再显示文本文件的剩余内容
- -c 与-P相似,不滚屏,先显示内容再清除旧内容
- -s 多个空行压缩成一行显示
(5)案例:
- 分页显示指定的文本文件内容 more~/.bashrc
- 先进行清屏提作,随后以每次10行内容的格式显示指定的文本文件内容 more-c-10/bashrc
- 分页显示指定的文本文件内容,遇到连续两行以上空白行的情况,则以一行空白行显示 more -s-/.bashrc
- 从第10行开始,分页显示指定的文本文件内容 more +10 -/bashrc
分页查看文本内容命令: less
(1)作用: 分页显示文本内容
(2)语法:less[参数] 文件
(3)快捷操作:
- 空格键 下一页
- 回车键 下滚一行
- j 下滚一行
- k 上滚一行
- b 回翻一页
- f 下翻一页
- q 退出
- /word 搜索word关键词
(4)案例:
- 查看文件 less -/.bashrc
- 查看多个文件 less ~/bashrc -/.bash history
- n- 浏览下一个文件
- p- 浏览前一个文件
- 查看历史命令并便用 less 命令分页显示 history I less
查看文件开头内容命令: head
(1)作用 :显示文件开头的内容
(2)语法
(3)参数:
- -n <数字>定义显示行数
- -c <数字>指定显示头部内容的字符数
(4)案例:
- 显示文件的前10行内容(默认) head -/bashrc
- 显示文件的前5行内容 head -n5~/bashrc
- 显示文件除了最后6行的全部内容 head -n -6 -/bashrc
- 显示文件的前20个字符 head -c 20 -/.bashrc
- 显示文件除了最后30个字符的全部内容 head -c -30 -/.bashrc
查看文本尾部内容命令: tail
(1)作用:查看文件尾部内容
(2)语法:tail[OPTION]···[FILE]···
(3)参数:
- -c N输出文件尾部的 N(N为数)个节内容
- -f 显示文件最新追加的内容
- -n N输出文件的尾部N (N位数)行内容
(4)案例:
- 显示file.txt文件的最后10行内容 tail file.txt
- 显示fletxt文件的最后20行内容 tail -n 20 file.txt
- 显示file.txt文件从第20 行至文件末尾 tail +20 file.txt
- 显示 file.txt 文件的最后10 个字符 tail -c 10 file.txt
- 动态显示文件的最后10 行内容 tail -f file.txt
反向显示文本内容命令: tac
(1)作用:反向显示文件内容
(2)语法:tac[参数][文件]
(3)案例:tac file.txt
统计文件行号命令: nl
(1)作用: 添加行号
(2)语法:nl[OPTION].. [FILE]..
(3)参数:
- -b a 也给空行添加行号(类似cat -n)
- -b t 空行不显示行号
- -n 列出行号表示的方法
- -n In 行号在屏幕的最左方显示
- -n rn 行号在自己栏位的最右方显示,且不加0
- -n rz 行号在自己栏位的最右方显示,且加0
- -w 行号栏位的占用的位数
(4)案例:
- 用nI列出file.txt的内容 nl file.txt
- 用nI列出file.txt的内容,空行也加上行号 nl -b a file.txt
- 行号在自己栏位的最右方显示,且加0对齐格式 nl -b a -n rz file.txt
- 行号宽度设置为3 nl -b a -n rz -w3 file.txt
- 空行不显示行号 nl -b t file.txt
统计文本字数信息命令: wc
(1)作用: 统计文本信息
(2)语法:WC[OPTION]...[FILE]···
(3)参数:
- -w 统计字数,或--words: 只显示字数。一个字被定义为由空白、跳格或换行字符分隔的字符串
- -c 统计字节数,或-bytes或-chars:只显示Bytes数
- -l 统计行数,或--lines:只显示列数
- -m 统计字符数
- -L 打印最长行的长度(不包合不可见符)
(4)案例:
- 统计 filetxt文件的行数、字数、以及字节数 wc file.txt
- 统计file.txt 文件的字数 wc -w file.txt
- 统计 fe.txt 文件的字符数 wc -m file.txt
- 统计file.txt文件的字节数 wc -c file.txt
- 统计file.txt文件的行数 wc -I file.txt
- 打印 file.txt 文件最长行的长度 wc -L file.txt
- 使用管道统计文本行数 cat file.txtI wc -l
文件切割命令: split
(1)作用: 文件分割
(2)语法:split [OPTION]..[FILE[PREFIX]]
(3)参数:
- 指定每多少行切成一个小文件:
- -<行数>
- l 行数
- -b <字节>指定每多少字节切成一个小文件
- -d 使用数字作为后缀
- -a 指定后缀长度(默认为2)
- [输出文件名]设置切割后文件的前置文件名split会自动在前置文件名后再加上编号
(4)案例:
- 将filel.txt每2行切割成一个小文件 split -2 filel.txt
- 将file2txt每10kb切割成一个小文件 split -b 10k file2.txt
- 以数字作为后缀,并指定后缀宽度为3 split -b 10k -d -a 3 file2.txt
- 为分割后的文件指定文件名的前缀 split -b 10k -d -a 3 file2txt split file
文本截取命令: cut
(1)作用:从文件中提取文本的一部分
(2)语法:cut OPTION...[FILE]···
(3)参数:
- -b 以字节为单位进行分割仅显示行中指定直接范围的内容
- -c 以字符为单位进行分制,仅显示行中指定范围的字符
- -d 自定义分隔符,默认为制表符”TAB"
- -f 显示指走字段的内容,与-d一起使用
- -n 取消分割多字节字符
- --complement 补足被选择的字节、字符或字段
- --out-delimiter 指定输出内容是的字段分割符
(4)案例:
- 提取file.txt第2列的内容
- cut -f 2 filel.txt
- cut -f2 filel.txt
- 提取flel.txt除第2列外的其它内容 cut -f2 --complement filel.txt
- 使用-d 选项指定字段分隔符 cut -f2 -d";" file2.txt
- 提取第2,3,4,6个字节 cut -b 2-4,6 file3.txt
- 提取指定数量字符
- 提取第1个到第3个字符 cut -c1-3 file3.txt
- 提取前2个字符 cut -c-2 file3.txt
- 提取第4个之后的字符 cut -c4- file3.txt
文件合并命令: paste
(1)作用:台并两个或多个文件
(2)语法:paste[OPTION]···[FILE]···
(3)参数:
- -d 默认域的分隔符是空格或tab键,设置新的域分隔符
- -s 将每个文件粘贴成一行
- - 从标准输入中读取数据
(4)案例:
- 将 filel.txt 和 file2txt 粘贴成一个新的文件 paste file1.txt file2.txt
- 顺序不一样,结果不一样 paste file2.txt file1.txt
- 多文件拼接 paste file1.txt file2txt file3.txt
- 设置域分隔符为:粘贴成新的文件 paste -d":" file1ltxt file2.txt
- 将每个文件粘贴成一行 paste -d":" -s file1.txt file2 txt
- ls | paste -d""----从标准输入中读取数据,每行显示4个文件名
文本内容排序命令: sort
(1)作用:对文件内容进行排序
(2)语法:sort[参数]文件
(3)参数:
- -t<分隔字符> 指定排序时所用的栏位分隔字符
- -k 指定需要排序的栏位
- -r 以相反的顺序来排序
(4)案例:
- 按字母顺序排序 sort file1.txt
- 反向排序 sort -r file1.txt
- 按数字大小排序 sort -n file2.txt
- 以冒号:为间隔符,对指定的文件内容按照数字大小对第3列进行排序 sort -t:-k3 -n file3.txt
去除重复行命令: uniq
(1)作用:去除文件中的重复行
(2)语法:uniq[OPTION]..[NPUT[OUTPUT]]
(3)参数:
- -c 打印每行在文本中重复出现的次数
- -d 只显示有重复的纪录,每个重复纪录只出现一次
- -u 只显示没有重复的纪录
(4)案例:
- 删除连续文件中连续的重复行 unig file.txt
- 打印每行在文件中出现重复的次数 unig -c file.txt
- 只显示有重复的纪录,且每个纪录只出现一次 uniq -d file.txt
- 只显示没有重复的纪录 unig -u file.txt
比较差异_打补丁命令: diff_patch
(1)作用:比较文件的差异
(2)语法:diff[OPTION]···FILES···
(3)参数:
- y 以并列的方式显示文件的异同之处
- c 显示全部内文,并标出不同之处
- u 以合并的方式来显示文件内容的不同
- -W 设置宽度
(4)显示提示:
- a -add
- c -change
- d - delete
- l 前后2个文件内容有不同
- < 后面文件比前面文件少了1行内容
- >后面文件比前面文件多了1行内容
- +比较的文件的后者比前着多一行
- -比较的文件的后者比前着少一行
- ! 比较的文件两者有差别的行
(5)案例:
- 比较两个文件 diff filel.txt file2.txt
- 并排格式输出 diff -y -W 50 file1.txt file2.txt
- 上下文格式输出 diff -c file1.txt file2 txt
- 统一格式输出 diff -u file1.txt file2.txt
- 生成补丁 diff file1.txt file2.txt > file.patch
- 打补丁 patch file1.txt file.patch
连接两个文件命令: join
(1)作用: 连接两个文件
(2)语法:join [OPTION].. FILE1 FILE2
(3)参数:
- -a1或-a2 除了显示共同域的纪录之外,-a1显示第一个文件没有共同域的纪录,-a2显示第二个文件中没有共同域的纪录
- -o 设置结果显示的格式
- -t 改变域的分隔符
- -v1 或 -v2 不显示共同域的纪录之外,-v1显示第一个文件没有共同域的纪录,-v2显示第二个文件中没有共同域的纪录
- -j 指定一个域作为匹配字段
(4) 案例:
- 连接两个文件:
- 默认以第一列作为连接字段 join file1.txt file2.txt
- 显示左边文件中的所有记录(右边文件中没有匹配的不显示) join -a1 file1.txt file2.txt
- 显示右边文件中的所有记录(左边文件中没有匹配的不显示) join -a2 file1.txt file2.txt
- 全连接(显示左边和右边所有记录) join -al -a2 filel.txt file2 txt
- 指定输出字段:join -0 1.2 1.3 2.3 filel.txt file2txt(第一个文件的第二列,第一个文件的第三列···)
- 只显示第1个文件中没有相同栏位的行 join -v 1 file1.txt file2.txt
- 指定了以两个文件里第2列做匹配字段 join -j 2 file1.txt file2.txt
字符转换命令: tr transform
(1)作用: 转换或删除文件中的字符
(2)语法:tr [OPTION].. SET1[SET2)
(3)参数:
- -c 反选设定字符。也就是符合 SET的部份不做处理,不符合的剩余部份才进行转换
- -d 删除字集合中出现的所有字符
- -s 缩减连续重复的字符成指定的单个字符
(4)可以使用的字符类:
- [:alnuml:]:字母和数字
- [:alphal:]字母
- [:cntrl:]:控制(非打印)字符
- [:digit:]: 数字
- [;graph:]: 图形享符
- [:lower]: 小写字母
- [:print:]: 可打印字符
- [:punct:]: 标点符号
- [:space:]: 空白字符
- [:uppen:]:大写字母
- [:xdigit:]: 十六进制字符
(5)大小写转换:
- tr"[a-z]" "[A-Z]"<file.txt
- cat file.txt | tr a-z A-Z
- echo"hello world"|tr [lower:] [upper:]
- echo"Hello World" | tr '[A-Za-z]''[a-zA-Z]'(大小写互换)
流编辑器: sed
(1)作用:批量编辑文本文件
(2)语法:sed[选项][动作]文件名
(3)参数:
- -n 仅显示script处理后的结果
- -e 以选项中指定的script来处理输入的文本文件
- -i 此选项会直接修改源文件,要慎用
(4)动作:
- a:新增
- c:取代
- d:删除
- i: 插入
- p:打印
- s:取代
(5)案例:
- 输出文件内容:
- 仅输出第2行 sed -n '2p' filetxt
- 输出3到5行 sed -n '3,5p' file.txt
- 搜索含有an关键字的行 sed -n '/an/p' file.txt
- 删除文件内容:
- 删除第2-4的数据 sed ‘’2,4d' file.txt
- 删除含有an关键字的行 sed '/an/d' file.txt
- 在第2行后追加nice sed '2a nice' file.txt
- 在第2行前插入一行数据 sed 2i123456789 filetxt
- 整行数据替换
- sed '2c asdfgh' file.txt
- sed '25c data changed' file.txt
- 字符串替换
- 全局替换,把liangxu改为alvin sed 's/liangxu/alvin/g' file txt
- 只替换第3行 sed '3s/liangxu/alvin/g' file.txt
- 多个条件 sed -e 's/liangxu//g:s/alvin//g' file.txt