致谢:Linux常用命令大全(手册) – 真正好用的Linux命令在线查询网站 提供的命令查询
一、认识操作系统
1.1计算机层级结构
操作系统是一款进行软硬件资源管理的软件
计算机从最接近我们的开始是软件->操作系统->设备驱动->硬件,我们学习软件要学习他的使用方法,而学习操作系统我们要认识它的运行逻辑和原理,了解它和软件层是怎样链接的等等。
我们将要学习的Linux就是一类操作系统,可以联想我们所熟知的Windows操作系统,他们属于同一层级,每个操作系统都有属于他们的应用软件,二者软件所依赖的库和安装方式会有所不同,这就是是为什么如果都想使用QQ那么就需要下载对应的版本,这是向上;
向下就是和硬件进行通讯,我们可以看到市面上有形形色色的计算机硬件各类鼠标、键盘、显示器等等,操作系统无法预见用户将会使用哪种设备,但是我们的操作系统如果要认识全面每种硬件几乎是不可能的,为了解决这一问题“硬件驱动”这一中间者诞生了, 硬件驱动定义了操作系统与硬件设备之间的接口和交互方式,这种接口可以视为一种协议。它规定了如何向硬件发送命令、如何接收数据以及如何处理返回信息,有了这个全能的翻译官群体,操作系统只需要使用固定的“语言”(接口)和硬件进行交流(通讯),操作系统就能准确转达它想要表达的意思意思。
这样看来操作系统处在一个承上启下的位置,它通过驱动层对硬件实施管理,从而调度上层软件向用户提供服务,对于整个结构来说十分关键,所以了解操作系统无论是对于学硬件还是软件的计算机人来说都十分重要。
应用软件 | Word Matlab Vim G++ |
操作系统 | Windows Linux |
设备驱动 | 声卡驱动 显卡驱动 |
硬件 | CPU 内存 磁盘 显示器 键盘 |
【图1层级结构】
1.2 Linux发展历史和商业化发行版
我们之前提到Linux是一类操作系统,那这是为什么呢?
Linux 实际上是一个内核(Kernel),而不是完整的操作系统。Linux 内核是计算机操作系统的核心组件,负责管理系统的硬件资源和提供基本的服务,如进程管理、内存管理、文件系统操作和设备驱动等。
当人们提到“Linux操作系统”时,通常是指基于Linux内核构建的完整操作系统发行版。这些发行版通常包含了Linux内核以及各种应用程序、库和工具,以形成一个功能齐全的操作系统。例如,Ubuntu、Fedora、CentOS等都是基于Linux内核的完整操作系统,它们包括许多软件包和图形用户界面,使得用户能够更方便地使用计算机。
Linux的历史可以追溯到1991年,当时芬兰的计算机科学学生林纳斯·托瓦兹(Linus Torvalds)发布了第一个Linux内核,标志着Linux操作系统的诞生。Linux的开发受到了UNIX操作系统的启发,并采用了类似的设计理念和标准。
随着时间的发展,Linux逐渐演变为一个强大的开源操作系统,吸引了来自全球的开发者和用户。由于其开源特性,Linux可以自由使用、修改和分发,这使得许多个人和组织能够为其贡献代码和功能。
Linux的商业化发行版
以下是一些知名的Linux商业发行版及其特点:
-
Red Hat Enterprise Linux (RHEL):
- 商业化支持的Linux发行版,专为企业环境设计。
- 提供稳定和安全的操作系统,广泛应用于服务器和云计算领域。
-
CentOS:
- RHEL的社区版本,基于RHEL的源代码。
- 提供类似的稳定性和安全性,适合不想支付商业支持的用户。
-
Ubuntu:
- 由Canonical公司开发,旨在用户友好和易于使用。
- 提供桌面和服务器版本,广受个人用户和企业欢迎。
-
SUSE Linux Enterprise Server (SLES):
- 专注于企业级应用的Linux发行版,提供优质的支持和服务。
- 适用于大型企业和数据中心。
-
Oracle Linux:
- 由Oracle公司维护的Linux发行版,优化了性能和安全性以支持Oracle软件。
- 提供与RHEL兼容的环境,适合运行Oracle数据库。
-
Debian:
- 虽然以社区为基础,但Debian也有一些商业供应商支持其发行版,强调稳定性和自由软件原则。
-
Amazon Linux:
- 亚马逊开发的Linux发行版,优化了在亚马逊云服务(AWS)中的使用。
- 提供了与云服务的深度集成。
发展和影响
Linux的商业化发行版在多个领域中取得了成功,包括服务器、嵌入式设备、超级计算和云计算等。此外,Linux也成为了许多技术的基础,例如Android操作系统(用于智能手机和其他设备)以及许多互联网服务和数据中心的核心。
1.3何为命令行操作
和命令行操作对应的就是我们所熟知的图形化操作界面,Windows操作系统通常为图形化操作界面,使用win+r快捷键输入“cmd”也可以快捷打开命令行操作界面,虽然Linux操作系统已经有了完善的图形化界面,但是由于习惯原因对于一些云端服务器和软件的操作难免会使用到命令行,所以我们要熟知一些基本的命令行操作。
1.4常见命令
pwd
pwd | 显示当前工作目录的路径 |
-L | 显示逻辑路径 |
-P | 显示实际物理地址 |
【图2pwd--version】
【图3help pwd】
ls
ls | 查看当前位置的文件 |
-a | 显示所有文件及目录 (包括以“.”开头的隐藏文件) |
-A | 同 -a ,但不列出 “.” (当前目录) 及 “..” (父目录) |
-i | 输出文件的inode节点信息 |
-l | 使用长格式列出文件及目录的详细信息 |
-m | 水平列出文件,以逗号间隔 |
-r | 将文件以相反次序显示(默认依英文字母次序) |
-R | 递归列出所有子目录 |
-S | 根据文件大小排序 |
-t | 根据最后的修改时间排序 |
-X | 按文件扩展名排序 |
-color | 输出信息中带有着色效果 |
【图4ls -R】
mkdir
mkdir | 创建一个新的文件夹 |
-p | 递归创建多级目录 |
-m | 建立目录的同时设置目录的权限 |
-z | 设置安全上下文 |
-v | 显示目录的创建过程 |
【图mkdir --help】
【图 mkdir dir1】
【图 mkdir -m】
【图mkdir创建多文件路径】
【图mkdir -p】
【图mkdir -v】
cd
cd | 进入目录 |
-P | 如果切换的目标目录是一个符号链接,则直接切换到符号链接指向的目标目录 |
-L | 如果切换的目标目录是一个符号链接,则直接切换到符号链接名所在的目录 |
-- | 仅使用”-“选项时,当前目录将被切换到环境变量”OLDPWD”对应值的目录 |
~ | 切换至当前用户目录 |
.. | 切换至当前目录位置的上一级目录 |
【图pwd cd 】
【图cd ~】
【图cd -】
touch
touch | 创建文件与修改时间戳 |
-a | 改变档案的读取时间记录 |
-m | 改变档案的修改时间记录 |
-r | 使用参考档的时间记录,与 --file 的效果一样 |
-c | 不创建新文件 |
-d | 设定时间与日期,可以使用各种不同的格式 |
-t | 设定档案的时间记录,格式与 date 命令相同 |
--no-create | 不创建新文件 |
--help | 显示帮助信息 |
--version | 列出版本讯息 |
【图 touch --help】
【图 touch创建文件】
【图touch 创建统一格式多文件】
【图touch更新文件时间】
二、Linux的特性
在学习和使用Linux操作系统的过程中,文件管理是一个基础而重要的知识点。每个在Linux系统中生成的文件不仅包含具体的“内容”,如文本、图片、音频文件等,还伴随有一系列的“属性”数据,这些属性数据同样被保存在计算机中。
可以将文件的结构简练地概括为“文件 = 内容 + 属性”。在这其中,内容指的是文件所实际包含的信息,而属性则描述了这个文件的一些重要特征。例如,在Linux中,文件的属性包括文件名、文件类型、文件大小、创建时间、最后修改时间、权限设置等。这些属性在日常操作中显得尤为重要,因为它们直接影响到文件的访问和管理。
2.1文件属性 stat
在Linux操作系统中,文件的属性包括创建时间、大小、名称和类型。这些属性与文件内容一样,都是数据的一部分。因此,对文件的操作不仅包括对其内容的处理,也包括对其属性的管理。
stat | 显示文件状态信息 |
-L | 支持符号链接 |
-f | 显示文件系统的信息 |
-t | 以简洁的方式输出 |
--help | 显示命令帮助信息 |
--version | 显示命令版本信息 |
【图stat 查看更多属性】
[username@mechine]$ stat filename
在Linux中,以点(.)开头的文件被视为隐藏文件。使用命令ls -a时,选项“-a”表示“all”,可以让隐藏文件显现出来,方便用户查看和管理这些文件。
[username@mymechine]$ ls -s -a
此外,每当我们创建一个新文件时,系统会自动生成两个特殊的目录项:一个点(.)表示当前目录,两个点(..)表示上层目录。我们可以通过命令cd ..来实现目录的回退,便于在文件系统中进行导航。
[username@mechine]$ cd ..
2.2 文件权限
文件属性包括权限:
在Linux中,文件和目录的权限管理至关重要,主要用于控制用户对文件和目录的访问权限。Linux使用三种主要类型的权限:读(r)、写(w)和执行(x),以及三种用户类别:文件所有者(owner)、用户组(group)和其他用户(others)。
- 读 (r): 允许读取文件内容或列出目录中的文件。
- 写 (w): 允许修改文件内容或在目录中创建、删除文件。
- 执行 (x): 允许执行文件(如果是可执行程序)或进入目录。
- 文件所有者 (Owner): 文件的创建者,默认对自己的文件有完全的控制权。
- 用户组 (Group): 文件所属的用户组,组内用户对文件的权限。
- 其他用户 (Others): 不属于文件所有者或所属组的所有其他用户。
权限在Linux中通常以十个字符表示,格式如下:
-rwxr-xr--
第一个字符表示文件类型(-表示文件,d表示目录)。
接下来的九个字符被分为三组,每组三个字符,分别表示所有者、用户组和其他用户的权限。
- rwx: 所有者的权限(读、写、执行)
- r-x: 用户组的权限(读和执行,没有写)
- r--: 其他用户的权限(只有读)
权限的修改
可以使用 chmod 命令来修改文件和目录的权限。权限可以使用符号表示法或八进制表示法来设置。
符号表示法:
- +:添加权限
- -:删除权限
- =:设置权限
例如:
chmod u+x file.txt:为文件所有者添加执行权限。
chmod g-w file.txt:从用户组中删除写权限。
chmod o=r file.txt:将其他用户的权限设置为只读。
八进制表示法:
权限由三个数字组成,每个数字对应于用户的权限。每个数字的取值范围是0-7,具体权限如下:
- 0 = 无权限
- 1 = 执行权限
- 2 = 写权限
- 4 = 读权限
例如:
chmod 755 file.txt:所有者有读、写、执行权限(7=4+2+1),用户组和其他用户有读和执行权限(5=4+1)。
默认情况
我们在创建文件时如果不设置权限默认会是什么呢?
在Linux中,创建文件时的默认权限通常由一个称为umask(用户文件创建模式掩码)的值决定。umask是在创建文件和目录时自动应用的权限掩码,它会限制文件和目录的默认权限。
默认权限
在Linux中,默认情况下,新创建的文件和目录的权限是:
文件: 0666(rw-rw-rw-): 允许所有用户读和写,但不允许执行。
目录: 0777(rwxrwxrwx): 允许所有用户读、写和执行。
umask的作用
umask用来“屏蔽”这些默认权限,也就是说,它定义了在文件或目录创建时,哪些权限不应被授予。umask的值是一个三位数(八进制)表示的权限掩码,通过与默认权限相减来确定最终的权限设置。
计算方式
默认权限减去 umask 值 = 最终权限
例如,如果 umask 的值是 022,创建的文件和目录权限如下:
文件权限: 0666 - 022 = 0644(rw-r--r--)
目录权限: 0777 - 022 = 0755(rwxr-xr-x)
查看和设置 umask
查看当前 umask 值:
使用命令 umask 在终端中查看当前的 umask 值。
设置 umask 值:
可以通过命令 umask <value> 来设置 umask 值。例如,umask 027 将会把新文件和目录的权限设置为:
文件权限: 0666 - 027 = 0640(rw-r-----)
目录权限: 0777 - 027 = 0750(rwxr-x---)
2.3查找文件路径:which
which 是一个在Linux中常用的命令行工具,主要用于查找可执行文件的路径。它通过在系统的环境变量
PATH 指定的目录中搜索与给定命令名称匹配的可执行文件,以帮助用户确定某个命令在哪个位置被执行。
当你想知道某个命令的可执行文件在系统中的具体路径时,可以使用 which 命令。例如,
which python 会返回安装的 Python 解释器的路径。
which | 查找命令文件 |
-n | 指定文件名长度(不含路径) |
-p | 指定文件名长度(含路径) |
-w | 指定输出时栏位的宽度 |
-v | 显示版本信息 |
[username@mechine]$ which [选项] [命令]
常见的使用示例:
- 查找命令的路径:
[username@mechine]$ which ls
输出示例:
[username@mechine]$ /bin/ls
- 查找多个命令:
[username@mechine]$ which python gcc git
输出示例:
[username@mechine]$ /usr/bin/python
[username@mechine]$ /usr/bin/gcc
[username@mechine]$ /usr/bin/git
- 结合选项使用:
[username@mechine]:~ $ which -a python
2.4如何起别名:alias
alias | 设置命令别名 |
-p | 打印已经设置的命令别名 |
[username@mechine]:~ $ alias -p
[username@mechine]:~ $ alias myls=ls
注意:这里的名称和值和等号之间不能有空格.
我们把"\"称作Linux下的路径分隔符,用来标识文件,
2.5目录结构 tree
在Linux操作系统中,文件和目录的组织结构是非常重要的。理解文件路径的标识方式可以帮助用户更有效地导航和管理文件。
标识文件路径的方案:
相对路径:
相对路径是相对于当前工作目录来定义的路径。它具有自己的有效范围,具体取决于用户当前所在的目录。例如,如果当前目录是 /home/user,要访问 /home/user/documents/file.txt,可以使用相对路径 documents/file.txt。
绝对路径:
绝对路径是从根目录开始的完整路径,不依赖于当前的工作目录,无论在哪个目录下,绝对路径始终有效。例如,访问 /home/user/documents/file.txt 时,使用的就是绝对路径。
用户信息查询命令:
在Linux中,用户管理也是一个重要的部分。我们可以使用几个基本命令来获取用户及其主目录的信息。
- whoami指令:
该命令返回当前用户的用户名。运行 whoami 将显示出你以哪个用户身份登录了系统。
- who指令:
该命令显示当前系统中所有已登录用户的信息,包括用户名、登录时间和终端等信息。
[username@mechine]:~ $ whoami
[username@mechine]:~ $ who
用户与主目录:
每个用户在Linux系统中都有自己的主目录。这意味着不同的用户在系统中有不同的工作空间和文件存储位置。主目录通常位于 /home/ 下,例如,用户 user1 的主目录是 /home/user1。
通过结合目录结构和用户信息命令,用户可以更好地管理文件和目录,从而提高在Linux环境下的操作效率。
tree:
如果弹出以上界面使用对应指令安装就可以了
sudo apt install tree
这里虚拟机网络配置不好了,转到腾讯云的云Cent OS实操一下:
tree | 以树状图形式列出目录内容 |
-a | 显示所有文件和目录 |
-A | ASNI绘图字符形式 |
-C | 彩色显示 |
-d | 仅显示目录名称 |
-D | 显示文件更改时间 |
-f | 显示完整的相对路径名称 |
-g | 显示文件所属群组名称 |
-i | 不以阶梯状列出文件或目录名称 |
-I | 不显示符合范本样式的文件或目录名称 |
-l | 直接显示连接文件所指向的原始目录 |
-n | 不在文件和目录清单上加上色彩 |
-N | 直接列出文件和目录名称 |
-p | 列出权限标示 |
-P | 只显示符合范本像是的文件或目录名称 |
-q | 用“?”号取代控制字符,列出文件和目录名称 |
-s | 列出文件或目录大小 |
-t | 用文件和目录的更改时间排序 |
-u | 列出文件或目录的拥有者名称 |
-x | 将范围局限在现行的文件系统中 |
-L | 层级显示 |