Linux系统篇:基本指令Chapter 1:对文件的操作和认识

📅 2026/7/24 23:13:25 👁️ 阅读次数 📝 编程学习
Linux系统篇:基本指令Chapter 1:对文件的操作和认识

观众老爷们大家好 这里是邪修KING的独家频道
本文属于系列Linux系统篇 ——操作指令
一起学Linux的小伙伴可订阅专栏: Linux系统篇

前置准备:下载安装 XShell,购买云服务器,用XShell登陆主机进行远程操作,具体教程可参考
比特Linux安装教程

概述&序言

文件和路径的认识

命令,其实就是文件!
命令的本质== 可执行文件 == 我们写的可执行文件
绝对路径(查找目标文件具有唯一性的称为绝对路径):/home/ubuntu ;
路径:Linux访问一个文件,先找到它。找到一个文件称为:路径;
相对路径(以非/为参照位置,定位一个文件):ls …/test.c ;

clear清理;
先来认识两条基本指令:
whoami → Who am I? 我是谁(用户名)
pwd → Print Working Directory 我在哪(目录)

ubuntu@VM-0-16-ubuntu:~$whoamiubuntu ubuntu@VM-0-16-ubuntu:~$pwd/home/ubuntu

一、ls指令

语法: ls [选项] [⽬录或⽂件]
功能:对于⽬录,该命令列出该⽬录下的所有⼦⽬录与⽂件。对于⽂件,将列出⽂件名和其他信息。
ls当前文件名或者目录,ls-l = ll 更详细的信息(属性)+文件名;
ll就是系统默认alias取的别名,两者一个意思

alias:取别名,比如alias zhangsan=pwd(临时取别名,重登xshell会自动调回来,不认识zhangsan)
任何一个目录,即便是空的。系统也要默认给该目录自动生成.(指向自己)和…(指向上级),而根目录/ 比较特殊 /的.和…都指向自己;
文件目录就是一个多叉树

二、touch:创建一个空普通文件

touchtest.txt

文件已经存在:更新文件的时间戳(默认同时更新Access、Modify)

touch-atest.txt# 只更新 Access 时间touch-mtest.txt# 只更新 Modify 时间

以下了解即可

touch 不能修改 Change 时间!Change 由内核自动管理。
Access (atime) 访问时间:最后一次读取文件内容的时间
Modify (mtime) 修改时间:最后一次修改【文件内容】的时间
Change (ctime) 状态改变时间:最后一次修改【文件元数据 (inode 信息)】的时间

补充:stat命令:查看文件完整元信息(权限、大小、所有者、三个核心时间戳)

三、mkdir:语法:mkdir [选项] dirname…

功能:在当前⽬录下创建⼀个名为 “dirname”的⽬录
常用选项:-p/–parents:可以是一个路径名称,即一次性创建多个目录

mkdirmydir-pa/b/c/d

tree:语法:tree a
功能:将当前名为a的目录成树状图展现出来

[whb@bite-alicloud test]$ tree path1 a └── b └── c └── d

四、rmdir和rm指令

rmdir:只能删除一个空目录(知道即可)

rm(最常用的删除文件命令):

rm -f mydir(强制删除:-f不提示yes或no)
rm -r a(递归删除:文件多叉树直接删除整个a树状文件)

警告rm命令在Linux系统中使用不同于Windows,没有回收站这个东西,删了就是删了,一旦不小心执行了 rm -rf /,则需要重装系统,若是云服务器,可以在相应购买的地方进行重装较为方便

Linux Shell 中 * 通配符详解

“ * ” = 通配符(万能匹配),匹配任意长度任意字符(包括 0 个字符)
注意:默认不会匹配 . 开头的隐藏文件

ls*# 列出当前所有非隐藏文件ls*.txt# 匹配后缀 .txt → a.txtlstest*# 匹配以test开头 → test.logls*log# 匹配以log结尾 → test.logls*es*# 名字中间包含es → test.log

关于tree命令安装在Ubuntu中的问题

如图则是命令行不适用,yum是CentOS/RHEL的系列包管理器
而Ubuntu则用:sudo apt install tree -y;进行安装,还有问题可根据情况通过ai工具进行查询动起手来!

如果在命令行中,出现了异常情况,统一尝试ctrl+c来终止异常

五、man 手册的章节编号(Linux 标准手册分区)

man [章节号] 命令
Linux 手册分为若干区段,不同数字代表不同类型文档
(以下先知道了解即可。最常用的是前三个)

编号含义典型例子
1用户命令(shell 可直接执行的程序、指令)ls、rm、printf(命令)、tree
2系统调用(内核提供 C 函数)open()、fork()、unlink()
3库函数(C 标准库函数)printf()、scanf()、strlen()
4设备文件/dev 下硬件设备说明
5配置文件格式/etc/passwd、fstab格式说明
6游戏
7杂项、协议、宏正则、信号、inode 概念
8管理员 (root) 系统工具fdisk、mount
ubuntu@VM-0-16-ubuntu:~$manrm


补充几个 man 内常用快捷键(方便查阅文档)
q → 退出 man 页面 (当前需要)
空格 → 向下翻一页
b → 向上翻一页

补充Linux中好用的键位:方向的上下键↑↓:用来切换历史命令,上一次输入的命令,可尝试一下

Linux Shell 中的 printf

先分清两个极易混淆的东西:
C 语言 printf() 函数:代码里用的
Shell 内置命令 printf:终端直接敲的命令(你现在学的这个)
作用:格式化输出文本,不带换行意思
例子:

printfhello# 输出:helloubuntu@xxx:~$# 没有换行,文本紧贴命令提示符,一定要加 \n

警告重中之重:printf 有两份文档!

① man 1 printf
打开 Shell 内置命令 printf(终端直接敲的命令)

printf"hello\n"

② man 3 printf
打开 C 语言标准库函数 printf ()(写代码里面用的函数)
如果你直接输入:

manprintf

man 会从小到大顺序查找章节:先找到第 1 章,所以默认展示【shell 命令 printf】。
如果你想看 C 语言函数,必须手动指定:man 3 printf
一句话区分 printf 冲突:
man 1 printf →终端指令
man 3 printf →C 代码函数

六、cp指令(重要)

语法: cp [选项] 源⽂件或⽬录 ⽬标⽂件或⽬录
功能: 复制⽂件或⽬录

说明:
• cp指令⽤于复制⽂件或⽬录
• 如同时指定两个以上的⽂件或⽬录,且最后的⽬的地是⼀个已经存在的⽬录,则它会把前⾯指定
的所有⽂件或⽬录复制到此⽬录中
先touch(创建)hello.txt,然后nano(编辑记事本)

常⽤选项
• -f 或 --force 强⾏复制⽂件或⽬录, 不论⽬的⽂件或⽬录是否已经存在
• -i 或 --interactive 覆盖⽂件之前先询问⽤⼾
• -r 递归处理,将指定⽬录下的⽂件与⼦⽬录⼀并处理。若源⽂件或⽬录的形态,不属于⽬录或符
号链接,则⼀律视为普通⽂件处理

:nano 是 Linux 终端下轻量级文本编辑器,你可以类比成终端里的「记事本」。
Ubuntu 默认自带,打开直接打字,没有复杂模式,新手首选。

ubuntu@VM-0-16-ubuntu:~$touchhello.txt ubuntu@VM-0-16-ubuntu:~$nanohello.txt

在里面输入两行东西如下:

然后ctrl+x;y;回车返回指令界面
再执行

cphello.txt world.txt


就会发现新创建了一个world.txt文件,并且hello.txt里的内容都拷贝到world.txt里面了
还可以

cphello.txt../a.txt##拷贝到上级目录并创建一个上级目录的a.txt文件里cphello.txt../##直接将该文件拷贝到上级目录里

最后我们看普通文件和多个文件的cp

# cp普通⽂件[whb@bite-alicloud test]$echo"你好⽐特就业课">myfile.txt[whb@bite-alicloud test]$catmyfile.txt 你好⽐特就业课[whb@bite-alicloud test]$ ll total4-rw-rw-r--1whb whb22Jan1115:47 myfile.txt[whb@bite-alicloud test]$cpmyfile.txt myfile-backup.txt[whb@bite-alicloud test]$ ll total8-rw-rw-r--1whb whb22Jan1115:47 myfile-backup.txt -rw-rw-r--1whb whb22Jan1115:47 myfile.txt[whb@bite-alicloud test]$catmyfile-backup.txt 你好⽐特就业课# 将多个⽂件拷⻉到指定路径下[whb@bite-alicloud test]$ ll total8-rw-rw-r--1whb whb22Jan1115:47 myfile-backup.txt -rw-rw-r--1whb whb22Jan1115:47 myfile.txt[whb@bite-alicloud test]$mkdirdir[whb@bite-alicloud test]$ ll total12drwxrwxr-x2whb whb4096Jan1115:48dir-rw-rw-r--1whb whb22Jan1115:47 myfile-backup.txt -rw-rw-r--1whb whb22Jan1115:47 myfile.txt[whb@bite-alicloud test]$cp*.txtdir# *表⽰通配符,匹配所有.txt结尾的⽂件名[whb@bite-alicloud test]$ ll total12drwxrwxr-x2whb whb4096Jan1115:48dir-rw-rw-r--1whb whb22Jan1115:47 myfile-backup.txt -rw-rw-r--1whb whb22Jan1115:47 myfile.txt[whb@bite-alicloud test]$ treedirdir├── myfile-backup.txt └── myfile.txt# cp如果⽬标⽂件存在,就覆盖[whb@bite-alicloud test]$echo"hello bite tech">myfile.txt[whb@bite-alicloud test]$catmyfile.txt hello bite tech[whb@bite-alicloud test]$cpmyfile.txt myfile-backup.txt[whb@bite-alicloud test]$catmyfile-backup.txt hello bite tech# 拷⻉前询问[whb@bite-alicloud test]$cp-imyfile.txt myfile-backup.txt cp: overwrite ‘myfile-backup.txt’? y# 递归强制拷⻉整个⽬录[whb@bite-alicloud ~]$ treetesttest├──dir│ ├── myfile-backup.txt │ └── myfile.txt ├── myfile-backup.txt └── myfile.txt1directory,4files[whb@bite-alicloud ~]$cp-rftesttest-backup[whb@bite-alicloud ~]$ tree test-backup test-backup ├──dir│ ├── myfile-backup.txt │ └── myfile.txt ├── myfile-backup.txt └── myfile.txt1directory,4files