思维导图
学习目标:
在学习完C语言后,紧接着,我们要来学习Linux。为什么要学习Linux呢?因为在日常生活和工作中,我们一定会用到的,我们常常可以看见一些互联网公司在招聘时,会提出求职者要有Linux经验,为什么它会在互联网公司中频频出现,又为什么会在学完C语言后学习Linux呢?下面会讲。这一篇博客将会带领大家进入Linux的世界,在了解完Linux是如何出现的后,我们在来了解一下Linux的一些基本指令,望大家喜欢。
学习内容:
通过上面的学习目标,我们可以列出要学习的内容:
- Linux 的诞生和版本问题以及应用场景
- 如何搭建Linux的环境(大致)
- Linux的一些基本指令
一、Linux 的诞生和版本问题以及应用场景
这一部分的知识点作为了解即可,小编写这一段内容是为回答我们在学习目标的地方残留的问题,也是编点小故事,锻炼一下小编的语文素养hhhhh!
1.1 Linux的诞生
Linux 对于我们大家来说,可以说是既熟悉又不熟悉,为什么呢?因为在座的各位都听说过操作系统,对,没错,现在是互联网时代,几乎没有人没有听说过操作系统。而这里所说的Linux就是一种操作系统,是的,你没有听错,Linux是和Windows和Macos一样的,是一个操作系统。而且,这个操作系统的创作者只是一个大二的学生(真乃神人也)(有人大二创作Linux,有人夜里看海,有人Leetcode上第一道题目做不出来)(不是我hh)
在之前的学习中,我们已经提到过操作系统是什么?为什么计算机要有操作系统这个东西,为什么我们不直接通过硬件进行操作系统?
操作系统这个东西就是为了使人们生活变得方便而出现,操作系统本身就是一个软件,操作系统可以管理软件和硬件层次的内容,起到一个承上启下的作用。为了便于理解,我们举一个例子,在一个互联网公司中,有老板,员工,电脑等一下成员,我们来想一下,。员工(软件)可以进行管理电脑(硬件),老板(软件)可以通过一些方式进行管理员工(软件)。这里就说明了软件是可以管理软件,软件也可以管理硬件。
1.2 Linux 的版本问题
为什么要谈及 Linux 版本问题呢?因为在世界中Linux的版本众多,如下图所示,为什么会有这个多版本呢?因为Linux在诞生之后,一直是以开源的身份在市面上留存,一些大佬们拿到这一份开源的代码,可以进行自己的编写和发明自己想要的功能,所以Linux的版本众多。
但是,在这里我想谈论的问题是:Linux的版本大致分为两大类:商业化版本和技术版本。这里也只是大致了解,不用深入了解。
在上面,我们说到了linux是开源的,说明你在linux上做的一些事情,你自己是可以看见,如果说别人对你的数据进行操作,你也是可以看见,但是windows和macos这两个操作系统不是开源,别人对你的数据进行操作,你是不知道的。
而对于互联网公司来说,数据是很重要的。如果说,你用了一些闭源的操作系统,别人对你的数据进行一些不好的工作,你是不知道,这样公司的数据就不能保证安全性,所以这是选择Linux的一个原因。第二个原因是,操作系统的流畅度,因为Linux是开源的,所以有很多大佬在维护,流畅度是可以进行保证的,而windows和macos只有一些内部成员在维护。所以,在现在很多互联网公司都在使用Linux操作系统进行管理。
1.3 Linux 的应用场景
基于这个linux的开源,稳定,安全的优点,使得Linux在应用的场合比较多,例如:Linux在服务器领域的发展,在桌面领域的发展,在移动嵌入式领域的发展,在云计算/大数据中的发展。你所使用的安卓手机也是在Linux的基础上发明出来的。Linux无处不在,太强大了,还是要学习的。
二、如何搭建Linux环境(大致)
在之前,我们学校实习的过程中,我们用到的是虚拟机,下载文件和一写文档我无法上传,所以在这里我们用一个新的方式进行我们的Linux环境的布置,不过这种方式是需要花米的,但是简单。(想当年,用虚拟机配置环境时,花了很长的时间)上网搜阿里云服务器,我们购买一个服务器,然后找到公网IP,之后的步骤,网上应该有很多,这里就不在赘述了。
三、Linux 的一些基本指令
我们搭配好Linux后,我们要学习一些指令,不能只停留在概念层面,要打代码,多打代码才能理解。这一篇文章,我们先来了解:ls指令,pwd指令,cd指令,whoami指令,最后在讲解指令时搭配使用文件路径。
3.1 文件一些知识点
3.1.1 重新认识指令
指令的本质是程序 --------- 指令、程序和可执行程序都是一回事情。
安装和卸载是在干什么?把可执行程序拷贝/删除到系统路径下。
3.1.2 文件的构成(属性+内容)
大家有没有想过当我们创建一个空的文件时,到底有没有占据磁盘空间。答案是有的,因为在文件 = 文件属性 + 文件内容。而之前我们在学习C语言时,学习的一些关于文件的操作是对文件的内容进行操作的,并没有学习到对文件的属性进行操作的。在未来我们对文件的任何操作可以分为两类:1、对属性的操作(用指令控制文件);2、对内容的操作(用编程访问文件)。
这就引出了ls指令,因为ls指令的作用是:罗列出当前目录下的文件名。
3.2 ls 指令
ls的作用是罗列出当前目录下的文件名。有些指令可能含有多个指令。下面,我们来学习一下ls的一些指令。
ls -l // 列出文件的详细信息。也可以简写为:ll
ls -la //列出目录下的所有文件,包括以 . 开头的隐含文件。
在这里的红色部分圈起来的地方有两个符号,一个是一个点,一个是两个点,这是隐藏目录,在Linux的任何目录下都会默认具有两个隐藏目录。在平常的ls指令下是看不见,但是在ls -a的指令下可以看见,在后面的cd指令中来学习。
ls -d //将目录像文件一样显示,而不是显示其下的文件
3.3 pwd 指令
pwd //显示用户当前所在的目录
在windows操作系统和Linux操作系统都有文件路径的概念,为什么要有路径呢? 系统层面要唯一地标识文件,路径必须要统一性,任何一个文件只有一个父目录。
3.4 cd 指令
3.4.1 了解一下Linux目录的树形结构
在目录中,一个文件的路径是具有唯一性的,任何一个文件只有一个父目录。
3.4.2 有关目录、相对路径、绝对路径
在我们用cd ..的指令一直回退,直到最后,退到了根目录。整个Linux的根目录是root,磁盘上的文件与目录被组成了目录树,这种目录树是一种多叉树。
相对路径:就是相对于本身开始,看是不是上一级,还是下一级,还是自身。
绝对路径:就是从根目录开始写文件
3.4.3 有关cd的一些指令
3.4.3.1 cd指令的一些选项
cd // 作用是进行路径切换
cd .. // 回退到上级路径 cd . // 表示当前路径
cd - //返回最近访问目录 cd ~ //进入用户家目录 ----- 首次登陆,所处路径就是自己的用户家目录
3.4.3.2 用户家目录
下面来了解一下用户家目录:
- 在windows操作系统下,我们的用户家目录是:C:\Users\HERUIXU,相信你们也有!
对于Linux操作系统下,我们也有用户家目录:
- 对于root账号来说,默认的用户家目录是:/root ---------- 超级管理员账号
- 对于普通账号来说,默认的用户家目录是:/home/XXXX ------------ XXXX是新建的用户名称。
3.4.3.3 多用户操作系统
因此,windows和Linux操作系统是多用户操作系统。
桌面的本质是文件夹;
当你登陆windows时:
- 确定是谁;
- 根据用户名,找到该用户目录下的桌面文件夹;
- 将桌面文件夹显示为图形化界面。
3.5 alias指令
用途:alias指令用于设置指令的别名,用户可利用 alias,自定指令的别名。
3.6 which指令
用途:要求系统中打印出我所指定的指令名称在系统中的所在路径。
3.7 touch指令
touch file.txt
touch用法:touch XXXX
touch用途:touch命令参数可更改文档或目录的日期时间,包括存取时间和更改时间,或者新建一个不存在的文件。
3.8 mkdir指令
mkdir用法:mkdir XXXX
mkdir用途:在当前目录下创建一个名为 “XXXX”的目录
mkdir -p 指令:递归创建多个目录
3.9 rmdir指令 && rm指令(重要)
rmdir用法:rmdir XXXX
rm使用对象:具有当前目录操作权限的所有使用者
rmdir用途:删除空目录
rm用法:rm XXXX ------ 最牛逼的是:rm -rf 慎用!!!!!!!!!!!!!
rm适用对象:所有使用者
rm用途:同时删除文件或目录
3.10 man指令
man用法:man XXXX
man用途:Linux的命令有很多参数,我们不可能全记住,我们可以通过查看联机手册获取帮助。访问Linux手册页的命令是man。
我们只需要关心前3个:
- 是普通的命令
- 是系统调用 , 如 open,write 之类的 ( 通过这个,至少可以很方便的查到调用这个函数,需要加什么头文件)
- 是库函数
3.11 cat指令
cat XXXXXX
cat用法:cat XXXX
cat用途:查看目标文件的内容
3.12 mv指令
mv 命令是 move 的缩写,可以用来移动文件或者将文件改名( move (rename) files ),是Linux 系统下常用的命令,经常用来备份文件或者目录。
语法 : mv [ 选项 ] 源文件或目录 目标文件或目录
功能 :
- 视 mv 命令中第二个参数类型的不同(是目标文件还是目标目录), mv 命令将文件重命名或将其移至一个新的目录中。
- 当第二个参数类型是文件时, mv 命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它将所给的源文件或目录重命名为给定的目标文件名。
- 当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个,mv命令将各参数指定的源文件均移至目标目录中。
3.13 cp指令
cp用法:cp [ 选项 ] 源文件或目录 目标文件或目录
cp用途:复制文件或目录
说明 : cp 指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中。若同时指定多个文件或目录,而最后的目的地并非一个已存在的目录,则会出现错误信息
3.14 重定向
> //输出重定向 >> //追加重定向 < //输入重定向
Linux的理念:一切皆文件,Linux可以通过统一的方式来进行文件或设备的访问。
普通文件和显示器的对比:
- 对于任何文件中,进行读和写文件;
- 显示器设备->显示器文件->向显示器打印,向显示器文件进行写入。
重定向:每次进行重定向,都会从文件开始写入文件内容
输出重定向:如果有这个文件,则会清空文件,将内容写入文件中;如果没有这个文件,则会创建这个文件,将内容写入文件中。本来应该显示到显示器,现在显示到文件中。
追加重定向:如果有这个文件,则不清空文件,将内容追加到文件后面;如果没有这个文件,则会进行创建这个文件,将内容写入文件中。
输入重定向:将文件中的内容读取出来。
3.15 more指令
3.16 less指令
3.17 时间相关的指令
3.17.1 date指令
date使用特定时间显示时间:date +“%Y:%m:%d”
date用法:date +“......”
3.17.1.1 在显示方面,使用者可以使用特定格式后接数个标识,常用的标识有
%H : 小时(00..23) %M : 分钟(00..59) %S : 秒(00..61) %X : 相当于 %H:%M:%S %d : 日 (01..31) %m : 月份 (01..12) %Y : 完整年份 (0000..9999) %F : 相当于 %Y-%m-%d
3.17.1.2 在设定时间方面
date -s //设置当前时间,只有root权限才能设置,其他只能查看。 date -s 20080523 //设置成20080523,这样会把具体时间设置成空00:00:00 date -s 01:01:01 //设置具体时间,不会对日期做更改 date -s “01:01:01 2008-05-23″ //这样可以设置全部时间 date -s “01:01:01 20080523″ //这样可以设置全部时间 date -s “2008-05-23 01:01:01″ //这样可以设置全部时间 date -s “20080523 01:01:01″ //这样可以设置全部时间
3.17.2 时间戳
时间 -> 时间戳: date +%s 时间戳-> 时间:date -d@15087949502
3.18 cal指令
概念:cal命令可以用来显示公历(阳历)日历。公历是现在国际通用的历法,又称格列历,通称阳历 “ 阳历 ” 又名 “ 太阳 历” ,系以地球绕行太阳一周为一年,为西方各国所通用,故又名 “ 西历 ”
命令格式 : cal [ 参数 ][ 月份 ][ 年份 ]
功能 : 用于查看日历等时间信息,如只有一个参数,则表示年份 (1-9999) ,如有两个参数,则表示月份和年份。
常用选项 :
- -3 显示系统前一个月,当前月,下一个月的月历
- -j 显示在当年中的第几天(一年日期按天算,从1月1号算起,默认显示当前月在一年中的天数)
- -y 显示当前年份的日历
3.19 find指令
find pathname -options
功能:用于在文件树种查找文件,并作出相应的处理(可能访问磁盘)
常用选项:
- -name 按照文件名查找文件
3.20 grep指令
功能: 在文件中搜索字符串,将找到的行打印出来
常用选项:
- -i :忽略大小写的不同,所以大小写视为相同
- -n :顺便输出行号
- -v :反向选择,亦即显示出没有 ' 搜寻字符串 ' 内容的那一行
3.21 zip/unzip指令
zip test.zip test
功能: 将目录或文件压缩成 zip 格式
常用选项:
- -r 递归处理,将指定目录下的所有文件和子目录一并处理
3.22 tar指令
tar -czf XXXXX.tgz XXXXX
tar [-cxtzjvf] 文件与目录 .... 参数 :
- -c :建立一个压缩文件的参数指令 (create 的意思 ) ;
- -x :解开一个压缩文件的参数指令!
- -t :查看 tarfile 里面的文件!
- -z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?
- -j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩?
- -v :压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!
- -f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数!
- -C: 解压到指定目录
3.23 bc指令
功能:bc命令可以很方便的进行浮点运算
3.24 uname –r指令
uname -XX
功能 : uname 用来获取电脑和操作系统的相关信息。
补充说明 : uname 可显示 linux 主机所用的操作系统的版本、硬件的名称等基本信息。
常用选项:
- -a或–all 详细输出所有信息,依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理器类型,硬件平台类型,操作系统名称
3.25 重要的几个热键[Tab],[ctrl]-c, [ctrl]-d
- [Tab]按键---具有『命令补全』和『档案补齐』的功能
- [Ctrl]-c按键---让当前的程序『停掉』
- [Ctrl]-d按键---通常代表着:『键盘输入结束(End Of File, EOF 戒 End OfInput)』的意思;另外,他也可以用来取代exit
3.26 关机指令(关的是服务器的机)
shutdown -XX
常见选项:
- -h:将系统的服务停掉后,立即关机。
- -r:在将系统的服务停掉之后就重新启动
- -t sec:-t 后面加秒数,亦即『过几秒后关机』
学习产出:
- Linux 的诞生和版本问题以及应用场景
- 如何搭建Linux的环境
- Linux的一些基本指令