2021-10-26 Ubuntu目录操作

Ubuntu文件系统组织

简而言之:Ubuntu只有目录和文件两个东西。“/”叫做根目录,有且仅有一个根目录。使用的命令实际上也是一个文件,使用命令实际上就是系统先找到对应的命令文件然后再运行它。

目录操作

(1)特殊目录符号
        .:当前目录;
        ..:上一级目录;
        -:之前所在的目录,就好比浏览器工具栏中的返回按钮;使用"cd -“之后,还会自动向控制台输出之前所在的目录;
        ~:当前登录的用户目录,就是”/home/用户名"这个目录;
        ~account:account用户的用户目录;
(2)cd目录跳转
        命令格式为:cd 目录名;目录名可以是具体的目录,比如:cd /home/etc;也可以是特殊目录符号,比如:cd ~

# 现在的目录是:~/桌面
# 使用"cd ."命令,表示跳转到当前目录
fu@fu-virtual-machine:~/桌面$ cd .
# 目录没有发生改变,还是现在的目录:"~/桌面"
fu@fu-virtual-machine:~/桌面$ 

# 现在的目录是:~/桌面
# 使用"cd ~"命令,表示跳转到当前用户的用户目录下,即跳转到"/home/fu"下
fu@fu-virtual-machine:~/桌面$ cd ~
# 目录发生改变,成功跳转到当前用户的用户目录下
fu@fu-virtual-machine:~$ 

# 现在的目录是:~
# 使用"cd .."命令,表示跳转到上一级目录中,上一级目录应该为:"/home"
fu@fu-virtual-machine:~$ cd ..
# 目录发生改变,成功跳转到上一级目录下
fu@fu-virtual-machine:/home$ 

# 现在的目录为:/home
# 使用"cd -"命令,表示跳转到上一个工作目录,上一个工作目录为:"~"
# 想象成浏览器上方工具栏的后退按钮
fu@fu-virtual-machine:/home$ cd -
# 会向控制台输出上一个工作目录:"~/" 即 "/home/fu"
/home/fu
# 目录发生改变,成功回到了上一个工作目录
fu@fu-virtual-machine:~$ 

# 现在的目录为:~
# 使用"cd ~fu"命令,表示跳转到fu用户的用户目录
fu@fu-virtual-machine:~$ cd ~fu
# 因为现在就在fu用户的目录下,所有目录没有发生改变
# 如果在别的目录使用这个命令后,就会直接回到fu用户的用户目录下
fu@fu-virtual-machine:~$ 

# 现在的目录为:~
# 使用"cd 具体目录"后,就会跳转到具体目录中
# 这里具体目录设置为:"/home"
fu@fu-virtual-machine:~$ cd /home
# 成功跳转
fu@fu-virtual-machine:/home$ 

(3)相对路径和绝对路径
        绝对路径就是以/打头的路径,以根目录(/)为出发点;
        相对路径就是不以/打头的路径,以当前所在的目录为出发点。 比如:当前目录为/home,使用cd fu命令,会以/home为出发点,找到/home下的fu目录,然后切换到/home/fu目录下。

# 当前目录为:"/home"
# 使用"cd /home/fu"命令,使用绝对路径跳转
fu@fu-virtual-machine:/home$ cd /home/fu
# 成功进入"/home/fu"目录下
fu@fu-virtual-machine:~$

# 回到上一个工作目录 
fu@fu-virtual-machine:~$ cd -
/home # 当前所在目录
# 使用"cd fu"目录,使用相对路径跳转
fu@fu-virtual-machine:/home$ cd fu
# 成功进入到"/home/fu"目录下
fu@fu-virtual-machine:~$ 

(4)PATH环境变量
        使用命令必须要找到命令文件,之所以可以在任何目录使用各种命令,是因为这些命令的路劲被保存在了PATH环境变量中。
        使用命令的时候,首先会在当前目录找命令文件,找到那就算求;如果找不到,就会到PATH环境变量中找,找到那也算求;如果还找不到,那只能控制台报错了。

        查看PATH环境变量:echo $PATH
        环境变量中有很多路径,路径之间以冒号(:)分隔。

        临时向环境变量中添加路径,关闭bash后就失效了,只能再次添加,添加的方法为:export PATH=路径:$PATH

# 输出环境变量中的内容
fu@fu-virtual-machine:/$ echo $PATH
# 路径之间以":"分隔
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

# 将当前用户的用户目录加入到环境变量中
fu@fu-virtual-machine:/$ export PATH=~:$PATH
# 加入成功第一个就是当前用户的用户目录:"/home/fu"
fu@fu-virtual-machine:/$ echo $PATH
/home/fu:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

(5)pwd命令
        显示当前所在的目录

# 使用pwd命令
fu@fu-virtual-machine:~$ pwd
# 显示当前所在的目录
/home/fu 

(6)查看目录与文件
        ls命令完整格式:ls [选项] [指定目录]
        ls /home:列出/home下的非隐藏文件和目录;
        ls -a /home:列出/home目录下的所有文件和目录,包括隐藏文件和隐藏目录;
        ls -A /home:在ls -a /home的基础上,不显示两个特殊的目录:当前目录(.)和上一级目录(..);
        ls -lh /home:以容易阅读的方式列出文件大小(-h需要与-l联合使用);
        ls -l /home:显示文件的详细信息;
        ls -R /home:递归显示/home目录下的目录和文件;

# 直接使用"ls"目录显示当前用户目录下的文件和目录
fu@fu-virtual-machine:/home$ ls ~
公共的  模板  视频  图片  文档  下载  音乐  桌面  test.txt

# 显示隐藏文件和目录
fu@fu-virtual-machine:/home$ ls -a ~
.       模板  文档  桌面           .bashrc  .gnupg    .sudo_as_admin_successful
..      视频  下载  .bash_history  .cache   .local    test.txt
公共的  图片  音乐  .bash_logout   .config  .profile

# 在"ls -a"的基础上,去掉了"."和".."两个目录
fu@fu-virtual-machine:/home$ ls -A ~
公共的  图片  音乐           .bash_logout  .config  .profile
模板    文档  桌面           .bashrc       .gnupg   .sudo_as_admin_successful
视频    下载  .bash_history  .cache        .local   test.txt

# 以容易阅读的方式显示了文件大小
fu@fu-virtual-machine:/home$ ls -lh ~
# 显示出来的文件总共大小
总用量 36K
drwxr-xr-x 2 fu fu 4.0K 1024 20:52 公共的
drwxr-xr-x 2 fu fu 4.0K 1024 20:52 模板
drwxr-xr-x 2 fu fu 4.0K 1024 20:52 视频
drwxr-xr-x 2 fu fu 4.0K 1024 20:52 图片
drwxr-xr-x 2 fu fu 4.0K 1024 20:52 文档
drwxr-xr-x 2 fu fu 4.0K 1024 20:52 下载
drwxr-xr-x 2 fu fu 4.0K 1024 20:52 音乐
drwxr-xr-x 2 fu fu 4.0K 1024 20:52 桌面
-rw-rw-r-- 1 fu fu   12 1026 19:29 test.txt

# 递归显示
fu@fu-virtual-machine:/home$ ls -R ~
/home/fu:
公共的  模板  视频  图片  文档  下载  音乐  桌面  test.txt

/home/fu/公共的:

/home/fu/模板:

/home/fu/视频:

/home/fu/图片:

/home/fu/文档:

/home/fu/下载:

/home/fu/音乐:

/home/fu/桌面:

(7)常用目录操作
        新建目录:mkdir [选项] 新建目录名
        一般情况下,mkdir命令只能建立单级目录,如果想要建立多级目录(目录中套目录),需要使用-p选项,例如:mkdir -p test01/test02/

# 创建单级目录
fu@fu-virtual-machine:~$ mkdir test01
# 发现"test01"目录,创建成功
fu@fu-virtual-machine:~$ ls
公共的  模板  视频  图片  文档  下载  音乐  桌面  test01

# 创建多级目录
fu@fu-virtual-machine:~$ mkdir -p test02/test01
# 递归显示
fu@fu-virtual-machine:~$ ls -R
.:
公共的  模板  视频  图片  文档  下载  音乐  桌面  test01  test02

./公共的:

./模板:

./视频:

./图片:

./文档:

./下载:

./音乐:

./桌面:

# 发现多级目录的递归显示,创建成功
./test01:

./test02:
test01

./test02/test01:

        复制目录:cp [选项] 要复制的目录 复制出的新目录名
        一般情况下,cp命令只能复制文件,如果想复制目录(递归复制),需要使用-r选项。
        但是只加-r选项有一个缺点,就是递归复制内容,不会复制文件和目录的所有属性,比如说目录中存在快捷方式,这个快捷方式指向一个文件,但是使用这种方式递归复制后,新复制出来的快捷方式是一个普通的文件,没有指向的文件,即它已经不再是一个快捷方式了。此时就轮到-a选项了,使用-a选项的cp命令既适用于目录也适用于单个文件,使用它会将目录或者文件的所有属性原本复制过来,完全可以在复制任何东西都使用cp -a 源文件 目标文件命令。

# test01是一个多级目录,最里面的那层目录中还有一个文件
fu@fu-virtual-machine:~$ ls -R test01
test01:
test01

test01/test01:
test.txt
# "~"下的文件和目录
fu@fu-virtual-machine:~$ ls
公共的  模板  视频  图片  文档  下载  音乐  桌面  test01

# 使用"-r"选项复制目录,指定新目录名为"test01Copy"
fu@fu-virtual-machine:~$ cp -r test01 test01Copy
# 出现"test01Copy"目录
fu@fu-virtual-machine:~$ ls
公共的  模板  视频  图片  文档  下载  音乐  桌面  test01  test01Copy
# 和原目录的内容为一样,递归复制成功
fu@fu-virtual-machine:~$ ls -R test01Copy
test01Copy:
test01

test01Copy/test01:
test.txt


# "hwLink"是一个快捷方式,指向"hw.txt"文件
fu@fu-virtual-machine:~$ ls -lh | grep hw
lrwxrwxrwx 1 fu fu    6 1029 14:06 hwLink -> hw.txt
-rw-rw-r-- 1 fu fu   13 1029 14:06 hw.txt

# 分别使用"-p"和"-a"选项进行复制
fu@fu-virtual-machine:~$ cp -p hwLink hwLinkCopy1
fu@fu-virtual-machine:~$ cp -a hwLink hwLinkCopy2

# 使用"-p"选项复制出来的文件不再是一个快捷方式,因为它没有指向任何一个文件
# 使用"-a"选项复制出来的文件依旧是一个快捷方式,和原快捷方式指向同一个文件
fu@fu-virtual-machine:~$ ls -lh| grep hw
lrwxrwxrwx 1 fu fu    6 1029 14:06 hwLink -> hw.txt
-rw-rw-r-- 1 fu fu   13 1029 14:06 hwLinkCopy1
lrwxrwxrwx 1 fu fu    6 1029 14:06 hwLinkCopy2 -> hw.txt
-rw-rw-r-- 1 fu fu   13 1029 14:06 hw.txt

        移动或者重命名目录:mv 要移动的目录或者原目录名 目标目录或者新目录名
        mv命令默认情况下就支持递归移动目录。

# 查看当前目录下的文件和目录
fu@fu-virtual-machine:~$ ls
公共的  模板  视频  图片  文档  下载  音乐  桌面  test01  test01Copy

# 重命名目录
fu@fu-virtual-machine:~$ mv test01Copy test02
# 重命名成功
fu@fu-virtual-machine:~$ ls
公共的  模板  视频  图片  文档  下载  音乐  桌面  test01  test02

# 递归移动目录
fu@fu-virtual-machine:~$ mv test02 test01
# 当前目录下的test02不见了
fu@fu-virtual-machine:~$ ls
公共的  模板  视频  图片  文档  下载  音乐  桌面  test01
# 发现移动到了test01目录中,目录中的内容与原来一样,递归移动成功
fu@fu-virtual-machine:~$ ls -R test01
test01:
test01  test02

test01/test01:
test.txt

test01/test02:
test01

test01/test02/test01:
test.txt

# 边移动边重命名目录
fu@fu-virtual-machine:~$ mv test01/test02 test01Copy
# 顺利移动且重命名
fu@fu-virtual-machine:~$ ls
公共的  模板  视频  图片  文档  下载  音乐  桌面  test01  test01Copy

        删除目录:rm [选项] 要删除的目录
        一般情况下,rm只能删除文件,如果想要删除目录(递归删除)需要使用-r选项。

# 当前目录下的文件和目录
fu@fu-virtual-machine:~$ ls
公共的  模板  视频  图片  文档  下载  音乐  桌面  test01  test01Copy
# 递归展示"test01Copy"目录
fu@fu-virtual-machine:~$ ls -R test01Copy
test01Copy:
test01

test01Copy/test01:
test01  test.txt

test01Copy/test01/test01:
test.txt

# 使用"-r"选项递归删除"test01Copy"目录
fu@fu-virtual-machine:~$ rm -r test01Copy

# "test01Copy"目录不复存在,删除成功
fu@fu-virtual-machine:~$ ls
公共的  模板  视频  图片  文档  下载  音乐  桌面  test01

Guess you like

Origin blog.csdn.net/D___H/article/details/120978071