网站的设计思路怎么写,中装建设股票行情,套模板建设网站多少钱,济南企业做网站推广网站W...Y的主页 #x1f60a;
代码仓库分享 #x1f495; 关于Linux的操作符#xff0c;在上篇博客中我们已经讲述了一些#xff0c;都是Linux最基本的操作符。今天我们继续了解一些关于对文件及目录增删查改的操作符#xff0c;话不多说我们直接上内容。
目录
rm指令的回…
W...Y的主页
代码仓库分享 关于Linux的操作符在上篇博客中我们已经讲述了一些都是Linux最基本的操作符。今天我们继续了解一些关于对文件及目录增删查改的操作符话不多说我们直接上内容。
目录
rm指令的回顾以及拓展
man指令
cp指令 nano指令
mv指令
编辑 对指令进行重命名
alias指令
echo指令
cat指令
more指令
less指令
编辑 head指令
tail指令 rm指令的回顾以及拓展
在上篇博客中我们已经了解rm指令是将目录或文件进行删除的一个指令。在我们想要删除时我们只需要将文件或目录跟在rm指令后面即可。当我们删除一个不为空的目录时我们需要在rm指令后加上-r进行递归删除。root账号会在递归时进行询问而其余子账号在递归删除时不会进行询问。但是在rm后加 -i就会询问(无论是root还是其余账号)。要想要强制删除在rm后加 -f即可。
上面就是使用普通用户进行文件的删除时的流程如果没有-i删除时Linux就不会进行询问。
这就好比Windows中的回收站一样当我们需要清空回收站时系统就会询问我们需要永久删除这几个项目吗这样做就非常的严谨。但是我们还是得注意Windows中的删除并不是真正的删除而是先将不需要的空间进行标记让后来的文件进行覆盖。Linux则是直接的删除我们的文件。 当我们创建一系列无用的文件及目录我们想要全部删除应该怎么办我们要使用rm一个一个删除吗有没有什么快捷的方法呢
那肯定是有的我们可以使用rm -rf ./*或者rm -rf *都行直接删除即可。
这个*如同命令一样是一种通配符指在指定路径下的所有文件及目录
但是又会有人说这样会不会删除掉隐藏文件呢答案是不会。
那有人就会吐槽说好删除当前路径下的所有文件怎么隐藏的文件却删不了。因为这样才能将隐藏文件更好的隐藏起来。那要怎么删除隐藏文件呢这时我们就得记住其隐藏文件的名字一个一个进行删除才行。
man指令
在学习Linux指令时就如同我们学习一门语言经常会遇到一些我们没见过或者忘记的指令我们需要进行了解它们是什么作用Linux会给我们提供一个在线手册我们就可以使用man指令进行查阅。
语法: man [选项] 命令
比如ls命令的作用 如果找不到我们也可以使用我们平时的搜索引擎百度、酷狗、chatgdp都行。
man也是条指令那我们连man的指令也不知道时我们就可以查找man man。 常用选项 -k 根据关键字搜索联机帮助 num 只在第num章节找 -a 将所有章节的都显示出来比如 man printf 它缺省从第一章开始搜索知道就停止用a选项当按 下q退出他会继续往后面搜索直到所有章节都搜索完毕 解释一下,面手册分为8章 1 是普通的命令 2 是系统调用,如open,write之类的(通过这个至少可以很方便的查到调用这个函数需要加什么头文 件) 3 是库函数,如printf,fread4是特殊文件,也就是/dev下的各种设备文件 5 是指文件的格式,比如passwd, 就会说明这个文件中各个字段的含义 6 是给游戏留的,由各个游戏自己定义 7 是附件还有一些变量,比如向environ这种全局变量在这里就有说明 8 是系统管理用的命令,这些命令只能由root使用,如ifconfig 当我们在man后不加num时我们搜索的指令会从第一个开始寻找到第八个结束直到找到为止才停止。 在后面加上1 其实与不加是相同的。
在举个例子我们想要查询c库中的printf函数的作用我们直接使用man去查找 我们发现printf在1号手册中就查找成功了它在Linux中是一个指令并不是函数。但当我们使用num调整查找的优先级时 我们可以看出printf也是C库中的输出函数。
我们的云服务器是比较干净的如果没有man手册我们就需要进行安装。安装条件必须在root账号下进行。输入yum install -y man-pages即可。
cp指令
cp指令中的cp就是copy的简写即拷贝。而拷贝在Windows中就是复制粘贴的意思。我们想要将文件复制到另一个文件夹时我们通常会在Windows中进行复制粘贴的选项。
语法cp [选项] 源文件或目录 目标文件或目录功能: 复制文件或目录说明: cp指令用于复制文件或目录如同时指定两个以上的文件或目录且最后的目的地是一个已经存在的目录则它会把前面指定的所有文件或目录复制到此目录中。若同时指定多个文件或目录而最后的目的地并非一个已存在的目录则会出现错误信息。 常用选项 -f 或 --force 强行复制文件或目录 不论目的文件或目录是否已经存在 -i 或 --interactive 覆盖文件之前先询问用户 -r递归处理将指定目录下的文件与子目录一并处理。若源文件或目录的形态不属于目录或符号链接则一律视为普通文件处理 -R 或 --recursive递归处理将指定目录下的文件及子目录一并处理 首先我们得强调一点在同级目录下不允许存在同名文件或者同名目录如果创建的目录与已有的文件或目录同名Linux会报错。 在介绍cp拷贝指令时为了更清楚直观的看到拷贝过去的内容我们先来介绍另一个指令nano。 nano指令
什么是nano指令用Windows的话说来说就是一个记事本。输入我们想要输入的文本进行记录。我们可以使用nano加上一个文件名来创建一个文本。
ctrlx为退出退出后选择y是保存n为取消保存与Windows大同小异。
当我们退出后我们可以看到在此路径下就已经有这个文件了。 我们使用cat指令(后面马上会说到)就可以看到文本中的内容了。
如果没有nano指令的我们可以输入yum install -y nano 指令进行添加。 nano讲完我们再回到cp指令中。我们想要把我们刚创建好的test.txt文件放入上级目录中去我们就可以使用cp指令。 我们成功将test.txt拷贝到上级目录中去了并且上级目录中的test.txt文件内容与原文件的内容相同。
如果我们想要将test.txt拷贝到当前目录可以吗
肯定是不行的因为同一路径下文件或目录是不能重名的。如果非要进行拷贝也不是没有办法。我们可以修改文件名字。 那cp难道只能拷贝普通文件吗就不可以拷贝目录吗
我们来试一下我们将此路径下的dir目录拷贝到上级看是否可行。
这时此路径下的文件即目录。 linux会进行报错目录不是文件。还是有办法的我们可以类别rm指令。 在cp后面加上-rf就可以对目录进行操作处理。 我们可以看出拷贝的结构完全相同。
当我们想要在同路径下进行拷贝时与文件拷贝相同需要一个不重名的目录。假如我们不小心重名了虽然会进行报错但是dir目录中的结构将发生改变所以这样做非常危险。
我们应该这样做 这样做才是正确且安全的。
如果我们想要将dir的目录拷贝到一个指定路径下并且更改名字该怎么做。 现在在/home/why路径下已经有我们拷贝的dir目录了并且将dir目录的名字改成了mydir。 并且mydir目录与dir目录的内容相同。
所以我们可以保证文件名拷贝到新的路径后不变也可以指定路径拷贝过去后内容相同但文件名不同只要保证同级别的目录不影响即可。
现在我想将lesson3中的所有内容全部拷贝到copy目录下应该怎么做呢 我们可以看出只要在后面加入绝对路径与*通配符即可表示在当前路径下的所有文件即目录。
最后我相信大家还有一个疑问拷贝会不会拷贝隐藏文件呢答案是不会假设隐藏文件被拷贝过去我们就会知道隐藏文件的存在失去了”隐藏“的意义。第二点每个目录下都会有. .. 这样的隐藏文件如果拷贝过去就会导致目标名重复问题。
mv指令
mv指令是由move(移动)缩写得来的命令意思就是文件的移动。拿Windows类比的化就是剪切功能。在Linux系统下经常用来备份文件或者目录。
语法: mv [选项] 源文件或目录 目标文件或目录功能: 1. 视mv命令中第二个参数类型的不同是目标文件还是目标目录mv命令将文件重命名或将其移至一个新的目录中。 2. 当第二个参数类型是文件时mv命令完成文件重命名此时源文件只能有一个也可以是源目录名它将所给的源文件或目录重命名为给定的目标文件名。 3. 当第二个参数是已存在的目录名称时源文件或目录参数可以有多个mv命令将各参数指定的源文件均移至目标目录中 常用选项 -f force 强制的意思如果目标文件已经存在不会询问而直接覆盖 -i 若目标文件 (destination) 已经存在时就会询问是否覆盖 这时mydir目录中的文件现在将copy中的文件全部删除后再使用mv指令将mydir目录进行剪切到copy目录中去。 原本的mydir目录不见了已经全部剪切包含到copy目录中去了。 这样我们就成功的将mydir进行转移。mv指令不仅可以转移目录也可以转移文件。
将在lesson3中的test.txt.bak剪切到上一级copy目录中去。
还记得test.txt中nano的内容吗就是上文展示过的一段简单的程序。现在我们想将刚刚移动到copy中的 test.txt.bak文件再转回到lesson3目录中去并且改一下名字应该怎么做呢
我们此时在lesson3的目录中想要找到copy目录必须使用../找到上一级在进行寻找目标文件。找到后直接输入想要修改的名字即可就会转移到我们当前用户所在的路径下。
mv除过可以进行移动文件与目录还可以进行改名操作。当想要目标文件对应的是一个存在的目录或路径Linux就会将文件进行移动。如果对应的不存在将会进行目标文件名称的修改。
现在我们将目标文件test.txt进行重命名 对指令进行重命名
对指令进行重命名就是为了更好的让人们从Windows系统中转换到Linux系统中来。大家都知道我们在Windows中删除一个文件就是放到回收站中但是放入回收站不代表真正被删除想要恢复就可以直接恢复。但是在Linux中的rm命令删除就是真正的删除无法恢复。而Windows中的回收站其实也是一个目录将我们即将删除的文件全部放进去。所以我们为了更贴合Windows就像将Linux中的rm命令进行重命名为mv然后放入一个目录中去。
重命名更像我们C语言中的typedef可以将命令进行重定义。而我们应该怎样去进行重命名呢
我们目前学到的许多命令全部都是放在/usr/bin/目录中。
命令的本质其实就是二进制可执行文件。
下面我们可以创建一个小的脚本文件进行重命名操作。
我们先创建一个test.c文件使用nano写一个非常简单的程序。
#include stdio.h
int main()
{printf(hello linux\n);return 0;
}然后使用gcc命令让文件进行编译会生成一个a.out文件我们将其改名为mycmd。然后将mycmd复制到/usr/bin目录下。我们在Linux打出mycmd后就会出现hello Linux。 这就是非常小的一个脚本。注意当我们使用非root账户时我们不能将编译文件转入/usr/bin目录中去我们得切换成root账号进行转移。
alias指令
alias英语翻译过来就是别名的意思在这里更像c语言中的typedef。将命令进行重命名。 我们将ll命令重命名为why当我们输入why时与输入ll的指令结果是相同的。
那如何将这个重命名进行删除呢我们直接关闭xshell然后再打开就没有刚才的重命名了。
echo指令
我们刚刚学过nano指令再文本中可以输入我们想要的内容进行存储。而echo指令与nano指令有些相似却又不同。
当我们直接想将文本输入在屏幕上时我们可以使用echo指令进行打印 当我们想要与nano有相同的作用时我们可以这样写
将需要的文本进行写入然后使用进行连接再加上需要的文件名即可。
那是什么符号呢输出重定向。原本echo指向的输出就是屏幕而我们将其输出改为到一个文件中去。
所以我们又多了一种可以创建新文件的方法只要向文件中输入的内容为空就是创建新文件。 这就是我们的新方法。
那我们如果不断地去输出内容会怎么样呢 原本的hello linux被替换成了hello。就如同原本的文本内容被重新创建再将最新内容写入。这与C语言中往文本中写数据的”r“模式非常类型我们可以去类比理解。那这样我们也可以将我们原本的file.txt文件清空。 总结 输出重定向每次都会清空原始文件然后再写入。 作用1.新建空文件。 2.清空目标文件。 那有什么办法可以让我们写的文本内容不会被覆盖继续往下写呢如同C语言文本输入的”a“模式。那肯定是有的。
我们在符号那里做文章将改为即可。我们将称为追加重定向。在我们原本的文章中进行继续输出不会覆盖原本的内容。
cat指令
在上面的指令中其实我们已经多次使用到cat指令它就是将文件的内容进行打印的。 语法cat [选项][文件] 功能 查看目标文件的内容 常用选项 -b 对非空输出行编号 -n 对输出的所有行编号 -s 不输出多行空行 我们可以使用echo以及追加重定向符号在file.txt文件中在多加入一些内容。 cat -b是对非空输出行进行编号 cat -n是对所有输出行进行编号
如果有多行空格我们只想输出一行空格意思一下剩下的全部省略我们就可以使用cat -s进行操作 组合也可使用
当我们想要反转文本内容时我们只需要将cat指令倒过来输入tac即可将文本内容反转。 这些就是cat指令的基本用法 其实cat后面不仅可以跟文件名也可以什么都不跟。cat指令完后直接回车。
你输入什么cat就给我们打印什么。看上去挺无聊的。但是我们可以进行翻译一下cat文件从键盘文件读取什么就向显示器文件写入什么。所以cat是默认从键盘文件读入的。那我们能不能与echo一样更换一下输入方呢 把本来应该从键盘文件中读入的内容更改为普通文件中进行输入所以为输入重定向。就如同C语言中的”r“模式一样。 more指令
当我们读取一个短文件时我们可以使用cat指令进行读取但是读取长文件时就不那么方便我们就可以使用more指令进行读取。
语法more [选项][文件] 功能more命令功能类似 cat 常用选项 -n 对输出的所有行编号 q 退出more
首先我们应该创建一个大文件使用i0;while [ $i -le 1000 ]; do echo hello $i; let i; done file.txt即可在当前目录下创建一个file.txt文件。
当我们创建了个大文件后我们想要查看其文件使用cat指令会刷屏非常的难受这时我们使用more指令就可以读取大文件。 more指令会将内容先打满整个屏幕然后停止打印剩下的内容需要我们一行一行点击回车进行逐行打印方便我们阅读。
但是more指令有缺陷只能使用回车。无法使用上下键无法向上翻阅。所以我们并不推荐使用more这里可以做一个了解。我们更推荐使用less指令。
less指令
less 工具也是对文件或其它输出进行分页显示的工具应该说是linux正统查看文件内容的工具功能极其强大。 less 的用法比起 more 更加的有弹性。在 more 的时候我们并没有办法向前面翻 只能往后面看 但若使用了 less 时就可以使用 [pageup][pagedown] 等按键的功能来往前往后翻看文件更容易用来查看一个文件的内容 除此之外在 less 里头可以拥有更多的搜索功能不止可以向下搜也可以向上搜。 语法 less [参数] 文件 功能 less与more类似但使用less可以随意浏览文件而more仅能向前移动却不能向后移动而且less在查看之前不会加载整个文件。 选项 -i 忽略搜索时的大小写 -N 显示每行的行号 /字符串向下搜索“字符串”的功能 ?字符串向上搜索“字符串”的功能 n重复前一个搜索与 / 或 ? 有关 N反向重复前一个搜索与 / 或 ? 有关 q:quit 我们使用less与使用more的功能一样看大文件可以向上向下观看。现在我们说点more没有的功能。
当我们想进行搜索文件中的内容时我们只需要输入内容即可跳转到对应的内容去。 head指令
当面对一个大文件时我们只想看一下文件的头部内容就可以使用head指令进行操作。
语法 head [参数]... [文件]...功能 head 用来显示档案的开头至标准输出中默认head命令打印其相应文件的开头10行。选项 -n行数 显示的行数 head会默认截取文件头部的前十行内容进行打印。
我们想要读取自己想要的行数即可在head后加-nn代表自己想要的行数。
tail指令
tail指令与head指令是相对的一个是从头开始进行一个是从尾部进行。
tail 命令从指定点开始将文件写到标准输出.使用tail命令的-f选项可以方便的查阅正在改变的日志文件,tail -f filename会把filename里最尾部的内容显示在屏幕上,并且不但刷新,使你看到最新的文件内容. 语法 tail[必要参数][选择参数][文件] 功能 用于显示指定文件末尾内容不指定文件时作为输入信息进行处理。常用查看日志文件。 选项 -f 循环读取 -n行数 显示行数 tail指令默认也是后10行。
如果想要选择自己需要的行数在tail后加-nn代表想要行数即可。 拓展要是我们想要读取文本中间的内容我们必须利用tail与head的搭配进行截取即可。 以上就是本次Linux基本操作符全部内容对你有帮助的一键三连支持一下博主吧