【Linux】Linux常用命令大全

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.txt
head -n 10 test.txt

其他:如何获得命令的帮助?
1. 命令 -h  或 命令 --h
2. 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代替yum
  • YUM :rpm包管理器的前端工具
  • APT :deb包管理器前端工具
  • zypper:suse上的rpm前端管理工具
  • pacman:就是Arch的apt-get pacman (简体中文) - ArchWiki
  • Portage: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、Intel64

2. 指令集:CISC(复杂指令集)、RISC(精简指令集)、EPIC(显式并行指令集)、VLIW(超长指令集)

 1.7 IP地址分类

  IP地址=网络ID+主机ID,地址分类系统把IP地址划分为不同的地址类:

  • A类地址:IP地址的前8位表示网络ID,后24位表示主机ID
  • B类地址:IP地址的前16位表示网络ID,后16位表示主机ID
  • C类地址:IP地址的前24位表示网络ID,后8位表示主机ID

特殊的IP地址:(1)全0主机ID:表示网络本身;(2)全1主机ID:表示广播地址;(3)十进制127开头的地址:环回地址,用于测试自身TCP/IP软件是否正常,如ping自己127.0.0.1。子网划分是从主机号字段借用若干位比特,把物理网络分解为更小的逻辑实体(称为子网)的一种手段,从而可以更加充分的利用有限的IP地址资源。

vi /etc/sysconfig/network-scripts/ifcfg-ensxxx  //编辑网卡信息,设置DHCP或者static网络
nmcli con show                                  //查看网卡的设备名称(Device)
nmcli con add con-name ens12 type ethernet ifname ens12   //添加网卡,自动生成ifcfg-ens23文件
ifconfig 、ipconfig、ip addr                    //查看linux或者windows网络IP地址
service network stop\(restart\start\staus)       //关闭、重启、打开、检测network

 1.8 网络协议

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
  -撤销前面操作    :u
  -撤销:u操作      control+r
  ## 操作步骤示例 ##
  1.保存文件:按"ESC" -> 输入":" -> 输入"wq",回车     //保存并退出编辑
  2.取消操作:按"ESC" -> 输入":" -> 输入"q!",回车     //撤销本次修改并退出编辑
  ## 补充 ##
  vim +10 filename.txt                   //打开文件并跳到第10行
  vim -R /etc/passwd                     //以只读模式打开文件
  

4.3 查看文件(head、tail)

cat、less、more、head、tail
cat -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.4 排序去重(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)

需要注意:
cat test.txt 
  123 abc
  123 vbn
  vba abc
sort -t ' ' -k1,1 -u test.txt        按照第1列排序并去重
  123 abc
  123 vbn
sort -t ' ' -k1 -u test.txt          这种方式去重按第1列是不成功的
  123 abc
  123 vbn
  vba abc

 4.5 合并对齐(join、column)

// Linux shell join 命令找出两个文件中,指定栏位内容相同的行,并加以合并
[root@localhost ~]# cat 1.txt  
Hello 95  
Linux 85  
test 30  
[root@localhost ~]# cat 2.txt 
Hello 2005 
Linux 2009  
test 2009

[root@localhost ~]# join 1.txt 2.txt |tee 3.txt
Hello 95  2005
Linux 85 2009
test 30 2009

//column 可以将文本结果转换为整齐的表格,上下对齐
[root@localhost ~]# column -t -s '2' 3.txt
Hello 95  005
Linux 85  009
test 30   009

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 、unzip
zip -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.gz
tar -zxvf rarlinux-x64-5.0.0.tar.gz
mv rar /opt/
cd /opt/rar/
make && make install

unrar e test.rar DestPath //解压(会在把当前压缩包内容解压到当前目录内,容易造成解压内容和当前目录原文件混合,不容易区分,不建议使用)
unrar x test.rar DestPath //解压(会在当前解压目录内产生一个以压缩包名字命名的目录,目录内是解压内容,推荐使用

 5.4 7za打包解压

#centos7安装
yum install epel-release
yum 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安装7z
sudo yum install p7zip p7zip-plugins         //centos安装7z
7z 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.gz
tar -xvJf 文件名.tar.xz                 //解压tar.xz

6. 其他命令

6.1 RAID技术

        RAID,为Redundant Arrays of Independent Disks的简称,中文为廉价冗余磁盘阵列。在1987年由美国柏克莱大学提出RAID(Redundant Arrayof Inexpensive Disks)理论,作为高性能的存储系统,巳经得到了越来越广泛的应用。RAID阵列技术允许将一系列磁盘分组,以实现为数据保护而必需的数据冗余,以及为提高读写性能而形成的数据条带分布。RAID最初用于高端服务器市场,不过随着计算机技术的快速发展,RAID技术已经渗透到计算机遍布的各个领域。RAID技术全解图解-RAID0、RAID1、RAID5、RAID100_singless233的博客-CSDN博客_raid

 6.2 挂载mount

        Linux中的根目录以外的文件要想被访问,需要将其“关联”到根目录下的某个目录来实现,这种关联操作就是“挂载”,这个目录就是“挂载点”,解除次关联关系的过程称之为“卸载”。注意:“挂载点”的目录需要以下几个要求:(1)目录事先存在,可以用mkdir命令新建目录;(2)挂载点目录不可被其他进程使用到;(3)挂载点下原有文件将被隐藏;(4)永久挂载 && 临时挂载。

//永久挂载 /etc/fstab
vi /etc/fstab                   //首先添加要挂载目录,常用于本机添加磁盘
mount -a                        //最后运行该指令实现永久挂载

//临时挂载mount DECE MOUNT_POINT
 -a:	  加载文件/etc/fstab中设置的所有设备
 -f:	  不实际加载设备。可与-v等参数同时使用以查看mount的执行过程
 -F:	  需与-a参数同时使用。所有在/etc/fstab中设置的设备会被同时加载,可加快执行速度
 -h:	  显示在线帮助信息
 -L:	  <标签> 加载文件系统标签为<标签>的设备
 -n:      不将加载信息记录在/etc/mtab文件中
 -o:	  <选项> 指定加载文件系统时的选项。有些选项也可在/etc/fstab中使用。这些选项包括:
 -r:	  以只读方式加载设备
 -t:      <文件系统类型>	指定设备的文件系统类型。常用的选项说明有
 -v:	  执行时显示详细的信息
 -V:	  显示版本信息
 -w:	  以可读写模式加载设备,默认设置

//常用挂载命令
mount -t cifs //ip/share /mnt/file -o username=xxx,password=xxx  //linux挂载smb
net use 盘符: \\ip\共享文件名 /user:用户名 "密码"                  //windows挂载smb,前提再windows上“打开或关闭windows功能”勾选SMB项
net use \IP\ipc$ /del                                            //删除映射,挂载文件
net use * /del                                                   //删除全部映射,慎用

mount \\NFS的IP地址或者主机名\nfs目录名 挂载点                     //windos挂载nfs,前提再windows上“打开或关闭windows功能”勾选NFS项
umount  挂载点                                                   //卸载上述nfs挂载
mount ip:/test/share /mnt/share                                 //Linux挂载nfs  

7. 参考文献

【1】Linux shell 命令大全 - Linux Shell 命令大全 - 简单教程,简单编程

  • 30
    点赞
  • 372
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值