当前位置: 首页 > news >正文

Linux探秘:驾驭开源,解锁高效能——基础指令


♥♥♥~~~~~~欢迎光临知星小度博客空间~~~~~~♥♥♥

♥♥♥零星地变得优秀~也能拼凑出星河~♥♥♥

♥♥♥我们一起努力成为更好的自己~♥♥♥

♥♥♥如果这一篇博客对你有帮助~别忘了点赞分享哦~♥♥♥

♥♥♥如果有什么问题可以评论区留言或者私信我哦~♥♥♥

✨✨✨✨✨✨ 个人主页✨✨✨✨✨✨

这一篇博客我们将开启新的专栏——Linux学习~准备好了吗~我们发车啦~🚗🚗🚗🚗🚗🚗

目录

什么是Linux

开源

多账号管理

创建用户

设置密码

修改用户信息

删除用户

基本指令

mkdir

touch

ls

stat

pwd

tree

cd

路径知识【理论小课堂】

家目录【理论小课堂】

根目录和家/主目录对比【理论小课堂】

cd指令使用

rmdir

rm

man

which

cat

echo

Linux下,一切皆文件!【理论小课堂】

输出重定向【重新改变输出的方向】

输入重定向【重新改变输入的方向】

cp


什么是Linux

Linux是一款开源的操作系统,具备多用户多任务、高度稳定、可定制和跨平台等多重特点

       Linux的开源性使得全球范围内的开发者能够共同合作,不断改进和完善系统。Linux提供了丰富的工具和应用程序,满足用户的不同需求。同时,Linux在网络支持和安全性方面也表现出色,成为服务器和关键应用的理想选择。此外,Linux还具备跨平台性,能够运行在不同的硬件平台上,为用户提供了更广泛的选择和适应性。

       Linux是一款功能强大、灵活多变的操作系统~

开源

Linux是⼀种自由和开放源代码的类UNIX操作系统,该操作系统的内核由林纳斯托瓦兹在1991年
⾸次发布,之后,在加上用户空间的应用程序之后,就成为了Linux操作系统。严格来讲,Linux只是操作系统内核本⾝,但通常采用“Linux内核”来表达该意思。而Linux则常用来指基于Linux内核的完整操作系统,它包括GUI组件和许多其他实用⼯具。
GNU通用公共许可协议(GNU General Public License,简称GNU GPL或GPL),是一个广泛被 使用的自由软件许可协议条款,最初由理查德斯托曼为GNU计划而撰写,GPL给予了计算机程序自 由软件的定义, 任何基于GPL软件开发衍生的产品在发布时必须采用GPL许可证方式,且必须 公开源代码
Linux是自由软件和开放源代码软件发展中最著名的例子。只要遵循GNU通用公共许可证,任何
个⼈和机构都可以自由地使用Linux的所有底层源代码,也可以自由地修改和再发布。随着Linux
操作系统飞速发展,各种集成在Linux上的开源软件和实用⼯具也得到了应用和普及,因此, Linux也成为了开源软件的代名词。

多账号管理

        我们都知道云服务器是有一点小贵的,那么我们就可以进行多账号管理,多创建几个账号共同使用一个云服务器~ 以下是Linux进行多账号管理的详细过程:

创建用户
  • 使用adduser命令创建新用户(注意:使用root【管理员】账号进行)
  • 例如,adduser xiaodu会创建一个新用户,但不会自动创建用户的主目录。
  • 若要同时创建用户主目录,可以使用adduser -m username

设置密码
  • 使用passwd命令为用户设置密码。例如,passwd xiaodu会提示你输入并确认新密码。

修改用户信息
  • 使用usermod命令修改用户信息。例如,usermod -l newname oldname可以修改用户名。
  • usermod -aG groupname username可以将用户添加到附加组。
删除用户
  • 使用userdel命令删除用户。例如,userdel username会删除用户,但不会删除其主目录。
  • 若要同时删除用户主目录,可以使用【userdel -r username】,我们更加建议使用这一个,避免出现问题~

基本指令

基础指令部分会理论与实践结合,大家可以使用自己的环境进行尝试一下,混合使用方便理解~

(小编使用的云服务器操作系统是CentOS7.6 ,大家可以参考借鉴一下效果)

mkdir

语法

mkdir [选项] dirname...

功能

在当前目录下创建一个名为 “dirname” 的目录~

mkdir 命令用于创建新的空目录~

常用选项

  • -p--parents:此选项允许 mkdir 命令创建多级目录~
  • 如果指定的路径中包含不存在的父目录,mkdir 会自动创建这些父目录,直到整个路径都被创建出来~这样可以一次性创建多个嵌套的目录。

touch

语法

touch [选项]... 文件...

功能

touch 命令用于更改文档(文件或目录)的日期时间戳,包括存取时间(atime)和修改时间(mtime),或者新建一个不存在的文件~

常用选项

  • -a:仅更改访问时间(atime)。当使用这个选项时,touch 命令会更新文件的最后访问时间,但不会改变文件的修改时间~

  • -c--no-create:如果指定的文件不存在,则不创建该文件,也不会返回错误。这个选项主要用于脚本中,以避免因文件不存在而导致的错误中断。当文件已存在时,touch 会更新其时间戳

  • 后面的博客对文件属性修改进一步讲解

ls

可以理解成list简写~

重要结论:【文件=文件内容+属性】,那么如果文件没有内容,也是需要占用磁盘空间的(文件属性)~

ls是用来打印文件属性的~

语法:

       ls [选项] [目录或文件]

功能:

对于目录,该命令列出该目录下的所有子目录与文件

对于文件,将列出文件名以及其他信息


常用选项:
-a 列出目录下的所有文件,包括以 . 开头的隐含文件


-d 将目录像文件一样显示,而不是显示其下的文件。 如:ls ‒d 指定目录

*显示我们想要的后缀或者前缀文件


-i 输出文件的 i 节点的索引信息。 如 ls ‒ai 指定文件


-k 以 k 字节的形式表示文件的大小。ls ‒alk 指定文件


-l 列出文件的详细信息


-n 用数字的 UID,GID 代替名称

-F 在每个文件名后附上一个字符以说明该文件的类型

        “*”表示可执行的普通文件;“/”表示目录;“@”表示符号链接;“|”表示FIFOs;“=”表示套接字(sockets)。(目录类型识别)


-r 对目录反向排序


-t 以时间排序(后面创建的在前面)


-s 在l文件名后输出该文件的大小。(大小排序,如何找到目录下最大的文件)


-R 列出所有子目录下的文件。(递归)


-1 一行只输出一个文件~

我们也可以将上面的指令进行混合使用~

例:

ls -la 或者 ls -al ,它们的效果是一样的~都是显示所有文件以及它们的详细信息

我们可以看见文件的详细信息有着不同的前缀~

事实上,以 d 开头的前缀是目录文件,而以 -r 开头的前缀是普通文件~

stat

stat 是 用于查看文件或文件系统详细信息的命令~

  1. 文件元数据
    • 文件类型(普通文件/目录/符号链接等)
    • 权限、所有者、所属组
    • 大小(字节)、inode 号、块数量
    • 三个关键时间戳:
      • Access:最后一次访问时间(atime
      • Modify:最后一次内容修改时间(mtime
      • Change:最后一次元数据变更时间(ctime,如权限修改)
  2. 文件系统信息(需 -f 选项)
    • 文件系统类型(如 ext4、xfs)
    • 块大小、总空间、空闲空间等

选项作用
-l以易读格式显示权限(同 ls -l
-f显示文件系统信息(而非文件信息)
-t简洁输出(适合脚本解析)
--printf=格式自定义输出格式(如 %n: %s bytes

pwd

语法:
      pwd
功能:
     显示用户 当前所在的目录

例:

tree

事实上,无论是Linux 还是 Windows 的目录结构,都是树状结构,也就是数据结构阶段我们提到的树~

Linux指令中的tree,就可以显示目前Linux的树状结构~

在此之前,我们还需要安装点东西~我们在不同操作系统输入下面的指令~

CentOS —— yum install -y tree

ubuntu ——  apt install -y tree

比如小编的CentOS操作系统安装好之后使用tree显示当前目录是树状结构~

cd

我们首先需要了解一些理论知识~什么是路径?

路径知识【理论小课堂】

路径存在的价值在于标识文件的唯一性定位目标文件~

•理解路径存在的意义:树状组织方式,都是为了保证快速定位查找到指定的文件,而定位文件就需要具有唯一性的方案来进行定位。其中任何一个节点,都只有一个父节点,所以,从根目录开始,定位指定文件,路径具有唯一性

Linux中路径用 / 作为路径分隔符

绝对路径:一般从 / 【根目录】开始,不依赖其他目录的定位文件的方式(从根目录开始,定位一个文件——配件文件中写入某些文件的配置路径时使用


相对路径相对于当前用户所处目录,定位文件的路径方式——命令行操作使用较多


• 绝对路径一般不会随着用户的路径变化而丧失唯一性,一般在特定服务的配置文件中经常被使用
• 相对路径因为它的便捷性,一般在命令行中使用较多

• Linux系统中,磁盘上的文件和目录被组成一棵目录树,每个节点都是目录或文件
• 普通文件一定是目录树的叶子节点
• 目录可能是叶子(空目录),也可能是路径上的节点

总结:路上节点(路径上的节点)一定是目录叶子节点是空目录或者普通文件

家目录【理论小课堂】

        在 Linux 系统中,家目录(Home Directory) 是每个用户专属的私人存储空间,用于存放个人文件、配置和程序数据~

        指定用户登录的时候默认所处的路径就是家目录~

》位置:默认位于 /home/用户名(如 /home/xiaodu

》作用:隔离用户数据,确保不同用户间的文件和设置互不干扰(不去别人家进行操作)

符号表示

  • ~ 符号(如 cd ~)直接指向当前用户的家目录。
  • 绝对路径 /home/用户名 明确指定具体用户的家目录。

    特殊用户:root

    家目录位置/root(而非 /home/root),体现超级用户的独立性

    根目录和家/主目录对比【理论小课堂】

    根目录(Root Directory)

    1. 定义根目录是Linux文件系统的最顶层,用斜杠 / 表示。它是所有其他目录和文件的起点。

    2. 用途

      • 包含系统中的所有其他目录和文件。
      • 是文件系统层次结构的基础。
    3. 权限:通常只有系统管理员(root用户)有权限对其进行修改。

    主/家目录(Home Directory)

    1. 定义主目录是每个用户在Linux系统上的个人目录,通常位于 /home/username 下,其中 username 是用户的登录名。

    2. 用途

      • 存储用户的个人文件、配置文件和应用程序数据。
      • 用户可以在自己的主目录中自由创建、修改和删除文件和目录。
    3. 权限:用户对其主目录拥有完全的访问权限,而其他用户通常只有读权限或没有权限。

    总结

    • 根目录是整个文件系统的顶层,是系统管理员管理的主要区域。
    • 主/家目录是用户的个人空间,用户可以在其中自由管理自己的文件。

    cd指令使用

    语法: cd  目录名
    功能:改变工作目录,将当前工作目录改变到指定的目录下
    cd 文件名:
    cd -
    回到上一次的路径(最近一次路径)

    cd ~

    回到当前目录的家目录

    (# root用户在安装操作系统的时候,就已经内置了工作目录: /root)
    (每⼀次新建⼀个用户都会在/home目录下为新用户创建新的工作目录,目录以新用户名称命名)

    家目录指定用户登录的时候,默认所处的路径就是家目录

    cd /

    进入 / 目录

    cd ..

    返回上级目录

    rmdir

    rmdir 是一个与 mkdir 相对应的命令,mkdir 是建立目录,而 rmdir 是删除目录命令~

    语法:rmdir [-p] [dirName]

    适用对象:具有当前目录操作权限的所有使用者

    功能:删除空目录

    常用选项:

    -p:当子目录被删除后,如果父目录也变成空目录的话,就连带父目录一起删除,也就是删除连续的父子目录

    例:d1/d2/d3/d4

    我们直接使用rmdir d1是无法进行删除的,我们需要加上- p

    如果使用rmdir d1/d2/d3/d4,也就只能删除d4目录

    使用rmdir -p d1/d2/d3就可以删除父子目录~

    rm

    起初树状结构:

    功能:删除文件或目录

    (不仅仅是删除目录了,如果是目录需要加 -r )

    删除文件test.txt

    它会询问是否删除,我们输入y / n ,也就是yes/no的意思~

    语法rm [-f -i -r -v] [dirName/dir]

    适用对象:所有使用者

    常用选项

    • -f:即使文件为只读属性,也直接删除,不询问意见~
    • -i:删除前逐一询问确认(默认情况是询问的)
    • -r-R:递归删除目录及其下所有文件
    • -v:显示详细删除信息

    我们通过前面的使用也可以发现,这些指令是可以混合使用的~

    man

    Linux的命令有很多参数,我们使用的时候可以通过查看联机手册获取帮助

    语法: man [选项] 命令

    使用:

    man ls

    man pwd

    如果需要使用手册页,就需要进行手册页的安装:

    基于 Debian/Ubuntu 的系统:

            sudo apt update

            sudo apt install manpages-dev

    基于 RHEL/CentOS 的系统:

            sudo yum install man-pages

    常用选项
    -k 根据关键字搜索联机帮助


    num 只在第num章节查找
    -a 将所有章节的都显示出来,比如 man printf 它缺省从第一章开始搜索,知道就停止,用a选项,当按下q退出,他会继续往后面搜索,直到所有章节都搜索完毕


    解释:一般情况下,man 手册分为9章,不同系统可能会有差别~

    man man 就可以查询到相关内容~


    1 、普通的命令

    man printf 【printf也是Linux里面的命令】,在1号手册可以查询到~

    使用Linux里面的printf命令:


    2 、系统调用,如open,write之类的(通过这个,至少可以很方便的查到调用这个函数,需要加什么头文件)

    man 2 open


    3 、库函数,如printf,fread(目前仅限于C语言)

    man 3 printf

    后面的手册使用得比较少,有点印象就可以了~
    4 、特殊文件,也就是/dev下的各种设备文件(此处略过详细说明)
    5 、指文件的格式,比如passwd, 就会说明这个文件中各个字段的含义
    6 、给游戏留的,由各个游戏自己定义
    7 、附件还有一些变量,比如像environ这种全局变量在这里就有说明
    8 、系统管理用的命令,这些命令只能由root使用,如ifconfig

    • 9 ....

    which

            which 是用于查找可执行文件的位置(查找命令的所在路径)~

    它会搜索用户的 PATH 环境变量中定义的目录,并返回第一个匹配的可执行文件的路径~

    which使用:

    我们可以发现它们前面都是/usr/bin

    当我们ls /usr/bin 就会显示出Linux下所有的命令~

    理论知识

            所谓的命令其实就是Linux指定目录下的(/usr/bin)可执行文件!!!

            指令本质就是别人写的可执行程序或者某些脚本,被放在了系统的特定路径下(/usr/bin)

            我们输入指令不需要带路径直接输入就可以执行,就是因为执行命令时默认就去/usr/bin里面找命令~

    我们进一步得到:

            所谓的安装软件核心其实就是把目标软件拷贝的系统认识的指定路径下!

    接下来,我们可以来发现一个神奇的现象:

    【ll 】和【 ls -l】可以达到相同的效果~

    我们which查询一下:

            前面有一个alias(别名),也就是说【ll 】是【 ls -l --color=auto 】的别名,提供了一种更方便的方式来执行常用的 ls 命令选项~

            ls -l 是列出目录内容的详细信息(如权限、所有者、大小、修改时间等)~

       --color=auto 是根据终端类型自动添加颜色,以便更容易区分不同类型的文件~

    那么我们的系统就是支持给命令起别名的~

    比如:

    alias mypwd='pwd'

    命令行输入mypwd就可以达到pwd的效果~

    关于别名的删除:

    第一种方法:直接关闭Xshell

    第二种方法:alias 别名=‘ ’   【把别名设置为空】

    cat

    语法:cat [选项] [文件]

    功能:查看普通目标文件的内容

    Linux系统中直接输入 cat 命令而不添加任何参数或文件名时,它会进入一种交互式输入模式【输入后按Enter键打印输入内容,按Ctrl+c终止输入】

    常用选项:

    • -b 对非空输出行编号【空行不进行编号】
    • -n 对输出的所有行编号【空行也有内容('\n')】
    • -s 不输出多行空行【相邻空行压缩为一行】

    echo

    echo 用于在终端输出文本或变量的值

    这里首先输出一个重要结论【Linux下,一切皆文件!

    Linux下,一切皆文件!【理论小课堂】

    比如:

    1》打印数据到显示器上——>转换成为理解成对文件的操作——>向显示器文件进行写入
    2》从键盘读取数据到内存——>从键盘文件里面读取内容

    那么我们使用到的echo命令就是向我们的显示器文件写入后续字符串内容~

    接下来,我们进一步操作~

    输出重定向【重新改变输出的方向】

            输出重定向是命令行中重定向命令输出到文件或程序的技术~

    核心操作包括:

          >覆盖写入文件,>>追加写入;

          2>重定向错误,2>>追加错误;

          &>2>&1合并输出与错误;

                       管道符|可将输出传给其他命令处理

    典型用途为日志记录、静默执行、批量处理结果~

    我们来看看>覆盖写入文件【如果写入文件不存在,它就会创建一个新文件,清除旧内容,写入新内容】

            我们可以看到echo命令加上>,将字符串内容写入到了log.txt,而不是显示器文件~我们再次写入新内容查看结果~

            我们可以看到新内容覆盖了原来的内容~它的操作就是【清除旧内容,写入新内容

            同时,如果写入文件不存在,它就会创建一个新文件~

            如果我们不希望旧内容被清空呢?我们就可以使用【>>】进行追加重定向追加内容~

    输入重定向【重新改变输入的方向】

            输入重定向(Input Redirection)是命令行操作中用于将命令或程序的输入源从默认设备(通常是键盘)重定向到其他位置(如文件、字符串或另一个命令的输出)~

    cat < log.txt:这个命令使用输入重定向将 log.txt 文件的内容传递给 cat 命令~

    cat 命令会读取 log.txt 的内容并输出到标准输出【显示器】~

    cp

    语法:cp [选项] 源文件或目录(src) 目标文件或目录(dst)


    功能:复制文件或目录
    说明:

    • cp指令用于复制文件或目录
    • 如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中

    使用:

    1、拷贝文件到家目录

    2、拷贝文件到上级目录【这里也就是我们的家目录】

    也就是说如果后面是单纯的目录,那么就会把文件拷贝到指定目录~

    3、拷贝文件到上级目录并且更改名字

    也就是说如果后面是目录+新文件名,那么就会把文件拷贝到指定目录并且重新命名~

    常用选项

    • -f--force 强行复制文件或目录,不论目的文件或目录是否已经存在
    • -i--interactive 覆盖文件之前先询问用户
    • -r 递归处理,将指定目录下的文件与子目录一并处理。若源文件或目录的形态,不属于目录或符号链接,则一律视为普通文件处理

    4、拷贝目录到上级目录

    我们可以看到单纯的拷贝是不能达到效果的,我们还需要加【-r】选项~

    5、拷贝目录到指定目录并且重新命名

    例:拷贝d1到上级目录下的lesson2并且重新命名为mydir

    6、拷贝文件到指定目录,覆盖文件之前先询问用户【-i】【-ri】

    7、拷贝文件到指定目录,覆盖文件之前不询问用户【-f】【-rf】

    这一篇博客到这里就结束啦~后续基础指令我们下一篇博客再见~


      ♥♥♥本篇博客内容结束,期待与各位优秀程序员交流,有什么问题请私信♥♥♥

      ♥♥♥如果这一篇博客对你有帮助~别忘了点赞分享哦~♥♥♥

      ✨✨✨✨✨✨个人主页✨✨✨✨✨✨


      http://www.xdnf.cn/news/557317.html

      相关文章:

    • Git命令使用全攻略:从创建分支到合并的完整流程
    • 大模型高效微调技术全面解析:从PEFT原理到实战应用
    • 项目进度延误,如何按时交付?
    • 预训练模型:深度学习的通用特征引擎
    • Greenplum数据库维护篇之常用操作指导
    • TripGenie:畅游济南旅行规划助手:个人工作纪实(十八)
    • Windows逆向工程提升之IMAGE_DOS_HEADER
    • 定时任务延迟任务
    • linux内核编译学习笔记
    • Java异常处理与File类终极指南
    • 【基础知识】SPI协议的种类及异同
    • 数据库 1.0.1
    • DAY28类
    • MYSQL备份恢复知识:第四章:备份锁
    • 【优秀三方库研读】在 quill 开源库中为什么封装 safe_fwrite,而不是直接使用系统 fwrite
    • MySQL中添加一个具有创建数据库权限的用户
    • Java并发进阶系列:深度讨论jdk1.8 ConcurrentHashMap并发环境下transfer方法桶位分配过程
    • C/C++ Select Poll Epoll 多路转接
    • python -> matplotlib简单用法
    • Unity3D仿星露谷物语开发47之砍树时落叶特效
    • Wan2.1 加速推理方法
    • 使用cursor自动生成前后端分离的web应用程序
    • ROS2 pkg 创建功能包
    • [ 计算机网络 ] 深入理解OSI七层模型
    • 经验过程简介与suprema的集中(Guntuboyina理论统计学笔记)
    • QT高DPI支持
    • linux之 pcie MSI-X中断编程
    • 自动化测试核心知识梳理与 Java 代码详解
    • 基于正点原子阿波罗F429开发板的LWIP应用(3)——Netbiosns功能
    • 嵌入式培训之系统编程(一)标准IO、文件操作