Linux(1)|入门的开始:Linux基本指令

一、浅谈操作系统

1、操作系统是什么?

操作系统是一款做软硬件管理的软件

我们可以发现除了上面的应用软件,操作系统、设备驱动和硬件都是为软硬件服务的,为了满足用户的不同需求,在操作系统之上需要有各种不同的应用软件。

2、一个好的操作系统衡量标准是什么?

假如你是用户,在你进行各种操作的时候,一会系统崩溃蓝屏了,响应操作一会卡顿,一会正常的,你肯定下次不会再考虑使用了,所以操作系统的稳定 是其中的一个标准;当我们正准备和朋友来一场激情的双人大战时,电脑开机的速度十分龟速,但好在成功开机了,正兴致冲冲的点开游戏时,发现鼠标怎么点击也没有反应,等到右下角弹起鼠标驱动程序加载完成,鼠标这才有了反应,由此一个操作系统的速度快不快 也是标准之一;在网络时代,我们对于自己的隐私是及其关注的,如果一个操作系统连最基本的安全都做不到,那就很难有人使用了。

所以稳定、速度、安全是衡量操作系统是否良好的标准。

3、为什么要有操作系统?

操作系统的核心工作: 通过对下管理好软硬件资源的手段,达到对上提供良好的(稳定、速度、安全)的操作环境/使用环境

4、如何理解我们在计算机上的所有操作?

例如我们c语言的printf->将内容打印到显示屏上

c语言文件操作->对磁盘文件的读写操作等等

我们能发现我们在计算机上的所有行为都会转换成硬件行为!

我们所有的行为,全部都要自上而下贯穿计算机的软硬件结构。

这种自上而下打个生动形象的比方,硬件就像下面的"牛马"程序员,设备驱动就像项目经理,管理和分配任务,给我们下面的"牛马"程序员,而操作系统像是我们的大boos,评判和决策项目,将指标丢给我们项目经理也就是设备驱动。

因此,我们也能推断出几乎我们的所有行为,未来都和操作系统直接或间接相关!

5、Linux操作系统和windows操作系统

Linux操作系统的特点:纯命令行,当然Linux也有图形化界面,不过早期Linux都是科研人员、专业人员使用的;windows操作系统的特点:图形化界面,为了用户的使用体验,比起一行行命令行,清晰可视化的图像化界面无疑更加,不过我们仍然可以通过win+R,输入cmd打开windows的命令行终端。无论是指令还是图形化界面,本质其实都是相同的。

6、是先有指令,还是现有图形化界面?是先有键盘,还是现有鼠标?为什么?

第一个问题肯定是现有指令,后有图形化界面。键盘和鼠标谁先出现呢?通过指令和图形化界面的顺序我们能推断出键盘肯定是先出现的,为什么呢?首先早期计算机是关注输入和输出的,键盘硬件的出现,实现了计算机的输入。可能大家都曾好奇过,为什么键盘的排列顺序这么奇怪,而键盘的前身正是沿用老式打字机排版。鼠标的出现为图形化界面带来实际意义,如果没有鼠标的点击,图形化界面,就发挥不了原本的功能。

二、部分基本指令和知识的补充

1、ls指令

语法:ls空格[选项]空格[目录或文件]

功能:对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息

常见选项:

-l:列出文件的详细信息
Go 复制代码
[xzx@instance-157t533k ~]$ mkdir dir1
[xzx@instance-157t533k ~]$ mkdir dir2
[xzx@instance-157t533k ~]$ mkdir text.txt
[xzx@instance-157t533k ~]$ ls -l
total 12
drwxrwxr-x 2 xzx xzx 4096 Aug 30 11:39 dir1
drwxrwxr-x 2 xzx xzx 4096 Aug 30 11:40 dir2
drwxrwxr-x 2 xzx xzx 4096 Aug 30 11:40 text.txt

我们通过mkdir新建目录,dir1、dir2和test.txt,通过ls -l,我们能看到目录的名字,目录的最近一次修改时间,目录的内存大小

Go 复制代码
[xzx@instance-157t533k ~]$ ls
dir1  dir2  text.txt

而我们单独使用ls只会列出该目录下的所有子目录与文件

同时我们的ls -l 是等价于ll的

Go 复制代码
[xzx@instance-157t533k ~]$ ls -l
total 12
drwxrwxr-x 2 xzx xzx 4096 Aug 30 11:39 dir1
drwxrwxr-x 2 xzx xzx 4096 Aug 30 11:40 dir2
drwxrwxr-x 2 xzx xzx 4096 Aug 30 11:40 text.txt
[xzx@instance-157t533k ~]$ ll
total 12
drwxrwxr-x 2 xzx xzx 4096 Aug 30 11:39 dir1
drwxrwxr-x 2 xzx xzx 4096 Aug 30 11:40 dir2
drwxrwxr-x 2 xzx xzx 4096 Aug 30 11:40 text.txt

可以看到两次的结果是相同的,所以在日常使用中可以简写命名行

-a:列出目录下的所有文件,包括以.开头的隐含文件、
Go 复制代码
[xzx@instance-157t533k ~]$ ls -a
.  ..  .bash_history  .bash_logout  .bash_profile  .bashrc  .cache  .config  dir1  dir2  text.txt

此时能看到与之前ls展示的文件相比,多出了以.开头的文件和.、..这两个文件(后面在单独解释)

我们的-l -a可以一起使用,并且-l -a 等价与-al等价与-la

Go 复制代码
[xzx@instance-157t533k ~]$ ls -a -l
total 44
drwx------  7 xzx  xzx  4096 Aug 30 11:40 .
drwxr-xr-x. 3 root root 4096 Aug 29 19:42 ..
-rw-------  1 xzx  xzx   216 Aug 30 11:53 .bash_history
-rw-r--r--  1 xzx  xzx    18 Nov 25  2021 .bash_logout
-rw-r--r--  1 xzx  xzx   193 Nov 25  2021 .bash_profile
-rw-r--r--  1 xzx  xzx   231 Nov 25  2021 .bashrc
drwxrwxr-x  3 xzx  xzx  4096 Aug 29 16:24 .cache
drwxrwxr-x  3 xzx  xzx  4096 Aug 29 16:24 .config
drwxrwxr-x  2 xzx  xzx  4096 Aug 30 11:39 dir1
drwxrwxr-x  2 xzx  xzx  4096 Aug 30 11:40 dir2
drwxrwxr-x  2 xzx  xzx  4096 Aug 30 11:40 text.txt
[xzx@instance-157t533k ~]$ ls -al
total 44
drwx------  7 xzx  xzx  4096 Aug 30 11:40 .
drwxr-xr-x. 3 root root 4096 Aug 29 19:42 ..
-rw-------  1 xzx  xzx   237 Aug 30 11:58 .bash_history
-rw-r--r--  1 xzx  xzx    18 Nov 25  2021 .bash_logout
-rw-r--r--  1 xzx  xzx   193 Nov 25  2021 .bash_profile
-rw-r--r--  1 xzx  xzx   231 Nov 25  2021 .bashrc
drwxrwxr-x  3 xzx  xzx  4096 Aug 29 16:24 .cache
drwxrwxr-x  3 xzx  xzx  4096 Aug 29 16:24 .config
drwxrwxr-x  2 xzx  xzx  4096 Aug 30 11:39 dir1
drwxrwxr-x  2 xzx  xzx  4096 Aug 30 11:40 dir2
drwxrwxr-x  2 xzx  xzx  4096 Aug 30 11:40 text.txt
[xzx@instance-157t533k ~]$ ls -la
total 44
drwx------  7 xzx  xzx  4096 Aug 30 11:40 .
drwxr-xr-x. 3 root root 4096 Aug 29 19:42 ..
-rw-------  1 xzx  xzx   256 Aug 30 11:58 .bash_history
-rw-r--r--  1 xzx  xzx    18 Nov 25  2021 .bash_logout
-rw-r--r--  1 xzx  xzx   193 Nov 25  2021 .bash_profile
-rw-r--r--  1 xzx  xzx   231 Nov 25  2021 .bashrc
drwxrwxr-x  3 xzx  xzx  4096 Aug 29 16:24 .cache
drwxrwxr-x  3 xzx  xzx  4096 Aug 29 16:24 .config
drwxrwxr-x  2 xzx  xzx  4096 Aug 30 11:39 dir1
drwxrwxr-x  2 xzx  xzx  4096 Aug 30 11:40 dir2
drwxrwxr-x  2 xzx  xzx  4096 Aug 30 11:40 text.txt

-al或者-la或者-l -a:列出所有文件,包括隐藏文件的详细信息

文件类型:以d开头:是一个目录,以-开头:是一个普通文件

-d:将目录像文件一样显示,而不是显示其下的文件
Go 复制代码
[xzx@instance-157t533k ~]$ ls
dir1  dir2  text.txt
[xzx@instance-157t533k ~]$ ls -dl
drwx------ 7 xzx xzx 4096 Aug 30 11:40 .

我们的ls展示当前目录下我们的子目录,但我们想要知道我们当前目录的详细信息,则可以通过-d -l或者-dl,得到当前目录的详细信息

-F:在每个文件名后附上一个字符以说明该文件的类型,"*"表示可执行的普通文件;"/"表示目录;"@"表 示符号链接;"|"表示FIFOs;"="表示套接字(sockets)。(目录类型识别)
Go 复制代码
[xzx@instance-157t533k ~]$ ls -aF
./   .bash_history  .bash_profile  .cache/   dir1/  text.txt/
../  .bash_logout   .bashrc        .config/  dir2/

2、pwd指令

语法:pwd

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

常用选项:无

Go 复制代码
[xzx@instance-157t533k ~]$ cd dir1
[xzx@instance-157t533k dir1]$ pwd
/home/xzx/dir1
[xzx@instance-157t533k dir1]$ mkdir dirr1
[xzx@instance-157t533k dir1]$ cd dirr1
[xzx@instance-157t533k dirr1]$ pwd
/home/xzx/dir1/dirr1

我们通过cd进入到dirr1,pwd打印的结果也证明了我们进入到dirr1目录中

这里展示的路径由"/"分割,所以"/"又叫做路径分隔符

一个目录里面可以放多个目录或者普通文件吗?可以的

由此我们能推断出Linux的整个目录结构:一定是一个多叉树的样子

Linux的目录结构整体是一个多叉树,它的叶子节点一定是空目录或者非目录文件,路上节点一定是分空目录

所以我们所有的对文件或者目录的增删查改,本质都是对这颗多叉树的增删查改

.和..是什么?

Linux下任何一个目录下面都有两个隐藏文件.和..

.:表示当前路径

通过pwd:显示当前命令行操作时所处的目录。超级用户/root...,普通用户/home/名字

Go 复制代码
[xzx@instance-157t533k dir1]$ pwd
/home/xzx/dir1
[xzx@instance-157t533k dir1]$ cd .
[xzx@instance-157t533k dir1]$ pwd
/home/xzx/dir1

这里使用普通用户演示,cd:进入目录,我们先pwd查看自己当前所在目录,cd .后继续pwd,发现我们所处目录未改变

而.存在的意义:帮助用户定位当前目录下的一个文件

..:表示当前路径的上级路径
Go 复制代码
[xzx@instance-157t533k 8_30]$ cd test
[xzx@instance-157t533k test]$ pwd
/home/xzx/8_30/test
[xzx@instance-157t533k test]$ cd ..
[xzx@instance-157t533k 8_30]$ pwd
/home/xzx/8_30

我们通过cd进入test目录,pwd显示当前所在目录。cd ..后再pwd,可以看到我们退回到了8_30这个目录

借用上面的示例图,我们如何找到test.c这个文件呢?

很明显就像一条路线一样,从/->home->bit->test.c,所以我们定位一个文件,通常用路径 来进行定位,而路径定位则需要确保唯一性

为什么路径定位具有唯一性?

对于任何一个节点都只有一个父节点,由子到父的顺序是唯一 ,所以路径定位具有唯一性

路径的分类

1、绝对路径

对于/home/bit/test.c,这样从根目录(/)开始定位到指定位置,具有唯一的路径,称之为绝对路径

2、相对路径

假如我们的lin路径下有一个c++.txt的文件,而我们当前所在目录为/usr/bin,我们从bin到c++.txt,只需要../lin/c++.txt即可,而这种以当前所处的路径为起始参考位置,来进行特定文件的定位,这种路径称为:相对路径

相对路径的缺点:当所处的路径发生变化,可能会导致相对路径发生变化

我们该怎么使用?

1、绝对路径往往比较长,但是能保证不变,一般在固定场景配置文件中使用

2、一般命令行输入,比较常用相对路径

3、cd指令

语法:cd空格目录名

功能:改变工作目录。将当前工作目录改变到指定的目录下

常见选项:

1、cd ..:返回上级路径
Go 复制代码
[xzx@instance-157t533k 8_30]$ cd test
[xzx@instance-157t533k test]$ pwd
/home/xzx/8_30/test
[xzx@instance-157t533k test]$ cd ..
[xzx@instance-157t533k 8_30]$ pwd
/home/xzx/8_30
2、cd /home/zhangsan/Linux/:绝对路径
3、cd ../lisi/Linux/:相对路径
4、cd ~:进入用户的家目录
Go 复制代码
[xzx@instance-157t533k 8_30]$ pwd
/home/xzx/8_30
[xzx@instance-157t533k 8_30]$ cd ~
[xzx@instance-157t533k ~]$ pwd
/home/xzx
家目录的区别:root用户的家目录是/root,普通用户的家目录是/home/xxx这里xxx代表用户的名字
5、cd -:返回最近(上一次)访问的目录
Go 复制代码
[xzx@instance-157t533k 8_30]$ pwd
/home/xzx/8_30
[xzx@instance-157t533k 8_30]$ cd test
[xzx@instance-157t533k test]$ pwd
/home/xzx/8_30/test
[xzx@instance-157t533k test]$ cd -
/home/xzx/8_30

4、touch指令

语法:touch空格[选项]...文件...

功能:touch命令参数可更改文档或者目录的日期时间,包括存取时间和更改时间,或者建立一个不存在的文件

常见选项:

touch空格+文件名:创建一个普通文件
Go 复制代码
[xzx@instance-157t533k 8_30]$ touch data.txt
[xzx@instance-157t533k 8_30]$ ll
total 192
-rw-rw-r-- 1 xzx xzx      0 Aug 30 22:53 data.txt
-rw-rw-r-- 1 xzx xzx 168894 Aug 30 19:55 log.txt
-rw-rw-r-- 1 xzx xzx  16233 Aug 30 20:44 temp.txt
drwxrwxr-x 2 xzx xzx   4096 Aug 30 22:01 test
-rw-rw-r-- 1 xzx xzx    133 Aug 30 18:51 test.c

5、mkdir指令

语法:mkdir空格[选项]dirname...

功能:在当前目录下创建一个名为"dirname"的目录

常用选项:

Go 复制代码
[xzx@instance-157t533k 8_30]$ mkdir d1
[xzx@instance-157t533k 8_30]$ cd d1
[xzx@instance-157t533k d1]$ mkdir d2
[xzx@instance-157t533k d1]$ cd d2
[xzx@instance-157t533k d2]$ mkdir d3
[xzx@instance-157t533k d2]$ cd d3
[xzx@instance-157t533k d3]$ pwd
/home/xzx/8_30/d1/d2/d3

我们想要创建d1/d2/d3这样的路径,如果这样一层一层的创建,显然十分麻烦,此时-p排上用场

-p:-p,-parents可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录
Go 复制代码
[xzx@instance-157t533k 8_30]$ mkdir -p d11/d22/d33
[xzx@instance-157t533k 8_30]$ tree
.
├── d1
│   └── d2
│       └── d3
├── d11
│   └── d22
│       └── d33
├── data.txt
├── log.txt
├── temp.txt
├── test
└── test.c

通过mkdir -p d11/d22/d33,一次性创立出一整条路经,对于这种树形展示当前目录和文件,下面会单独介绍

树形展示

1、xshell是没有自带的,我们输入tree指令没有反应

2、需要一个root账号

3、输入 yum install -y tree 回车后,系统自动开始安装

结尾

到这里,关于操作系统的基础认知和 Linux 核心指令的分享就暂告一段落了。从理解操作系统如何充当软硬件的 "中间人",到亲手用指令操控文件与目录,其实我们每一次输入命令、查看结果的过程,都是在和计算机的底层逻辑对话。

这些基础指令看似简单,却是玩转 Linux 的第一步 ------ 后续无论是处理文件、管理进程,还是搭建服务,都离不开这些 "基本功"。如果刚开始记不住所有选项也没关系,多动手尝试ls -l看文件详情、用cd ..回退目录、拿mkdir -p创建层级路径,慢慢就会形成肌肉记忆。

操作系统的世界远不止这些,还有更多底层原理和实用技巧等着探索。希望这篇内容能帮你推开大门,接下来就带着好奇心,继续在指令行里 "折腾" 吧!

相关推荐
czhc11400756636 小时前
Linux 830 shell:expect,ss -ant ,while IFS=read -r line,
linux·运维·r语言
滴滴滴嘟嘟嘟.7 小时前
嵌入式Linux驱动开发:蜂鸣器驱动
linux·运维·驱动开发
梅见十柒7 小时前
UNIX网络编程笔记:共享内存区和远程过程调用
linux·服务器·网络·笔记·tcp/ip·udp·unix
溯光笔记8 小时前
服务器内网穿透NPS搭建过程 - 服务端linux服务器 客户端windows系统 - 溯光笔记
linux·服务器·windows
2501_930124709 小时前
Linux之Shell编程(三)流程控制
linux·前端·chrome
Sadsvit10 小时前
Ansible 自动化运维工具:介绍与完整部署(RHEL 9)
linux·运维·centos·自动化·ansible
偶像你挑的噻11 小时前
linux应用开发-嵌入编程基础
linux
偶像你挑的噻11 小时前
linux应用开发-环境构建
linux
~黄夫人~12 小时前
Nginx Ubuntu vs CentOS 常用命令对照表---详解笔记
运维·笔记·学习·nginx·ubuntu·centos
好名字更能让你们记住我13 小时前
Linux网络基础1(一)之计算机网络背景
linux·服务器·网络·windows·计算机网络·算法·centos