1.路径
要访问某个文件或目录,需要知道这个文件或目录位于哪里,也就是要知道这个文件或目录的路径。路径分为两种,一种是绝对路径,另一种是相对路径。
绝对路径从 / 开始算,一个完整的路径如/home/tom,再如/xx/aa
绝对路径有以下两个符号。
(1) . 表示当前路径
(2) .. 表示上一层路径。
假设现在处在/home/blab目录下,如图所示。
. 表示当前目录,即/home/blab。 .. 表示上一层目录,即/home。
如果现在处在/xx/aa目录下,如图所示。
. 表示当前目录,即/xx/aa。 .. 表示上一层目录,即/home。 . 和 .. 表示的路径会依据当前所在目录的不同而不同。
2 创建和删除目录
创建目录(文件夹)是命令mkdir,语法如下。
[jerry@redhat8 ~]$ mkdir dir
或者
[jerry@redhat8 ~]$ mkdir -p dir1/dir2
这里的意思是在dir1下创建dir2,-p的意思是,如果dir1不存在,则会把dir1也创建出来。
使用jerry用户登录,在当前目录下创建目录xx,命令如下。
[jerry@redhat8 ~]$ mkdir xx
在当前目录下的目录11创建目录22
[jerry@redhat8 ~]$ mkdir 11/22
mkdir: 无法创建目录 “11/22”: 没有那个文件或目录
因为目录11不存在,所以想在目录11中创建目录22自然是创建不出来的,这里加上-p选 项就可以了。
[jerry@redhat8 ~]$ mkdir -p 11/22
可以看到,目录11不存在,也会把11创建出来,然后再在11中创建22
删除目录的命令是rmdir,语法如下
rmdir dir
删除目录xx,命令如下
[jerry@redhat8 ~]$ rmdir xx
如果目录11中还有目录22,执行命令删除目录11
[jerry@redhat8 ~]$ rmdir 11
rmdir: 删除 '11' 失败: 目录非空
因为目录11中还有目录22,所以rmdir无法直接删除目录11,需要把目录11中的内容全部 清除才能删除目录11。这里可以利用后面讲的rm -rf命令来删除。
[jerry@redhat8 ~]$ rm -rf 11
这里的 -r 选项的意思是递归,如同剥洋葱,一层一层地剥;-f 选项的意思是强制
3 cd 的用法
cd 的主要作用是切换到其他目录,用法如下
cd 路径
这里的路径可以是相对路径也可以是绝对路径,如果没有明确地指定路径,则是当前路径,如
cd test
test就表示当前路径下的一个目录,这种写法等同于
cd ./test
操作如下命令并查看这个目录的结构
[jerry@redhat8 ~]$ mkdir -p aa/bb/cc/dd/ee/ff/{11,22}
[jerry@redhat8 ~]$ tree aa
aa
└── bb
└── cc
└── dd
└── ee
└── ff
├── 11
└── 22
7 directories, 0 files
进入目录11,命令如下。
[jerry@redhat8 ~]$ cd aa/bb/cc/dd/ee/ff/11/
[jerry@redhat8 11]$ pwd
/home/jerry/aa/bb/cc/dd/ee/ff/11
这里cd后面直接跟aa,表示当前目录下的aa。
如果想切换到目录22,使用绝对路径的写法如下
[jerry@redhat8 11]$ cd /home/jerry/aa/bb/cc/dd/ee/ff/22/
[jerry@redhat8 22]$ pwd
/home/jerry/aa/bb/cc/dd/ee/ff/22
现在是在目录22中,目录22的上一层目录是ff。如果想切换到目录11,使用相对路径的写法如下。
[jerry@redhat8 22]$ cd ../11/
[jerry@redhat8 11]$ pwd
/home/jerry/aa/bb/cc/dd/ee/ff/11
不管在那和目录下,只要输入cd,就可以切换到家目录。
[jerry@redhat8 11]$ pwd
/home/jerry/aa/bb/cc/dd/ee/ff/11
[jerry@redhat8 11]$ cd
[jerry@redhat8 ~]$ pwd
/home/jerry
直接输入cd命令,等用于输入cd ~命令,这里的 ~ 是一个变量,表示当前用户的家目录。 也可以用~user表示user用户的家目录。
4.拷贝和复制
如果想需要拷贝文件或目录,可以使用cp命令,cp的语法如下。
cp 选项 /path1/xx /path2/yy
如果/path2/yy是一个目录,意思把/path1/xx拷贝到/path2/yy中。如果/path2/yy不存在或是一个文件,意思是把/path1/xx拷贝到/path2中,命名为yy。
下面的操作都是使用root用户做的,把/ect/hosts拷贝到/opt目录中。
[root@redhat8 ~]# cp /etc/hosts /opt/xx
这里/opt是一个目录,那么这句话的意思是把/etc/hosts拷贝到/opt目录中。查看一下/opt中的内容。
root@redhat8 ~]# ls /opt
hosts
把/etc/hosts拷贝到/opt中,命名为xx。
[root@redhat8 ~]# cp /etc/hosts /opt/xx
[root@redhat8 ~]# ls /opt/
hosts xx
原来并不存在/opt/xx,上面的操作是把/etc/hosts拷贝到/opt中,命名为xx。
看下面的例子。
[root@redhat8 ~]# mkdir /opt/11
[root@redhat8 ~]# cp /etc/hosts /opt/11
先创建目录/opt/11,因为/opt/11是一个目录,所以这里把/etc/hosts拷贝到/opt/11 中,而不是把/etc/hosts拷贝到/opt之后命名为11。
root@redhat8 ~]# cp /etc/hosts /opt/xx
cp:是否覆盖'/opt/xx'? y
因为/opt/xx不是一个目录,所以这句话的意思是把/etc/hosts拷贝到/opt目录并命名为 xx。因为/opt/xx已经存在了,所以会问是否覆盖,如果此时直接按【Enter】键,则是n的意思,即不覆盖。如果要覆盖必须输入“y”,按【Enter】键。
拷贝一个文件,相当于新创建了一个文件。除文件内容相同外,文件的时间显示的也是创 建这个文件的时间。
[root@redhat8 ~]# ls -l /etc/hosts /opt/xx
-rw-r--r--. 1 root root 158 9月 10 2018 /etc/hosts
-rw-r--r--. 1 root root 158 11月 30 11:44 /opt/xx
可以看到,时间不一样。 拷贝一个文件时,如果想把文件的属性一起拷贝过去,就需要加上-p选项。
[root@redhat8 ~]# cp -p /etc/hosts /opt/xx
cp:是否覆盖'/opt/xx'? y
[root@redhat8 ~]# ls -l /etc/hosts /opt/xx
-rw-r--r--. 1 root root 158 9月 10 2018 /etc/hosts
-rw-r--r--. 1 root root 158 9月 10 2018 /opt/xx
这样看起来,时间也都一致了。
下面用cp命令拷贝目录,把/etc拷贝到当前目录中。
[root@redhat8 ~]# cp /etc/ .
cp: 未指定 -r;略过目录'/etc/'
此处没有成功,因为/etc是一个目录,cp需要加上 -r 选项才行,-r 表示递归的意思。
[root@redhat8 ~]# cp -r /etc/ .
删除这个etc目录
[root@redhat8 ~]# rm -rf etc/
记住,不要写成 rm -rf /etc/ 了。
如果拷贝目录,同时想保持目录属性不变,可以使用 -rp 选项,或者 -a 选项。-a选项中包括一系列的其他选项如-r,-p选项。
[root@redhat8 ~]# cp -a /etc/ .
剪切所用的命令是mv,mv的语法如下
mv 选项 /path1/xx /path2/yy
如果/path2/yy是一个目录,意思是把/patg/xx剪切到/path2/yy中。如果/path2/yy不存在或是一个文件,意思是把/path1/xx剪切到/path2并命名为yy。
把/opt/hosts剪切到当前目录中,命令如下。
[root@redhat8 ~]# mv /opt/hosts .
[root@redhat8 ~]# ls /opt/
11 xx
mv命令也用户重命名操作,如把/opt/下的xx重命名为yy。
[root@redhat8 ~]# mv /opt/xx /opt/yy
[root@redhat8 ~]# ls /opt/
11 yy