1. 基础知识
1.1 文件系统结构
/bin 存放普通用户可执行的指令,即使在单用户模式下也能够执行处理/boot 开机引导目录,包括Linux内核文件与开机所需要的文件/dev 设备目录,所有的硬件设备及周边均放置在这个设备目录中/etc 各种配置文件目录,大部分配置属性均存放在这里/home 这里主要存放你的个人数据,具体每个用户的设置文件/lib 开机时常用的动态链接库32位,bin及sbin指令也会调用对应的lib库/lib64 开机时常用的动态链接库64位,bin及sbin指令也会调用对应的lib库/media 可移除设备挂载目录,类似软盘 U盘 光盘等临时挂放目录/mnt 用户临时挂载其他的文件系统,额外的设备可挂载在这里,相对临时而言/opt 第三方软件安装目录,现在习惯性的放置在/usr/local中/proc 虚拟文件系统,通常是内存中的映射,特别在误删除数据文件后,只要系统不重启,有很大几率找回/root 系统管理员主目录,除root之外,其他用户均放置在/home目录下/run 系统运行是所需文件,以前防止在/var/run中,后来拆分成独立的/run目录/sbin 只有root才能运行的管理指令,跟bin类似,但只属于root管理员/srv 服务启动后需要访问的数据目录,/sys 跟proc一样虚拟文件系统,记录核心系统硬件信息/tmp 存放临时文件目录,所有用户对该目录均可读写/usr 应用程序放置目录/var 存放系统执行过程经常改变的文件/vmlinuz 是可引导的,压缩的linux内核,“vm”代表的“virtual memory”,一般是一个软连接/lost+found 存放文件系统错误导致文件丢失后找回数据的"""其他重要目录 /var/log,存放系统日志信息:"""/var/log/message 系统启动后的信息和错误日志,是Linux中最常用的日志之一/var/log/secure 与安全相关的日志信息/var/log/maillog 与邮件相关的日志信息/var/log/cron 与定时任务相关的日志信息/var/log/spooler 与UUCP和news设备相关的日志信息/var/log/boot.log 守护进程启动和停止相关的日志消息
1.2 Linux命令行含义
示例:root@app00:~# root //用户名,root为超级用户@ //分隔符app00 //主机名称~ //当前所在目录,默认用户目录为~,会随着目录切换而变化,例如:(root@app00:/bin# ,当前位置在bin目录下)# //表示当前用户是超级用户,普通用户为$,例如:("yao@app00:/root$" ,表示使用用户"yao"访问/root文件夹)
1.3 命令的组成成分
示例:命令体 [选项] [命令的参数,命令的对象] []代表可有可无cat -A test.txthead -n 10 test.txt其他:如何获得命令的帮助?1. 命令 -h 或 命令 --h2. man 命令3. info info是GNU的超文本帮助系统4. help 命令
1.4 Linux包管理工具分类
(1)主流包管理器 Linux软件包管理
DPKG:即package manager for Debian ,是 Debian 和基于 Debian 的系统中主要的包管理工具,用来安装、构建、卸载、管理deb
格式的软件包。Ubuntu dpkg使用详解RPM :全名是Red Hat Package Manager,一种数据库记录的方式将所需要的软件安装到Linux主机的一套管理程序。RPM简介与基本使用 - 大师兄啊哈 - 博客园(2)软件包的依赖
软件包之间可能存在依赖关系,甚至循环依赖,即:A包依赖B包,B包依赖C包,C包依赖A包 安装软件包时,会因为缺少依赖的包,而导致安装包失败。解决依赖包管理工具:
DNF :Fedora18+rpm包管理器前端工具,CentOS8版dnf代替yumYUM :rpm包管理器的前端工具APT :deb包管理器前端工具zypper:suse上的rpm前端管理工具pacman:就是Arch的apt-get pacman (简体中文) - ArchWikiPortage:Gentoo Linux拥有的先进包管理系统,用Python编写的,具有很多先进的特性(3)相关文档
【1】包管理器的进化 - 知乎
【2】技术|Linux 黑话解释:什么是包管理器?它是如何工作的?
【3】Linux软件包管理系统 – 标点符
1.5 Linux系统分类
1.6 CPU架构概述
CPU架构是CPU厂商给属于同一系列的CPU产品定的一个规范,主要目的是为了区分不同类型CPU的重要标示。目前市面上的CPU指令集分类主要分有两大阵营,一个是intel、AMD为首的复杂指令集CPU,另一个是以IBM、ARM 为首的精简指令集CPU。两个不同品牌的CPU,其产品的架构也不相同,例如,Intel、AMD的CPU是X86架构的,而IBM公司的CPU是 PowerPC架构,ARM公司是ARM架构 。
1. 主要架构:X86、ARM、MIPS、PowerPC、SPARC:其中X86架构:IA、IA-32、IA-64、X86-32、X86-64、AMD64、Intel642. 指令集:CISC(复杂指令集)、RISC(精简指令集)、EPIC(显式并行指令集)、VLIW(超长指令集)
2. 基础命令
2.1 开关系统
(1)立刻关机 shutdown -h now 或者 poweroff(2)两分钟后关机 shutdown -h 2(3)立刻重启 shutdown -r now 或者 reboot(4)两分钟后重启 shutdown -r 2
2.2 帮助命令
ifconfig --help //查看 ifconfig 命令的用法 man shutdown //打开命令说明后,可按"q"键退出
2.3 切换用户
useradd -d /home/newuser newuser(设定了该用户的主目录和用户名)passwd newuser
2.4 查看CPU
lscpu: Architecture: //架构 CPU(s): //逻辑cpu颗数 Thread(s) per core: //每个核心线程 Core(s) per socket: //每个cpu插槽核数/每颗物理cpu核数 CPU socket(s): //cpu插槽数 Vendor ID: //cpu厂商ID CPU family: //cpu系列 Model: //型号 Stepping: //步进 CPU MHz: //cpu主频 Virtualization: //cpu支持的虚拟化技术 L1d cache: //一级缓存(google了下,这具体表示表示cpu的L1数据缓存) L1i cache: //一级缓存(具体为L1指令缓存) L2 cache: //二级缓存cat /proc/cpuinfo //查看每个CPU详细信息
2.5 bang(!)命令
!! //执行上一条命令!!string //在上一条命令的后面追加 string ,并执行!nstring //在第n条指令后面追加string,并执行^foo^bar //把上一条命令里的foo替换为bar,并执行!wget //执行最近的以wget开头的命令!wget:p //仅打印最近的以wget开头的命令,不执行。!$ //上一条命令的最后一个参数, 与 Alt - . 和 $_ 相同!* //上一条命令的所有参数!*:p //打印上一条命令是所有参数,也即 !*的内容。^abc //删除上一条命令中的abc。!n //执行历史命令列表第n条命令,例如执行第三条命令:!3!-n //执行历史命令列表倒数第n条命令,例如执行倒数第三条的命令:!-3
3. 目录操作
3.1 切换目录(cd)
cd / //切换到根目录 cd /bin //切换到根目录下的bin目录 cd ../ //切换到上一级目录 或者使用命令:cd .. cd ~ //切换到home目录 cd - //切换到上次访问的目录 cd xx(文件夹名) //切换到本目录下的名为xx的文件目录,如果目录不存在报错 cd /xxx/xx/x //可以输入完整的路径,直接切换到目标目录,输入过程中可以使用tab键快速补全 cd *123 //模糊匹配,切换到目标文件夹,例如cd dafsfdgfgf123 等价于 cd *123
3.2 查看目录(ls)
ls //查看当前目录下的所有目录和文件 ls -a //查看当前目录下的所有目录和文件(包括隐藏的文件) ls -l //列表查看当前目录下的所有目录和文件(列表查看,更多信息),与"ll"效果一样 ls /bin //查看指定目录下的所有目录和文件 ls -lR test/|grep "^-" |wc -l //统计出test文件夹中文件的个数
3.3 创建目录(mkdir)
mkdir -p file //当前目录创建file文件夹,若存在则不创建 mkdir /home/file{1..3} //指定目录创建文件夹file1、file2、file3 mkdir -m 777 file //创建权限为777的目录
3.4 删除目录与文件(rm)
rm 文件名/文件夹名 //删除当前目录的的文件(询问) rm -f 文件名/文件夹名 //删除当前目录的的文件(不询问) rm -rf */文件夹名 //删除当前目录所有文件夹或某个文件夹、包括其内子文件夹和文件
3.5 修改目录(mv)
mv 当前目录名 新目录名 //修改目录名,同样适用与文件操作=rename命令 mv -r /usr/tmp/tool /opt //递归剪切目录中所有文件和文件夹 mv test1.txt test2.txt file1/ //移动test1、2到文件夹file1 -f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖; -i :若目标文件 (destination) 已经存在时,就会询问是否覆盖! -u :若目标文件已经存在,且 source 比较新,才会更新(update)
3.6 拷贝目录(cp)
cp [选项] 源文件 目标文件 -a:相当于 -d、-p、-r 选项的集合; -d:如果源文件为软链接(对硬链接无效),则复制出的目标文件也为软链接; -i:询问,如果目标文件已经存在,则会询问是否覆盖; -l:把目标文件建立为源文件的硬链接文件,而不是复制源文件; -s:把目标文件建立为源文件的软链接文件,而不是复制源文件; -p:复制后目标文件保留源文件的属性(包括所有者、所属组、权限和时间); -r:递归复制,用于复制目录; -u:若目标文件比源文件有差异,则使用该选项可以更新目标文件,此选项可用于对文件的升级和备用。 cp –r test/ newtest //将当前目录 test/ 下的所有文件复制到新目录 newtest下 ls |head -n 100 |xargs -n1 -P 1 -i cp {} /home //将当前目录下100文件复制到home目录
3.7 搜索目录(find)
find /bin -name 'a*' //查找/bin目录下的所有以a开头的文件或者目录 find . -type f //将当前目录及其子目录中的所有文件列出 find . -name "*.c" //将当前目录及其子目录下所有文件后缀为 .c 的文件列出来
4. 文件操作
4.1 创建文件(touch)
touch a.txt //创建文件(文件不存在),若文件存在,将文件时间属性修改为当前系统时间 : > a.txt //将文件置空 等价于直接 xxx > a.txt
4.2 编辑文件(vi、vim)
vi 文件名 //打开需要编辑的文件 --进入后,操作界面有三种模式:命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode) 命令模式 -刚进入文件就是命令模式,通过方向键控制光标位置, -使用命令"dd"删除当前整行 -使用命令"/字段"进行查找 -按"i"在光标所在字符前开始插入 -按"a"在光标所在字符后开始插入 -按"o"在光标所在行的下面另起一新行插入 -按":"进入底行模式 插入模式 -此时可以对文件内容进行编辑,左下角会显示 "-- 插入 --"" -按"ESC"进入底行模式 底行模式 -退出编辑: :q -强制退出: :q! -保存并退出: :wq ## 操作步骤示例 ## 1.保存文件:按"ESC" -> 输入":" -> 输入"wq",回车 //保存并退出编辑 2.取消操作:按"ESC" -> 输入":" -> 输入"q!",回车 //撤销本次修改并退出编辑 ## 补充 ## vim +10 filename.txt //打开文件并跳到第10行 vim -R /etc/passwd //以只读模式打开文件
4.3 查看文件(head、tail)
cat、less、more、head、tailcat -n a.txt //查看文本文件内容,且附加行号cat -s a.txt > b.txt //合并文本文件中的重复空行,并输出到另一个文本文件cat a.txt b.txt > c.txt //合并多个文件到一个文件cat test.txt |less //less常用于查看大文件,逐页查看cat test.txt |tail -n +500 |head -n 500 > list.txt //获取原文档500-1000行数据head *.txt && tail *.txt //分别显示所有txt文本的前10行及其后10行文本数据
4.3 排序去重(sort、uniq)
sort -t ' ' -k 2 -u test.txt //将文本每行按照空格切分,以第二列去重并排序sort -t ' ' -k 2 test.txt |uniq -u //将文本每行按照空格切分,在按照第二列排序后,在去重sort a.txt b.txt | uniq -d //获得两文件的交集sort a.txt b.txt | uniq //获得两文件的并集sort a.txt b.txt b.txt | uniq -u //获得两文件的差集(a-b)
5. 打包与解压
5.1 压缩说明
.zip、.rar //windows系统中压缩文件的扩展名 .tar //Linux中打包文件的扩展名 .gz //Linux中压缩文件的扩展名 .tar.gz //Linux中打包并压缩文件的扩展名 .7z //其他压缩方式
5.2 ZIP打包解压
NTFS:无限制;FAT32:4GB;FAT:2GB //zip压缩文件大小限制,根据文件系统格式yum -y install zip unzip //在linux中安装zip 、unzipzip -P 密码 -r A.zip file1/* //按照原来目录,加密压缩文件夹cat test.txt | xargs zip -P 123 test.zip //按照路径压缩文件unzip /root/jieya aaa.zip //解压zip压缩文件unzip -O GBK file.zip //原来在windows上的zip文件, 在CentOS上使用unzip直接解压会显示乱码,因为windows简体中文版的操作系统一般上用的是GBK编码, 所以会导致这个问题
5.3 RAR打包解压
#安装wget http://www.rarlab.com/rar/rarlinux-x64-5.0.0.tar.gztar -zxvf rarlinux-x64-5.0.0.tar.gzmv rar /opt/cd /opt/rar/make && make installunrar e test.rar DestPath //解压(会在把当前压缩包内容解压到当前目录内,容易造成解压内容和当前目录原文件混合,不容易区分,不建议使用)unrar x test.rar DestPath //解压(会在当前解压目录内产生一个以压缩包名字命名的目录,目录内是解压内容,推荐使用
5.4 7za打包解压
#centos7安装yum install epel-releaseyum install p7zip#分卷压缩7z a name.7z filename -v10m#普通压缩7za a -pvirus -t7z xxx.7z ./*#解压7za e -ofile/ test.zip #解压到指定目录7za x ABC.7z -r -o./ #-r 表示递归解压缩所有的子目录;参数 e 也是解压缩文件,但其会将所有文件都解压到根下,而不是自己原有的目录下(x代表解压缩文件,并且是按原始目录树解压)参考文献:https://blog.csdn.net/lyblyblyblin/article/details/68485625?spm#批量解压ls |xargs -i -n1 echo {} |awk -F '.' '{print $1}' |xargs -n1 -t -i 7za x -p123 {}.7z -r -o./{}
5.5 7z打包解压
sudo apt-get install p7zip-full p7zip-rar //uos安装7zsudo yum install p7zip p7zip-plugins //centos安装7z7z a test.7z *.txt //7z压缩文件7z x -y -p密码 压缩包 -o文件路径 //7zy解压文件
5.6 tar打包解压
tar -zxvf 文件名.tar.gz //解压tar.gz包tar -zcvf 文件名.tar.gz 待压缩的文件名 //打包tar.gztar -xvJf 文件名.tar.xz //解压tar.xz