【Linux庖丁解牛】—Linux基本指令(上)!

🌈个人主页:秋风起,再归来~
🔥系列专栏: Linux庖丁解牛
🔖克心守己,律己则安
目录
1、 pwd命令
2、ls 指令
3、cd 指令
4、Linux下的根目录
5、touch指令
6、 stat指令
7、mkdir指令
8、tree指令
9、which指令
10、指令的本质
11、alias指令
12、完结散花
1、 pwd命令
语法: pwd
功能:显示用户当前所在的目录
常用选项: 无
>详解:当我们用超级用户root登入我们的系统时,我们默认在/root目录下,我们可以用pwd命令来验证一下。这个命令可以这样记忆(person work directory/当前用户所在工作目录)

当我们用我们的普通用户(假设是user1)登入我们的系统时,我们是默认在/home/user1目录下的

这里补充一条简单的指令:whoami (显示当前用户名称)


>这里牵扯到一个问题就是,在Linux下目录到底是什么呢?
我们在Windows操作系统下,经常说打开某某文件/文件夹,而我们在Linux下经常说的目录其实就等同于Windows下的文件夹!
2、ls 指令
语法: ls [选项][目录或文件]
功能:对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息。

常用选项:(下面我只会演示一下常用到的选项,其他选项我们要用到时直接查阅资料即可!)
1、-a 列出目录下的所有文件,包括以 . 开头的隐含文件。
这里说明一下,在Linux下,以 . 开头的文件都是隐藏文件

但是,Linux下,任何一个目录,即使是空目录,默认系统都会自带有 . 和 .. 目录

2、-d 将目录像文件一样显示,而不是显示其下的文件。 如:ls –d 指定目录
3、-i 输出文件的 i 节点的索引信息。 如 ls –ai 指定文件
4、-k 以 k 字节的形式表示文件的大小。ls –alk 指定文件
5、-l 列出文件的详细信息(属性)。
值得说明的是:文件=内容+属性。我们对文件操作要么是对文件内容操作,要么对文件属性操作。ls就是对文件的属性操作,只不过只显示文件名。
选项其实还可以叠加使用:

调整选项的先后顺序没有关系 !

6、-n 用数字的 UID,GID 代替名称。 (介绍 UID, GID)
7、-F 在每个文件名后附上一个字符以说明该文件的类型,“*”表示可执行的普通文件;“/”表示目录;“@”表 示符号链接;“|”表示FIFOs;“=”表示套接字(sockets)。(目录类型识别)
8、-r 对目录反向排序。
9、-t 以时间排序。
10、-s 在l文件名后输出该文件的大小。(大小排序,如何找到目录下最大的文件)
11、-R 列出所有子目录下的文件。(递归)
12、-1 一行只输出一个文件。
3、cd 指令
cd:就是change directory(改变目录,切换到指定目录的意思)
cd空格+指定目录即可进入到指定目录下!

前面我们说过任何一个目录即使是空目录,系统都会默认自带两个隐藏目录:. 和..
那这两个目录到底是什么意思呢?
这里我就直接说结论:. 表示当前目录,.. 表示上级目录!
下面我用cd来验证一下:
>. 表示当前目录

>.. 表示上级目录!

果然如此!cd ..就是回退到上级目录下!
我们可以把它理解为Windows下的文件夹回退键!

> cd ~:进入用户家目录
任何一个Linux用户,用特定的用户名登入系统时,都默认在家目录下!
比如我用超级用户root登入时就默认在/root路径下:

比如我用普通用户登入时就默认在 /home/用户名 路径下:

> cd -:返回最近访问目录

4、Linux下的根目录

我们不断的回退会发现我们最终都是在一个/的地方停止下来了,再也回退不了了!而我们都知道/是Linux下的路径分隔符,而这里的/也是路径分隔符吗?
直接说结论:这个地方 的 / 其实是Linux下的根目录!
我们又知道,所有操作系统的文件结构都是一课多叉树,Linux也不例外,并且Linux的文件结构是从根目录 / 开始的一个多叉树!

我们也可以验证一下:

果然 ,/ 其实就是一个目录!
好了,明白了Linux下文件系统的基本结构,我们这里又有了相对路径和绝对路径的概念了!
绝对路径:我们把从根目录开始指定一个文件或目录次称为绝对路径!
相对路径:我们把以非根目录为参照位置定位一个文件称为相对路径!
注意:绝对路径只有一条,而相对路径不一定只有一条,也可能有多条。而绝对路径在配置文件中使用的比较多,相对路径就在日常操作中用的多(简易)
5、touch指令
语法:touch [选项]... 文件...
功能:touch命令参数可更改文档或目录的日期时间,包括存取时间和更改时间,或者新建一个不存在的文件。
> 创建一个普通文件(不能创建目录):

> 更改文档或目录的日期时间:

-a 或--time=atime或--time=access或--time=use只更改存取时间。
-c 或--no-create 不建立任何文档。
-d 使用指定的日期时间,而非现在的时间。
-f 此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题。
-m 或--time=mtime或--time=modify 只更改变动时间。
-r 把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同。
-t 使用指定的日期时间,而非现在的时间。
6、 stat指令
stat就是state(状态)的意思:显示一个文件或目录的属性。

下面来讲一下A(access)C (change) M (modify):
在Linux系统中,文件的属性通常与文件的访问、修改以及状态改变相关联。具体来说,access、modify(有时也称为change,但在此上下文中我们通常区分两者)、change(这里特指inode change time)指的是文件的不同时间戳,它们各自代表了文件的不同方面的变化。
- Access Time (atime):
- 访问时间是指文件数据最后一次被读取(访问)的时间。这包括使用如
cat、more、less等命令查看文件内容,或者使用grep等命令搜索文件内容时的最后一次操作时间。然而,值得注意的是,很多文件系统(特别是挂载时使用了noatime或relatime选项的文件系统)为了减少磁盘写入操作,可能会优化或忽略atime的更新。
- 访问时间是指文件数据最后一次被读取(访问)的时间。这包括使用如
- Modify Time (mtime):
- 修改时间是指文件内容最后一次被修改的时间。这包括了对文件内容的任何写入操作,如使用文本编辑器修改文件、向文件中追加数据等。mtime是文件内容变化的直接反映。
- Change Time (ctime):
- 状态改变时间(或inode change time)是指文件的状态(inode信息)最后一次被改变的时间。这不仅仅包括文件内容的修改(这也会更新mtime),还包括了文件权限、所有者、链接数(有多少文件名链接到inode)等的改变。简而言之,任何导致文件inode信息发生变化的操作都会更新ctime。因此,即使文件内容没有改变,但如果其权限或所有者等属性发生了变化,ctime也会更新。
7、mkdir指令
语法:mkdir [选项] dirname...
功能:在当前目录下创建一个名为 “dirname”的目录

常用选项: -p(可以理解为path路径的意思), --parents 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立 好那些尚不存在的目录,即一次可以建立多个目录;

8、tree指令
在Linux系统中,tree命令是一个非常有用的工具,用于以树状图的形式递归地列出目录的内容。这个命令可以非常直观地展示目录结构,包括子目录和文件,以及它们的层级关系。
默认情况下,Linux系统可能并不自带tree命令,但你可以通过你的Linux发行版的包管理器来安装它。例如,在基于Debian(如Ubuntu)的系统上,你可以使用apt-get命令来安装:
apt install -y tree
在基于RPM的系统(如Fedora、CentOS)上,你可以使用yum(在较旧的系统上)或dnf(在较新的系统上)来安装:
yum install -y tree
安装完成后,你就可以使用tree命令了。基本用法很简单:
tree
这会在当前目录下显示目录树。如果你想要查看其他目录的目录树,可以将该目录的路径作为参数传递给tree命令:
tree /path/to/directory
tree命令还提供了许多选项来自定义输出,比如:
-L level:限制目录树的深度为指定的级别。-a:显示所有文件和目录,包括以.开头的隐藏文件。-d:仅显示目录。-f:在每个文件或目录前显示其完整路径。-i:不以缩进的格式显示文件或目录列表。-P pattern:仅显示匹配指定模式的文件或目录。-I pattern:不显示匹配指定模式的文件或目录。
例如,要查看当前目录及其子目录(但不包括更深层次的目录)的目录树,可以使用:
tree -L 1
或者,如果你想要查看所有文件(包括隐藏文件)的目录树,可以使用:
tree -a
tree命令是Linux系统管理和文件浏览中的一个强大工具,通过其提供的各种选项,你可以轻松地以图形化的方式查看和理解复杂的目录结构。
9、which指令
Linux中的which指令是一个常用的命令,主要用于查找并显示指定命令的绝对路径。以下是关于which指令的详细解释:
1. 基本功能
which指令会在环境变量$PATH中搜索指定的命令,并返回找到的第一个匹配项的完整路径。这个过程实质上是在查找可执行文件的路径(位置)。- 它帮助用户找到命令在系统中的具体位置,方便执行命令或查看命令是否存在。
2. 命令格式
- 基本的命令格式是:
which [选项] 命令。 - 其中,
[选项]是可选的,用于指定额外的搜索条件或行为,如-a显示所有匹配的命令路径,-s静默模式不显示错误信息,-V显示which命令的版本信息等。
3. 使用示例
- 查找单个命令的路径:例如,要查找
ls命令的绝对路径,可以输入which ls,通常会返回/bin/ls作为输出。 - 查找多个命令的路径:使用
-a选项可以查找并显示所有匹配的命令路径。例如,which -a gcc g++会显示gcc和g++命令的所有匹配路径。 - 查找
which命令本身:输入which which时,可能会显示两个which,其中一个是由于别名(alias)引起的。这说明which命令可能被配置为通过别名执行额外的操作。 - 查找内建命令:需要注意的是,
which命令默认只搜索$PATH环境变量中的目录。如果命令是shell的内建命令(如cd),则which无法找到它,因为内建命令不依赖于外部的可执行文件。

4. 注意事项
which命令仅查找在环境变量$PATH指定的目录中的命令。如果命令不在$PATH中的任何目录下,which命令将无法找到它。- 由于
which返回的是第一个匹配项的路径,因此在某些情况下,如果存在多个同名的命令可执行文件,which只会显示找到的第一个。
5. 扩展用法
- 在编写脚本或自动化任务时,
which命令可以用于检查命令是否存在,或者获取命令的完整路径以便在脚本中使用。 - 还可以结合其他命令和脚本,实现更复杂的搜索和路径处理功能。
综上所述,which指令是Linux系统中一个非常实用的工具,能够帮助用户快速找到命令的执行文件路径,方便执行和管理命令。
10、指令的本质
通过which指令我们可以发现指令其实就是系统指定路径下的可执行文件,就相当于我们写的C/C++程序!


我们还可以在Linux上写个简单的C程序验证一下:

我们甚至还可以将我们的code.c文件拷到usr/bin目录下,然后和文件自带的指令一样不用指定绝对路径就可以执行我们的指令!

11、alias指令
在Linux中,alias指令用于创建一个命令的别名,这样你就可以用一个简短的字符串来代替一个较长或复杂的命令。这对于提高命令行操作的效率非常有帮助,特别是当你需要频繁执行某个复杂命令时。
基本用法
-
创建别名:
alias new_command='original_command'这里,
new_command是你想要创建的别名,而original_command是原始命令。注意,等号=两边不要有空格。 -

-
查看所有别名:
alias或者
alias -p这两个命令都会列出当前会话中定义的所有别名。
-
删除别名:
unalias new_command这里,
new_command是你想要删除的别名。
示例
-
创建一个别名来列出当前目录下的所有文件和文件夹:
alias ll='ls -la'现在,你可以通过输入
ll来执行ls -la命令,该命令会列出当前目录下的所有文件和文件夹,包括隐藏文件和文件夹。 -
创建一个别名来清除屏幕:
alias cls='clear'注意,
clear命令在大多数Linux发行版中都是预装的,用于清除终端屏幕。然而,一些用户可能习惯于使用cls命令(这在Windows的命令提示符中是常见的)。通过创建这个别名,你可以在Linux终端中使用cls命令来达到相同的效果。 -
删除之前创建的别名:
如果你不再需要ll别名,可以使用以下命令来删除它:unalias ll
持久化别名
默认情况下,通过alias命令创建的别名只在当前shell会话中有效。如果你想要让这些别名在每次登录时都可用,你需要将它们添加到你的shell配置文件中。对于bash shell,这个文件通常是~/.bashrc。
-
打开你的
~/.bashrc文件:nano ~/.bashrc或者
vim ~/.bashrc -
在文件的末尾添加你的别名定义,例如:
alias ll='ls -la'alias cls='clear' -
保存并关闭文件。
-
为了使更改立即生效,你可以在当前shell会话中运行以下命令来重新加载
~/.bashrc文件:source ~/.bashrc或者
. ~/.bashrc
现在,你创建的别名将在每次登录时自动可用。
12、完结散花
好了,这期的分享到这里就结束了~
如果这篇博客对你有帮助的话,可以用你们的小手指点一个免费的赞并收藏起来哟~
如果期待博主下期内容的话,可以点点关注,避免找不到我了呢~
我们下期不见不散~~
相关文章:
【Linux庖丁解牛】—Linux基本指令(上)!
🌈个人主页:秋风起,再归来~🔥系列专栏: Linux庖丁解牛 🔖克心守己,律己则安 目录 1、 pwd命令 2、ls 指令 3、cd 指令 4、Linux下的根目录 5、touch指令 6、 stat指令 7、mkdi…...
node.js 中的进程和线程工作原理
本文所有的代码均基于 node.js 14 LTS 版本分析 概念 进程是对正在运行中的程序的一个抽象,是系统进行资源分配和调度的基本单位,操作系统的其他所有内容都是围绕着进程展开的 线程是操作系统能够进行运算调度的最小单位,其是进程中的一个执…...
Qt/C++ TCP调试助手V1.1 新增图像传输与接收功能(附发布版下载链接)
发布版本链接 通过百度网盘分享的文件:TCP调试助手V1.zip(含客户端与服务器) 链接:https://pan.baidu.com/s/14LTRPChPhYdwp_s6KeyBiA?pwdcedu 提取码:cedu 基于Qt/C实现了一款功能丰富的TCP服务器与客户端调试助手…...
DNS解析流程
DNS解析流程: 浏览器DNS缓存: 当我们在浏览器中访问某个域名时,浏览器首先会检查自己内部的DNS缓存,看是否有该域名的对应IP地址。如果有,直接使用缓存中的IP地址,跳过后续步骤。 本地系统DNS缓存…...
[PTA]7-1 藏头诗
[PTA]7-1 藏头诗 本题要求编写一个解密藏头诗的程序。 注:在 2022 年 7 月 14 日 16 点 50 分以后,该题数据修改为 UTF-8 编码。 输入格式: 输入为一首中文藏头诗,一共四句,每句一行。注意:一个汉字占三…...
每日OJ题_牛客_WY22 Fibonacci数列(斐波那契)
目录 牛客_WY22 Fibonacci数列(斐波那契) 解析代码 牛客_WY22 Fibonacci数列(斐波那契) Fibonacci数列_牛客题霸_牛客网 解析代码 求斐波那契数列的过程中,判断⼀下:何时 n 会在两个 fib 数之间。 #in…...
SQL 查询语句汇总
在软件开发和数据分析中,SQL(结构化查询语言)是与数据库交互的重要工具。为了更好地理解 SQL 查询语句的使用,本文将设计一个简单的数据库,包括几张表,并通过这些表展示各种 SQL 查询的应用。 一、背景信息…...
封装一个语言识别文字的方法
语音识别 需求: 参考官方文档,整合语音识别apicallback 的写法改为 Promise 的版本 在startRecord中: 参考文档实例化-开启转换将录制的内容传递给录音识别回调函数中的 Log,改为 Logger 在closeRecord: 结束识别…...
解决 iOS App Tracking Transparency 权限问题
解决 iOS App Tracking Transparency 权限问题 在 iOS 14 及更高版本中,Apple 引入了 App Tracking Transparency (ATT) 框架,要求应用在跟踪用户之前必须获得用户的明确许可。这通常涉及到访问用户的广告标识符(IDFA)。如果没有…...
ClickHouse 的底层架构和原理
ClickHouse 是一个用于实时分析和处理大规模数据的列式数据库,其设计目标是高效地处理海量数据的查询需求。它特别适合 OLAP(Online Analytical Processing)场景,能够在不依赖复杂的索引结构的情况下,实现极快的查询速…...
rtmp推流
获取摄像头名称 打开命令行工具,运行以下命令以列出所有可用的视频设备: ffmpeg -f dshow -list_devices true -i dummy查找输出中的“Video devices”部分,记录下你的摄像头名称。 构建推流命令 ffmpeg -f dshow -i video"摄像头名称…...
【数据库】死锁排查方式
定位 查是否锁表 select username,lockwait,status,machine,program from v$session where sid in (select session_id from v$locked_object); 查锁表sql select sql_text from v$sql where hash_value in (select sql_hash_value from v$session where sid in (select s…...
去耦合的一些建议
尽量少用全局变量,以减少状态共享和潜在的副作用。 模块化设计:将代码分成小模块,每个模块独立实现特定功能,减少模块之间的相互依赖。 封装:将数据和操作封装在类中,控制对内部状态的访问,避…...
SpringBoot+Thymeleaf图书管理系统
一、项目介绍 > 这是一个基于SpringBootThymeleaf实现的图书管理系统。 > 包含图书管理、作者管理、分类管理、出版社管理等功能。 > 界面简洁美观,代码结构清晰,完成度比较高,适用于JAVA初学者作为参考项目。 二、项目演示 三…...
TDengine 签约前晨汽车,解锁智能出行的无限潜力
在全球汽车产业转型升级的背景下,智能网联和新能源技术正迅速成为商用车行业的重要发展方向。随着市场对环保和智能化需求的日益增强,企业必须在技术创新和数据管理上不断突破,以满足客户对高效、安全和智能出行的期待。在这一背景下…...
模板字符串中定义方法并传参
遇到一个使用js es6的模板字符串进行事件绑定和传参的问题,这个问题的引起是因为使用innerHTML插入了一大串html并进行事件的绑定和传参。 以react为例,写一个demo记录一下 模板字符串中写方法的话需要用onclick来定义,传参需要这么写${char…...
Numpy 数组元素添加与元素删除函数详解
元素添加 Numpy中有类似python列表操作函数append()及insert(),但是用法稍有不同,append()及insert()不作为数组的实例方法使用。 np.append() np.append()的参数如下 def append(arr, values, axisNone): 其中,arr为数组对象࿰…...
【Python】高效图像处理库:pyvips
月亮慢慢变圆,日子慢慢变甜。 在图像处理领域,pyvips 是一个轻量级且高效的库,适合处理大规模图像、实现高性能的操作。相较于其他常见的图像处理库如 PIL 或 OpenCV,pyvips 以其低内存占用和出色的速度脱颖而出。本文将介绍 pyv…...
java项目之在线考试与学习交流网页平台源码(springboot)
风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的在线考试与学习交流网页平台。项目源码以及部署相关请联系风歌,文末附上联系信息 。 项目简介: 基于JAVA语言…...
【Android源码】屏蔽系统通知出现在系统栏中
环境 aosp: android-14.0.0_r1 真机:Pixel5 目标 我想把usb连接的两个系统通知屏蔽掉 “正在通过 USB 为此设备充电”“已连接到 USB 调试” 步骤 首先找到这两句内容出现的位置在 frameworks/base/core/res/res/values-zh-rCN/strings.xml <string name&…...
XML Group端口详解
在XML数据映射过程中,经常需要对数据进行分组聚合操作。例如,当处理包含多个物料明细的XML文件时,可能需要将相同物料号的明细归为一组,或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码,增加了开…...
地震勘探——干扰波识别、井中地震时距曲线特点
目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波:可以用来解决所提出的地质任务的波;干扰波:所有妨碍辨认、追踪有效波的其他波。 地震勘探中,有效波和干扰波是相对的。例如,在反射波…...
(十)学生端搭建
本次旨在将之前的已完成的部分功能进行拼装到学生端,同时完善学生端的构建。本次工作主要包括: 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...
3.3.1_1 检错编码(奇偶校验码)
从这节课开始,我们会探讨数据链路层的差错控制功能,差错控制功能的主要目标是要发现并且解决一个帧内部的位错误,我们需要使用特殊的编码技术去发现帧内部的位错误,当我们发现位错误之后,通常来说有两种解决方案。第一…...
数据链路层的主要功能是什么
数据链路层(OSI模型第2层)的核心功能是在相邻网络节点(如交换机、主机)间提供可靠的数据帧传输服务,主要职责包括: 🔑 核心功能详解: 帧封装与解封装 封装: 将网络层下发…...
ElasticSearch搜索引擎之倒排索引及其底层算法
文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...
高防服务器能够抵御哪些网络攻击呢?
高防服务器作为一种有着高度防御能力的服务器,可以帮助网站应对分布式拒绝服务攻击,有效识别和清理一些恶意的网络流量,为用户提供安全且稳定的网络环境,那么,高防服务器一般都可以抵御哪些网络攻击呢?下面…...
初学 pytest 记录
安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...
九天毕昇深度学习平台 | 如何安装库?
pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子: 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...
R语言速释制剂QBD解决方案之三
本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…...
