0
点赞
收藏
分享

微信扫一扫

【Linux】-关于Linux的指令(中)

Sikj_6590 2023-04-26 阅读 86

文章目录


前言

相信大家之前的指令应该都学会了吧,今天接着上篇讲的指令继续讲解,今天的指令说实话不是很多,但是有许多关于Linux细节,这些细节可以让你更好的理解这些指令,大家专注起来,一起来学习这篇博客相关的知识点吧


上节补充:
一:
-i:删除前逐一询问
再root账户下面:
在这里插入图片描述

再普通账户下:
在这里插入图片描述

二:
上街我们说过-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的用法是将后面的字符串显示在显示屏上,那怎么把后面的字符串类型显示到文件当中呢??我们使用输出重定向实现
在这里插入图片描述

echo和后面要学的cat不要弄混,一个接字符串,一个接文件名

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

拷贝文件用法:
在同一目录下:
在这里插入图片描述
如果同名会怎么样:
在这里插入图片描述

不同目录下:
在这里插入图片描述

我们把exercise1目录下的study1.txt文件拷贝上一级目录下,我们看到确实拷贝过去了,在不同目录下,拷贝文件的名字和原文件一样是可以的,也可以向已经存在的文件进行复制,但是原来的内容就被覆盖了,在root账户下会询问,但在普通用户下不会,所以需要使用-i

-i:覆盖文件之前先询问用户

在这里插入图片描述
拷贝目录用法:
同一目录下:

-r:递归处理,将指定目录下的文件与子目录一并处理。若源文件或目录的形态,不属于目录或符号链接,则一律视为普通文件处理

这是把root下的exercise1的目录拷贝到新的exercise4(新的空目录)下,在把exercise1目录拷贝到已经存在的exercise2空目录下,在尝试把exercise1目录下拷贝到已经有文件的exercise2目录中
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

不同目录下:

将exercise1目录下的文件拷贝到exercise2下的子目录下:
在这里插入图片描述
拷贝目录的时候我建议都加上-r选项肯定没有错

相信我把cp指令应该给大家讲明白了,在拷贝目录的时候,我就没有把里面的文件内容打开给大家展示了,里面肯定是有内容的,大家可以自己下去试试,我们开始讲下一个重要的指令mv

三、mv指令

这个指令可以说是非常重要的,在学习这个指令之前我在补充一个小常识:

==补充:==在Windows中,复制文件或者文件夹,那么之前的文件或者文件夹还是存在的,但是剪切就是把原来的文件或者文件夹给搬到想要去的文件目录下,之前目录下文件就没有了, 有这个知识点我们就开始介绍mv指令吧。

mv命令是move的缩写,可以用来移动文件,目录或者将文件改名(move (rename) files),是Linux系统下常用的命令,经常用来备份文件或者目录。
语法: mv [选项] 源文件或目录 目标文件或目录
功能:

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

常用选项:
-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖
-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖

我们来看具体使用(修改文件和修改目录):
在这里插入图片描述
这是剪切和剪切重命名
在这里插入图片描述
那我们怎么知道啥时候是修改啥时候是剪切,啥时候是剪切重命名呢??

在这里插入图片描述
大家看到修改其实和剪切重命名的操作是一样的
在这里插入图片描述

大家来看这个结果:

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

在这里插入图片描述

与之对应的是-f:

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

大家有疑问的可以自己下去尝试一下,这里介绍的知识一些常见的具体用法.

补充知识点:
这个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目录下面了,大家也可以在bin目录下了,我们在任意目录下使用一下。
在这里插入图片描述
大家可以看到这个我自己写的可执行程序就可以像指令一样的去使用。所以指令就是别人写的可执行程序,放在了特定的目录下面,没有什么稀奇的地方,要说差别,就是别人写的比我们写的好,多了一些配置而已

在这里插入图片描述
注意: 大家自己测试的时候,如果把可执行程序放到bin目录下,记得删除,因为有一天,你突然运行一个程序和这个重名,你运行的就是bin目录下的,到时候你自己都不知道怎么回事,所以建议最好不要把自己写的程序放到bin目录下

alias指令的使用:
相信大家在看到怎么把rm改成mv脚本的时候就会有疑惑,这个alias指令是干嘛用的,现在我就为大家解释一下。

我们看到ll就是等于ls -l,说明alias就是取别名的,–color就是颜色,那我们可不可以自己给指令取别名呢??答案肯定是可以的,就需要使用alias指令,我们来看具体操作:
在这里插入图片描述
大家看到我们自己给指令取的别名也可以使用,但我们我们目前写的只是临时的,下次再登录这个系统我们自己取的别名就使用不了了,是临时的,需要配置才可以,现在大家只需要了解就好了

四、cat指令

再讲这个指令之前,我又要补知识点了,这个可以有点难理解,但是我会尽量把大家讲明白。

再Linux下一切皆文件,为什么这么说呢?,再C语言阶段,我们大致了解了文件,文件具有读,也具有写,也具有读写功能,再Linux上,我们的普通文件是文件,显示器和键盘都是属于文件,我们再往文件输入内容,文件的获取的操作是往文件写东西,那这样内容是我们从键盘输入的,键盘按照我们输入来读取数据,来写入文件,有了这个补充,我们的显示器和键盘就想象成一个普通文件,显示器是能显示内容,我们不能从显示器读取内容吧,所以显示器只具有写而不具备读功能,相对的就是我们的键盘,从键盘上读取数,不会有数据写到键盘上吧,所以键盘具有读而不具备写的功能。而我们的普通文件就具备读写功能,有了这个理解,我们再来介绍cat指令

cat再之前我们也看过,我们是从文件当中读取,写到显示器上,比如:

在这里插入图片描述
那如果我们后面不加文件呢??,是不是就默认就显示器上读取,但是显示器上有没有内容,所以我们是不是要写点东西进去,那怎么写,通过键盘写进去就行了,我们来看具体操作
在这里插入图片描述

输入重定向:
这时候引入一个新的概念,输入重定向,和输出重定向相反的,输出重定向是将数据写进文件,而输入重定向是从文件当中读,我们来看看:
在这里插入图片描述

我们再来看一个操作,既然可以写道显示器文件里面,那我们可以产生尝试写到普通文件文件里面看看:‘
在这里插入图片描述
大家看到我们使用输入重定向不能完成从一个普通文件读取然后写到普通文件里面,而输出重定向可以,原因就是优先级的原因,希望这点大家可以理解

接下来将cat的选项用法:

先讲补充知识点:
追加重定向:
大家还记得echo指令的用法吧??我们再来看看用法:
在这里插入图片描述
我们看到输出重定向是将原来的内容清空,再将现有的数据写入,那我们如果想要不清空之前的数据怎么办,使用追加重定向,我们来具体操作
在这里插入图片描述
大家应该知道追加重定向了吧

-b:对非空输出行编号
在这里插入图片描述
-n: 对输出的所有行编号
在这里插入图片描述
-s: 不输出多行空行
在这里插入图片描述

五、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的只是带你就先更新到这里了,我们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提供了大量能使我们快速便捷地处理数据的函数和方法。

举报

相关推荐

0 条评论