Linux常用指令基础(一)

Linux介绍

Linux是一种开源的类Unix操作系统,最初由芬兰的Linus Torvalds于1991年发布。Linux内核是操作系统的核心,负责管理系统资源和硬件,它可以安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、台式计算机等。

Linux特点

  • 开源和自由软件: Linux内核和大多数Linux发行版都是根据GNU通用公共许可证(GPL)发布的,这意味着用户可以自由使用、修改和分发
  • 稳定和安全: Linux以其稳定性和安全性著称,适用于服务器环境和需要高可靠性的应用程序
  • 多用户和多任务: Linux支持多个用户同时使用,并能够同时运行多个任务(进程)
  • 强大的网络功能: Linux具有强大的网络功能,广泛用于服务器、路由器、防火墙等网络设备
  • 灵活和可定制: 用户可以根据需要定制Linux系统,选择合适的内核、软件包和桌面环境

Shell

概述

Shell是Linux系统下的命令解释器,负责将用户输入的命令转换为计算机可识别的指令。Shell不仅允许用户直接输入命令来操作计算机,还支持通过编写脚本来批量处理命令。Shell不仅提供了丰富的命令行工具,还支持脚本编写,使得系统管理和自动化任务变得更加高效。

Shell的特性与优势

命令解释: Shell能够解释用户输入的命令,并将其转换为操作系统内核可以理解的指令。这使得用户可以通过简单的命令来控制系统和应用程序。
脚本编程: Shell支持脚本编程,允许用户将一系列的命令组合成一个脚本文件,通过执行脚本来自动化复杂的任务。Shell脚本具有易编写、易调试、易移植等优点。
环境变量: Shell支持环境变量的设置和读取,环境变量可以存储系统配置信息、用户偏好设置等,方便用户在不同场景下的使用。
命令补全与历史记录: 许多Shell都提供了命令补全和历史记录功能,这些功能可以提高用户的工作效率,减少命令输入的错误。
灵活性与可定制性: Shell提供了丰富的配置选项和工具,用户可以根据自己的需求定制Shell的行为和外观。此外,Shell还允许用户通过编写自定义函数和别名来扩展其功能。
简单来说,它是Linux系统中运行的一种特殊程序,在用户和内核之间充当“翻译官”。用户登录Linux系统时,自动加载一个SheII程序,Bash就是Linux系统中默认使用的ShelI程序

用户与系统之间的沟通

从内核态和用户态的角度来看,用户与系统之间的沟通方式主要通过系统调用来实现。用户态和内核态是操作系统中的两个重要概念,它们定义了应用程序和操作系统之间的交互方式。

用户态与内核态概述

  • 用户态(User Mode):用户态是运行用户程序的状态,其权限受到限制。在这种模式下,应用程序拥有有限的系统资源访问权限,只能在操作系统划定的特定空间内运行。用户态下运行的程序不能直接访问硬件设备或执行特权指令,所有对硬件的访问都必须通过操作系统进行。
  • 内核态(Kernel Mode):内核态是运行操作系统程序、操作硬件的状态,具有最高权限。处于内核态的CPU可以执行所有的指令,访问所有的内存地址,拥有最高的权限。内核态下运行的程序可以访问系统的所有资源,包括CPU、内存、I/O等。在内核态下,操作系统可以响应所有的中断请求,处理硬件事件和系统调用。

沟通方式:系统调用
用户态与内核态之间的主要沟通方式是通过系统调用(System Call)实现的。系统调用是一种特殊的函数调用,它允许运行在用户态的程序请求操作系统内核执行某些特权操作。当用户程序需要操作系统帮助完成某些它没有权力和能力完成的工作时(如文件操作、网络通信等),就会通过系统调用陷入到内核态,由操作系统来完成相应的工作。

系统调用的过程

  • 发起系统调用: 用户态下的程序通过特定的方式(如使用中断指令或陷阱指令)发起系统调用,将控制权交给操作系统内核。
  • 保存上下文: 操作系统内核在接收到系统调用请求后,会保存当前用户态程序的上下文(如CPU寄存器状态、程序计数器等),以便在系统调用完成后恢复执行。
  • 执行内核代码: 进入内核态后,操作系统内核执行相应的系统调用处理函数,完成用户请求的操作。
  • 恢复上下文: 系统调用完成后,操作系统内核将控制权返回给用户态程序,并恢复之前保存的上下文,以便用户态程序继续执行。

系统区分用户态和内核态的主要原因:

安全性: 将操作系统和用户程序的运行环境分开有助于防止用户程序对系统造成不可修复的破坏。用户程序在用户态下运行,受到严格的限制,不能直接操作关键系统资源。
稳定性: 如果一个用户程序崩溃或出现错误,它不会影响整个系统的稳定性。内核态下运行的操作系统可以继续正常工作,而不受用户程序的干扰。
性能: 内核态具有更高的权限,可以执行一些需要较高特权级别的操作,如直接访问硬件。将这些操作限制在内核态有助于提高系统的性能,因为不需要为每个用户程序都提供相同的权限。

综上所述,用户态和内核态是操作系统的两个重要概念,它们定义了应用程序和操作系统之间的交互方式。通过将应用程序运行在用户态,而将操作系统核心功能运行在内核态,可以实现对硬件资源的有效管理和保护,提高系统的稳定性和安全性。

Linux常用指令基础

Linux命令的分类

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

Linux命令行的格式

基础格式

命令字 [选项] [参数]——( 英文字符区分大小写)

  • 命令字
    是整条命令中最关键的一部分
    唯一确定一条命令
  • 选项——(多个单字符选项可以组合在一起使用)
    符号引导
    短格式选项:使用"-“符号引导
    长格式选项:使用”–"符号引导
  • 参数
    命令字的处理对象
    可以是文件名、目录(路径)名或用户名等内容
    个数可以是零到多个
格式含义
命令定义的基本功能
选项添加的扩展功能
参数功能的操作/执行对象

辅助操作

  • Tab 键:自动补齐
  • 反斜杠“\”:强制换行
  • Ctr+U组合键:清空至行首
  • Ctr+K组合键:清空至行尾
  • Ctr+L组合键:清屏
  • Ctrl+C组合键:取消本次命令编辑
  • Ctrl+a组合键:切换到行首
  • Ctrl+e组合键:切换到行尾

获得命令帮助的方法

  • 内部命令 help
    ●查看Shell内部命令的帮助信息
  • 命令的“–help”选项
    ●适用于大多数Linux外部命令
  • 使用man命令阅读手册页
    ●使用“↑”、“↓”(ENTER)方向键滚动一行文本
    ●使用 Page Up 和 Page Down(空格)键翻页
    ●按 Q 或 q键退出阅读环境
    ●按“/”键查找内容,n键向下查找,N键向上查找

Linux的常用命令

命令含义
pwd查看当前所在目录
cd 目标位置切换到目标位置
cd~/cd若不指定目标位置,切换到当前用户的宿主目录
cd -切换到上一次执行 cd 命令之前所在的目录
alias 命令别名=命令设置别名

ls-用于列出目录中的文件和子目录

用主要于列出目录中的文件和子目录。通过不同的选项,可以控制输出的格式和内容。

  • 基本语法:
ls [选项] [目录]
选项描述
-l以长格式(包括文件权限、所有者、大小、最后修改时间等详细信息)显示文件列表。
-a显示所有文件,包括隐藏文件(以.开头的文件)。
-A显示除了...之外的所有文件,包括隐藏文件。
-h-l结合使用时,以人类可读的格式显示文件大小(例如,1K、234M、2G等)
-S根据文件大小进行排序,最大的文件排在最前面。
-t根据文件最后修改时间进行排序,最近修改的文件排在最前面。
-r反向排序,即按照降序排列。
-R递归地显示子目录中的文件。
-i显示文件和目录的inode号。
–color在字符模式中以颜色区分不同的文件。
-d显示目录(Directory)本身的属性,而不是显示目录中的内容。
  • 示例:

列出当前目录下的所有文件和子目录:

ls

以长格式显示当前目录下的所有文件和子目录:

ls -l

显示当前目录下的所有文件,包括隐藏文件:

ls -a

以人类可读的格式显示当前目录下的文件大小:

ls -lh

根据文件大小进行排序并显示:

ls -S

递归地显示子目录中的文件:

ls -R

注意:ls是的选项是可以拥有并列项的

touch-主要用于创建新的空文件

指令是Linux和Unix系统中一个常用的命令,主要用于创建新的空文件或更改现有文件的时间戳(包括访问时间和修改时间)。

  • 基本语法:
touch [选项] 文件名
选项描述
-a只修改访问时间
-c,–no-create 如果文件不存在,不创建新文件
-d, --date使用日期字符串修改时间戳
-m只修改修改时间
-r, --reference将时间戳更改为参考文件的时间戳
-t修改时间戳,其中时间戳是日期/时间格式
  • 示例:

创建文件
最简单的使用touch命令的方式是不带任何选项:

touch filename

如果文件不存在,touch会创建该文件。如果文件已经存在,touch会将时间戳更改为当前时间。

创建多个文件
touch命令也可以一次创建多个文件。要做到这一点,只需列出文件名,文件名之间用空格分隔:

touch filename1 filename2

更改现有文件的访问时间和修改时间:

touch -a -m -t 202201010000.00 file.txt

如果文件不存在,则不创建新文件:

touch -c non_existent_file.txt

将文件的访问时间和修改时间设置为另一文件的相应时间:

touch -r reference_file.txt target_file.txt

du(Disk Usage)-用于估算文件和目录占用的磁盘空间

命令用于估算文件和目录占用的磁盘空间。它可以显示每个文件或目录及其子目录的磁盘使用情况。

  • 基本语法:
du [选项][文件或目录... ]
选项描述
du [选项][文件或目录… ]统计指定目录(或文件)所占用磁盘空间的大小
du -a统计磁盘空间占用时包括所有的文件,而不仅仅只统计目录
du -h以更人性化的方式(默认以KB计数,但不显示单位)显示出统计结果
du -s只统计所占用空间总的大小,而不是统计每个子目录、文件的大小
du --max-depth=n统计所有小于等于第 n层的目录的总大小
  • 示例

显示当前目录下所有文件和子目录的大小:

du -ah .

显示当前目录下所有文件和子目录的总大小:

du -sh .

显示指定目录下所有文件和子目录的大小,深度为1:

du -h --max-depth=1 /path/to/directory

常用通配符

在Linux和类Unix系统中,通配符(wildcards)被用于命令行中,以便匹配文件名或路径的一部分。
以下是一些常用的通配符:

  • *:匹配任意长度的字符序列。例如,*.txt 会匹配所有以 .txt 结尾的文件。
  • ?:匹配单个字符。例如,file?.txt 会匹配像 file1.txt 或 file2.txt 这样的文件,但不会匹配 file12.txt。
  • [...]:匹配方括号内的任意一个字符。例如,file[12].txt 会匹配 file1.txt 或 file2.txt,但不会匹配 file3.txt。你还可以使用范围,如 file[1-3].txt 会匹配 file1.txt、file2.txt 和 file3.txt。
  • [^...]:匹配不在方括号内的任意字符。例如,file[^12].txt 会匹配除了 file1.txt 和 file2.txt 之外的所有 .txt 文件。
  • **{...}:匹配大括号内的任意一个字符串。例如,file{1,2}.txt 会匹配 file1.txt 和 file2.txt。
  • -:匹配连字符本身或在字符范围的开头和结尾。例如,[-a-z] 会匹配任何小写字母和连字符 -。
  • .:匹配文件名中的点 .。通常需要转义,即 \.,以避免被解释为正则表达式中的特殊字符。
    请注意,通配符在命令行中主要用于文件名匹配,而不是文件内容的搜索。如果你需要在文件内容中搜索特定的模式,应该使用 grep 或其他文本搜索工具。

补充:

简析ls -l的输出结果

ls -l 命令在 Linux 或 Unix 系统中用于列出当前目录下文件和目录的详细信息。

  • ls -l 输出结果的格式示例
    (注意:这个示例是基于假设的,因为实际输出将取决于你的系统环境、当前目录下的文件和目录以及它们的属性。)
total 24
drwxr-xr-x 4 user group 4096 Mar 12 10:00 Documents
-rw-r--r-- 1 user group  220 Mar 12 09:55 example.txt
-rw-r--r-- 1 user group 1024 Mar 11 15:30 file.log
drwxr-xr-x 3 user group 4096 Mar 10 14:45 Pictures
-rw-r--r-- 1 user group   32 Mar 12 10:05 readme.md
lrwxrwxrwx 1 user group    9 Mar 12 10:10 symlink -> /etc/hosts
  • 这个示例输出包含以下信息:
    total 24:这一行显示了当前目录下所有文件和目录所占用的总块数(block count),但请注意,这个值在不同的系统和文件系统上可能有不同的含义和精度。
  • 接下来的每行代表一个文件或目录的详细信息:
    • 第一个字段(如 drwxr-xr-x-rw-r--r--)是文件属性字,包含了文件类型(如 d 表示目录,- 表示普通文件,l 表示软链接)和权限(如读 r、写 w、执行 x)。
    • 第二个字段是硬链接数
    • 第三个字段是文件或目录的所有者用户名。
    • 第四个字段是文件或目录所属的用户组名。
    • 第五个字段是文件大小,以字节为单位。
    • 第六个字段是文件的最后修改时间,格式为“月 日 时:分”。
    • 最后一个字段是文件或目录名。

该示例中,Documents 表示目录,example.txtfile.log 表示普通文件,Pictures 表示另一个目录,readme.md 表示另一个普通文件,而 symlink 表示一个指向 /etc/hosts 的软链接。
新建的文件默认是不带执行权限的
新建的目录是有执行权限的

绝对路径和相对路径

  • 绝对路径:
    从文件系统的根目录开始,完整地描述到目标文件或目录的路径。它提供了到达指定文件或目录的确切位置,不依赖于当前工作目录。
  • 相对路径:
    基于当前工作目录,描述到目标文件或目录的路径。它只提供了从当前位置到目标位置的相对方向,而不是从文件系统根目录开始的完整路径。
表达形式含义示例(假设当前目录为/home/user/docs
.表示当前目录访问当前目录下的file.txt
./file.txt
..表示上一级目录(父目录)访问上一级目录下的images文件夹:
../images/
文件名直接在当前目录下查找文件或目录访问当前目录下的report.pdf
report.pdf
子目录/文件名在当前目录下的指定子目录中查找文件或目录访问projects子目录下的project1.docx
projects/project1.docx
../父目录中的文件或目录向上回退一级后,再指定路径访问文件或目录访问上一级目录中的notes文件夹下的note.md
../notes/note.md
./当前目录下的子目录/文件名当前目录下,指定子目录中的文件或目录(实际上.可以省略)访问当前目录下的archive子目录中的old_file.txt
./archive/old_file.txtarchive/old_file.txt
../../上两级目录中的文件或目录向上回退两级后,再指定路径访问文件或目录访问上两级目录中的backup文件夹下的data.zip
../../backup/data.zip
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值