Linux 常用命令

杨镇源 于 2024-04-08 发布 浏览量

Linux 常用命令

一、Linux 基本介绍

1.1 基本介绍

Linux是一个基于Linux内核的开源类Unix操作系统,是Linus Torvalds于1991年9月17日首次发布的操作系统内核。Linux通常打包为,例如UbuntuCentOSArch Linux等。

Linux最初是为基于Intel x86架构的个人计算机开发的,但此后被移植到的平台比任何其他操作系统都多。由于基于Linux的Android操作系统在智能手机上的主导地位,截至2022年5月,Linux(包括Android)在所有通用操作系统中拥有最大的安装基础。

Linux也可以在嵌入式系统上运行,这包括路由器、自动化控制、智能家居设备、视频游戏机、电视(三星和LG智能电视分别使用TizenWebOS)。

Linux是免费和开源软件协作最突出的例子之一。任何人都可以根据其各自的许可条款,例如GNU通用公共许可证(GPL),以商业或非商业方式使用、修改和分发源代码。

1.2 Linux 文件结构

1.2.1 核心

  1. Linux 一切皆文件
  2. 只有一个顶级目录/,不像WindowsOS分C盘、D盘等

1.2.2 目录结构

Linux目录结构

目录 含义 Windows对应目录或概念
/bin 所有用户可用的基本命令存放的位置 Windows没有固定的命令存放目录
/sbin 需要管理员权限才能使用的命令  
/boot Linux系统启动的时候需要加载和使用的文件  
/dev 外设连接Linux后,对应的文件存放的位置 类似Windows中的U盘,光盘的符号文件
/etc 存放系统或者安装的程序的配置文件、注册服务等 类似Windows中的注册表
/home 家目录,Linux中每新建一个用户,会自动在home中为该用户分配一个文件夹 类似Windows中的”我的文档”,每个用户有自己的目录
/root root账户的家目录,仅供root账户使用 类似Windows中的Administrator账户的”我的文档”
/lib Linux的命令和系统启动,需要使用一些公共的依赖,放在lib中 类似我们开发的代码执行需要引入的JDK的JAR
/usr 很多系统软件的默认安装路径 类似Windows中的C盘下的Program Files目录
/var 系统和程序运行产生的日志文件和缓存文件放在这里  

二、Linux 常用命令

2.1 文件管理命令

命令格式:命令 [-选项] 参数

  1. 列出目录下的内容:ls 命令
     $ ls [-la] [目标文件夹]
     # 查看当前目录下的文件列表
     $ ls
     # 查看指定目录下的文件
     $ ls /
     # 查看详细信息,元数据信息(用户、组、大小、创建时间、权限信息、文件类型)
     $ ls -l
     # 查看隐藏文件
     $ ls -a 
     # 参数并用
     $ ls -la
    
    • 命令所在路径:/bin/ls
    • 执行权限:所有用户
    • 功能描述:显示目录文件
    • 语法:ls [-ald] [文件或目录]
      • -a 显示所有文件,包括隐藏文件
      • -l 详细信息显示
      • -d 查看目录属性
  2. 切换工作目录:cd 命令
     # 绝对路径切换
     # cd /tmp/yangzy/test1     切换到指定目录
     $ cd 绝对路径
     # 相对路径切换
     # cd ..        回到上一级目录
     $ cd 相对路径
    
    • 命令所在路径:shell内置
    • 执行权限:所有用户
    • 功能描述:切换目录
    • 语法:cd 目录
  3. 显示当前路径:pwd 命令
     $ pwd
     /home/jojo
    
    • /bin/pwd
    • 执行权限:所有用户
    • 功能描述:显示当前目录
    • 语法:pwd
  4. 创建目录:mkdir 命令
     # 在当前位置新建文件夹
     $ mkdir 文件夹名
     # 在制定目录位置,创建文件夹,并创建父文件夹
     $ mkdir -p /a/b/文件夹名
     # 在当前目录下新建文件
     $ touch 文件名
    
    • 命令所在路径:/bin/mkdir
    • 执行权限:所有用户
    • 功能描述:创建目录
    • 语法:mkdir [-p] 目录名
      • -p 递归创建
  5. 删除空目录:rmdir 命令
     $ rmdir 目录路径
    
    • 命令所在路径:/bin/rmdir
    • 执行权限:所有用户
    • 功能描述:删除空目录
    • 语法:rmdir 目录路径
  6. 删除文件:rm 命令
     $ rm [-rf] 目标文件或文件夹
     # 删除文件
     rm 文件名
     # 删除文件夹,及递归删除文件夹下的文件
     rm -r 文件夹名
     # 强制删除不询问
     rm -f 文件名
    
    • 命令所在路径:/bin/rm
    • 执行权限:所有用户
    • 功能描述:删除文件
    • 语法:rm -rf 目标文件或文件夹
      • -r 递归删除
      • -f 强制删除
  7. 拷贝文件:cp 命令
     $ cp [-rp] 源文件或目录 目标文件或目录
     # 拷贝文件
     $ cp 源文件 新文件或目标目录
     # 递归拷贝文件目录
     $ cp -r 源文件夹 新文件夹
    	
     # 将目录/tmp/zhang/test1复制到目录/root下
     $ cp  -r /tmp/zhang/test1  /root   
     # 将/tmp/zhang目录下的test1和test2目录复制到/root下,保持目录属性
     $ cp  -rp /tmp/zhang/test2 /tmp/zhang/test2 /root
    
    • 命令所在路径:/bin/cp
    • 执行权限:所有用户
    • 功能描述:复制文件或目录
    • 语法:cp [-rp] 源文件或目录 目标文件或目录
      • -r 递归拷贝
      • -p 保留文件属性
  8. 移动文件:mv 命令
     # 移动源文件到目标文件夹中
     $ mv 文件 文件夹
     # 修改文件A的名字为文件B
     $ mv 文件A 文件B
    
  9. 获取文件的md5指纹:md5sum 命令
     $ md5sum example.txt
     14f32a909cd9d665558e1b987317f112  example.txt
    

2.2 文件内容(查看|处理)命令

  1. 创建文件:touch 命令
     $ touch 文件名
    
    • 命令所在路径:/bin/touch
    • 执行权限:所有用户
    • 功能描述:创建空文件
    • 语法:touch 文件名
  2. 显示文件内容:cat 命令
     $ cat [-n] 文件名
     # 显示行号
     $ cat -n 文件名
    
    • 命令所在路径:/bin/cat
    • 执行权限:所有用户
    • 功能描述:显示文件内容
    • 语法:cat [-n] 文件名
      • -n 显示行号
  3. 分屏显示:more 命令
     $ more 文件名
     # (Space)或(f)	翻页
     # (Enter)	换行
     # (q)或(Q)	退出
    
    • 命令所在路径:/bin/more
    • 执行权限:所有用户
    • 功能描述:分页显示文件内容
    • 语法:more 文件名
  4. 分屏显示:less 命令
     $ less 文件名
     # (箭头键) 上一行/下一行
     # (PageUp/PageDown)	上一页/下一页
     # (g)	第一页
     # (G)	最后一页
     # (Space)或(f)	下一页
     # (/关键字)	搜索关键字
     # (q)	回到Linux命令行
    
    • 命令所在路径:/usr/bin/less
    • 执行权限:所有用户
    • 功能描述:分页显示文件内容
    • 语法:less 文件名
  5. 取首几行:head 命令
     $ head [-n 行数] 文件名
     # 访问example.txt文件的前20行
     $ head -n 20 example.txt
    
    • 命令所在路径:/usr/bin/head
    • 执行权限:所有用户
    • 功能描述:显示文件首几行
    • 语法:head [-n 数字] 文件名
      • -n 指定显示的行数
  6. 取尾几行:tail 命令
     $ tail [-n 行数 -f] 文件名
     # 显示example.txt文件的末20行
     $ tail -n 20 example.txt
     $ tail -n -20 example.txt
     # 显示文件信息从第20行至文件末尾
     $ tail -n -20 example.txt
     # 实时滚动显示文件的最后10行信息(默认10行)
     $ tail -f example.txt
    
    • 命令所在路径:/usr/bin/tail
    • 执行权限:所有用户
    • 功能描述:显示文件末几行
    • 语法:head [-n 数字 -f] 文件名
      • -n 指定显示的行数
      • -f 动态显示文件末尾内容

2.3 文件搜索命令

  1. 查找文件:find 命令
     $ find 搜索路径 [搜索范围]
    	
     # 示例
     $ find / -name passwd
    	
     # 示例,文件名关键词支持正则表达式
     $ find / -name ifcfg-*
    	
     # 示例,在根目录下查找大于100MB的文件,+n大于,-n小于,n等于
     $ find / -size +204800
    	
     # 示例,在根目录下查找所有者为jojo的文件
     $ find / -user jojo
    	
     # 示例,在根目录下查找5min内被修改过属性的文件和目录
     $ find / -cmin -5
         - amin 访问时间 access
         - cmin 文件属性 change
         - mmin 文件内容 modify
    	
     # 示例,在根目录下查找大于80MB小于100MB的文件
     $ find / -size +163840 -a -size -204800
         - -a 两个条件同时满足
         - -o 两个条件满足一个即可
    	
     # 还有另外的一些,包括-type(f文件,d目录,l软链),按照类型查找;-inum,按照 inode 号来查找
    
  2. 查找文件:locate 命令
     $ locate [option] [pattern]
    

    常用的locate命令选项包括:

    • -i 忽略大小写
    • -c 仅显示匹配的文件数,而不显示文件名
    • -l NUM 最多显示NUM行结果
    • -r PATTERN 使用正则表达式进行匹配

    请注意,locate 命令依赖于一个数据库,该数据库默认每天更新一次。如果您最近创建了新文件但 locate 没有找到,请尝试更新数据库,可以使用以下命令:

     sudo updatedb
    
  3. 查找命令位置:which/whereis 命令
     $ which ls
     /usr/bin/ls
     $ whereis ls
     ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz
    
    • which命令:
      • which命令用于查找并显示在系统路径中可执行程序的位置
      • which命令会在系统的 PATH 环境变量指定的路径中搜索指定的命令,并返回找到的第一个匹配项的完整路径
      • 如果命令在多个地方存在,which只会返回找到的第一个匹配项
      • 通常用于确定系统中执行的是哪个版本的命令
    • whereis命令:
      • whereis命令用于查找命令的二进制文件、源代码文件和帮助文档的位置。
      • whereis命令会搜索特定命令的二进制文件、源代码文件和帮助文档,然后返回这些文件的路径。
      • 通常用于查找命令的相关文件的位置。
  4. 文本搜索:grep 命令
     $ grep [-nr] [-iv] 指定字符串 文件
     # 示例
     $ grep mysql /root/install.log
     # 示例,除以#开头的所有行的信息,^表示以XX开头
     $ grep -v ^# example.txt
    

    参数:

    • -n 表示查找结果所在的行号
    • -r 递归查找目录下的所有文件
    • -i 不区分大小写
    • -v 排除指定字符串

2.4 文件链接命令

$ ln [-s] 原文件 待创建链接名
# 创建文件/etc/issue的软链接/tmp/issue.soft
$ ln -s /etc/issue /tmp/issue.soft
# 创建文件/etc/issue的硬链接/tmp/issue.hard
$ ln /etc/issue /tmp/issue.hard

2.4.1 硬链接特征

  1. 硬链接和原始文件之间的关系类似于拷贝,但是硬链接不会创建一个新的文件,而是在文件系统中为原文件创建一个新的链接。当原文件发生更改时,硬链接也会同步更新,因为它们指向相同的物理数据块
  2. 在Unix/Linux系统中,每个文件都有一个唯一的i节点号来标识文件。硬链接和原文件共享相同的i节点号,这使得系统能够识别它们之间的关系
  3. 不能跨分区
  4. 不能针对目录使用

2.4.2 软链接特征

  1. 类似Windows快捷方式
  2. 软链接的权限标识通常为lrwxrwxrwx,表示这是一个软链接文件,所有用户都有读、写和执行权限。实际上,软链接文件并不存储数据,而是指向另一个文件或目录
  3. 软链接通过一个路径指向原文件或目录。例如,/tmp/issue.soft -> /etc/issue表示在/tmp目录下有一个名为issue.soft的软链接文件,它指向/etc/issue文件
  4. 软链接文件的大小通常很小,因为它只包含指向原文件或目录的路径信息,而不包含实际数据。软链接的大小取决于文件路径的长度