Linux入门(一)

Linux入门

为什么有Linux

计算机背景

为什么人能成为万物之长是因为人会制造和利用工具。那么人为什么会制造工具?在远古时期时时为了对抗自然,为了在恶劣的环境下生存下来,而现在,人制造工具是为了在人和人的对抗中取得胜利。

在1946年2月14日,二战结束不久后的美苏冷战时因为存在国家和国家之间的对抗,美国为了在军备竞赛中取得胜利,开始广招人才成立研究机构发展新技术,此时计算机作为一种计算导弹弹道轨迹的工具被发明。我们知道,研究技术是需要金钱的,那么军方如何赚钱呢?一方面是通过税收获取的,另一方面就是将新技术商业化。因为计算机的商业化,就产生了我们熟知的企业如IBM,微软,苹果等。最初的计算机价格昂贵因此个体是无法承担使用费用的,所以大部分公司都将客户团体瞄准企业,IBM很快就推出了企业级计算机。这个时期的计算机是没有操作系统的,更别提图形化界面了(后来为了方便数据的输入,才给电脑加装了键盘)。施乐公司为了提高使用者的体验就决定开发图形化界面,好巧不巧,乔布斯拜访过施乐的图形化界面实验室以后表面若无其事,内心(你小子有点东西)。随后苹果就开始开发图形化界面,随后就推出了第一款mac电脑,因为图形化界面的原因引起了空前的反响。

附图(施乐图形化界面和第一台mac电脑)

在这里插入图片描述
在这里插入图片描述

在苹果推出第一台mac以后,比尔盖茨也发现了图形化的商机,于是也开始组建自己的图形化团队。但微软是一家搞软件的公司,就需要找一个搞硬件的合作,最初找到了IBM但他们两家公司理念 不合(比尔盖茨认为随着时代的发展以后每个人都有机会使用计算机,而IBM认为只有企业才能用的起计算机),最后只能分道扬镳。随后微软就找到英特尔(Intel)合作,他们两家公司捣鼓出来的电脑相对其他公司更加的便宜而且东西并不差,随后就开始掀起了电脑热潮,产生了今天我们熟知的华硕,宏碁,联想,戴尔等,而Windows操作系统和英特尔的硬件也开始风靡电脑界。

Linux的产生

最初的计算机是没有操作系统的,后来为了提高计算资源的使用效率减少空闲时间提出了单道批处理系统,到了20世纪60年代,随着小规模集成电路的发展,出现了多道批操作系统。1970年肯.汤姆森使用汇编语言创造了UNIX操作系统,这个操作系统得到了广泛的使用。后来C语言之父丹尼斯.里奇又和肯.汤姆森合作使用C语言改编了UNIX操作系统并将其捐赠给了各大高校,当然也有用户购买UNIX进行学术研究。

附图(肯.汤姆森和丹尼斯.里奇)

在这里插入图片描述
在这里插入图片描述

芬兰的赫尔辛基大学也是受捐赠的一所高校,随后此学校迎来了一个非常有能力的学生,叫林纳斯·本纳第克特·托瓦兹也就是Linux的创造者。这个大佬在使用了搭载UNIX操作系统的电脑后,觉得这个东西好是好但是要收费。因为大家都喜欢免费的,因此这个大佬就决定搞一个免费的操作系统,于是仿照UNIX的交互模式创造了一个叫Linux的操作系统。为了装逼(狗头),于是将这个操作系统的源码公诸于世,也就是所谓的开源。

附图(林纳斯·本纳第克特·托瓦兹

在这里插入图片描述

Linux是一种自由和开放源代码的类UNIX操作系统,该操作系统是在1991年首次发布,之后再加上用户空间的应用程序就成了Linux操作系统。严格来说,Linux只是表达操作系统内核本身,但这个概念通常用“Linux内核”来表示。而Linux通常用于表示基于Linux内核的完整操作系统,包括GUI组件和其他试用工具。

开源

GNU通用公共许可协议,是一个广泛被使用的自由软件许可协议条款,最初由理查德斯托曼为GNU计划撰写的,其给予了计算机程序自由软件的定义。Linux是自由软件和开放源代码软件中最著名的例子。只要遵循GNU通用公共许可证,任何个人和企业都可以使用Linux的所有底层源代码,也可以自由地修改和再发布。

开源的好处:开源的所有底层代码都可以被所有人看到,因此会有大量的大佬来指正代码中出现的问题,bug也会被更好的改正。而企业清楚了底层的代码也就不用担心该系统在内部偷偷窃取信息。

总结:开源的代码更安全,更稳定,更有效率。

为什么要学习Linux

1.随着开源软件在世界范围内影响力与日俱增,Linux服务器操作系统在整个服务器操作系统中占据了越来越多的市场份额。

2.近年来尤其是在国内市场,Linux桌面操作发展的非常迅猛。国内如中标麒麟Linux,红旗Linux,深度Linux等系统软件厂商都推出了Linux桌面操作系统,目前已经在政府,企业,OEM领域得到了广泛的使用。

3.Linux具有低成本,强大的定制功能以及移植性能良好的特点。Linux在嵌入式系统方面得到广泛的应用。在移动设备上广泛使用的Android就是创建在Linux内核之上的。

4.在云计算,大数据快速发展的时代,Linux已经逐渐取代UNIX成为最受青睐的云计算,大数据平台操作系统。

ps:大家学习的目标主要是为了薪资,前面提到Linux作为开源的操作系统,其安全性强,因此许多企业的操作系统也是选用的Linux,Linux成为了越来越多企业的必考项目。

Linux的发行版本

Debian
Debian运行起来极其稳定,这使得它非常适合用于服务器。 debian这款操作系统无疑并不适合新手用户,而是适合系统管理员和高级用户。

Ubuntu
Ubuntu是Debian的一款衍生版,也是当今最受欢迎的免费操作系统。Ubuntu侧重于它在这个市场的应用,在服务器、云计算、甚至一些运行Ubuntu Linux的移动设备上很常见。Ubuntu是新手用户肯定爱不释手的一款操作系统。

红帽企业级Linux

这是第一款面向商业市场的Linux发行版。它有服务器版本,支持众多处理器架构,包括x86和x86_64。红帽公司通过课程红帽认证系统管理员/红帽认证工程师(RHCSA/RHCE),对系统管理员进行培训和认证。

CentOS
CentOS是一款企业级Linux发行版,它使用红帽企业级Linux中的免费源代码重新构建而成。这款重构版完全去掉了注册商标以及Binary程序包方面一个非常细微的变化。有些人不想支付一大笔钱,又能领略红帽企业级Linux;对他们来说,CentOS值得一试。此外,CentOS的外观和行为似乎与母发行版红帽企业级Linux如出一辙。 CentOS使用YUM来管理软件包。

Fedora
小巧的Fedora适合那些人:想尝试最先进的技术,等不及程序的稳定版出来。其实,Fedora就是红帽公司的一个测试平台;产品在成为企业级发行版之前,在该平台上进行开发和测试。Fedora是一款非常好的发行版,有庞大的用户论坛,软件库中还有为数不少的软件包。

Kali Linux
Kali Linux是Debian的一款衍生版。Kali旨在用于渗透测试。Kali的前身是Backtrack。用于Debian的所有Binary软件包都可以安装到Kali Linux上,而Kali的魅力或威力就来自于此。此外,支持Debian的用户论坛为Kali加分不少。Kali随带许多的渗透测试工具,无论是Wifi、数据库还是其他任何工具,都设计成立马可以使用。Kali使用APT来管理软件包。毫无疑问Kail Linux是一款渗透测试工具,或者是文明黑客青睐的操作系统。

Linux环境安装

  1. 直接安装在物理机上. 但是由于 Linux 桌面使用起来非常不友好, 不推荐.
  2. 使用虚拟机软件, 将 Linux 搭建在虚拟机上. 但是由于当前的虚拟机软件(如 VMWare 之类的)存在一些 bug , 会
    导致环境上出现各种莫名其妙的问题, 比较折腾.
  3. 使用云服务器, 可以直接在 腾讯云, 阿里云或华为云 等服务器厂商处直接购买一个云服务器.

对于环境的安装,我使用的云服务器,链接工具是Xshell的组合。云服务器虽然需要钱购买,但是对于学生,各大厂商都是有学生优惠的。并且云服务器的使用不像前几个那样比较复杂,更容易上手。

Linux的基本指令

了解了Linux的历史和环境选择后,我们就可以开始学习Linux了。前面提到云服务器的购买是需要钱的,如果觉得云服务器的价格昂贵,没必要一个人购买,可以几个人合伙购买,因为Linux是多用户操作系统,可以同时多人使用。(其实Windows也是多用户操作系统,所以也是可以有多个桌面的,毕竟本质上桌面也就是一个文件夹)。

添加删除用户

添加新用户

Linux是多用户操作系统,但只有root用户是最高权限者,也就是说只有root用户才能添加和删除用户。

在这里插入图片描述

这里有个bad password只是因为我设置的密码太过简单,但这并不影响我回车确定,到这里这个新用户就新建成功了,然后我们可以用新用户star登录

输入用户名star

在这里插入图片描述

再输入star的密码,随后就可以看到登录进来的用户就变成star了

在这里插入图片描述

然后你就可以拿着新建的用户去叫卖了,窝窝头一块钱四个(bushi)。但是假如你们说好了,后来小伙伴耍赖不给钱,你不想给他完了,那怎么办?当然是删除该用户了。

删除用户

在这里插入图片描述

总结:添加用户:adduser+用户名,然后为用户设置密码:passwd+用户名,到这里一个新用户就新建成功了。

删除用户:userdel+用户名

提示:只有root用户可以新建和删除用户,因为root用户是最高权限用户。

这是我们在Linux操作系统上完成的第一个指令。前面已经说了那么多,不知是否有人疑问文中一直提到的操作系统是什么,所谓的写指令又是在干什么?

什么是操作系统

相对于Linux,我们了解更多的操作系统应该是Windows,日常我们使用的电脑安装的也都是Windows。操作系统当让不止Linux和Windows,包括安卓和iOS其实也都是操作系统。首先看一张分层图:

在这里插入图片描述

硬件

当我们谈论计算机时,我们更多的谈论的其实是计算机的硬件,我们能摸得着的其实都叫做硬件,比如显示器,键盘等。当然硬件也包括我们一般情况摸不着的CPU,内存,硬盘等。这些硬件的运行,是需要有驱动的。

驱动

驱动程序全称设备驱动程序,在电脑的设备管理器中可以查看到。这是一种添加到操作系统中的特殊程序,其中包含有关硬件设备的信息,此信息能够使计算机与相应的设备进行通信。如果没有设备驱动程序,硬件就无法正常工作。倘若你要更换你电脑的网卡,就必须要提前准备好该网卡的设备驱动程序,否则装上之后无法进行WIFI链接。每个硬件都有自己的驱动程序,既然说了是程序,那么驱动其实也是一种软件,这款软件专门用于与底层硬件交互。

应用软件

现在已经过了手扣二极管的时代,我们平常使用电脑时,更多的是使用应用软件,比如qq,微信,网易云等。这些应用软件满足了用户 的不同需求。但是不论是什么应用软件,全都是操作系统之上安装的。

操作系统

我们已经知道操作系统在驱动之上,应用软件之下,那么操作系统到底是干什么的?其实操作系统是一款管理软件,用于控制软硬件。对下管理好硬件资源(手段),对上提供良好的(稳定的,安全的,高效的)运行环境(目的)。操作系统控制硬件并不是直接访问硬件,而是通过访问驱动程序来控制硬件。一款优秀的操作系统,是设备运行的根本,你也不想一把游戏电脑重启两三次再黑屏好几次把。

如果你对于软件可以管理软硬件有不理解的,这里有一个例子。比如你在家时,你的爸妈不但可以把家里收拾的井井有条,控制冰箱,电视等工作,还可以把你收拾的井井有条,督促你写作业(狗头)。

指令是在做什么

我们在Linux下敲指令是在干什么呢?其实等同于在Windows下学习基本操作,如双击单击,新建文件夹等。只不过Windows是图形化界面,而Linux是命令行。但两者之间其实没有任何区别,图形化界面只是包括了一层交互软件层,二者底层实现是一样的(一模一样哦)。对于没有图形化界面的Linux,命令行就是我们学习Linux的手段。我们知道,计算机最初是用于计算弹道轨迹的也没有图形化界面,所以键盘先产生。那么同样的当然是命令行先产生,后来才有了图形化。

介绍完操作系统的概念,接下来也是要正式开始学习Linux的指令了。

ls指令

语法: ls [ 选项 ] [ 目录或文件 ]
**功能:**对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息

在这里插入图片描述

输入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 一行只输出一个文件。

这里说明一下ls-a中提到的隐藏文件,其实不只是Linux有隐藏文件,Windows同样有隐藏文件。

那么如何创建隐藏文件呢?在Linux下,只要开头带"."的就会默认为隐藏文件,比如:

在这里插入图片描述

再输入ls-a指令,发现可以看到“.1.9.txt”文件。这就是说的-a选项可以显示包括隐藏文件在内的所有文件。

在这里插入图片描述

Windows下如何创建隐藏文件呢?

在这里插入图片描述

发现这里有一个隐藏选项,勾选上这个选项后,该文件将被隐藏,也就是说默认不显示,那我们如何在Windows下看到隐藏文件呢?答案是勾选上这个显示隐藏文件。

在这里插入图片描述

什么是文件

在讲ls指令时,屡次提到文件,那么到底什么是文件?文件就是文件内容+文件属性

当我们创建一个空文件,这个文件占不占空间?

在这里插入图片描述

这里显示的是0KB,这么说好像是不占空间的,那么这个文件怎么知道自己是空文件,因为文件不但有文件内容,还有文件属性。其实空文件也是要占磁盘空间的,因为空文件只是说明文件的内容是空的,但文件属性一定不是空白的,所以一个文件的真实大小其实是要大于显示的大小。文件内容大家都能理解,就是我们往文件中写入的东西,下面说一下什么是文件属性。

文件属性

当我们在Windows下右击一个文件时,往往能看到属性这个选项。文件的属性一般包括文件类型,文件大小,以及文件的创造时间等。文件属性也是数据。

在这里插入图片描述

那么Linux下如何查看文件的属性?使用ls -l指令即可

在这里插入图片描述

如果想查看隐藏文件的属性,可以使用ls -al指令

在这里插入图片描述

前面提到文件就是文件内容和文件属性,因此我们学习的操作文件方法也就是:

1.操作文件内容

2.操作文件属性

pwd指令

这个指令比较简单,就是显示用户当前所处的目录

在这里插入图片描述

这里补充说明一个clear指令,这个指令主要时用于清屏。

在这里插入图片描述

敲下回车后当前屏幕就被清空了:

在这里插入图片描述

cd指令

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

在这里插入图片描述

常用选项

cd … : 返回上级目录
cd /home/litao/linux/ : 绝对路径
cd …/day02/ : 相对路径
cd ~:进入用户家目录
cd -:返回最近访问目录

在这里插入图片描述

可以看到不但Windows可以退回上级目录,Linux同样是可以的,但是Windows下的退回其实是相当于Linux下的“cd …+ls”

在这里插入图片描述

当我们点下回退后,Windows还会同时将当前路径下的所有文件显示出来。我们知道在Windows下当我们退回到磁盘界面时,回退按钮就不能再使用了

在这里插入图片描述

那么Linux下可以一直回退吗?

在这里插入图片描述

发现,一旦回退到“/”时,无论再怎么回退都始终位于“/”路径,这就是根目录。

操作系统文件目录的组织形式

在Windows下文件夹里可以再放文件夹,在Linux下,目录里面可以再放目录,但普通文件里无法再放文件或者文件夹。这似乎和某个数据结构十分相似,把空目录或者普通文件看作叶子节点(注意:空目录也可以当叶子节点),把目录看作路上节点,而根目录就是根节点。几乎任何操作系统的文件目录组织结构都是一棵多叉树。

在这里插入图片描述

补充一个tree指令,这是Linux下一个树形展开指令,能很好的证明Linux下的文件组织结构就是多叉树。当然如果没有安装tree命令,可以下载一个,下载指令:sudo yum -y install tree

在这里插入图片描述

那么WIndows呢?其实在WIndows10系统以后,Windows也开始支持Linux指令了,足见Linux的影响力之大。

在Windows下按下“win+x”就能进入Windows的命令行模式

在这里插入图片描述

路径

为什么我们喜欢用路径来标识一个文件?

首先我们要知道,无论在Linux下还是Windows下,一个目录中是不能存在同名文件的,但是在不同的目录中允许存在同名文件。根据树的定义我们知道一个节点可以有零个到多个子节点,而却只有一个父节点。也就是说,从根目录开始到一个文件的路径是唯一的。

相对路径

我们已经知道从根目录开始到一个文件的路径是唯一的并且是放之四海而皆准的,因为那是绝对路径。除了绝对路径以外,还有一种标识文件的方式叫做相对路径。相对路径就是相对于当前位置该文件所处的位置。

比如吉林大学五公寓109这是你的宿舍,这个就是绝对路径。此时你处于5公寓108的位置,那么你位置的旁边位置就是109,也就是说108旁边这个就是相对位置。

虽然相对路径较于绝对路径简单,但在官方配置文件中一般都采用绝对路径,因为有了某个文件绝对路径就是绝对能找到该文件的。


继续回到cd指令本身,这里再介绍一下“cd ~",这个指令是进入用户的家目录(是特定用户登陆时,默认所处的路径!)。

在这里插入图片描述

如何确认你是root用户,这里提供两个辨别方法:

1.root用户的家目录是”/root“,而普通用户的家目录是”/home/xxx“。

在这里插入图片描述

2.补充指令:”whoami“翻译过来是就是我是谁,该指令可以显示当前是谁在使用。

在这里插入图片描述

touch指令

touch是一个Linux下创建普通文件的指令(只能创建普通文件)。

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

常用选项:

-a 或–time=atime或–time=access或–time=use只更改存取时间。
-c 或–no-create 不建立任何文档。
-d 使用指定的日期时间,而非现在的时间。
-f 此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题。
-m 或–time=mtime或–time=modify 只更改变动时间。
-r 把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同。
-t 使用指定的日期时间,而非现在的时间 。

touch指令除了创建文件以外,还可以更新文件时间

在这里插入图片描述

这里的” ll “指令其实是”ls -l“的一种简写,这两的功能是完全一样的。如果想更详细的查看一个文件的信息,还有一个叫stat的指令,该指令能显示某个文件的更详细信息

在这里插入图片描述

我们可以看到这里有三个时间,那么这三个时间分别代表的是什么意思呢?

Access time(访问时间):对文件进行一次读操作,它的访问时间就会改变

Modify time(修改时间):文件内容最后一次修改的时间,使用“ ls -l”指令显示的时间就是这个修改时间。当对这个文件修改时,它就会变。

Change time(状态改变事件):当文件的状态被改变时,状态时间就会变。

前面已经提到,touch也可以改变文件的时间,那么touch指令改变的是哪个时间呢?答案是:三个时间都会改变。

在这里插入图片描述

mkdir指令

主要功能就是在Linux下用于创建空目录。

语法: mkdir [选项] dirname…
功能: 在当前目录下创建一个名为 “dirname”的目录
常见选项:

-p, --parents 可以建立一个路径。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录

在这里插入图片描述

rmdir指令 && rm 指令

rmdir指令

语法: rmdir [ -p ] [dirName]
适用对象: 具有当前目录操作权限的所有使用者
功能: 删除空目录,只能删除空目录

常用选项

-p 当子目录被删除后如果父目录也变成空目录的话,就连带父目录一起删除

在这里插入图片描述

随后我又新建了一个空目录c,再使用rmdir指令,这次很明显删除成功了

在这里插入图片描述

当我们使用rmdir指令时总能看到这样的提示:

在这里插入图片描述

没关系,Linux下还有一个更好用的删除指令那就是:rm,这个指令可以删除文件或目录。

rm指令

语法: rm [ -f-i-r-v] [dirName/dir]
适用对象: 所有使用者
功能: 删除文件或目录

常用选项

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

前面已经提到过,几乎所有的操作系统文件目录的组织结构都是一棵多叉树,根据我们前面学习树形结构的经验可以知道,递归几乎贯穿二叉树的始终。因此在这里我们也使用:rm -r(递归删除),可以直接从将一整个目录删除,无论这个目录中有多少个文件或目录

在这里插入图片描述

这里可以看到,很顺利的将a目录删除了,但是在删除期间操作系统一直询问我们是否要删除该文件(y代表是,n代表否),如果这个目录下有一万个文件,难道我要输入一万个y或者n吗?当你不想让操作系统询问时,可以再带上”f“选项,表示强制递归删除。

在这里插入图片描述

可以看到,这次删除时操作系统没有再问我们是否确定要删除文件。我们之前说过” / “也是目录,那么是否可以有 “ rm -rf / ”的操作出现呢?前面说过” /“是根目录,所有文件或目录的绝对路径都是从根目录中开始的,这意味着,当你输入这个操作并按下回车以后,你操作系统中所有文件都将被删除,包括系统文件,随后你的操作系统就会挂掉。这里强调,不可以写“ rm -rf /”或者“ sudo rm -rf /”这样的代码。

话都说到这里了,我们都知道删库跑路这个梗。可是如果当你真的不小心在Linux下执行了该操作,特别是你有root权限时,删掉的不只是你的数据,更有公司的用户数据,这个时候你想跑路都不见得能跑掉。因为Linux不像Windows那样有回收站,一旦删除再想恢复的成本实在过于巨大。删掉了公司的用户数据致使公司蒙受损失,那就只能承担责任。这也是为什么你在删除文件时操作系统总要问你是否确认删除,这是操作系统在免责。但是,如果你作为一个实习生不小心删掉了公司的数据,那这只是你的责任吗?答案是否定的,这只能说明你是第一责任人,除了你之外,包括你的上司和公司的权限设置人也要承担责任,因为你作为一个实习生,本不该有这么高的权限。

在这里插入图片描述

man指令

Linux有很多命令参数,这些命令我们很难完全记住,当我们忘记某个命令的用法时就可以通过查看联机手册来获取信息。

语法: man [选项] 命令

常用选项:

-k 根据关键字搜索联机帮助
-num 只在第num章节找
-a 将所有章节的都显示出来,比如 man printf 它缺省从第一章开始搜索,知道就停止,用a选项,当按下q退出,他会继续往后面搜索,直到所有章节都搜索完毕

在这里插入图片描述

可以看到printf后面跟着一个数字,这个数字代表的是这个联机手册的章节,手册的各个章节代表:

-数字-意义
1普通命令
2系统调用
3C语言库函数
4设备或特殊文件
5文件格式和规则
6游戏及其他
7宏、包及其他杂项
8系统管理员相关的命令

1.man指令是需要安装的,安装命令:“ yum install -y man-pages",且只能由root用户安装。

2.如果man指令不带数字,也就是不指定章节,会默认从第一章节开始查找,如果指定章节则会直接从该章节中查找。

3.前面说了Linux是由C语言实现的,因此Linux中是可以直接查询C语言的库函数的,如果要查其他语言则需要现在Linux中安装,不过还是建议直接去各大语言官网中查询。

4.man手册其实有汉化版,不过目前只能汉化一号章节,而且我也不建议各位使用汉化版,作为一个程序员,看英文文档是我们逃不过的命运,所以还是接受吧。

5.在进入手册之后,按下”q“键退出。

cp指令

语法: cp [选项] 源文件或目录 目标文件或目录
功能: 复制文件或目录,相当于Windows下的复制粘贴。
说明: cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中。若同时指定多个文件或目录,而最后的目的地并非一个已存在的目录,则会出现错误信息。

常用选项

f 或 --force 强行复制文件或目录, 不论目的文件或目录是否已经存在
-i 或 --interactive 覆盖文件之前先询问用户
-r递归处理,将指定目录下的文件与子目录一并处理。若源文件或目录的形态,不属于目录或符号链接,则一律视为普通文件处理
-R 或 --recursive递归处理,将指定目录下的文件及子目录一并处理

复制不重名文件:

在这里插入图片描述


复制重名文件:

dir是刚创建出来的空目录,将1.10.txt这个文件复制到该目录下很明显的成功了,但如果在dir目录下已经存在1.10.txt文件的前提下,再将该文件复制一次呢?

在这里插入图片描述

发现操作系统只是询问了我一下,当我再输入”y“时,原文件便被覆盖了。如果我们不希望操作系统向我询问可以带上”-f“选项,这一点和” rm“指令是一样的。


复制目录:

在这里插入图片描述

cp指令和rm指令有诸多相似,当我需要复制目录或多个文件时,需要带” -r “选项递归复制。并且因为cp指令时复制指令,因此是不影响原文件的。

mv指令

语法: mv [选项] 源文件或目录 目标文件或目录

功能: mv 是 move 的缩写,可以用来移动文件或者将文件改名(move (rename) files),相当于Windows下的剪切。

前面提到Linux下是没有回收站的,删了就是真的删了。但其实可以利用shell脚本将rm指令改造成类mv指令,从而达到类似于回收站的功能。

常用选项

-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;

-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖;

在这里插入图片描述

这里可以看出cp指令和mv指令的区别,cp指令只是复制粘贴并不影响原文件,而mv指令会改变原文件所处的路径。这点从指令名称中也可以看出,cp其实是copy的缩写,mv却是move的缩写,所谓move就是要移动的。

目前已经有了类似于Windows下的复制粘贴和剪切功能了,那重命名是怎么个说法呢?其实mv指令也是可以重命名文件的:

在这里插入图片描述

补充:

  1. 视mv命令中第二个参数类型的不同(是目标文件还是目标目录), mv命令将文件重命名或将其移至一个新的目录中。
  2. 当第二个参数类型是文件时, mv命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它将所给的源文件或目录重命名为给定的目标文件名。
  3. 当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个, mv命令将各参数指定的源文件均移至目标目录中 。

cat指令

语法: cat [选项] [文件]
功能: 查看目标文件的内容,将文件中的内容从上到下全部显示到终端(屏幕)上

其实还有一个tac指令,tac指令和cat指令不但名字相反,打印出来的内容顺序也是相反的,tac指令是逆向打印。

常用选项

-b 对非空输出行编号
-n 对输出的所有行编号
-s 不输出多行空行

拓展:

在讲解cat指令前,先讲一个echo指令,这个指令主要用于打印字符或者回显,当echo配合’’ > (重定项指令)''使就可以往一个文件中写入内容,如果该文件不存在,则会建立该文件。

在这里插入图片描述

前面说cp指令对于同名文件是覆盖粘贴的。如何证明?

在这里插入图片描述

为了方便解下来的演示,我先用shell脚本快速生成一万条“hello Linux"并将其重定向到test.txt文件中

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

可以使用cat指令查看是否生成成功:

在这里插入图片描述

可以看到是生成成功了,但是cat指令这样加载方式,不太适合去查看大文件。除此之外,对于查看文件内容我们更趋向于使用nano/vim,这里说一下nano,第一次使用nano指令需要安装(安装命令:yum install -y nano ),nano后我们会进入一个这样的界面

在这里插入图片描述

注意在nano查看文件时,我们不能使用鼠标滚轮来上下查看,而是应该使用上下键。当你想要退出nano是要使用CTRL+x键。

more指令

前面说cat指令并不适合查看大文件,那么是否存在一个指令适合查看大文件?答案是肯定的,这个指令就是more指令。

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

功能: more 命令功能类似 cat,都是将文本中的内容显示到终端上,但是与 cat 不同的是,more 会以全屏幕的方式按页显示文本文件的内容,当我们按空白键(space)时就往下一页显示,按 b 键时就会往回(back)一页显示,而且 more 还有搜寻字串的功能;同时,由于 more 命令从前向后读取文件,因此在启动时就加载整个文件;
常用选项

-n 对输出的所有行编号
q 退出more

前面提到more指令是显示到撑满终端(屏幕)时就不再继续加载,除非我们主动按下回车或者空格键(按一下回车键则会增加一条,按一下空格则会往下一页显示)

在这里插入图片描述

此外more命令还可以指定页面行数显示:

在这里插入图片描述

1.但是more指令只能往下查看,不能往回退。可能这就是好马不吃回头草吧(bushi)。

2.more指令下的退出也是q键。


你还能看?你还有耐心看我是没耐心写了,这篇文章就先到这里吧,再写就不礼貌了。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

别动我的饭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值