linux(ubuntu)系统学习----linux文件操作相关命令二

355 阅读5分钟

本系列基于ubuntu@18.04.3,同时为了演示Mac OS下一些操作命令的区别(虽然基本都是一样的),也会使用到Mac OS High Serria@10.13.3 操作系统来做一些有区别部分的演示。

在上一节中,我们主要介绍了ls cd du pwd which等文件操作相关的命令,这一节我们将一起学习更多命令,它们是cat less head tail touch mkdir cp mv rm

1. cat

cat(concatenate)命令,将文件内容输出在终端,因为是将文件所有内容输出,所以更适合内容较少的文件,这个命令后面可以空格跟多个文件,会一齐输出,如果加上-n参数,输出结果会带上行号

2. less

less命令和cat命令类似,也会输出文件的所有内容,但是不同的是,less命令是分页一页一页的输出内容,每一页输出多少取决于终端窗口的大小,这里有一些很有用的快捷键总结如下:

  1. 回车键或者下方向键可以往后翻一行
  2. y键或者上方向键可以往前翻一行
  3. 空格键往后翻一页
  4. b键往前翻一页
  5. d键往后翻半页
  6. u键往前翻半页
  7. /键在文件内容中搜索,在/后面输入搜索内容,可以是正则表达式,输入后回车,n键可以查询下一个匹配结果,shift + n键查询上一个匹配结果
  8. q键退出less命令

3. head

head命令,输出文件开头部分,默认会输出10行,可以用-n参数指定输出的行数,如下

4. tail

tail命令,输出文件结尾部分,默认会输出10行,类似head命令,可以使用-n参数指定输出的行数,如下

关于tail命令有一个很有帮助的用法,那就是使用-f参数,这样就会实时的监听文件的变化,如果文件有追加内容,就会显示出文件追加的内容,默认情况下,会每间隔1秒,对文件进行一次检查,看是否有新增内容,也可以使用-s参数来指定检查的周期,命令形式tail -f -s 3 index.js(每间隔3秒检查一次),可以自行尝试往某个文件增加内容,看看输出效果。

5. touch

touch命令,创建一个空白文件,准确的说,是修改一个文件的时间戳,让linux系统认为文件是这个时间戳创建或修改的 touch命令后面可以通过空格隔开,创建多个文件,如果创建文件的文件名本来就带有空格,需要引号包裹文件名,一般不推荐文件名带引号,以免造成一些不必要的问题,举例touch demo.js touch 'demo index.js'

6. mkdir

mkdir(make directory)命令,创建一个文件夹 mkdir命令后面可以通过空格隔开,创建多个文件,如果创建文件的文件名本来就带有空格,需要引号包裹文件名,一般不推荐文件名带引号,以免造成一些不必要的问题,举例mkdir demo mkdir 'demo index'

另外如果命令加上-p参数,格式如下mkdir -p demo1/demo2/demo3,这里的意思是,首先创建demo1文件夹,然后在demo1文件夹下创建demo2文件夹,最后在demo2文件夹下创建demo3文件夹,也就是递归的进行创建文件夹操作

7. cp

cp(copy)命令,拷贝文件/目录,可以拷贝多个文件,也可以拷贝目录

我们同样可以把一个文件拷贝到另一个目录下,只要第二个参数是个目录名即可,比如cp index.js demo/,这样会把index.js拷贝到demo目录下,如果你想自己命名,cp index.js demo/copy.js,只需要指定名字即可

如果我们想要拷贝一个目录,使用-r参数(r可以是大写的,r是recursive),这样拷贝的结果是目录中所有内容,包括子目录,都会被拷贝,例如cp -r koa koa-copy

有一个小技巧是,当我们拷贝的文件名字太长,或者我们想拷贝多个名字类似的文件时,我们可以使用通配符*,这样大大节省了时间,例如cp *.js demo/,这个命令会拷贝所有javascript文件,防止demo文件夹下。

8. mv

mv(move)命令,顾名思义,就是用来移动一个文件或目录的,当然它还可以用作重命名一个文件或目录,例如mv index.js demo就是把index.js文件移动到demo文件夹下,mv index.js index2.js,就是把index.js移到相同目录下的index2.js,实际上就是重命名来index.js为index2.js

9. rm

rm(remove)命令,删除文件,目录,甚至整个linux系统,所以说这个命令要谨慎使用,如果一旦错误的删除,想要恢复是比较困难的,这个命令有一些应该知道的参数,如下:

  1. -f(force)参数,强制删除
  2. -i(inform)参数,询问用户是否删除,有y(yes)和n(no)两个选项,选择y则删除,选择n则不会删除
  3. -r(recursive)参数,递归的删除,就是把一个目录下所有子目录内容都会删除

经常有人说的删库跑路,rm -rf /,一定不要乱用,这条命令就是,强制的,递归的从根目录删除,这会造成整个系统被删除,后果是难以想象的,所以千万不要尝试这个命令!!!

补充一点,如果是ubuntu系统非根目录下使用sudo rm -rf /,是不会生效的,系统会提示你,这样做是危险的

但是如果是在跟目录/下执行这条命令,那就真的GG了。

下一节,我们将继续讨论linux系统和文件操作相关的命令。