Linux文件和目录管理命令综合练习

1、创建一个/data目录
命令:mkdir(make directory)
[root@model 桌面]# mkdir /data
创建完成后,最好用ls或ls -l命令查看确认一下,防止出错
ls(list) -l(long)
[root@model 桌面]# ls /

2、在/data目录下创建test.txt
命令:touch
补充说明:如果想同时创建多个文件,则在touch后的文件名后加空格即可,
如touch 文件1 文件2 文件3
[root@model data]# touch /data/test2.txt /tmp/test.txt
方法1:用绝对路径的方式创建
[root@model 桌面]# touch /data/test.txt

方法2:用相对路径的方式创建
步骤1:切换到data目录下
命令:cd(change directory)
[root@model 桌面]# cd /data
步骤2:查看当前操作的目录是否是要求的目录
pwd(print working directory)
[root@model data]# pwd
步骤3:创建文件
[root@model 桌面]# touch test.txt

方法3:重定向的方式创建
[root@model data]# echo “”>text.txt

方法4:vi编辑器的方式创建
步骤1:用vi编辑器启动一个文件
[root@model data]# vi test.txt
步骤2::wq保存退出,如果是新文件,则直接创建

3、为test.txt增加一行内容“I am studying Linux”
方法1:vi编辑器
方法2:echo命令+重定向
[root@model data]# echo “I am studying Linux” >test.txt
[root@model data]# echo “I am studying Linux” >>test.txt(是企业操作中最常用的方式之一)
echo+附加重定向用来添加一行内容
注意:关于单引号和双引号的区别
(1)单引号和双引号对于普通的字符串来说是相同的含义
(2)但凡在字符串中加入了特殊字符(转义符),那么单引号不能识别特殊符号,会将其直接输出;而双引号能够识别特殊符号的含义,并将其转义后输出。
[root@model data]# var=1
[root@model data]# echo ‘$var’
KaTeX parse error: Expected 'EOF', got '#' at position 22: …oot@model data]#̲ echo "var"
1

[root@model data]# echo “here ‘this is a string’ is a string”
here ‘this is a string’ is a string
[root@model data]# echo “here “this is a string” is a string”
here this is a string is a string
[root@model data]# echo “here “this is a string” is a string”
here “this is a string” is a string

方法3:cat(concatenate)命令
cat一般用来显示文件内容
[root@model data]# cat test.txt
I am studying Linux
利用cat和重定向来向文件中追加内容,并用EOF(end of file)结束(是企业操作中最常用的一种方式之一),用来添加多行内容
[root@model data]# cat >>test.txt <<EOF(或者cat << EOF >>test.txt)

I am studying Linux
I am studying Linux
I am studying Linux
I am studying Linux
EOF
EOF:是习惯性写法,写EOF显得比较专业,也可以用其他的字符替代
注意:这种方式可以输入、添加、覆盖内容,也可以进行脚本的编写。

方法4:cat+重定向
cat >>test.txt
并利用ctrl+C 或者 ctrl+D结束
一般不常用

4、把test.txt拷贝到/tmp目录下
命令:cp(copy)
语法:cp 被拷贝的文件(或目录) 目标文件或目录
[root@model data]# cp test.txt /tmp
注意:当目标为文件时,如果当前目录没有同名文件,则创建该文件,如果有,则覆盖该文件。如果覆盖,一定小心。
cp命令的选项列表:
-d:当复制符号链接时,把目标文件或目录也建立为符号链接,并指向与原文件或目录链接的原始文件或目录
-p:保留原文件或目录的属性
-r/R:递归复制。用来复制目录及目录下的文件。
-a:相当于dpr三个选项的合体。
[root@model /]# cp -dpr /test /tmp/
[root@model /]# cp -a /test /tmp/
-f:强制复制,无论目标文件或目录是否存在,不进行提示(比较危险,不建议使用)
-i:覆盖之前先询问用户

5、把/data目录移动到/root下
命令:mv(move)
[root@model data]# mv /data /root
mv的选项列表:
-i:移动覆盖之前先询问用户
-f:强制执行(比较危险,不建议使用)
-u:当源文件比目标文件新或者目标文件不存在的时候使用(比-f安全,但还是不建议使用)
思考题:下面是一个测试,试验一下下列的描述是否正确。
题目:当前目录下存在f1,f2,d1,d2
(1)mv f1 f2,且f1和f2都是文件。如果f2不存在,则相当于把f1重命名为f2;如果f2存在,则f1重命名为f2,并覆盖f2。(√)这种方式,我们一般用来重命名文件。

(2)mv f1 /d1,且f1为文件。如果/d1存在且是目录,则把f1移动到/d1下;如果/d1不存在,则把f1移动到/下,并重命名为d1。(√)

(3)mv /d1 /d2,且d1是目录。如果/d2存在且是目录,则把d1移动到/d2下;如果/d2不存在,则把/d1重命名为/d2。(√)这种方式,我们一般用来重命名目录。

(4)mv /d2 f1,且d2是目录。如果f1不存在,则把/d2移动到当前目录,并命名为f1(√);如果f1存在且是文件,则把d2变为文件(×)。
[root@model 桌面]# mv /d2 f1
mv:是否覆盖"f1"? y
mv: 无法以目录"/d2" 来覆盖非目录"f1"