linux的文件操作的基本命令_shell运行程序

(1) 2024-09-06 11:23

Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说
linux的文件操作的基本命令_shell运行程序,希望能够帮助你!!!。

linux的文件操作的基本命令_shell运行程序_https://bianchenghao6.com/blog__第1张

封面

Linux文件的基本操作。

最常用的文件管理命令只有5个,而且也非常简单,就是ls、cd、cp、rm和mv。这里不再做过多介绍,可以使用man命令去获取Linux的联机帮助。

下面介绍下Linux中几个特别的目录名,分别是:“.”,“..”,“-”和“~”。

其中在任何目录下都能被看到的是“.”和“..”,这个和Windows下的定义是相同的,即分别代表当前目录和上一级目录。注意,在Linux的根目录“/”下也有“..”目录。在根目录下“..”和“.”是完全相同的,都代表根目录“/”。由于“.”目录的存在,是的每一个目录的“链接数”属性为2;由于“..”目录的存在,目录中每增加一个子目录,其“连接数”属性+1;所以“.”和“..”就是实际的文件硬链接的例子。

目录“-”和“~”从来没有出现在磁盘中,它实际上只是cd命令的一个特殊参数。“-”代表上一个工作目录,而“~”则代表当前用户的home目录。由于它们的特殊性,不建议将真实的目录名命名为“-”或“~”,因为这样你将永远无法使用cd 命令进入它们。

搜索文件

Linux一共提供了5个搜索文件的命令。在Linux中搜索文件最简单快速的方法是使用whereis命令。说它简单,因为它只要执行:

$ whereis ls

就可以搜索到“ls”命令以及它的联机帮助文档所在的位置。说它快速,因为它根本不在磁盘中漫无目的乱找,而是在一个数据库中(/var/lib/mlocal)查询。这个数据库是Linux系统自动创建的,包含本地所有文件的信息,并且每天通过自动执行updatedb命令更新一次。也正是因为这个数据库要每天才能更新一次,就会使得whereis命令搜索的结果有时候会不准确,比如刚添加的文件可能搜不到,而刚删除的文件还会出现在结果中。如果需要立即获取准确的搜索结果,可以先手动执行下updatedb命令。

虽然whereis命令既简单又高效,但是功能和有限。它只能用于搜索可执行文件、链接帮助文件和源代码文件。如果要获得更全面的搜索结果,可以使用locate命令。locate命令和whereis类似,且它们使用的是相同的数据库。但是locate使用了十分复杂的匹配语法。如果只是这样:

$ locate ls

就会匹配到无论是文件名中还是路径中出现过“ls”的文件,有些时候这样的结果是不太能使用的,因为太多了, 如果要精确搜索,可以这样:

$ locate -b "\s"

这样会将所有文件名为“ls”的文件路径列出。由于locate与whereis拥有相同的机制,所以也会有相同的缺点。为了速度,你就要牺牲准确性。

其实在Linux中更为常用的搜索命令是which。这个命令比上诉所以命令都要简单,它只是在$PATH环境变量(用于保存可执行文件的默认搜索路径)中指定的路径来搜索可执行文件的所在位置。它一般是来确认系统中是否安装了指定的软件。比如要确认是否安装了gcc,可以使用命令:

$ which gcc

来确认。如果已经安装了gcc,那么就会返回gcc程序的路径,否则就会报错。

type命令比较特别,从名字上看不出来它有什么文件搜索的能力。实际上type命令是用来判断一个命令是否属于shell内置的。如果是非内置的shell命令,并且使用了type的-p选项,type就相当于which命令了。所以从这一点上,就将type归纳为搜索命令了。

最后一个搜索命令,也就是超级无敌的find命令。它无所不及,只是效率极差,因为它没有耍滑头弄什么数据库,而是非常地道地从磁盘中搜索。find命令很强大,相应的也就会更复杂些,下面我们简单举个例子了解下find命令的强大之处:

比如我要找到在三天前的那天发生变化的所有文件,可以使用命令:

$ find / -mtime 3

如果要查询三天内发生变化的所有文件,可以使用命令:

$ find / -mtime -3

如果要查询三天以前发生变化的所以文件,可以使用命令:

$ find / -mtime +3

对于这样的精确查询条件的设定,find还有很多很多,而这仅仅是查询条件。find不仅仅可以设置十分精确的查询条件,还能规范对找到的文件做什么动作。比如我要列出一天以内变化的文件的详细信息,可以使用类似这样的命令:

$ find / -mtime -1 -exec ls -l {} \;

很多人在学习find命令时,总是搞不清楚-exec后面的那部分怎么写,这里简单介绍下:

-exec是find命令对找到的文件执行的动作,这个动作就是对找到的文件执行命令。这个执行的命令就写在了它的后面,在我们的例子中是“ls -l {}”。其实最迷惑人的就是这里,和多人搞不清楚“{}”是什么意思。其实它就是一个占位符,在find命令执行过程中会不断的被替换成当前找到的文件。这样在本例中ls命令就完整了,能够显示想要的文件的详细信息了。具体的命令执行过程弄清楚后,就是后面的这个“\;”,更加让人摸不着头脑。因为Linux联机帮助上说-exec的命令结束标记是“;”。但是我们在实际使用过程中如果真的是这样用的,就总会报错,find拒绝工作。其实这是shell的错,“;”在base环境中有特殊含义,所以需要使用“\”来转义。

对文件打包压缩

如果你经常使用Linux,一定会遇到很多类似:*.tar.gz、*.tar.bz2或*.tar.xz这样的文件。因为很多软件是以这样的文件形式发布的,甚至Linux内核也是如此。这些文件统称都叫“tar”包,其不同的结尾,表明所使用的的压缩算法不同。压缩比从低到高的排序是gz<bz2<xz,而压缩速度则正好相反gz>bz2>xz。

解压缩“tar”包非常简单,只需要这样:

$ tar -vx -f filename

$ tar -vxf filename

就可以解压缩所有类型的“tar”包,注意filename就是你要解压缩“tar”包的文件名,而且使用后一种形式的时候,命令选项里的f一定要放在最后。

创建“tar”包可能稍微有些麻烦,但是也只是比解压缩的时候多一个命令选项,而这个多出来的命令选项就是所采用的的压缩算法。z代表gz,j代表bz2,J代表xz。所有创建一个“tar”包,可以使用类似这样的命令:

$ tar -zcvf filename.tar.gz FILES

$ tar -jcvf filename.tar.bz2 FILES

$ tar -Jcvf filename.tar.xz FILES

其中FILES代表要被打包和压缩的文件或者目录的名称。

绝对干货!!!持续更新!!!

如果您喜欢请加关注!!!

今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

上一篇

已是最后文章

下一篇

已是最新文章

发表回复