前言
可能很多刚开始接触linux的童鞋们和我一样,在这之前对linux并不熟悉,只知道linux是一个操作系统,之外一概不知。没关系,问题不大,本篇文章将会带你初步的认识linux,了解linux的相关背景和一些简单的指令,让你从一个小萌新成为一个大萌新。 本文使用xshell远程登录linux服务器,centos系统。
?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”的目录(文件夹)
代码语言:JavaScript代码运行次数:0运行复制
[root@hcss-ecs-8f13 ~]# mkdir dirname[root@hcss-ecs-8f13 ~]# lsdirname [root@hcss-ecs-8f13 ~]#
空文件也占据磁盘空间。文件 == 内容 + 属性(文件名、大小、日期…)。
-p, –parents 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录代码语言:javascript代码运行次数:0运行复制
[root@hcss-ecs-8f13 dirname]# mkdir -p a/b/c[root@hcss-ecs-8f13 dirname]# pwd/root/dirname[root@hcss-ecs-8f13 dirname]# lltotal 4drwxr-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]# lsa hello.txt[root@hcss-ecs-8f13 dirname]# cd a[root@hcss-ecs-8f13 a]# lsb[root@hcss-ecs-8f13 a]# cd b[root@hcss-ecs-8f13 b]# lsc[root@hcss-ecs-8f13 b]#
代码语言:javascript代码运行次数:0运行复制
[root@hcss-ecs-8f13 ~]# pwd/root[root@hcss-ecs-8f13 ~]# tree dirnamedirname├── a│ └── b│ └── c└── hello.txt3 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 [选项]是默认当前自己的目录,也可以指定目录:
代码语言:javascript代码运行次数:0运行复制
[root@hcss-ecs-8f13 /]# pwd/[root@hcss-ecs-8f13 /]# lsbin 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 -ltotal 64lrwxrwxrwx. 1 root root 7 Jul 7 14:23 bin -> usr/bindr-xr-xr-x. 5 root root 4096 Sep 1 18:43 bootdrwxr-xr-x 7 root root 4096 Jul 7 14:56 CloudrResetPwdAgentdrwxr-xr-x 19 root root 3020 Sep 1 18:46 devdrwxr-xr-x. 77 root root 4096 Sep 2 11:47 etcdrwxr-xr-x. 3 root root 4096 Sep 1 21:33 homelrwxrwxrwx. 1 root root 7 Jul 7 14:23 lib -> usr/liblrwxrwxrwx. 1 root root 9 Jul 7 14:23 lib64 -> usr/lib64drwx------. 2 root root 16384 Jul 7 14:23 lost+founddrwxr-xr-x. 2 root root 4096 Apr 11 2018 mediadrwxr-xr-x. 2 root root 4096 Apr 11 2018 mntdrwxr-xr-x. 2 root root 4096 Apr 11 2018 optdr-xr-xr-x 110 root root 0 Sep 1 18:46 procdr-xr-x---. 7 root root 4096 Sep 7 15:04 rootdrwxr-xr-x 24 root root 640 Sep 1 18:46 runlrwxrwxrwx. 1 root root 8 Jul 7 14:23 sbin -> usr/sbindrwxr-xr-x. 2 root root 4096 Apr 11 2018 srvdr-xr-xr-x 13 root root 0 Sep 5 23:15 sysdrwxrwxrwt. 9 root root 4096 Sep 7 03:31 tmpdrwxr-xr-x. 13 root root 4096 Jul 7 14:23 usrdrwxr-xr-x. 19 root root 4096 Jul 7 14:39 var[root@hcss-ecs-8f13 /]# ls -l /hometotal 4drwx------ 2 yjz yjz 4096 Sep 1 21:42 yjz[root@hcss-ecs-8f13 /]# ls /home -ltotal 4drwx------ 2 yjz yjz 4096 Sep 1 21:42 yjz[root@hcss-ecs-8f13 /]#
?3.3 pwd指令
语法: pwd 功能: 显示用户当前所在目录
代码语言:javascript代码运行次数:0运行复制
[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 -:返回最近访问目录代码语言:javascript代码运行次数:0运行复制
[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 ~:返回当前用户自己的家目录:
代码语言:javascript代码运行次数:0运行复制
[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用户,用特定的用户名登录系统,默认都在家目录下。
命令本质上就是系统中的一个普通文件,是一个可执行程序。
代码语言:javascript代码运行次数:0运行复制
[root@hcss-ecs-8f13 ~]# which lsalias 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/lsdirname mydirtext.txt[root@hcss-ecs-8f13 ~]#

代码语言:javascript代码运行次数:0运行复制
[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 ~]# lsdirname mydir text.txt[root@hcss-ecs-8f13 ~]# defdirname mydir text.txt[root@hcss-ecs-8f13 ~]#
起别名是临时的,退出登录后起的别名就不能用了代码语言:javascript代码运行次数:0运行复制
[root@hcss-ecs-8f13 ~]# which llalias ll='ls -l --color=auto'/usr/bin/ls[root@hcss-ecs-8f13 ~]# which lsalias ls='ls --color=auto'/usr/bin/ls[root@hcss-ecs-8f13 ~]# lsdirname mydir text.txt[root@hcss-ecs-8f13 ~]# lltotal 8drwxr-xr-x 3 root root 4096 Sep 7 16:58 dirnamedrwxr-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 -ltotal 8drwxr-xr-x 3 root root 4096 Sep 7 16:58 dirnamedrwxr-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指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中;若同时指定多个文件或目录,而最后的目的地并非一个已存在的目录,则会出现错误信息
普通文件拷贝:
代码语言:javascript代码运行次数:0运行复制
[root@hcss-ecs-8f13 ~]# pwd/root[root@hcss-ecs-8f13 ~]# lsdirname text.txt[root@hcss-ecs-8f13 ~]# cp text.txt dirname/[root@hcss-ecs-8f13 ~]# cd dirname[root@hcss-ecs-8f13 dirname]# lstext.txt[root@hcss-ecs-8f13 dirname]# cp text.txt copy.txt[root@hcss-ecs-8f13 dirname]# lscopy.txt text.txt[root@hcss-ecs-8f13 dirname]#
目录拷贝:
代码语言:javascript代码运行次数:0运行复制
[root@hcss-ecs-8f13 dirname]# cp dirname dirname.0cp: 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 ~]# lsdirname dirname.0 text.txt[root@hcss-ecs-8f13 ~]# tree.├── dirname│ ├── copy.txt│ └── text.txt├── dirname.0│ ├── copy.txt│ └── text.txt└── text.txt2 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.txt3 directories, 7 files[root@hcss-ecs-8f13 ~]#
拷贝目录需要加-r