作者:小树苗渴望变成参天大树
作者宣言:认真写好每一篇博客
作者gitee:gitee
如 果 你 喜 欢 作 者 的 文 章 ,就 给 作 者 点 点 关 注 吧!
文章目录
- 前言
- 一、man指令
- 二、cp指令
- 三、mv指令
- 四、cat指令
- 五、more和less指令
- 六、head和tail指令
- 七、总结
- 二、使用步骤
- 1.引入库
- 2.读入数据
- 总结
前言
相信大家之前的指令应该都学会了吧,今天接着上篇讲的指令继续讲解,今天的指令说实话不是很多,但是有许多关于Linux细节,这些细节可以让你更好的理解这些指令,大家专注起来,一起来学习这篇博客相关的知识点吧
上节补充:
一:
-i:删除前逐一询问
再root账户下面:
rm是直接加要删除的目录的时候,也会提示,所以加不加-i效果都是一样的
再普通账户下:
再普通账户下-i才会发生作用,因为root的权限大些,觉得里面的文件重要,所以直接rm也是有提示,自己的普通账户他认为可能没有这么重要了
二:
上街我们说过-f是直接删除,没有提示,即使再root账户下,那我们来看一下这个指令
rm -fi test
由此可以-i的优先级较高,但必须把f写再i前面,反过来写就不行
三:
通配符*,表示任意
这个通配符可以任意,也可以指定,还是非常的方便
一、man指令
Linux的命令有很多参数,我们不可能全记住,我们可以通过查看联机手册获取帮助。访问Linux手册页的命令是man
语法: man [选项] 命令
面手册分为8章
1 是普通的命令
2 是系统调用,如open,write之类的(通过这个,至少可以很方便的查到调用这个函数,需要加什么头文件)mkdir –p test/test1 : 递归建立多个目录
3 是库函数,如printf,fread4是特殊文件,也就是/dev下的各种设备文件
5 是指文件的格式,比如passwd, 就会说明这个文件中各个字段的含义
6 是给游戏留的,由各个游戏自己定义
7 是附件还有一些变量,比如向environ这种全局变量在这里就有说明
8 是系统管理用的命令,这些命令只能由root使用,如ifconfig
我们来使用一下:
大家应该看懂,实在不会百度翻译,大家应该看到我把最上面的标记起来了,这里面的数字就代表这是第几章手册
我们也可以指定去那个章里面去查,查的到就又对应的信息,查不到就没有,我们来看看库函数printf,这个应该再第三个章手册中查找的到,但是你可能回出现下面的情况:
原因可能是版本没有,我们需要下载一个:
yum install -y man-pages
这时候就可以查找到了:
man 3 printf
man printf
man fread
我们发现对于printf指定和不指定选项是不一样的信息,原因是在1选项里面有printf的信息,如果不加选项,就会默认从第一条开始找,第一条找不到就会往下一条找,找到第一次出现的信息就会停止,fread这个例子很好的说明这个,大家可以好好的看看
-a: 将所有章节的都显示出来,比如 man printf 它缺省从第一章开始搜索,知道就停止,用a选项,当按下q退出,他会继续往后面搜索,直到所有章节都搜索完毕。
大家观察最上面一行的序号,他是连续搜索,一个一个帮助你去找到你想要的信息
对于man指令的时候博主就先分享到这里了,我们进入下一个指令的讲解
二、cp指令
在学习这个语法之前,先来铺垫一个重要的知识点,这个后面会重点介绍的
echo指令的用法:
echo + 字符串
输出重定向:
echo的用法是将后面的字符串显示在显示屏上,那怎么把后面的字符串类型显示到文件当中呢??我们使用输出重定向实现
因为大家没学过vim,所以我采用这个方法来将内容写到文件里面,方便复制之后可以对比复制里面的内容和原文件内容,而且这个例子方便后面讲解重定向的问题,讲完这个我们开始进入cp指令的讲解
echo和后面要学的cat不要弄混,一个接字符串,一个接文件名
语法: cp [选项] 源文件或目录 目标文件或目录
功能: 复制文件或目录
说明: cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中。若同时指定多个文件或目录,而最后的目的地并非一个已存在的目录,则会出现错误信息
-f 或 --force 强行复制文件或目录, 不论目的文件或目录是否已经存在
-i 或 --interactive 覆盖文件之前先询问用户
-r递归处理,将指定目录下的文件与子目录一并处理。若源文件或目录的形态,不属于目录或符号链接,则一律视为普通文件处理
-R 或 --recursive递归处理,将指定目录下的文件及子目录一并处理拷贝文件
拷贝文件用法:
在同一目录下:
如果同名会怎么样:
总结,在同一目录下,只能复制不同名的文件,不然就会出问题,在Windows也一样,
不同目录下:
我们把exercise1目录下的study1.txt文件拷贝上一级目录下,我们看到确实拷贝过去了,在不同目录下,拷贝文件的名字和原文件一样是可以的,也可以向已经存在的文件进行复制,但是原来的内容就被覆盖了,在root账户下会询问,但在普通用户下不会,所以需要使用-i
-i:覆盖文件之前先询问用户
拷贝目录用法:
同一目录下:
-r:递归处理,将指定目录下的文件与子目录一并处理。若源文件或目录的形态,不属于目录或符号链接,则一律视为普通文件处理
这是把root下的exercise1的目录拷贝到新的exercise4(新的空目录)下,在把exercise1目录拷贝到已经存在的exercise2空目录下,在尝试把exercise1目录下拷贝到已经有文件的exercise2目录中
我们拷贝目录的时候如果此目录下面还有其他文件和目录就需要使用-r选项,也可以拷贝到已经有的空目录里面,但要拷贝的文件里面已经有文件了,也是向拷贝文件一样会有提示,在普通账户下就需要使用-i才会有提示。在同一目录下,拷贝的目录名不能一样
不同目录下:
将exercise1目录下的文件拷贝到exercise2下的子目录下:
拷贝目录的时候我建议都加上-r选项肯定没有错
总结,能不能重名就看看是不是在同一个目录下面,不管是拷贝文件还是目录在同一个目录下都是不能重名,这点可以参考windows的。
相信我把cp指令应该给大家讲明白了,在拷贝目录的时候,我就没有把里面的文件内容打开给大家展示了,里面肯定是有内容的,大家可以自己下去试试,我们开始讲下一个重要的指令mv
三、mv指令
这个指令可以说是非常重要的,在学习这个指令之前我在补充一个小常识:
==补充:==在Windows中,复制文件或者文件夹,那么之前的文件或者文件夹还是存在的,但是剪切就是把原来的文件或者文件夹给搬到想要去的文件目录下,之前目录下文件就没有了, 有这个知识点我们就开始介绍mv指令吧。
mv命令是move的缩写,可以用来移动文件,目录或者将文件改名(move (rename) files),是Linux系统下常用的命令,经常用来备份文件或者目录。
语法: mv [选项] 源文件或目录 目标文件或目录
功能:
- 视mv命令中第二个参数类型的不同(是目标文件还是目标目录),mv命令将文件重命名或将其移至一个新的
目录中。 - 当第二个参数类型是文件时,mv命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它将所给的源文件或目录重命名为给定的目标文件名。
- 当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个,mv命令将各参数指定的源文件均移至目标目录中。
常用选项:
-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖
-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖
我们来看具体使用(修改文件和修改目录):
这是剪切和剪切重命名
那我们怎么知道啥时候是修改啥时候是剪切,啥时候是剪切重命名呢??
大家看到修改其实和剪切重命名的操作是一样的
总结:我们可以分为两种
.和…后面要不要加文件名,不加就是剪切,如果在.后面加文件名就是修改,在…后面加文件名就是剪切并且重命名,…后面要灵活运用,可以接非此目录的路径(相对路径),其实这都是叫剪切重命名,大家好好理解一下
大家来看这个结果:
-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖
我说过这是root账户,特殊些,在普通用户你必须加-i才会有提示。
与之对应的是-f:
-f:force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖
当两个选项都出现的时候,就会执行-i这个和上面补充是一个道理,大家可以自己下去尝试一下,最好在普通账户测试,看到结果准确一些
大家有疑问的可以自己下去尝试一下,这里介绍的知识一些常见的具体用法.
补充知识点:
这个mv还可以改造成rm,我们可以通过下面这个脚本来实现:
将rm改造成mv
vim ~/.bashrc #修改这个文件
mkdir -p ~/.trash
alias rm=trash
alias ur=undelfile
undelfile() {
mv -i ~/.trash/\$@ ./
}
trash() {
mv $@ ~/.trash/
}
重点细节:
为什么要将rm改写成mv呢??,原因在于,我们LInux的rm删除就是真的删除了,而Windows还有一个回收站,其实回收站就是一个文件目录,只不过图形化了一下,打开和其他文件目录打开时一样的,将rm改成mv就是利用了mv可以剪切的特性,我们可以自己创建一个类似于垃圾桶的文件,然后通过alias来重新定义rm的含义,使用rm就好比使用mv将文件剪切到垃圾桶里面,这样就相当于我们自己实现了一个关于Linux的回收站,上面脚本,里面还有一些关于配置的代码,使我们不至于下一次使用Linux的时候就用不了,我们可能不懂,但没有关系,后期博客我会讲解的,一会重点介绍一下alias指令,然后手动模拟一个垃圾桶让大家看看。
大家知道指令具体是什么嘛?我先来举个例子:
这是我写的一个C程序,我们可以运行使用./a.out来运行代码,那么指令是什么呢??我们使用运行程序在屏幕会做相应的事情,那么指令在按回车的时候也会做相应的事情,其实指令就是可执行程序,上面的a.out就是可指向文件,不过这个可执行文件是我自己写的并且编译好的,在exercise1目录下,那既然说指令就是可执行程序,那他在那个目录下面呢??这里我就直接告诉大家,在usr/bin目录下,我们来看此目录下面有什么:
我们大致可以看到里面的有我们学到过的指令,其他的可以往上翻去找一下,大家有没有注意,这些指令的颜色和我刚才自己编译好的可执行程序a.out颜色一样,更能说明指令就是可执行程序,为什么指令可以直接运行呢在任意目录下运行呢??原因是我们在执行指令的时候,系统就会默认直接来bin目录下面来查找,就好比C语言的头文件一样
那如果我们把自己写的可执行程序放到这个目录下面,不就可以像指令一样去使用了吗??我们来尝试一下。
我将a.out剪切并重命名放到bin目录下面了,大家也可以在bin目录下了,我们在任意目录下使用一下。
大家可以看到这个我自己写的可执行程序就可以像指令一样的去使用。所以指令就是别人写的可执行程序,放在了特定的目录下面,没有什么稀奇的地方,要说差别,就是别人写的比我们写的好,多了一些配置而已
刚才的操作就相当于安装软件一样,其实在我们Windows下,我们安装软件虽然在桌面显示了,其实在一个特殊的路径下,你还是可以看看这个软件的可执行程序,就是系统可以直接使用可执行程序,把可执行从这个特有的路径删除就是卸载软件,希望这个可以更好的帮助大家理解指令
注意: 大家自己测试的时候,如果把可执行程序放到bin目录下,记得删除,因为有一天,你突然运行一个程序和这个重名,你运行的就是bin目录下的,到时候你自己都不知道怎么回事,所以建议最好不要把自己写的程序放到bin目录下
alias指令的使用:
相信大家在看到怎么把rm改成mv脚本的时候就会有疑惑,这个alias指令是干嘛用的,现在我就为大家解释一下。
我们在学习ls的时候,说过ls -l等价于ll,大家有没有想过为什么可以这么写吗??难道是创造者写了两份相同的可执行程序只是不同名而已,那创造者也太挫了吧,所以应该不是我们想的那样,我们可以使用which指令来查看ll的具体定义
我们看到ll就是等于ls -l,说明alias就是取别名的,–color就是颜色,那我们可不可以自己给指令取别名呢??答案肯定是可以的,就需要使用alias指令,我们来看具体操作:
大家看到我们自己给指令取的别名也可以使用,但我们我们目前写的只是临时的,下次再登录这个系统我们自己取的别名就使用不了了,是临时的,需要配置才可以,现在大家只需要了解就好了
四、cat指令
再讲这个指令之前,我又要补知识点了,这个可以有点难理解,但是我会尽量把大家讲明白。
再Linux下一切皆文件,为什么这么说呢?,再C语言阶段,我们大致了解了文件,文件具有读,也具有写,也具有读写功能,再Linux上,我们的普通文件是文件,显示器和键盘都是属于文件,我们再往文件输入内容,文件的获取的操作是往文件写东西,那这样内容是我们从键盘输入的,键盘按照我们输入来读取数据,来写入文件,有了这个补充,我们的显示器和键盘就想象成一个普通文件,显示器是能显示内容,我们不能从显示器读取内容吧,所以显示器只具有写而不具备读功能,相对的就是我们的键盘,从键盘上读取数,不会有数据写到键盘上吧,所以键盘具有读而不具备写的功能。而我们的普通文件就具备读写功能,有了这个理解,我们再来介绍cat指令
cat再之前我们也看过,我们是从文件当中读取,写到显示器上,比如:
那如果我们后面不加文件呢??,是不是就默认就显示器上读取,但是显示器上有没有内容,所以我们是不是要写点东西进去,那怎么写,通过键盘写进去就行了,我们来看具体操作
大家看到结果了吧,大家应该看到我最后输入了一个^C这就是CTRL+C,应为刚才那个程序是一致循环下去,就使用CTRL+C:终止因为程序指令异常而导致我们无法进行其他指令的输入。到时候大家自己测试的时候,突然发现按什么指令都没用了,就可以使用这个方法。
输入重定向:
这时候引入一个新的概念,输入重定向,和输出重定向相反的,输出重定向是将数据写进文件,而输入重定向是从文件当中读,我们来看看:
之前单独一个cat是从键盘上读取数据,现在是从文件当中读取数据。所以cat的具体操作是从文件读取数据,写到显示器文件的上 。
我们再来看一个操作,既然可以写道显示器文件里面,那我们可以产生尝试写到普通文件文件里面看看:‘
大家看到我们使用输入重定向不能完成从一个普通文件读取然后写到普通文件里面,而输出重定向可以,原因就是优先级的原因,希望这点大家可以理解
所以cat的操作就是从一个文件读取写到另一个文件里面。相信到这里应该很清楚的理解cat用法和含义了吧。
接下来将cat的选项用法:
-b 对非空输出行编号
-n 对输出的所有行编号
-s 不输出多行空行
先讲补充知识点:
追加重定向:
大家还记得echo指令的用法吧??我们再来看看用法:
我们看到输出重定向是将原来的内容清空,再将现有的数据写入,那我们如果想要不清空之前的数据怎么办,使用追加重定向,我们来具体操作
大家应该知道追加重定向了吧
-b:对非空输出行编号
-n: 对输出的所有行编号
-s: 不输出多行空行
至此我们的cat指令的具体用法差不多真正讲完了,大家下来还是要好好消化一下,尤其是补充的知识点,大家一定要好好理解。
五、more和less指令
语法: more [选项][文件]
功能: more命令,功能类似 cat
常用选项:
-n 对输出的所有行编号
q 退出more
语法: less [参数] 文件
功能: less与more类似,但使用less可以随意浏览文件,而more仅能向前移动,却不能向后移动,而且less在查看之前不会加载整个文件。
选项:
-i 忽略搜索时的大小写
-N 显示每行的行号
/字符串:向下搜索“字符串”的功能
?字符串:向上搜索“字符串”的功能
n:重复前一个搜索(与 / 或 ? 有关)
N:反向重复前一个搜索(与 / 或 ? 有关)
q:quit
我们刚才说的cat适合查看小文本的文件,more和less适合大文本文件,我们先来使用一个脚本生成一个大文本文件
cnt=1; while [ $cnt -le 10000 ]; do echo "hello Linux $cnt"; let cnt++; done > test.txt
more的用法:
我们看到more不会把所有数据都展示出来,而且只支持通过回车往下翻,有一个灵活的指令是less,他支持上下翻
less的用法:
六、head和tail指令
head 与 tail 就像它的名字一样的浅显易懂,它是用来显示开头或结尾某个数量的文字区块,head 用来显示档案的
开头至标准输出中,而 tail 想当然尔就是看档案的结尾。
语法: head [参数]… [文件]…
功能: head 用来显示档案的开头至标准输出中,默认head命令打印其相应文件的开头10行。
选项:
-n<行数> 显示的行数
tail 命令从指定点开始将文件写到标准输出.使用tail命令的-f选项可以方便的查阅正在改变的日志文件,tail -f filename会把filename里最尾部的内容显示在屏幕上,并且不但刷新,使你看到最新的文件内容.
语法: tail[必要参数][选择参数][文件]
功能: 用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理。常用查看日志文件。
选项:
-f 循环读取
-n<行数> 显示行数
我们可以看到查看文件的头尾,那我们怎么查看中间部分呢??
方法一:
方法二:
我们可以采取管道的用法:
再我们现实之中,什么是管道呢??天然气管道,石油管道等等。管道有一个特性就是一遍进一遍出,Linux就利用管道这个这个特性,将左边作为管道的进,右边作为出。
大家再来看看管道还可以多层连接
管道这里就见你但的了解一下,后面再用到,我会再具体讲解的。
七、总结
今天这篇Linux指令非常重要,而且里面补充的知识点很关键,再以后都会用到,今天刚才通过这些例子将这些细节知识点讲解出来,也方便大家更好的理解这些指令,大家下来一定要好好的感受这些指令的具体用法,后面擦你能孰能生巧,那今天的关于Linux的只是带你就先更新到这里了,我们5.1之后再更新关于Linux相关的知识,我们下篇再见了
二、使用步骤
1.引入库
代码如下(示例):
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings('ignore')
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
2.读入数据
代码如下(示例):
data = pd.read_csv(
'https://labfile.oss.aliyuncs.com/courses/1283/adult.data.csv')
print(data.head())
该处使用的url网络请求的数据。
总结
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。