Linux介绍以及初学指令详解

x33g5p2x  于2021-11-02 转载在 Linux  
字(9.9k)|赞(0)|评价(0)|浏览(270)

Linux背景介绍

第一款计算机1946年2月14日,叫埃尼阿克,当时是计算导弹的弹道轨迹,由美国军方制造,那么美国花钱了,得想办法把投入的钱赚回来,这时计算机就商业化了,将某种技术转化成为某种产品(卖给个人或企业),乔布斯,比尔盖茨,IBM,这些人就做卖给企业的软硬件产品(笔记本,服务器,操作系统,基于OS某种软件服务),网络也慢慢兴起了,94年我们国家介入互联网,马云,马化腾,李彦宏等互联网大佬就开始搞互联网了,直到我们现在发展很好的时代。

操作系统

第一款操作系统诞生:Unix(一般是面向企业、高校),是收费的)(肯汤普森写的),当时是没有C语言的,是用汇编语言写的(可移植性很差),后面有一个人丹尼斯里奇(C语言之父),于是就有了用C写的Unix操作系统,高校的学生就有机会用到这种操作系统,后来雷纳斯-托瓦兹觉得它是收费的,用的人太少了,所以他就写了Linux操作系统,最早版本免费开源,开源后一定会有很多人帮我们指出问题,修正代码,后面就有很多人免费参与这个项目,这个项目越做越大。

重点概念:

1、虽然Linux来源于Unix,但Linux并不是Unix

2、开源是公开源代码,任何人可以参与,个人可以获取源代码

3、开源更好还是闭源更稳定?
开源是更稳定更高效的,是公开的,所有人都能看到,如果代码出错肯定会有人指出

4、为什么会有人参与开源呢?

参与开源的都是行业中的顶尖人才,他们是不缺钱的,不缺钱那么他们肯定就在意的名,基于使命感和行业地位去参加的,技术大神,顶级黑客,竞争对手工程师等等技术大佬,将写好的代码提给托瓦兹

5、对于操作系统客户端windows垄断,但是在企业端Linux处于垄断地位的

*这也是我们要学习Linux原因,企业7/24小时都在给我们提供软件服务的,比如我们淘宝买衣服,你在客户端下单后,会先到阿里巴巴的服务器端给你处理,那么企业为什么选择Linux呢?

1、免费(如果用windows,30万台服务器,假设一台需要100元,那么需要3000万)

2、企业的安全隐患不存在

3、开源后更稳定,更高效

所以企业都是用Linux操作系统

为什么客户端是windows垄断?

笔记本主流的操作系统:windows、mac,最早期都是用的命令行,这里有一个乔布斯的故事:
有人说,他曾经与几位最早的苹果员工一起,于1979年造访PARC研究中心,从施乐“借走了”图形用户界面技术,并应用于后来的Lisa、Macintosh电脑,最终给计算机工业带来了革命性的影响。但更为接近史实的情况应该是,在乔布斯造访帕罗奥多以前,苹果就已经在研发自己的图形界面。不过,据苹果工程师比尔·阿特金森(Bill Atkinson)回忆,见到施乐首创的窗口化界面以及鼠标工作方式后,乔布斯确实解决了一些Lisa早期设计中遇到的难题。施乐公司的设计理念确实留下了深远的影响,许多用户从中得到了新的启发,微软公司总裁比尔·盖茨就是其中的另一位。

后面乔布斯团队搞出了第一款图形界面的OS,麦塔金OS(也就是苹果系统),对命令行的操作系统碾压,客户体验,人的体验是何等的便捷与美的视觉感受,然后后面比尔盖茨由此跟进windows操作系统,因为苹果软硬件系统都做,成本高,比较贵,而比尔盖茨是windows(OS)+Intel(cpu),windows和Intel合作,软硬件分工,成本比较便宜,所以笔记本电脑便宜,所以客户端就windows垄断了

6、命令行和图形化界面
windows操作规则基本全是通过界面完成的,而Linux纯命令行

7、Linux目前的主流应用场景

  • 企业后台(服务器,OS,地,机房),地以及机房花费较大,中小型公司弄不起大公司有自己的独立机房,云服务,以租赁的形式,使用机房,机器,个人也可以租赁,购买云服务器
  • 智能设备(电视,手机…)
  • 嵌入式邻域
  • 物联网领域

8、Linux发行版

Linux操作系统是由Linux内核和命令行组成

windows操作系统是由windows内核和图形界面组成

商业化的发行版:

应用层面上的版本:

ubuntu,Centos,slackware等等:

Linux内核发行版:The Linux Kernel Archives

Linux是一款企业级后台操作系统,命令行方式交互,是开源的

9、操作系统的概念和定位

笔记本或者服务器必须得有操作系统,为什么必须要有操作系统,早些时候,控制硬件成本高,早些时候的计算机是通过电路来操作的,控制它需要专业人士来控制,使用成本高,操作系统给用户带来的价值,使用计算机硬件的成本降低,具有了大面积被使用的前提。

操作系统的作用:

对上:给用户提供一个良好的稳定(简单)的操作系统

对下:和硬件打交道,进行合理的软硬件管理

操作系统是什么?
操作系统是一款软硬件资源管理的软件

真正的管理者,是不会和被管理者打交道的

管理者(校长),执行者(辅导员),被管理者(同学),校长是不会和同学打交道的,任何自然世界中的东西,人做的事情都离不开做决策和做执行,使用CPU、等等硬件不仅仅需要操作系统,还需要驱动,笔记本还有应用软件,凡是在网上下载的,或者你自己写的都是应用软件,硬件是被管理者,操作系统是管理者,设备驱动是执行者

我们为什么学习Linux以及Linux相关知识

  • 我们为什么需要学习Linux操作系统呢?
    Linux开源(免费),更稳定高效

命令行方式和图形界面方式
*
战争时期,为了计算导弹弹道轨道,发明了计算机,埃尼阿克,计算机由人发明,人需要给计算机数据,然后计算机再经过内部运算将运算结果交给人,这是一个交互的过程

那么人和计算机交互,怎么交互呢?是键盘和鼠标,键盘和鼠标哪个先有呢?键盘先有
早期有一个打字机(早期键盘):那时只有键盘,只能用键盘交互,所以只能通过输入命令的方式进行计算机数据交互,时间久了,就有了命令行的交互方式!

那么后来为什么鼠标会存在?
相比较键盘更符合人性,所见即所得,我们使用一个app只需要点击即可,而命令行需要输入命令(在商业上,注定需要的),鼠标的大面积使用依靠于图形化界面的产生

命令行(键盘)和图形化界面(鼠标)比较:

命令行更靠近底层,越靠近历史前期的,越接近真相,技术的发展会让人用起来更简单,但是它包裹封装的越厉害,并且在企业中,大部分的服务器都是没有图形化界面,全都是使用命令行去操纵服务器的。所以我们需要学习Linux

下面我们进入Linux初学指令:

Linux初学指令

pwd指令

显示当前我所在的目录,默认登陆,会登进自己的主工作目录

Linux也叫多用户操作系统

/:Linux操作系统路径分隔符

\:windows操作系统路径分隔符

mkdir指令

创建目录

注意:蓝色代表的是目录

如果我们在windows下创建一个空文件,这个文件占不占用磁盘空间呢?

答案是占用:文件=文件的内容+属性

属性是不是数据呢?当然是数据,磁盘是保存数据的,所有即便文件的大小是0kb,它也是占用空间的

文件的类别,是文件的属性吗?是,要被保存起来,windows和Linux保存文件类别的方式有差别
windows是通过文件名后缀区分文件类型

Linux:文件类型和文件后缀没有直接关系

但是我们依旧保留这种做法,为了照顾人的习惯

Linux是怎么区分的呢?
属性信息列当中,第一列的第一个字符来区别,第一个字符为d的为目录,字符为-的为普通文件(文本文件,可执行,各种库文件),l:链接文件,p:管道文件,c:字符文件(字符设备,键盘,显示器),b:块设备(磁盘)

mkdir -p

一次创建一连串目录,只包含目录,递归建立多个目录

mkdir -p test1/test2

tree指令

tree命令(展示目录树状结构),以树状结构显示当前目录下的文件与目录

如果没有,安装方式:yum install -y tree

touch指令

创建文件,只能用来创建普通文件,常用来创建文本文件

touch命令还有很多作用,这里初学就先不介绍

ls指令

查看当前目录下有哪些文件,ls指令的功能是展示文件

那么怎么进去文件呢?

cd指令

进入指定文件夹

我们cd 9-25/,这时已经进去文件夹了,怎么证明呢?使用pwd指令,可以看到我们确实进去了

Linux的目录结构是树状结构:

多叉树中非叶子节点一般是目录,叶子节点一般是正常的文件或者空目录

怎么找一个文件呢?

方式一:绝对路径
从/开始,只有一种路径,是不会失效的

方式二:相对路径
取决于你所处的当前目录,相对路径可以有多种,容易失效,仅限于当前路径

绝对路径为什么只有一种,而且不容易失效
因为从根节点到叶子节点只有一条路,每一个节点都有只有一个父亲

基本上,所有的操作系统文件管理,都采用的是树状结构

一般绝对路径,我们在配置文件中使用的最多,因为无论配置文件在哪里都是有效的,随便拷贝,绝对路径是不会失效的
cd 绝对路径或者相对路径我们就可以操作文件或者目录之间的切换了,就相当于我们在windows系统下找文件那样,可以进去,然后也可以退出找其他文件,可以自由切换

为何通过路径能标识唯一的一个文件呢?

多叉树中路径具有唯一性,因为每一个节点只有一个父亲,退回去的路径只有一个

cd指令的快捷键
cd ~

可以直接到达我的主工作目录下,普通用户默认登陆时所处的目录

首先我们cd /,到达根目录,然后cd ~可以直接到达我的主工作目录下,~是一个特殊符号,它保存的是我们当前的主工作目录

cd -

快速的在最近操作的路径下进行跳转,-记录的是,你最近从哪个路径来的,保存最近路径,这个最近是时间最近

在使用cd -指令之前,我们在/home/zsb目录下,在使用后我们到了/根目录,为啥呢?是因为- 保存的是我的当前目录是从哪里切换来的,cd -就是到达保存的该目录

stat命令

查看一个文件的属性

Access:进入时间

Modify:文件内容修改时间

Change:文件改变时间(改文件的属性)

rmdir命令

删除空目录

rm命令

rm -r 删除目录,既可以删除非空目录,也可以删除空目录,-r的意思是递归的意思,删除该目录往下的所有目录

rm 可以删除普通文件

rm 删除root创建的文件时,会提示你删或者不删

我们首先切换成root账号在当前目录下创建文件,然后在切换成普通用户进行验证:

这个就是提示你是否确定删除:

如果不想要提示:rm -f ,强制删除

这里就没有提示

rm -rf / 从根目录开始,连续的将我能够强制删除的目录全部删除,这个需要慎用,使用这个命令必须明确:

1、清楚自己在干什么

2、后果自己可以承担

常用选项:

-f 即使文件属性为只读(即写保护),亦直接删除
-i 删除前逐一询问确认
-r 删除目录及其下所有文件

ls选项ls -l

显示文件夹,并且将它的属性以列表形式显示

ls选项ls -a

显示所有文件,包括隐藏文件

我们和ls对比一下,ls -a多了四个文件:

注意:.是代表当前目录,…代表上级目录,Linux中几乎任何目录都有这两个东西,以.开头的文件或者以.命名的文件一般叫做隐藏文件

比如我们现在创建一个.开头的文件,看看用ls能不能将它显示出来:

我们发现不能显示,其实他就是隐藏文件,我们ls -a,发现就能显示了

那么怎么证明.是当前目录,…是上级目录呢?

我们可以看到cd .时,查看我们当前所在目录时是没有变化的,因为.是当前目录

而cd…后,此时就发现我们回到了上级目录,故cd …就是回退到上级目录

而回退到一定程度是不会再回退了:

回退到不能再回退的地方,我们叫做根目录,这个/我们叫做根目录

ls -al

相当于ls -a -l,意思就是显示所有文件包括隐藏文件,以列表显示属性信息的方式

Linux的目录结构是一个树状结构,所有的叶子节点都是普通文件,根目录就相当于是根节点

ls常用选项

-a 列出目录下的所有文件,包括以 . 开头的隐含文件。
-d 将目录象文件一样显示,而不是显示其下的文件。 如:ls –d 指定目录
-i 输出文件的 i 节点的索引信息。 如 ls –ai 指定文件
-k 以 k 字节的形式表示文件的大小。ls –alk 指定文件
-l 列出文件的详细信息。
-n 用数字的 UID,GID 代替名称。 (介绍 UID, GID)
-F 在每个文件名后附上一个字符以说明该文件的类型,“/*”表示可执行的普通文件;“/”表示目录;“@”表示符号链接;“|”表示FIFOs;“=”表示套接字(sockets)。(目录类型识别)
-r 对目录反向排序。
-t 以时间排序。
-s 在l文件名后输出该文件的大小。(大小排序,如何找到目录下最大的文件)
-R 列出所有子目录下的文件。(递归)
-1 一行只输出一个文件。

man指令

man指令是查看命令、函数等,当你不懂一些命令和函数等,你可以使用man指令去查看,如果你不懂man,你也可以自己查看自己,因为man也是一个指令

比如man pwd:

man printf:
这是Linux当中的printf函数

如果你想查看程序库函数可以,man 3 scanf

cp指令

相当于windows复制粘贴

为了证明体现拷贝,需要先说以下内容:

echo命令将后面的字符串显示到显示器当中

echo "hello Linux"

'>'输出重定向,本来应该显示到显示器的内容,写入到文件中

echo "hello Linux" > test.txt

将hello Linux字符串写入test.txt文件当中

echo "hello" > test.txt

输出重定向,会清空原始文件,然后再进行写入,每次都是最新的

echo "Linux" >> test.txt

>>追加重定向,是写入,是从文件的结尾写入,历史数据会被保存,新增式的写入内容

cat命令:显示文件的内容

cat test.txt

执行这些命令,就将hello Linux写入了test.txt文件当中:

echo是显示后面跟的字符串,而cat显示的是文件的内容

那么cp命令怎么使用呢?

cp test.txt my.txt

在当前目录将test.txt拷贝一份,命名为my.txt,cp test.txt . ;这表示在当前目录拷贝一份test.txt,这里是不能拷贝成功的,因为一个目录下不能有相同命名的文件

用cat指令可以看到my.txt已经拷贝成功了。

当然,你可以将text.txt拷贝在任意路径,该路径可以是相对路径可以是绝对路径

cp test.txt ../

这是什么意思呢?将test.txt拷贝在上级目录中

可以看到已经拷贝过去了

总结以下cp指令:

cp src 绝对路径or相对路径/dst

将源头拷贝到目的地,路径可以是绝对路径也可以是相对路径

那cp指令能拷贝目录吗?

答案是cp指令是只能拷贝普通文件的,那么我们想要拷贝整个目录怎么办呢?

还记得上一篇文章删除目录的指令吗?对没错,我们需要用到-r选项

cp -r 9-25 9-29

可以看到已经成功将9-25目录拷贝进去了

强制拷贝:

cp -rf 9-25 9-29

mv指令

作用一:
对文件进行重命名

作用二:
文件转移,对文件进行剪切并粘贴

cat指令

单纯的只输入cat:
显示你当前输入的内容

cat test.txt

显示文件内容

下面写一个程序命令行将运行结果写入file.txt,以便给后面的指令举例子:

生成多个字符串行代码:

count=0; while [ $count -le 10000 ]; do echo "hello $count"; let count++; done > file.txt

cat -n选项

对输出的所有行编号

tac指令

而tac指令是倒序输出:

cat -b选项

对非空输出行编号

cat -s选项

不输出多行空行

两种显示文件内容的方式

cat<file.txt

先输入重定向,从file.txt里面进行内容读取

cat file.txt

程序直接打开file.txt读取里面的内容

快速清空一个文件内容:

> file.txt

这个的原理就是>输出重定向,>前面是空,打开file.txt文件先要清空原有内容,所以这里就相当于清空了一个文件内容

more指令

语法:more [选项][文件]

功能:more命令,功能类似cat

常用选项:
-n 对输出的所有行编号

q 退出more

cat命令有一个不好的一点,就是我们在查看文件的时候,文件内容过多,会导致刷屏

如果你想看第一行,那么就很费劲,那么我们可以用more指令查看,more会把屏幕显示满就停下来,如果你想看后面的内容,就按回车:

上面动图演示了我们按回车的画面

如果你想直接看内容为1000地方怎么办,直接输入/1000就跳转到了内容为1000的地方

more是一个对文件进行逐行进行阅读的指令,more只能往下翻,不能往上翻,可以直接搜索跳转到某一行

more -5 file.txt

直接显示file.txt文件内容到第五行

more命令一般在阅读大量文字时要用到,比如阅读日志:

dmesg | grep -i 'error' | more -3
打印日志      过滤          显示,方便阅读

既然说到日志,那么日志是什么呢?

好比日记:记录(时间,天气,内容),比如小明有一天人失踪了,他有个写日记的习惯,那么爸爸妈妈就可以去找小明的日记去了解:1、什么时候失踪了 2、因为什么原因失踪 3、去了哪里;查看日记肯定是从后开始看,因为他失踪了,需要看最后几天小明的状态记录人的生活信息,用来进行差错性排查

日志相当于程序的日记,项目运行之后,会一直进行写入对应得日志文件中,比如时间、日志等级、内容等等

我们在公司写项目时,如果代码出问题时我们需要从后往前查,看代码有啥问题,从哪里开始挂掉了。

less指令

同样地,有一个less指令,和more指令功能一样,但是有一个区别就是less既可以上翻也可以下翻

less用上下键进行上翻和下翻

选项:
*
-i忽略搜索时的大小写
*
-N显示每行的行号
*
/字符串:向下搜索"字符串"的功能·
*
?字符串:向上搜索“字符串"的功能
*
/n:重复前一个搜索(与/或?有关)
*
N:反向重复前一个搜索(与/或?有关)
*
q:quit

cat和more和less,那么使用情况是什么呢?

如果文件内容有多行,建议使用less,如果文件内容较少,建议使用cat;常见的会用来查看代码,或者日志

head指令

查看文件的头部的内容

head -数字选项

从头开始查看文件的前指定数字行

tail指令

查看文件的尾部的内容

tail -数字选项

从尾开始查看文件的指定数字行

head是显示头,而太累是显示尾,那么我们想看中间的呢?比如我们要看500行-510行:

head -510 file.txt | tail -10

|符号是管道的意思,它的意思是将左边的输出作为右边的输入,|右边我们发现并没有写它的数据源,因为它从管道|里面提取数据

那么想要倒序输出呢?

head -510 file.txt | tail -10 | tac

时间相关的指令

date

可以直接输入date命令:(显示时间)

可以根据自己的指令进行输出年、月、日、时、分、秒:

date +%s

时间戳,时间戳是从格林威治时间1970年1月1日0时0分0秒开始累计的时间秒数

那么怎么把时间戳转化为北京时间呢?
-d选项然后后面@时间戳

为什么要有时间戳?
因为是累计的秒数,递增且不重复的,比较适合进行查找,尤其是范围查找,在日志当中可能会使用时间戳,存储空间相对较小

cal指令

默认会显示当前日历

cal -3

显示当前月的前一个月和后一个月日历

你还可以查看一整年的日历,比如:

cal -2021

要是你想查看一个命令的选项,其实在该命令后加-h就可以查看:

find指令

根据名字查找:

find -name test.c

test.c是文件名,在当前目录下根据名字查找出文件

当然你也可以指定目录下查找:

find 10-1 -name test.c

在10-1目录下根据名字查找test.c这个文件

也根据大小查找:
find -size test.c

which命令

专门查找系统命令所在的路径的命令

ls命令所在的路径

其实系统中的命令就是可执行程序

我们在windows下安装的软件其实就是一个可执行程序:

你可以尝试去右击你的软件启动图标,点击属性,可以看到后缀是.exe文件,其实这就是一个可执行程序

which这个命令就是查找你所有运行的命令所在的路径

whereis指令

whereis pwd

在系统中特定路径下,进行文档、命令等相关文件的查找

which和find的区别:

which会帮助我们查找一条命令所在的路径,find指令帮助我们在任何一个路径下做真实的查找任何文件

alias命令

alias相当于给一条命令起了一个别名:

ls就是ls --color=auto命令的别名

下面这个alias myexe='ls --color=auto’这条命令就是给ls --color=auto这条命令起了个myexe别名,故下面我们就可以使用这个别名去操作这个命令:

grep指令

文本行过滤工具,它在进行过滤的时候,是以行为基本单位的

文本中出现999的行被过滤出来

grep -n选项

过滤的同时将行号显示出来

grep -i选项

过滤的同时忽略关键字大小写

grep -E选项

支持正则表达式

grep -v选项

(反向匹配)如果你匹配到指定的关键字,那么不显示(包含)该行

test.txt中的内容是hello Linux,我们grep -v选项是反向匹配,所以没有显示这一行

注意:这三条选项还可以组合使用

grep -ni

显示行号并且忽略大小写进行匹配

grep指令最常见的用途是过滤日志,一般性的文本处理

zip/unzip指令

zip为打包压缩,unzip为解压

zip

/*是通配符,指要打包所有文件

zip -r

递归处理,将指定目录下的所有文件和子目录一并处理

zip -v

显示指令执行过程或显示版本信息

将10-1目录删除后,然后将10-1压缩包进行解压:

unzip

unzip也可以带路径解压:

unzip 10-1.zip -d test

test为路径

tar指令

  • -c:建立一个压缩文件的参数指令
  • -x:解开一个压缩文件的参数指令
  • -t:查看tarfile里面的文件
  • -z:是否同时具有gzip的属性?即是否需要用gzip压缩
  • -j:是否同时具有bzip2的属性?即是否需要用bzip2压缩
  • -v:压缩的过程中显示文件!这个常用
  • -f:使用档名,在f之后要立即接文档名
  • -C:解压到指定目录

tar czf选项

打包压缩

tar xzf选项
解压

将9-29目录先删除,然后将9-29的压缩包进行解压:

tar xzf -C选项
指定路径解压

tar xzf 9-29.tgz -C 10-6

10-6是指定路径

为什么要有压缩包?
大量文件(普通文件和目录)转化成一个文件(压缩包)

1、减少因为网络或者其他原因导致文件丢失的情况(对应打包过程)

2、减少存储或者传送的成本(对应压缩过程)

最本质的原因是方便传输,存储空间小

bc指令

输入bc指令我们可以进行一些数值的计算,还可以很方便的进行浮点运算

uname指令

uname用来获取电脑和操作系统的相关信息,uname可显示linux主机所用的操作系统的版本、硬件的名称等基本信息

uname -a选项

-a选项,是显示全部信息,VM-0-3-centos是主机名,主机名还可以通过hostname进行查看后面紧跟着的是内核版本,内核版本当中4.18.0对应的分别是主版本、次版本、版本号修正数据,一般次版本是偶数说明它是稳定版本,奇数说明它是测试版本,

是CPU架构,微软和intel合作,intel提供CPU,i386,X86(32位),X86_64(64位),笔记本中装的核心软件是微软生产,核心硬件是Intel生产。

是操作系统名字

SMP是对称多处理,是指在一个计算机上汇集了一组处理器(多CPU),各CPU之间共享内存,子系统以及总线结构。它是相对非对称多处理技术而言的、应用十分广泛的并行技术

计算机应用层面上版本:

uname -r选项

只显示Linux操作系统的内核版本和操作系统位数

Linux高频使用的快捷键

ctrl+c

终止当前前台打印某些失控程序

tab

比如你想要使用find命令,你输入了fin,再按一下tab键就可以让命令自动补齐;如果你忘记了一个命令,你就可以输入部分,然后按tab键进行查找

ctrl+d

通常代表着:键盘输入结束的意思,另外,他也可以用来取代exit,可以用来自动切换用户

shutdown关机指令

  • -h:将系统的服务停掉后,立即关机
  • -r:在将系统的服务停掉之后就重新启动
  • -t sec:-t后面加秒数,即过几秒后关机的意思

相关文章