目录
我们的root结构中什么都没有,接下来,我们写几个mkdir创建A B C D四个目录:
如图所示,我们成功的创建了四个目录。
mkdir -p表示沿着路径创建目录:
例如:
我们现在A目录下再创建一个a目录:
假设我们要在最外层目录中创建一个普通文件test.c
注意:我们touch创建的是普通文件,不能当作目录,所以我们无法在test.c对应的路径后再创建文件
接下来,我们介绍删除指令:
我们删除掉B:
所以我们的mkdir是能够删除空目录的
我们尝试删除普通的文件:
我们发现,rmdir不能够删除普通文件
rmdir能够删除非空目录吗?
我们进行证明:
rmdir无法删除非空目录。
总结:rmdir只能删除空目录。
我们要使用删除的话,一个rm就足够了。
rm默认删除普通文件。
我们可以通过rm -r来递归删除一个目录中的所有数据:
例如:
这里会有一些提问,作用是防止我们误删。
我们删除之后的结果为:
假如我们不需要提问的时候,我们可以这样写:rm -rf +目录表示强制递归删除一个目录中的所有数据。
例如:
我们先创建一个非空目录:
我们使用强制递归删除a目录下的所有数据:
我们就强制递归的删除了a目录及其以下的所有数据。
注意:能不能这样写:
答案是可以的,这样表示我们强制删除根目录下的所有内容,但是我们的操作系统一定会崩溃,并且所有的数据库都被删除。
所以注意:千万不要这样写。
假设我们想要在删除文件时,系统给我们提示该怎么做?
答:加上 -i。
例如
假设我们想要删除test.c,并且想要得到提示:
这样我们就成功的获取了提示,我们要同意的话,按y即可,不同意的话,按n
man指令就相当于是一个目录:
我们可以通过man指令查看任意的指令,例如,假如我们要查看touch指令:
按下回车,会弹出这样一个窗口
这就是关于touch指令的详细介绍。
我们也可以通过touch了解各种指令
man就是一个查看命令,系统调用,c接口的一个手册,这个手册是有编号的
这里的前三个编号分别对应的是:
1:代表可执行程序和系统命令。
2:系统调用
3:库函数调用。
我们也可以这样使用man函数:
man man
相当于用man手册来看man的定义:
我们可以发现,man的编号是1.
man的默认查找方式是这样的:
man默认是从1号手册开始查找,找到即停
man可以根据指定手册查找指令
例如:
我们知道printf函数的标号是1,我们可以直接这样写:
例如,我们的strlen函数是库函数,在编号3中,我们可以直接+编号来提升搜索效率
使用cp指令的结构是这样的:
cp src des
其中,src是来源的意思 des是目的地的意思,我们cp拷贝的作用是把src对应的文件拷贝到des对应的路径处。
在如图所示的数中,假如我们想要test.txt拷贝到A/a的路径处:
我们尝试以下是否可以拷贝目录:
我们尝试是否可以把C目录拷贝到B目录下。
拷贝失败,所以cp拷贝只能够拷贝目录
我们也可以把文件拷贝到上级目录去:
例如,我们可以把路径为A/a下的test.txt文件拷贝到上级目录:
我们可以先进入A/a
再把对应文件拷贝到上级目录:
我们成功的把文件test.txt拷贝到了上级目录。
目录不可以直接拷贝,不过我们可以使用-r来拷贝目录:
例如:
假如我们要把A目录下的内容全部拷贝到D/d路径处:
-r表示的是递归拷贝。
我们成功的把A目录下的全部数据拷贝到了路径D/d/处。
注意:拷贝的本质是覆盖:
例如:
这是我们原来的文件排布:
假如我要把A文件中的test.txt拷贝到D/d/位置处,这时候就发生了替换:
总结:cp +src +dest表示拷贝文件。
cp拷贝默认的是拷贝文件,cp默认不能拷贝目录
cp -r +目录名可以拷贝目录
cp的可以替换同名文件
echo可以把数据显示到计算机屏幕上,和printf非常相似,不过不能够格式化输入。
例如:
echo指令并不会识别%,并不会格式化输入,我们输入的字符串是什么,显示到计算机屏幕上的就是什么。
mv指令的结构是 mv src dest
1:类似于剪切功能,move,移动文件或者是目录。
2:对文件或者目录进行重命名
例如:
这是我们的文件图像,假如我们要把c文件移到B/位置处:
移动后对应的图像:
2:如何进行重命名操作呢?
我们可以直接把A目录移动到根目录的test106处
但是我们并没有test106
所以这里的意思就相当于把A重命名为test106.
常用的两个选项:
我们把test.txt文件中输入10000个hello 106.
我们使用cat显示文件内容:
显示的内容:
我们也可以显示行号的查看:cat -n +文件名
我们发现cat是从前往后进行显示的,接下来,我们引入tac
显示的结果是:
cat vs tac :命令反过来了,内容也反过来了。
我们发现无论是cat还是tac都不方便看大文件,我们引入几个其他的指令:
例如:
more默认显得是文件的前25项内容:
但是我们按回车是可以继续看后续的数据的:
more也可以显示选行:
表示的是显示到前500行:
默认显示的前25行
不过我们既可以上翻,也可以下翻:
不过less并不能指定行数的访问:
我们显示的内容依旧是前25行。
我们也可以指定行数:
我们也可以指定行数:
不过我们这里执行的是倒数第n行。
那么,假如我们要访问中间的十行呢?[1000,1010]?
我们可以采取创建临时变量的方法:
这里的意思是从test.txt提取到前1010个文件,然后把这1010个文件输出到tmp.txt中,所以现在tmp.txt文件中有1010个文件。
我们只需用tail提取到tmp.txt的最后十个文件就可以了。
取出的就是区间为[1000,1010]之间的元素。
这种方法还需要创建临时变量
我们可以写一个一步到位的代码:
这个符号|是管道的意思:这串代码表示的意思是从文件test.txt提取出前1010个文件,然后把这1010个文件通过管道传给另一端,然后我们从另一端接收到这1010个文件,然后从这些文件中提取出后10个文件
假如我们再提出一个要求,把这十个文件进行逆置呢?
答:我们还可以利用管道的思想:
管道的思想:先从文件test.txt中提取前1000个文件,把这写文件放入管道中,另一端的管道接收文件,然后提取出这些文件的后10位,然后把这些文件的后10位再传到管道中,另一端接收这些文件,把这些文件逆置的读取出来。
我们可以再提出一个要求,求出这些逆置的文件的前3位?
答:依旧使用管道:
我们把逆置过来的文件放到管道中,另一端管道接收文件,取出文件的前3个并显示。
管道可以组合各种各样的命令。
例如:
假如我们想要显示具体的年月日时分秒该如何写呢?
其中,%Y %m %d %H %M %S分别对应格式化输入年月日时分秒。
这里的%s所对应的是格式化输入中时间戳对应的秒:
输出的结果是这样:
这串数字所对应的时间是从1970 年1月1日至今所过去的秒钟:
我们每次对应的时间戳都不同。
如图所示:
在我们所对应的地区,时间戳的初始值对应的时间就是这个。
默认输入cal,输出的本月的日历。
我们可以在cal后输入具体的年份:
能够输出对应年份的日历。
cal -3
能够输出最近3个月对应的日期。