![头像](https://img-blog.csdnimg.cn/img_convert/efe5c2d9ff97c8f7dafdb16af4a23453.png)
目录
前言
可能很多刚开始接触Linux的童鞋们和我一样,在这之前对Linux并不熟悉,只知道Linux是一个操作系统,之外一概不知。没关系,问题不大,本篇文章将会带你初步的认识Linux,了解Linux的相关背景和一些简单的指令,让你从一个小萌新成为一个大萌新。
本文使用xshell远程登录Linux。
💥1、初识Linux
💥1.1 什么是操作系统?
操作系统(Operating System,简称OS)是计算机系统中最为关键和基础的软件之一。它是计算机硬件与用户或应用程序之间的桥梁,负责管理计算机的硬件资源,为上层应用程序提供一个稳定、高效且安全的运行环境。
简而言之,操作系统是计算机正常运作的基石,让用户能够方便、高效地使用计算机。
💥1.2 各种操作系统对比
简单来说Linux就是一种自由和开放源代码的类Unix操作系统。我们大部分同学最熟悉的操作系统是Windows,也有少部分同学对macOS情有独钟,相比而言我们和Linux之间好像十分陌生。既然我们要学习Linux,那Linux与Windows、macOS等操作系统相比,有哪些优势呢?
-
开源性:Linux的源代码是公开的,这使得它成为了一个全球性的开源项目,吸引了大量开发者的参与和贡献。相比之下,Windows和macOS等商业操作系统则通常保持源代码的封闭性。
-
多用户、多任务:Linux支持多用户操作,每个用户都可以有自己的登录账号和权限,同时系统可以执行多个任务,如运行多个程序、处理多个网络请求等。这种特性使得Linux非常适合作为服务器操作系统。
-
稳定性和安全性:Linux内核设计精良,能够长时间稳定运行,同时提供了丰富的安全机制和工具,保护系统免受恶意攻击。这使得Linux在需要高稳定性和安全性的应用场景中备受青睐。
-
可定制性:由于Linux的开源特性,用户可以根据自己的需求对系统进行定制和裁剪,以适应不同的应用场景。这种灵活性是商业操作系统所难以比拟的。
💥1.3 现代Linux应用
在现代计算机领域,Linux的应用范围非常广泛,涵盖了服务器、数据中心、嵌入式系统、移动设备、桌面计算等多个领域。
- 服务器和数据中心:由于其稳定性、安全性和可扩展性,Linux成为许多大型互联网公司和企业的首选服务器操作系统。Linux提供了强大的网络功能、高级的服务器软件和工具,可以构建高性能、可靠的服务器架构。
- 嵌入式系统:Linux在嵌入式系统领域也有广泛应用。嵌入式Linux可以运行在各种设备上,如智能手机、平板电脑、网络路由器、物联网设备等。Linux提供了丰富的硬件支持、设备驱动程序和开发工具,使得开发者能够构建高度定制化和功能丰富的嵌入式系统。
- 桌面计算:尽管在个人电脑领域Windows和macOS占据主导地位,但Linux也提供了多个桌面环境(如GNOME、KDE等)和发行版(如Ubuntu、Fedora等),可以满足不同用户的需求。许多技术专业人员、开发者和研究人员选择在Linux桌面上工作。
- 云计算和容器化:Linux在云计算和容器化领域发挥着重要作用。许多云服务提供商使用Linux作为其基础设施的操作系统,同时Linux也推动了容器化技术的发展,如Docker和Kubernetes等。这些技术为应用程序的部署和管理提供了轻量级、可移植和可扩展的解决方案。
💥1.4 Linux常用版本
-
Ubuntu
特点:Ubuntu是最常见和广泛使用的Linux发行版之一,以易用性和友好的用户界面而闻名。它适用于个人用户和企业用户,提供长期支持(LTS)版本和定期发布的版本。
应用场景:桌面和服务器环境。 -
CentOS
特点:CentOS是一种基于Red Hat Enterprise Linux(RHEL)源代码的免费版本,注重稳定性和安全性。它被广泛用于服务器环境,并提供长期支持。
应用场景:企业级应用和服务器。 -
Fedora
特点:Fedora是由社区驱动的Linux发行版,也是Red Hat公司的测试平台。它提供了最新的软件包和技术,适用于开发者和技术爱好者。Fedora采用了快速的发布周期,每六个月发布一个新版本。
应用场景:开发者和技术爱好者。 -
Debian
特点:Debian是一个稳定、安全且广泛使用的Linux发行版,以其包管理系统(APT)而闻名,提供了大量的软件包选择。Debian有三个主要版本:稳定版、测试版和不稳定版,用户可以根据自己的需求选择合适的版本。
应用场景:服务器和桌面环境。 -
Kali Linux
特点:Kali Linux是专为网络安全和渗透测试而设计的发行版,内置了大量的安全工具和资源。
应用场景:安全专业人员和渗透测试爱好者。
💥2、Linux 和 Windows 目录结构对比
💥2.1 文件系统组织方式
1、 Windows
- Windows采用层次化的目录结构,类似于一棵树
- 根目录通常是某个驱动器(如C:\),但系统也可以安装在其他驱动器上
- 文件和文件夹按照树状结构组织,用户可以通过路径访问特定的文件或文件夹
2、Linux
- Linux采用单一的虚拟文件系统(VFS),这是一个树状结构,以根目录(/)开始
- 启动系统后,VFS会识别出各个硬盘,并将硬盘的分区挂载到VFS的某个子目录上
- 用户通过访问这些挂载点来访问硬盘上的数据和文件
💥2.2 目录命名和功能划分
1、Windows
- Windows目录:通常位于C:\Windows,包含操作系统的核心文件,如系统文件、驱动程序和系统配置
- Program Files:存放安装的应用程序的目录,可能是C:\Program Files或C:\Program Files (x86)(用于32位应用程序在64位系统上运行)
- Users目录:包含用户文件和配置文件,每个用户都有一个独立的子文件夹,以其用户名命名
- Documents、Desktop等:用户文档和桌面上的图标、快捷方式分别存放在Users目录下的相应子文件夹中
2、Linux
- 根目录(/): 所有目录和文件的起点,包含了许多重要的子目录
- /bin: 存放所有用户都可以使用的Linux基本操作命令
- /dev: 设备文件目录,主要存放系统中所有设备的相关信息
- /etc: 系统配置文件目录,包含各种系统配置文件
- /home:默认存放用户的宿主目录(除了root用户)
- /proc:虚拟文件系统,提供系统实时的信息,如CPU、内存、网络等
- /sbin:系统管理相关的二进制文件存放目录,普通用户权限较小
- /usr:安装除操作系统本身外的一些应用程序或组件
- /var:存放经常变化的文件,如日志文件、数据库文件等
💥2.3 目录访问方式
1、Windows
- 使用驱动器字母(如C:\)和路径来访问文件和文件夹
- 路径分隔符是反斜杠(\)
2、Linux
- 使用根目录(/)和路径来访问文件和文件夹
- 路径分隔符是正斜杠(/)
- 用户可以通过挂载点访问硬盘上的数据和文件
💥2.4 优缺点
1、Windows
- 优点: 用户存放东西的位置比较自由,系统结构简单便于新用户上手
- 缺点: 数据组织方式可能显得凌乱,系统文件和用户文件之间容易相互干扰
2、Linux
- 优点: 目录结构清晰,反映了系统运行机理,有助于高效组织数据和分类
- 缺点: 对于初学者来说,可能需要一定时间适应其复杂的目录结构
💥3、Linux简单指令
关于Linux的指令,我们在前期学习的时候并不需要大量的去记,只需要学习一些简单的基本指令,先把Linux用起来,在这个过程中边学边用就可。本篇文章也只介绍大概20个简单的指令。
学习Linux,我们可以对比较为熟悉的Windows学习,同样是操作系统,它们有什么相同的地方,有什么不同的地方,在学习的过程中我们通过对比,可以更快的熟悉Linux。
💥3.1 mkdir指令
语法:mkdir [选项] dirname…
功能:在当前目录下创建一个名为“dirname”的目录(文件夹)
[root@hcss-ecs-8f13 ~]# mkdir dirname
[root@hcss-ecs-8f13 ~]# ls
dirname
[root@hcss-ecs-8f13 ~]#
空文件也占据磁盘空间。文件 == 内容 + 属性(文件名、大小、日期…)。
- -p, --parents 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录
[root@hcss-ecs-8f13 dirname]# mkdir -p a/b/c
[root@hcss-ecs-8f13 dirname]# pwd
/root/dirname
[root@hcss-ecs-8f13 dirname]# ll
total 4
drwxr-xr-x 3 root root 4096 Sep 7 16:58 a
-rw-r--r-- 1 root root 0 Sep 7 16:50 hello.txt
[root@hcss-ecs-8f13 dirname]# ls
a hello.txt
[root@hcss-ecs-8f13 dirname]# cd a
[root@hcss-ecs-8f13 a]# ls
b
[root@hcss-ecs-8f13 a]# cd b
[root@hcss-ecs-8f13 b]# ls
c
[root@hcss-ecs-8f13 b]#
[root@hcss-ecs-8f13 ~]# pwd
/root
[root@hcss-ecs-8f13 ~]# tree dirname
dirname
├── a
│ └── b
│ └── c
└── hello.txt
3 directories, 1 file
[root@hcss-ecs-8f13 ~]#
💥3.2 ls指令
语法:ls [选项][目录或文件]
功能:对于目录,该命令列出该目录下的所有子目录和文件;对于文件,列出文件名和其属性
常用选项:
- -l: 列出文件的详细信息
- -a:列出目录下的所有文件,包括以 . 开头的隐藏文件
- -d:将目录象文件一样显示,而不是显示其下的文件
ls -l -a
、ls -a -l
、ls -al
、ls -la
都是可以的- 目录和文件都是可以隐藏的,可以主动创建隐藏目录和隐藏文件
- 在Linux中,任何一个目录(包括空目录),系统默认都会自带
.
和..
(隐藏)目录.
表示当前目录,..
表示上级目录
Windows文件夹:
上面的ls [选项]
是默认当前自己的目录,也可以指定目录:
[root@hcss-ecs-8f13 /]# pwd
/
[root@hcss-ecs-8f13 /]# ls
bin boot CloudrResetPwdAgent dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var
[root@hcss-ecs-8f13 /]# ls -l
total 64
lrwxrwxrwx. 1 root root 7 Jul 7 14:23 bin -> usr/bin
dr-xr-xr-x. 5 root root 4096 Sep 1 18:43 boot
drwxr-xr-x 7 root root 4096 Jul 7 14:56 CloudrResetPwdAgent
drwxr-xr-x 19 root root 3020 Sep 1 18:46 dev
drwxr-xr-x. 77 root root 4096 Sep 2 11:47 etc
drwxr-xr-x. 3 root root 4096 Sep 1 21:33 home
lrwxrwxrwx. 1 root root 7 Jul 7 14:23 lib -> usr/lib
lrwxrwxrwx. 1 root root 9 Jul 7 14:23 lib64 -> usr/lib64
drwx------. 2 root root 16384 Jul 7 14:23 lost+found
drwxr-xr-x. 2 root root 4096 Apr 11 2018 media
drwxr-xr-x. 2 root root 4096 Apr 11 2018 mnt
drwxr-xr-x. 2 root root 4096 Apr 11 2018 opt
dr-xr-xr-x 110 root root 0 Sep 1 18:46 proc
dr-xr-x---. 7 root root 4096 Sep 7 15:04 root
drwxr-xr-x 24 root root 640 Sep 1 18:46 run
lrwxrwxrwx. 1 root root 8 Jul 7 14:23 sbin -> usr/sbin
drwxr-xr-x. 2 root root 4096 Apr 11 2018 srv
dr-xr-xr-x 13 root root 0 Sep 5 23:15 sys
drwxrwxrwt. 9 root root 4096 Sep 7 03:31 tmp
drwxr-xr-x. 13 root root 4096 Jul 7 14:23 usr
drwxr-xr-x. 19 root root 4096 Jul 7 14:39 var
[root@hcss-ecs-8f13 /]# ls -l /home
total 4
drwx------ 2 yjz yjz 4096 Sep 1 21:42 yjz
[root@hcss-ecs-8f13 /]# ls /home -l
total 4
drwx------ 2 yjz yjz 4096 Sep 1 21:42 yjz
[root@hcss-ecs-8f13 /]#
💥3.3 pwd指令
语法: pwd
功能: 显示用户当前所在目录
[root@hcss-ecs-8f13 ~]# pwd
/root
[root@hcss-ecs-8f13 ~]#
在Windows中,我们同样也可以得到当前所在目录:
- Windows下路径分隔符是:
\
,Linux下路径分隔符是:/
💥3.4 touch指令
语法:touch [选项]…文件…
功能: touch命令参数可更改文档或目录的日期时间,包括存取时间和更改时间,或者新建一个不存在的文件
💥3.5 cd指令
语法: cd 目录名
功能: 改变工作目录,将当前工作目录改变到指定的目录下
举例:
- cd … : 返回上级目录
- cd /home/litao/linux/ : 绝对路径
- cd …/day02/ : 相对路径
- cd ~:进入用户家目
- cd -:返回最近访问目录
[root@hcss-ecs-8f13 ~]# pwd
/root
[root@hcss-ecs-8f13 ~]# cd dirname
[root@hcss-ecs-8f13 dirname]# pwd
/root/dirname
[root@hcss-ecs-8f13 mydir]# cd /root/dirname //绝对路径
[root@hcss-ecs-8f13 dirname]# pwd
/root/dirname
[root@hcss-ecs-8f13 dirname]# cd
[root@hcss-ecs-8f13 ~]# pwd
/root
[root@hcss-ecs-8f13 ~]# cd dirname //相对路径
[root@hcss-ecs-8f13 dirname]# pwd
/root/dirname
[root@hcss-ecs-8f13 dirname]# cd .. //返回上级路径
[root@hcss-ecs-8f13 ~]# pwd
/root
[root@hcss-ecs-8f13 ~]# cd mydir
[root@hcss-ecs-8f13 mydir]# pwd
/root/mydir
[root@hcss-ecs-8f13 mydir]# cd .
[root@hcss-ecs-8f13 mydir]# pwd
/root/mydir
[root@hcss-ecs-8f13 mydir]# cd ..
[root@hcss-ecs-8f13 ~]# cd ..
[root@hcss-ecs-8f13 /]# cd ..
[root@hcss-ecs-8f13 /]# pwd
[root@hcss-ecs-8f13 /]# ls -lad /
dr-xr-xr-x. 19 root root 4096 Sep 1 18:46 / //可以看到‘/’也是一个目录
[root@hcss-ecs-8f13 /]#
- Linux系统中,磁盘上的文件和目录被组成一棵目录树,每个节点都是目录或文件。
cd
、cd ~
:返回当前用户自己的家目录:
[root@hcss-ecs-8f13 /]# cd
[root@hcss-ecs-8f13 ~]# pwd
/root
[root@hcss-ecs-8f13 ~]# cd ~
[root@hcss-ecs-8f13 ~]# pwd
/root
[root@hcss-ecs-8f13 ~]#
什么是家目录? 任何一个Linux用户,用特定的用户名登录系统,默认都在家目录下。
命令本质上就是系统中的一个普通文件,是一个可执行程序。
[root@hcss-ecs-8f13 ~]# which ls
alias ls='ls --color=auto'
/usr/bin/ls
[root@hcss-ecs-8f13 ~]# which pwd
/usr/bin/pwd
[root@hcss-ecs-8f13 ~]# which mkdir
/usr/bin/mkdir
[root@hcss-ecs-8f13 ~]# ls /usr/bin/pwd
/usr/bin/pwd
[root@hcss-ecs-8f13 ~]# ls /usr/bin/pwd -l
-rwxr-xr-x 1 root root 33232 Nov 17 2020 /usr/bin/pwd
[root@hcss-ecs-8f13 ~]# ls /usr/bin/ls -l
-rwxr-xr-x 1 root root 117608 Nov 17 2020 /usr/bin/ls
[root@hcss-ecs-8f13 ~]# pwd
/root
[root@hcss-ecs-8f13 ~]# /usr/bin/pwd
/root
[root@hcss-ecs-8f13 ~]# /usr/bin/ls
dirname mydir text.txt
[root@hcss-ecs-8f13 ~]#
[root@hcss-ecs-8f13 ~]# alias abc=pwd
[root@hcss-ecs-8f13 ~]# pwd
/root
[root@hcss-ecs-8f13 ~]# abc
/root
[root@hcss-ecs-8f13 ~]# alias def=ls
[root@hcss-ecs-8f13 ~]# ls
dirname mydir text.txt
[root@hcss-ecs-8f13 ~]# def
dirname mydir text.txt
[root@hcss-ecs-8f13 ~]#
- 起别名是临时的,退出登录后起的别名就不能用了
[root@hcss-ecs-8f13 ~]# which ll
alias ll='ls -l --color=auto'
/usr/bin/ls
[root@hcss-ecs-8f13 ~]# which ls
alias ls='ls --color=auto'
/usr/bin/ls
[root@hcss-ecs-8f13 ~]# ls
dirname mydir text.txt
[root@hcss-ecs-8f13 ~]# ll
total 8
drwxr-xr-x 3 root root 4096 Sep 7 16:58 dirname
drwxr-xr-x 2 root root 4096 Sep 6 18:16 mydir
-rw-r--r-- 1 root root 0 Sep 7 15:04 text.txt
[root@hcss-ecs-8f13 ~]# ls -l
total 8
drwxr-xr-x 3 root root 4096 Sep 7 16:58 dirname
drwxr-xr-x 2 root root 4096 Sep 6 18:16 mydir
-rw-r--r-- 1 root root 0 Sep 7 15:04 text.txt
[root@hcss-ecs-8f13 ~]#
ls -l
和ll
的效果是一样的,因为ll
就是ls -l
的别名
💥3.6 rmdir 指令和 rm 指令
rmdir是一个与mkdir相对应的命令。mkdir是建立目录,而rmdir是删除命令。
语法:rmdir [-p][dirName]
适用对象:具有当前目录操作权限的所有使用者
功能:删除空目录
常用选项:
- -p 当子目录被删除后如果父目录也变成空目录的话,就连带父目录一起删除
rm命令可以同时删除文件或目录
语法:rm [-f-i-r-v][dirName/dir]
适用对象:所有使用者
功能:删除文件或目录
常用选项:
- -f 即使文件属性为只读(即写保护),亦直接删除
- -i 删除前逐一询问确认
- -r 删除目录及其下所有文件
💥3.7 man指令
Linux的命令有很多参数,我们不可能全记住,我们可以通过查看联机手册获取帮助。
语法: man [选项] 命令
常用选项:
- -k 根据关键字搜索联机帮助
- num 只在第num章节找
- -a 将所有章节的都显示出来,比如 man printf 它缺省从第一章开始搜索,找到就停止,用a选项,当按下q退出,他会继续往后面搜索,直到所有章节都搜索完毕
按q退出。
💥3.8 cp指令
语法: cp [选项] 源文件或目录 目标文件或目录
功能: 复制文件或目录
说明: cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中;若同时指定多个文件或目录,而最后的目的地并非一个已存在的目录,则会出现错误信息
普通文件拷贝:
[root@hcss-ecs-8f13 ~]# pwd
/root
[root@hcss-ecs-8f13 ~]# ls
dirname text.txt
[root@hcss-ecs-8f13 ~]# cp text.txt dirname/
[root@hcss-ecs-8f13 ~]# cd dirname
[root@hcss-ecs-8f13 dirname]# ls
text.txt
[root@hcss-ecs-8f13 dirname]# cp text.txt copy.txt
[root@hcss-ecs-8f13 dirname]# ls
copy.txt text.txt
[root@hcss-ecs-8f13 dirname]#
目录拷贝:
[root@hcss-ecs-8f13 dirname]# cp dirname dirname.0
cp: cannot stat ‘dirname’: No such file or directory
[root@hcss-ecs-8f13 dirname]# pwd
/root/dirname
[root@hcss-ecs-8f13 dirname]# cd
[root@hcss-ecs-8f13 ~]# pwd
/root
[root@hcss-ecs-8f13 ~]# cp -r dirname dirname.0
[root@hcss-ecs-8f13 ~]# ls
dirname dirname.0 text.txt
[root@hcss-ecs-8f13 ~]# tree
.
├── dirname
│ ├── copy.txt
│ └── text.txt
├── dirname.0
│ ├── copy.txt
│ └── text.txt
└── text.txt
2 directories, 5 files
[root@hcss-ecs-8f13 ~]# cp -r dirname dirname.0
[root@hcss-ecs-8f13 ~]# tree
.
├── dirname
│ ├── copy.txt
│ └── text.txt
├── dirname.0
│ ├── copy.txt
│ ├── dirname
│ │ ├── copy.txt
│ │ └── text.txt
│ └── text.txt
└── text.txt
3 directories, 7 files
[root@hcss-ecs-8f13 ~]#
- 拷贝目录需要加
-r