Linux常用命令详解(一)



一、Linux根目录 “ / ”

根目录下的子目录介绍

目录按照不同属性、功能做区分。目录较多,读者需要在工作中逐步熟悉。为方便理解和记忆,我在括号里注明了全称,具体介绍如下:

  1. /bin (Binaries):存放基本的用户命令二进制文件,如 lscpmv 等,这些命令在单用户模式和所有用户环境中都可以使用。
  2. /boot(Boot):包含启动加载程序和内核相关文件,包括引导程序配置文件和操作系统内核。
  3. /dev(Device Files):包含设备文件,Linux系统中的所有设备都表示为文件,包括硬盘、终端、打印机等。
  4. /etc(Etcetera):存放系统的配置文件和脚本,如网络配置文件、启动文件、系统服务文件等。
  5. /home(Home Directories):每个用户的主目录都放在这个目录中,存放用户的个人数据和设置文件。
  6. /lib (Libraries):包含系统引导过程中需要的共享库文件和内核模块。
  7. /media (Removable Media):挂载点用于可移动媒体设备,如CD-ROM、USB驱动器等。
  8. /mnt (Mount):临时挂载文件系统的挂载点,系统管理员可以在此目录下手动挂载文件系统。
  9. /opt (Optional):可选的应用程序包存放目录,用于安装附加软件包。
  10. /proc(Process Information):虚拟文件系统,包含关于系统进程和内核状态的信息,动态生成的文件,可以访问系统信息和配置。
  11. /root (Root User Home):超级用户(root用户)的主目录,普通用户无权访问。
  12. /run(Run-Time Variable Data):运行时数据存储的地方,如系统启动后的进程ID文件和锁文件。
  13. /sbin (System Binaries):存放系统管理的二进制文件,只有超级用户或具有相应权限的用户才能使用这些命令。
  14. /srv(Service Data):存放由系统提供的服务相关的数据,如网站文件。
  15. /sys (System Files):另一个虚拟文件系统,类似于 /proc,用于存放设备和内核的信息。
  16. /tmp (Temporary Files):存放临时文件,系统和应用程序在启动或运行过程中产生的临时数据文件。
  17. /usr(User Binaries & Data):包含用户级应用程序和文件,包括库、头文件、文档等,常见子目录有 /usr/bin/usr/lib/usr/share 等。
  18. /var (Variable Files):存放可变文件,如日志文件、邮件队列、打印队列等,常见子目录有 /var/log/var/mail/var/spool 等。

CentOS为例,常用目录:

作为运维,常用sbin、etc、opt、usr、var这几个目录,我们打交道比较多。

目录额外介绍

以根目录为起始 -> 各个功能的子日录 -> 逐级寻找

二、Linux命令基础

Shell

概念:

  • Shell是一个命令解释器(command interpreter),位于操作系统的最外层,负责直接与用户进行对话,将用户的输入命令解释给内核,并经过内核处理后,将结果输出到屏幕反馈给用户。其作为用户和操作系统之间的桥梁,承担着命令解释和程序执行的重要任务。
  • Shell也是一种程序设计语言,允许用户编写脚本以自动化执行一系列命令。

介绍:

  • Linux系统中运行的一种特殊程序
  • 用户登录Linux系统时,自动加载一个ShelI程序
  • Bash是Linux系统中默认使用的Shel程序(文件位于/bin/bash)
  • Shell有多种类型,常用的有/bin/bash等

命令运作原理

过程:

接收用户输入的命令→解释命令→传递给系统内核执行

  1. 用户输入指令+返回的结果(用户态)

    用户态: 用户态(User Mode)是操作系统中用于运行用户级程序的一种模式,与内核态(Kernel Mode)相对应。在操作系统中,为了提供稳定、安全的环境给应用程序运行,系统会将硬件和软件资源划分为不同的保护级别,其中用户态和内核态就是两个主要的级别。

    简单来说,就是可以下发指令,且可以返回结果的操作环境。

    例如:Windows下cmd输入命令可以对系统进行操作管理,Linux同理。

    再如:在字符界面下的命令就是用户态,在图形界面下的鼠标操作就是用户态。假设这就是用户态的“语言”。

    内核态: 内核态(Kernel Mode),也被称为核心态或特权态,是操作系统内核所运行的模式,具有最高权限。在这个模式下,运行的代码可以无限制地访问系统存储、外部设备等资源,执行各种特权指令。

    工作流程: 1、接受指令 2、执行 3、传递返回结果。且过程中用户无法直接干预。

    使用二进制做沟通,假设这是内核态的“语言”。

  2. Shell充当“翻译官”

    因为用户态和内核态的“语言”并不通,此时就需要Shell“翻译”。

    以上可以称为用户与系统的沟通方式。

  3. 系统内核要明白干什么并且执行、然后返回结果

在这里插入图片描述

三、Linux命令的分类

内部命令与外部命令的区别

内部命令外部命令
集成于Shel解释器程序内部的一些特殊指令也称为内建(Built-in)指令Linux系统中能够完成特定功能的脚本文件或二进制程序属于Shell的一部分
属于Shell的一部分自动载入内存,可以直接使用属于Shell解释器程序之外的命令
没有单独对应的系统文件每个外部命令对应了系统中的一个文件
自动载入内存,可以直接使用必须知道其对应的文件位置,由Shell加载后才能执行/bin,/usr/bin,/usr/local/bin等

简洁区分

  • 内部命令:由shell自身提供,不需要额外程序,执行快,不受PATH影响。
  • 外部命令:需要外部程序文件,执行相对慢,受PATH影响,需要查找。

如:cd命令本质而言,就是一个可执行程序或者一个函数获变成代码

在Linux系统中,/sbin/bin目录都扮演着重要的角色,但它们存放的命令类型和使用场景有所不同。以下是针对这两个目录下命令的详细区分:

查看方法

  • 使用type命令加上命令名来查看。

  • 如果返回command is a shell builtin,那么该命令是内部命令。

  • 如果返回的是命令的路径(如/bin/ls),那么该命令是外部命令。

  • 如:

    type cd    # 输出:cd is a shell builtin  
    type ls    # 输出:/bin/ls (假设ls位于/bin目录下),说明ls是外部命令
    

四、Linux命令行的格式

通用的命令行使用格式

格式

命令字  [选项]  [参数]    (注:区分大小写)

命令字

  • 是整条命令中最关键的一部分
  • 唯一确定一条命令
  • 定义的基本功能【必备】

选项

  • 短格式选项:使用“-”符号引导
  • 长格式选项:使用“- -”符号引导
  • 添加的拓展功能【不必备,且部分命令有默认选项】
  • 注:多个单字符选项可以组合在一起使用

参数

  • 命令字的处理对象
  • 可以是文件名、目录(路径)名或用户名等内容
  • 个数可以是零到多个
  • 功能的操作/执行对象【不必备,且部分命令也有默认选项】

注意

  1. 选项可以为多个
  2. 参数也可以有多个,具体需要按照命令的基本功能来看
  3. 参数的前后顺序也是有讲究的

五、编辑Linux命令行

编辑Linux命令行的辅助操作

可以理解为快捷键,如表所示

辅助操作(快捷键)描述
Tab 键自动补齐(命令或文件名)
反斜杠 \强制换行(在命令行中继续输入)
Ctrl+U 组合键清空当前命令行至行首的内容
Ctrl+K 组合键清空当前命令行至行尾的内容
Ctrl+L 组合键清屏(相当于执行clear命令)
Ctrl+C 组合键取消当前正在编辑的命令(或中断当前进程)
Ctrl+A (或 Home 键) 组合键切换到命令行的开头(行首)
Ctrl+E (或 End 键) 组合键切换到命令行的末尾(行尾)

六、获得命令帮助的方法

内部命令help

查看Shell内部命令的帮助信息

外部命令的“–help”选项

适用于大多数Linux外部命令

使用man命令阅读手册页

  • 使用“↑””、“↓”(ENTER)方向键滚动一行文本
  • 使用 Page Up和 Page Down(空格)键翻页
  • 按 Q 或 q键退岀阅读环境
  • 按“/”键查找内容,n键向下查找,N键向上查找

七、查看当前的工作目录-pwd

显示用户当前所在的工作目录位置(绝对路径)
格式

pwd

示例

[root@localhost ~]# pwd
/root

八、切换工作目录-cd

将用户的工作目录更改到其他位置
说明

命令格式说明
cd 目标位置切换到指定的目标位置
cd 和 cd ~若不指定目标位置,则切换到当前用户的宿主目录(通常是用户的家目录)
cd -切换到上一次执行 cd 命令之前所在的目录

九、绝对路径与相对路径

绝对路径

定义

绝对路径是指从根目录(或称为顶级目录)开始的完整路径,它包含了到达目标文件或目录所需经过的所有目录路径。绝对路径是固定的,不依赖于当前工作目录的位置。

特点

  • 唯一性:在同一个文件系统中,绝对路径是唯一的,指向特定的文件或目录。
  • 完整性:包含了从根目录到目标文件或目录的所有路径信息。
  • 不依赖于当前工作目录:无论当前工作目录在哪里,使用绝对路径都能准确找到目标文件或目录。

示例

  • 在Windows系统中,绝对路径可能类似于C:\Users\UserName\Documents\file.txt
  • 在Unix/Linux系统中,绝对路径可能类似于/home/username/documents/file.txt

相对路径

定义

相对路径是指相对于当前工作目录(或当前文件所在的目录)的路径。它描述了从当前位置到目标文件或目录的路径关系。

特点

  • 相对性:相对路径是相对于当前工作目录而言的,因此可能会因当前工作目录的不同而有所变化。
  • 简洁性:在描述与当前目录较近的文件或目录时,相对路径通常比绝对路径更简洁。
  • 灵活性:使用相对路径可以使得文件或目录的引用更加灵活,便于在不同环境中迁移和部署。

表现形式:

表现形式说明示例
直接使用目录名或文件名表示当前工作目录中的子目录、文件的位置grub.conf
以一个点号“.”开头表示以当前的工作目录作为起点(通常可省略,因为默认就是当前目录)./grub.conf
以两个点号“…”开头表示以当前目录的上一级目录(父目录)作为起点…/vmlinuz
以“~用户名”形式开头表示以指定用户的宿主目录作为起点~teacher
以“~”形式开头表示以当前用户的宿主目录作为起点(省略用户名)或 /grub.conf(假设示例为在该目录下查找grub.conf)

示例及表示方法

  • . 表示当前目录。
  • .. 表示上一级目录。
  • .../(在某些环境下可能不常见,但理论上可以理解为上上级目录,实际使用时需注意兼容性)或../../明确表示上上级目录。
  • 例如,如果当前工作目录是/home/username/documents,那么相对路径../reports/report.pdf将指向/home/username/reports/report.pdf

十、列表显示目录内容-ls

ls命令是Linux系统中用于列出目录内容的常用命令。用于显示目录中内容,包括子目录和文件相关属性信息
格式

ls [选项] [文件或目录...]

常用选项

  • -l、-a、-A、-d、-h、-R、–color

结合通配符

  • “?”:代表任意一个字符,有且一个字符
  • “*”:代表任意数个字符,可以是0个或者1个或者多个
  • “[]”:表示可以匹配字符组中的任意一个字符,如[abc]、[a-f]

ls命令的一些常用选项详细说明:

选项描述
-a显示所有文件和目录,包括以.开头的隐藏文件和目录。在Linux中,以.开头的文件被视为隐藏文件,默认情况下ls命令不会显示它们。
-l以长列表的方式显示文件和目录的详细信息。这包括文件权限、所有者、大小、最后修改时间等。长列表格式对于查看文件详细属性非常有用。
-h与-l选项结合使用时,以人类可读的格式显示文件大小,如KB、MB等,而不是默认的字节数。这使得文件大小更易于理解。
-t按照文件或目录的修改时间排序。默认情况下,ls命令按照文件名的字母顺序进行排序。使用-t选项后,结果将按照修改时间的降序排列。
-r逆序显示文件或目录列表。如果与-l选项结合使用,则会按照修改时间的逆序显示文件或目录的详细信息。
-S按照文件或目录的大小进行排序。这有助于快速找到占用空间最大的文件或目录。
-i显示文件或目录的inode号。inode是Linux文件系统中每个文件或目录的唯一标识符,它包含了文件的元数据,但不包括文件名。
-d仅显示目录本身的属性,而不列出目录下的内容。这对于查看目录本身的权限和修改时间等信息非常有用。
-R递归地列出目录及其子目录中的所有文件和目录。默认情况下,ls命令仅列出指定目录下的文件和子目录,而不递归地列出子目录中的内容。
–color以彩色方式显示文件和目录,以便更容易区分不同类型的文件(如目录、可执行文件、链接文件等)。这个选项通常默认开启,但可以通过设置环境变量来关闭或调整。
-A显示所有文件和目录,但不包括.(当前目录)和…(父目录)。这是-a选项的一个变体,用于在列出内容时排除这两个特殊目录。

常用:-R、-i

十一、通配符

介绍

  • 去匹配文件名(包括文件夹)ls
  • grep 文件内容(三剑客之一)(三剑客是三个非常强大且常用的命令行工具:grep、sed和awk)

grep功能描述:grep是Global Regular Expression Print的缩写,是一种强大的文本搜索工具。它使用正则表达式来搜索文本,并打印出匹配的行。grep常用于在文件中搜索指定的字符串或模式,也可以通过管道(|)与其他命令结合使用,实现更复杂的文本搜索和处理。

符号/通配符使用场景效果示例
?文件名匹配(如ls)匹配任意单个字符f?.txt 匹配 fa.txt、fb.txt 等
*文件名匹配(如ls)匹配任意数量的字符(包括零个字符),但不包括.开头的隐藏文件*.txt 匹配所有.txt文件,但不包括.hidden.txt
{1…10}Bash扩展匹配列表中的数字或字符串之一(Bash特有)echo {1…10} 输出 1 2 3 4 5 6 7 8 9 10
{0…9}Bash扩展同上,但匹配0到9的数字echo {0…9} 输出 0 1 2 3 4 5 6 7 8 9
{a…z}Bash扩展匹配a到z的所有小写字母echo {a…z} 输出 a b c … z(注意:实际效果可能因Shell而异)
{A…Z}Bash扩展匹配A到Z的所有大写字母echo {A…Z} 输出 A B C … Z
[123]文件名匹配、正则表达式匹配方括号内的任意一个字符[123].txt 匹配 1.txt、2.txt、3.txt
[a-z]正则表达式(如grep)匹配任意单个小写字母grep ‘[a-z]’ file.txt 匹配包含任意小写字母的行
[A-Z]正则表达式(如grep)匹配任意单个大写字母grep ‘[A-Z]’ file.txt 匹配包含任意大写字母的行
[0-9]正则表达式(如grep)匹配任意单个数字grep ‘[0-9]’ file.txt 匹配包含任意数字的行
[^dnl]正则表达式(如grep)匹配除了d、n、l之外的任意字符grep ‘[^dnl]’ file.txt 匹配不包含d、n、l的行
[[:lower:]]正则表达式(如grep)匹配任意小写字母,等同于[a-z]grep ‘[[:lower:]]’ file.txt
[[:upper:]]正则表达式(如grep)匹配任意大写字母,等同于[A-Z]grep ‘[[:upper:]]’ file.txt
[[:digit:]]正则表达式(如grep)匹配任意数字,等同于[0-9]grep ‘[[:digit:]]’ file.txt
\转义符,表示原来的意思

注意

  • ls命令通常使用Shell的通配符功能来匹配文件名

  • grep等文本处理工具使用正则表达式来匹配文本内容

  • Bash扩展(如{1..10})是Bash Shell特有的功能,可能不适用于所有Shell环境。

ll后的文件属性的字段

字段的区分号如图标识:
在这里插入图片描述

第1字段: 文件属性字

第1个字符代表文件的类型:

  • “-”表示该文件是一个普通文件
  • "d"表示该文件是一个目录
  • “l”表示该文件是一个软链接文件。类似于windows下的快捷方式

第1字符的后面9个字母表示该文件或目录的权限位:

  • r表示读(查看、下载)
  • w表示写(添加、更改、删除、上传)
  • x表示执行(运行文件、切换目录)

其中以3个3个做分隔:

  • 前三个表示文件拥有者(属主) 的权限
  • 中间三个表示文件所属组拥有的权限
  • 最后三个表示其他用户拥有的权限。

注意

  • 新建的文件默认是不带执行权限的(文件可以没有)
  • 新建的目录是有执行权限的(目录得有)

第2字段:文件硬链接数

  • 硬连接: 硬连接指通过索引节点来进行连接。
  • 如果一个文件不是目录,此时这一字段表示这个文件所具有的硬链接数
  • 如果是一个目录,则第2字段表示该目录所含子目录的个数
  • 如果新建一个空目录,这个目录的第二字段就是2,表示该目录下有两个子目录

第3字段:文件\目录拥有者 chown(属主)

第4字段:文件\目录拥有者所在的组 chgrp(属组)

第5字段: 文件所占用的空间(默认以字节为单位)

如果是一个目录,则表示该目录的大小,而不是目录以及它下面的文件的总大小。

Linux系统中一切皆文件,因此目录也是一种文件。

第6字段:文件\目录最近访问或修改时间

第7字段:文件名

如果是一个符号链接(软链接文件),那么会有一个“->"箭头符号,后面根一个它指向的文件名

十二、设置别名-alias(不常用)

设置别名

通过别名机制简化常用的、比较长的命令
格式

alias 命令别名='命令'

注:“=”两边不能有空格

示例

设置myls为ls -alh的别名

alias myls='ls -alh'  ##此时别名为myls

取消别名

格式

unalias 命令别名

十三、统计目录及文件空间占用情况-du

统计指定目录(或文件)所占用磁盘空间的大小
格式

du [选项] [文件或目录...]

常用选项

选项说明
-a统计磁盘空间占用时包括所有的文件,而不仅仅只统计目录
-h以更人性化的方式(默认以KB计数,但不显示单位)显示出统计结果
-s只统计所占用空间总的大小,而不是统计每个子目录、文件的大小(注意:选项-a和-s不可同时使用)
–max-depth=n统计所有小于等于第 n 层的目录的总大小(刁钻面试题)

示例
统计出/var/log目录中子目录的大小

du -h --max-depth=1 /var/log

十四、创建新目录-mkdir

格式
创建新的空目录

mkdir [选项] [目录位置及名称...]

-p:一次性创建嵌套的多层目录

示例
在当前目录下创建名为 public html 的子目录

mkdir public html

创建目录 /aa,在 /aa 目录下创建子目录bb,在 /aa/bb目录下创建字目录cc

mkdir -p /aa/bb/cc

十五、创建空文件-touch命令

更新文件的时间标记
经常用于创建多个新的空文件
格式

touch 文件...

示例

创建两个空文件,充件名分别为 aa.txt和bb.txt

touch aa bb
touch {a,b}.txt

写在后面:学习Tips

我们在学习基础命令的过程中,应主要关注遇到问题和解决故障时:
1、知道问题是什么情况;
2、尽可能的一步一步定位到矛盾点;
3、用什么方法定位到矛盾点。


总结

本文介绍了Linux常用的一些命令,实际使用难免会有记不住和疏漏的情况,因此需要慢慢积累和练习。

感谢大家的关注,后续还会持续更新其他命令和相关技术要点。


注:图片来源于网络,侵删。

  • 13
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值