♥♥♥~~~~~~欢迎光临知星小度博客空间~~~~~~♥♥♥
♥♥♥零星地变得优秀~也能拼凑出星河~♥♥♥
♥♥♥我们一起努力成为更好的自己~♥♥♥
♥♥♥如果这一篇博客对你有帮助~别忘了点赞分享哦~♥♥♥
♥♥♥如果有什么问题可以评论区留言或者私信我哦~♥♥♥
✨✨✨✨✨✨ 个人主页✨✨✨✨✨✨
这一篇博客我们将开启新的专栏——Linux学习~准备好了吗~我们发车啦~🚗🚗🚗🚗🚗🚗
目录
什么是Linux
Linux是一款开源的操作系统,具备多用户多任务、高度稳定、可定制和跨平台等多重特点
Linux的开源性使得全球范围内的开发者能够共同合作,不断改进和完善系统。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
是 用于查看文件或文件系统详细信息的命令~
- 文件元数据
- 文件类型(普通文件/目录/符号链接等)
- 权限、所有者、所属组
- 大小(字节)、inode 号、块数量
- 三个关键时间戳:
- Access:最后一次访问时间(
atime
) - Modify:最后一次内容修改时间(
mtime
) - Change:最后一次元数据变更时间(
ctime
,如权限修改)
- Access:最后一次访问时间(
- 文件系统信息(需
-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)
定义:根目录是Linux文件系统的最顶层,用斜杠
/
表示。它是所有其他目录和文件的起点。用途:
- 包含系统中的所有其他目录和文件。
- 是文件系统层次结构的基础。
权限:通常只有系统管理员(root用户)有权限对其进行修改。
主/家目录(Home Directory)
定义:主目录是每个用户在Linux系统上的个人目录,通常位于
/home/username
下,其中username
是用户的登录名。用途:
- 存储用户的个人文件、配置文件和应用程序数据。
- 用户可以在自己的主目录中自由创建、修改和删除文件和目录。
权限:用户对其主目录拥有完全的访问权限,而其他用户通常只有读权限或没有权限。
总结
- 根目录是整个文件系统的顶层,是系统管理员管理的主要区域。
- 主/家目录是用户的个人空间,用户可以在其中自由管理自己的文件。
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】
这一篇博客到这里就结束啦~后续基础指令我们下一篇博客再见~
♥♥♥本篇博客内容结束,期待与各位优秀程序员交流,有什么问题请私信♥♥♥
♥♥♥如果这一篇博客对你有帮助~别忘了点赞分享哦~♥♥♥
✨✨✨✨✨✨个人主页✨✨✨✨✨✨