【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&…...

TDengine 快速体验(Docker 镜像方式)
简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...
反向工程与模型迁移:打造未来商品详情API的可持续创新体系
在电商行业蓬勃发展的当下,商品详情API作为连接电商平台与开发者、商家及用户的关键纽带,其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息(如名称、价格、库存等)的获取与展示,已难以满足市场对个性化、智能…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器
——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的一体化测试平台,覆盖应用全生命周期测试需求,主要提供五大核心能力: 测试类型检测目标关键指标功能体验基…...

【大模型RAG】Docker 一键部署 Milvus 完整攻略
本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装;只需暴露 19530(gRPC)与 9091(HTTP/WebUI)两个端口,即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...

linux arm系统烧录
1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 (忘了有没有这步了 估计有) 刷机程序 和 镜像 就不提供了。要刷的时…...
【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统
目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索(基于物理空间 广播范围)2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...

人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式
今天是关于AI如何在教学中增强学生的学习体验,我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育,这并非炒作,而是已经发生的巨大变革。教育机构和教育者不能忽视它,试图简单地禁止学生使…...

Windows安装Miniconda
一、下载 https://www.anaconda.com/download/success 二、安装 三、配置镜像源 Anaconda/Miniconda pip 配置清华镜像源_anaconda配置清华源-CSDN博客 四、常用操作命令 Anaconda/Miniconda 基本操作命令_miniconda创建环境命令-CSDN博客...
tomcat指定使用的jdk版本
说明 有时候需要对tomcat配置指定的jdk版本号,此时,我们可以通过以下方式进行配置 设置方式 找到tomcat的bin目录中的setclasspath.bat。如果是linux系统则是setclasspath.sh set JAVA_HOMEC:\Program Files\Java\jdk8 set JRE_HOMEC:\Program Files…...

ubuntu系统文件误删(/lib/x86_64-linux-gnu/libc.so.6)修复方案 [成功解决]
报错信息:libc.so.6: cannot open shared object file: No such file or directory: #ls, ln, sudo...命令都不能用 error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory重启后报错信息&…...