本系列基于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命令是分页一页一页的输出内容,每一页输出多少取决于终端窗口的大小,这里有一些很有用的快捷键总结如下:
回车键或者下方向键可以往后翻一行y键或者上方向键可以往前翻一行空格键往后翻一页b键往前翻一页d键往后翻半页u键往前翻半页/键在文件内容中搜索,在/后面输入搜索内容,可以是正则表达式,输入后回车,n键可以查询下一个匹配结果,shift + n键查询上一个匹配结果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系统,所以说这个命令要谨慎使用,如果一旦错误的删除,想要恢复是比较困难的,这个命令有一些应该知道的参数,如下:
-f(force)参数,强制删除-i(inform)参数,询问用户是否删除,有y(yes)和n(no)两个选项,选择y则删除,选择n则不会删除-r(recursive)参数,递归的删除,就是把一个目录下所有子目录内容都会删除
经常有人说的删库跑路,rm -rf /,一定不要乱用,这条命令就是,强制的,递归的从根目录删除,这会造成整个系统被删除,后果是难以想象的,所以千万不要尝试这个命令!!!
补充一点,如果是ubuntu系统非根目录下使用sudo rm -rf /,是不会生效的,系统会提示你,这样做是危险的
/下执行这条命令,那就真的GG了。
下一节,我们将继续讨论linux系统和文件操作相关的命令。