尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

【Linux学习】Linux学习第二弹——Linux基本指令1

【Linux学习】Linux学习第二弹——Linux基本指令1 个人主页MSTcheng · CSDN代码仓库MSTcheng · Gitee 精选专栏: 《C语言》《数据结构》《算法学习》《C由浅入深》《Linux操作系统》座右铭路虽远行则将至事虽难做则必成前言在上一篇文章中我们向大家介绍了Linux的历史以及其生态本篇文章就来着重介绍一下Linux基础指令文章目录一、我们为什么要学指令二、快速认识 6 ~ 8 个基本指令1. pwd —— 我在哪个路径下2. whoami —— 谁在访问 Linux3. ls —— 罗列当前目录4. cd —— 更改路径1. cd 绝对路径切到目标路径下2. cd -回退到上次所处的路径3. cd ~不带参数直接 cd回到当前用户家目录5. mkdir —— 新建一个目录/文件夹6. touch —— 新建一个普通文件7. clear —— 清屏三、核心观念文件夹 目录四、路径Windows 与 Linux 的对比1. 登录后都有一个默认路径五、文件 内容 属性六、隐藏文件与 . / .. 的秘密1. 隐藏文件2. . 表示当前路径3. .. 表示上级路径4. 任何目录下都隐藏存在 . 和 ..5.cd .和cd .. 进入当前目录进入上级目录九、Linux 的目录结构树状结构多叉树⭐本章最核心1. 树形目录结构2. 任何一个节点都只有一个父节点3. 到根目录就不能再退了4. 两个重要结论5. 路径为什么具有唯一性⭐十、绝对路径 vs 相对路径 ⭐1. 定义2. 绝对路径一定能唯一标识文件那相对路径呢3. 最佳实践⭐⭐十一、执行程序./ 的意义1. 演示2. 解释3. 为什么要有 . ⭐⭐⭐十二、总结一、我们为什么要学指令Linux 是命令行操作系统和 Windows 的鼠标点一点不同Linux 主要靠输入指令命令来操作文件、管理系统。“先来快速认识 6 ~ 8 个指令”先把命令用起来然后再去逐条细化每个指令的细节。指令不是背出来的是用出来的——跟着敲一遍比盯着看十遍更有效。Linux 和 Windows 的区别一个常见答案角度就是Linux 以命令行为核心、一切皆文件、多用户多任务、开源免费而 Windows 以图形界面为核心。在后面的文章中会用路径、文件继续印证这个差异。二、快速认识 6 ~ 8 个基本指令1.pwd—— 我在哪个路径下作用显示当前所在路径当前工作目录。“我当前在哪个路径下。”演示mstchengmstcheng-VMware-Virtual-Platform:~$ pwd /home/mstcheng rootubuntu-dev:~# pwd /root注意命令提示符root登录显示#普通用户mstcheng登录显示$。单词含义pwd print working directory打印工作目录。2.whoami—— 谁在访问 Linux作用显示当前登录用户是谁。“谁在访问 Linux 系统。”演示rootubuntu-dev:~# whoami root mstchengubuntu-dev:~$ whoami mstcheng小技巧提示符里其实已经能看到用户名whoami更常用在脚本或排错时确认当前以哪个身份执行。3.ls—— 罗列当前目录作用罗列列出当前目录下的文件和文件夹。“罗列当前目录。”常⽤选项-a 列出⽬录下的所有文件包括以.开头的隐含文件。-d 将⽬录像⽂件⼀样显示而不是显示其下的文件。 如ls ‒d 指定目录-i 输出⽂件的 i 节点的索引信息。 如ls ‒ai指定⽂件-k 以k字节的形式表示文件的大小。ls ‒alk指定⽂件-l 列出文件的详细信息-n ⽤数字的 UID,GID 代替名称。 介绍 UID GID-F 在每个文件名后附上⼀个字符以说明该⽂件的类型*表示可执行的普通文件/表示目录表示符号链接|表示FIFOs表示套接字(sockets)。目录类型识别-r 对⽬录反向排序-t 以时间排序-s 在l⽂件名后输出该文件的大小。大小排序如何找到⽬录下最⼤的⽂件-R 列出所有子目录下的文件。(递归)-1 一行只输出⼀个文件。演示mstchengubuntu-dev:~/117/code$lscgdbtest linux-code list makefile procbar testCode mstchengubuntu-dev:~/117/code$ls-a-ltotal32drwxrwxr-x7mstcheng mstcheng4096Nov232025.drwxrwxr-x4mstcheng mstcheng4096Feb112026..drwxrwxr-x2mstcheng mstcheng4096Oct282025cgdbtest drwxrwxr-x18mstcheng mstcheng4096Jul1815:22 linux-code drwxrwxr-x2mstcheng mstcheng4096Oct282025list -rw-rw-r--1mstcheng mstcheng533Oct172025makefile drwxrwxr-x2mstcheng mstcheng4096Oct212025procbar drwxrwxr-x2mstcheng mstcheng4096Nov232025testCode mstchengubuntu-dev:~/117/code$ls-alfntotal32drwxrwxr-x7100010004096Nov232025.drwxrwxr-x4100010004096Feb112026..drwxrwxr-x2100010004096Oct282025list drwxrwxr-x2100010004096Oct282025cgdbtest drwxrwxr-x18100010004096Jul1815:22 linux-code -rw-rw-r--110001000533Oct172025makefile drwxrwxr-x2100010004096Nov232025testCode drwxrwxr-x2100010004096Oct212025procbar4.cd—— 更改路径作用切换到进入某一个目录。“更改路径。”演示mstchengubuntu-dev:~/117/code$cdlinux-code/ mstchengubuntu-dev:~/117/code/linux-code$提示符中的路径跟着变化说明cd生效了1.cd 绝对路径切到目标路径下“cd 绝对路径切换到目标路径下。”演示mstchengubuntu-dev:~$cd~/117/code/linux-code/ mstchengubuntu-dev:~/117/code/linux-code$2.cd -回退到上次所处的路径“回退到上次所处的路径。”在上次路径和当前路径之间来回跳非常适合在两个深目录间快速切换。3.cd ~不带参数直接cd回到当前用户家目录“当前用户的家目录。”在根目录/下有一个用户名的目录那个目录就是你的家目录演示//直接cd不带参数 那么进入的就是家目录 mstchengubuntu-dev:~/117/code/linux-code$cdmstchengubuntu-dev:~$pwd/home/mstcheng“root 账号的家目录”是/root普通用户如 mstcheng的家目录是/home/mstcheng。易错点家目录是/root或/home/用户名不是/root之外的东西而根目录是/。cd和cd ~等价都是回家cd /是到根目录别混淆。5.mkdir—— 新建一个目录/文件夹作用在当前目录下新建一个目录文件夹。“在当前目录下新建一个目录 / 文件夹。”-演示mstchengubuntu-dev:~/117/code$lscgdbtest linux-code list makefile procbar testCode mstchengubuntu-dev:~/117/code$mkdirtestmstchengubuntu-dev:~/117/code$ls-a-ltotal36drwxrwxr-x8mstcheng mstcheng4096Aug2317:25.drwxrwxr-x4mstcheng mstcheng4096Feb112026..drwxrwxr-x2mstcheng mstcheng4096Oct282025cgdbtest drwxrwxr-x18mstcheng mstcheng4096Jul1815:22 linux-code drwxrwxr-x2mstcheng mstcheng4096Oct282025list -rw-rw-r--1mstcheng mstcheng533Oct172025makefile drwxrwxr-x2mstcheng mstcheng4096Oct212025procbar drwxrwxr-x2mstcheng mstcheng4096Aug2317:25testdrwxrwxr-x2mstcheng mstcheng4096Nov232025testCode6.touch—— 新建一个普通文件作用新建一个普通文件。演示mstchengubuntu-dev:~/117/code$touchcode.c mstchengubuntu-dev:~/117/code$ls-a-ltotal36drwxrwxr-x8mstcheng mstcheng4096Aug2317:50.drwxrwxr-x4mstcheng mstcheng4096Feb112026..drwxrwxr-x2mstcheng mstcheng4096Oct282025cgdbtest -rw-rw-r--1mstcheng mstcheng0Aug2317:50 code.c drwxrwxr-x18mstcheng mstcheng4096Jul1815:22 linux-code drwxrwxr-x2mstcheng mstcheng4096Oct282025list -rw-rw-r--1mstcheng mstcheng533Oct172025makefile drwxrwxr-x2mstcheng mstcheng4096Oct212025procbar drwxrwxr-x2mstcheng mstcheng4096Aug2317:25testdrwxrwxr-x2mstcheng mstcheng4096Nov232025testCode易错点mkdir建文件夹/目录即我们刚刚创建的test目录touch建普通文件即我们创建的code.c( 具体的文件)两者对象完全不同面试现场常让口头区分。7.clear—— 清屏作用把屏幕上之前的内容清掉让界面干净方便继续操作。“clear清屏操作。”快捷方式Ctrl L。上面我们谈到了诸如文件夹目录这样的概念下面就来解释一下三、核心观念文件夹 目录“文件夹 目录。”文件夹就是一个目录也就是说在Windows里我们叫“文件夹”在Linux里叫目录它们是同一个东西。后面遇到目录这个词就把它翻译成 Windows 的文件夹来理解能省很多困惑。同理Linux 里的文件也不只是文本目录本身也是一种文件后面文件类型一节会讲。在上面我们还谈到了路径问题下面我们就来看看路径问题四、路径Windows 与 Linux 的对比1. 登录后都有一个默认路径在windows系统中标识文件的唯一性是通过路径标识的意思同一个文件名可能出现在很多文件夹里但“哪个盘哪个文件夹下的哪个文件”完整路径是唯一的。“无论 Windows 还是 Linux我们登录成功都会默认处在一个默认的路径下。”Windows登录后默认在某个盘符的目录如C:\Users\用户名。Linux登录后默认在家目录root 是/root普通用户是/home/用户名。这就是为什么一打开终端pwd就能打出一个路径——系统已经把我们放在某个地方了。Windows 用反斜杠\作为路径分隔符Linux 用正斜杠/作为路径分隔符。注意“Windows 和 Linux 路径写法有什么区别”—— Windows 用\反杠Linux 用/正斜杠Windows有盘符C:、D:Linux是统一的根/。五、文件 内容 属性一个经典问题“如在 Windows 新建一个空的文件这个文件要不要占据磁盘空间”直觉答案“空文件没内容应该不占空间吧”真实情况空文件也要占据磁盘空间“文件的属性是不是数据是的但 文件 ≠ 文件内容。”重点公式文件 文件的内容 文件的属性解释文件内容文件里存的真正数据比如文本、代码、图片像素、视频音频数据。文件属性元数据文件名、大小、权限、属主、修改时间……这些不是内容但也是数据也要占用磁盘空间存储。所以即使是 0 字节的空文件它的属性信息也要写进磁盘必然占用空间。所以ls -l可以显示更多文件属性mstchengubuntu-dev:~/117/code$ls-ltotal28drwxrwxr-x2mstcheng mstcheng4096Oct282025cgdbtest -rw-rw-r--1mstcheng mstcheng0Aug2317:50 code.c drwxrwxr-x18mstcheng mstcheng4096Jul1815:22 linux-code drwxrwxr-x2mstcheng mstcheng4096Oct282025list -rw-rw-r--1mstcheng mstcheng533Oct172025makefile drwxrwxr-x2mstcheng mstcheng4096Oct212025procbar drwxrwxr-x2mstcheng mstcheng4096Aug2317:25testdrwxrwxr-x2mstcheng mstcheng4096Nov232025testCodels -l输出一行的含义从前往后文件类型 权限如-rwxr-xr-x第 1 位是类型后面 9 位是权限。如果是d开头就是目录文件如果是-开头就是普通文件链接数/子目录数普通文件通常是 1目录是里面子目录数量 2为什么2后面会说。属主owner如mstcheng。所属组group如mstcheng。大小字节如4096。最后修改时间如Aug23 17:25。文件名如code.c。ls -a显示隐藏文件“显示当前路径下的隐藏文件或者文件夹。”演示mstchengubuntu-dev:~/117/code$ls-a...cgdbtest code.c linux-code list makefile procbartesttestCode-aall会把以.开头的隐藏文件也显示出来其中必然包括.当前目录和..上级目录。说到隐藏文件以及.和..下面就来介绍一下六、隐藏文件与./..的秘密1. 隐藏文件“Linux 系统中可以存在隐藏文件隐藏文件往往以.开头。”例.bashrc、.gitignore、..就是典型的以点开头的隐藏文件/目录。隐藏只是默认不显示并不是真的加密或不存在用ls -a就能看到。2..表示当前路径“Linux 系统中一个.通常表示当前路径。”例./code.c就是指当前目录下的code.c。3...表示上级路径“两个..通常表示上级路径。”例../hello.txt就是指 “上一级目录里的 hello.txt”。4. 任何目录下都隐藏存在.和..“任何目录下都要隐藏存在.和..上级目录。”因为.和..是目录结构自带的指针.指向自己..指向父目录这是后面理解树形目录的关键。 这也是为什么前面说链接数/子目录数2的原因(2加的就是.当前目录和..上级目录)5.cd .和cd ..进入当前目录进入上级目录mstchengubuntu-dev:~/117/code$pwd/home/mstcheng/117/code mstchengubuntu-dev:~/117/code$cd.mstchengubuntu-dev:~/117/code$pwd/home/mstcheng/117/code mstchengubuntu-dev:~/117/code$cd..mstchengubuntu-dev:~/117$pwd/home/mstcheng/117上面谈到当前目录.和上级目录..以及前面所谈到的根目录和家目录下面就来聊聊Linux的目录结构九、Linux 的目录结构树状结构多叉树⭐本章最核心1. 树形目录结构“Linux 目录本质是树形目录结构的基础”、“Linux 的整个文件结构是树状结构”“就像是一颗多叉树”。理解把整个 Linux 文件系统想象成一棵倒着长的树最顶端是根/往下不断分叉出目录最后挂上文件。2. 任何一个节点都只有一个父节点“任何一个节点都只有一个父节点。”除根/外每个文件/目录都只有一个爹父目录不可能同时属于两个上级目录不考虑硬链接等特殊情况基础阶段记住这一条。这也直接解释了后面路径唯一性。3. 到根目录就不能再退了“推到根目录就不能再退了”在/下执行cd ..还是/因为/已经是最顶层没有上级了。4. 两个重要结论结论 1“这棵多叉树的叶子节点一定是普通文件或者空的文件夹。”叶子节点 没有孩子的节点。它要么是普通文件没有子目录要么是空目录。结论 2“路上节点非叶子节点本质就是文件夹或者目录”非叶子节点 还有子目录的节点它们本质上都是目录/文件夹。5. 路径为什么具有唯一性⭐“标识文件唯一性通过路径标识。路径为什么具有唯一性”“从/目标文件定位的时候路径就是唯一的”逻辑链条文件系统是一棵树每个节点只有一个父节点那么从根/出发到某个文件的走法是唯一的这条唯一的走法写出来就是唯一的一条绝对路径。举例/usr/bin/hello.txt是唯一的世界上只有这一个根目录下usr目录下bin目录下的hello.txt。有了上面对于Linux目录结构的认识以及路径唯一性的认识下面我们顺水推舟来聊聊绝对路径和相对路径十、绝对路径 vs 相对路径 ⭐1. 定义绝对路径从根/开始写的完整路径。示例/usr/bin/hello.txt标注“绝对路径是从/作为起点进行唯一的路径标识。”相对路径从当前所处目录为参照点写出的路径。示例../bin/hello.txt标注“相对路径从当前目录作为参照点。”../表示上一级目录所以../bin/hello.txt意思是上一级目录下的 bin 目录里的 hello.txt。2. 绝对路径一定能唯一标识文件那相对路径呢“相对路径能不能唯一标识”、“对于一个确定的相对路径相对路径能不能保证唯一性”答案绝对路径唯一相对路径不保证唯一“相对路径是从我自己当前所处的目录为参照点的一旦我自己所处的目录发生变化相对路径可能就会失效找不到了/指向另一个文件。”通俗理解同一条相对路径../bin/hello.txt在/root下和在/tmp下指向的根本不是同一个文件。3. 最佳实践⭐⭐最佳实践1. 配置文件要配置各种路径建议绝对路径2. 否则常规操作统一使用相对路径。理由配置文件比如各种服务、软件的配置里的路径一旦写错文件就找不到而且配置文件不随用户位置变化必须稳定用绝对路径。日常操作敲命令时人正站在某个目录里用相对路径更短更直观。十一、执行程序./的意义1. 演示可执行程序code.exe然后在当前目录/home/mstcheng/117/code下# 方式一用 . 表示当前路径./code.exe 执行 mstchengubuntu-dev:~/117/code$ ./code.exe hello Linux # 方式二用完整绝对路径执行 mstchengubuntu-dev:~/117/code$ /home/mstcheng/117/code/code.exe hello Linux # 方式三直接敲文件名 → 报错 mstchengubuntu-dev:~/117/code$ code.exe code.exe未找到命令“执行当前路径.意义是什么”“你要执行一个程序的前提就是先通过路径找到它”2. 解释./code.exe.是当前路径./code.exe明确告诉系统在当前目录下找code.exe 这个程序。/home/mstcheng/117/code/code.exe用绝对路径同样能找到。code.exe不带路径系统只在PATH 环境变量指定的目录如/bin、/usr/bin等里找当前目录默认不在PATH 里所以报command not found。注意command not found表示没找到这个命令/文件不是说文件不存在——文件明明就在眼前只是系统按PATH去找没找到。3. 为什么要有.⭐⭐⭐因为 Linux 出于安全考虑默认不把当前目录放进搜索路径防止恶意脚本假装成系统命令在当前位置被执行。所以执行当前目录下的程序必须显式写成./程序名。十二、总结本篇文章围绕 Linux 基础指令与文件系统展开核心内容如下基本指令认识了pwd、whoami、ls、cd、mkdir、touch、clear等常用命令并强调指令是用出来的不是背出来的。核心观念文件夹 目录文件 内容 属性空文件也要占据磁盘空间。路径体系Linux 用正斜杠/Windows 用反斜杠\登录后默认处于家目录。隐藏文件以.开头的文件默认不显示用ls -a可见.表示当前目录..表示上级目录。目录结构Linux 文件系统是一棵多叉树根为/每个节点只有一个父节点因此从根出发的绝对路径具有唯一性。路径类型绝对路径从/开始、稳定唯一相对路径以当前目录为参照、不保证唯一。配置文件建议用绝对路径日常操作用相对路径。执行程序执行当前目录下的程序需写成./程序名因为当前目录默认不在 PATH 中。一句话总结掌握基础指令理解一切皆文件与树形目录结构就能在 Linux 中自由穿行。本章我们只讲解了最基础的指令然后过渡到对于Linux文件目录路径的理解下期继续介绍后续的一些指令今天的内容就到这里觉得对你有益的话不妨给个三联支持感谢
返回列表