• 零基础Linux_2(基本指令_上)目录/文件的显示跳转创建删除


    目录

    1. 目录内容的显示

    ls(显示非隐藏文件)

    pwd(显示用户当前所在的目录)

    ls -l(列出文件的详细信息)

    ls -a(显示隐藏文件)

    2. 目录的跳转操作

    cd ..(回到上级路径)

    cd 绝对路径名(进入这个路径)

    cd 绝对相对名(进入这个路径)

    cd ~(跳转到当前用户的家目录)

    cd -(跳转至上一次所处的路径)

    cd /(跳到根目录)

    3. 基本创建操作

    touch 新文件名(创建新文件)

    mkdir 新目录名(创建新目录)

     4. 基本删除操作

    rmdir 非空目录名(删除非空目录)

    rm 文件名(删除文件)

    rm -r 目录名/文件名(删除目录/文件)

    rm -rf 文件名/目录名(强制删除文件/目录)

    5.  man手册

    6. 笔试选择题

    答案及解析

    本篇完。


    这里默认前一篇的Linux环境都安装好了,这里是在Xshell进行演示。

    在此时前面的学习我们可以先用root用户,在学习权限的时候在换到普通用户,

    可以和我一样一直输入cd ..回车,退到最外层目录,(到最外层目录输入ls可以显示你的目录,有一个目录是家目录,家目录名字可能是home也可能是root,为了方便我们没有的home的,mkdir home 建立一个home目录,(有了就不用建立的了)

    然后cd home 进入home 目录,再mkdir linux_2 建立一个linux_2目录,

    (home里面应该是放用户名文件夹的,但现在先这样用了)

    1. 目录内容的显示

    语法 ls [ 选项 ][ 目录或文件 ]
    功能
    对于目录,该命令列出该目录下的所有子目录与文件。
    对于文件,将列出文件名以及其他信息。
    常用选项:
    -a 列出目录下的所有文件,包括以 . 开头的隐含文件。
    -d 将目录象文件一样显示,而不是显示其下的文件。 如: ls –d 指定目录
    -i 输出文件的 i 节点的索引信息。 如 ls –ai 指定文件
    -k k 字节的形式表示文件的大小。 ls –alk 指定文件
    -l 列出文件的详细信息。
    -n 用数字的 UID,GID 代替名称。 (介绍 UID GID
    -F 在每个文件名后附上一个字符以说明该文件的类型, “*” 表示可执行的普通文件; “/” 表示目录; “@” 表示符号链接;“|” 表示 FIFOs “=” 表示套接字 (sockets) 。(目录类型识别)
    -r 对目录反向排序。
    -t 以时间排序。
    -s l 文件名后输出该文件的大小。(大小排序,如何找到目录下最大的文件)
    -R 列出所有子目录下的文件。 ( 递归 )
    -1 一行只输出一个文件。

    ls(显示非隐藏文件)

    直接输入ls是默认列出当前路径下的非隐藏文件,输入个 ls 看看:

    什么都没有,因为当前目录确实什么文件都没有,如果我们想看 ls 的效果,我们用 touch (touch 命令我们后面再说)先创建一个文件:输入touch mytest.c,注意事项:在输入指令的时候一定要把空格带好,之后再输入 ls,就可以显示刚才创建的 mytest.c 文件了:

    当然,我们也可以用 ls 直接查看到一些目录文件。我们现在还没有目录,我们先用 mkdir 创建出一个目录出来:(这个目录就相当于 Windows 下的一个文件夹,我们先可以这么理解。mkdir 下面再说,这里先测 ls )输入mkdir code,再输入ls:

    显示当前目录下,我们当前目录是谁呢?如何知道?输入 pwd 显示当前路径:

    pwd(显示用户当前所在的目录)

     (讲 ls 补充了这么多指令,就是为了做一个 ls 的演示,相当于是一个 "起手式" 。只是为了能快速操作起来,后面还要对刚才提前用到的指令详细介绍一下。)

    下面再介绍几个ls的选项,然后最上面列出来的一个个试用就行了。

    ls -l(列出文件的详细信息)

    下面我们要来认识一下 "命令的选项"

    指令是可以带很多选项的,比如默认情况下输入 ls 是只显示文件的,

    但是输入 ls 带上 -l ,就可以显示出更多的文件属性。

    ls -l可以简写成ll

    分别输入ls -l和ll:

    文件的详细信息对应什么后面会讲。

    ls -a(显示隐藏文件)

    思考:如果我们在 Windows 下创建了一个空文件(0kb)在磁盘中占据空间吗?

    要占用,文件 = 文件内容 + 文件属性,文件有属性数据,属性数据是数据吗?当然是!

    我们曾经或者将来的所有文件操作,无非两类:

    ① 对文件的内容操作     ② 对文件的属性操作

    所以 ls -l 显示文件的更多属性,这里面的这些属性都代表了文件的某一种属性。

    ls -a : 显示 Linux 系统中的隐藏文件

    列出目录下的所有文件,包括以 . 开头的隐藏文件。以点开头的文件我们称之为隐藏文件。

    Windows下其实也有隐藏文件,感兴趣可以自己搜搜看。

    既然有隐藏文件,那我们是不是也可以创建出隐藏文件呢?当然可以,

    在前面用touch创建文件的方法中,在文件名最前面加一个点就是创建隐藏文件,

    输入touch .mytest2.c,再输入ls看看:

    现在是看不到隐藏文件的,输入ls -a

    我们还可以复合使用,输入ls -a,回车后输入ls -a -l 

    发现多了一个点和两个点的两个文件?

    其实,任意目录下都会存在两个隐藏文件:

    .   (当前路径)
    ..  (上级路径)

    ..  (上级路径)认为还是有点用吧,.   (当前路径)有什么用?这是用其它操作让它找到你的路径的,后面用了就懂了。

    ls 的其他常用选项,这里就不再逐个演示了。

    我们对于 ls 用的最多的选项就是 ls -a -l ,其他的选项目前为止只需要有个印象即可。

    对于指令:必须记住,但不是现在。忘掉很正常,不需要专门下来背指令。我们也不用特意去记,多用,不懂就查就行,用多了自然就熟了。

    2. 目录的跳转操作

    语法 :cd 目录名
    功能 :改变工作目录。将当前工作目录改变到指定的目录下。
    举例
    cd .. : 返回上级目录
    cd /home/litao/linux/ : 绝对路径
    cd ../day02/ : 相对路径
    cd ~ :进入用户家目
    cd - :返回最近访问目录

    如果我们想回到上级路径,该如何操作?

    这里我们要使用一个叫 cd 的指令

    前面我们的内容有点多了,输入clear清下屏幕:

    你前面的操作还是在的,鼠标滑轮上划看看:

    cd ..(回到上级路径)

    我们输入pwd显示当前路径然后输入cd ..再输入pwd

     思考: /home/linux_2是什么呢?

    这是 Linux 路径,和 Windows 下的路径一样,

    在桌面Xshell 7的图标右键然后进入属性就能看到Xshell 7在你电脑的路径了,

     Windows的图形画界面就和这种路径有关。

    而这个 \ 就是传说中的路径分隔符!Windows 的路径分隔符是 \  ,而 Linux 的路径分隔符是 / 

    当我们在前面基础在输入cd ..回到 / 时,就不能再进行回退了(再次输入cd ..也没用):

     这和 Window 下一样,一直返回返回到头,图标变灰:

    不能回退时剩下的这个 / 我们不称之为路径分隔符,我们称之为 根目录 

    而回到路径的方式,我们可以直接 cd + 路径:

    cd 绝对路径名(进入这个路径)

    在前面基础输入cd /home/linux_2,在输入pwd显示当前路径:

    前面提到了根目录,什么是根目录?

    思考:Linux 入口目录时 / 根目录,请问根目录可以再放一个目录吗?

    Linux 目录结构的本质:

    Linux 的目录结构本质是一个多叉树。所以我们把 / 称为根目录,是路径的起始。

    在数据结构的角度去理解:

    ① 既然是一颗多叉树,每一个子节点既可以是一个目录(再放目录或普通文件,递归式的定义),也可以是一个普通文件。

    ② 这颗多叉树的叶子节点一定是一个普通文件或者是空目录。

    我们一般 "定位" ,是通过路径定位的方式找到文件的。

    为什么我们都是通过路径方式定位文件的呢?

    如果我们想找到我们曾经写的 test.c 文件,我们可以从 / 到 home 到 linux_2再到 test.c。

    任何一结点,可以有多个子节点。但是任何一个子节点,都只有一个父节点。

    所以 test.c 只有一个父节点,即 linux_2…… linux_2也只有一个父节点,即 home……

    所以当我们定位路径时,反向回推时,这条路径时具有惟一性的。

    因为常规的路径定位是具有惟一性的。
     

    cd 绝对相对名(进入这个路径)

    绝对路径与相对路径:

    /home/linux_2/test.c : Linux 下的 "绝对路径" (惟一性且永远有效)。

    相对路径:相对于我当前所处的路径。

    相对路径往往相对于当前位置,容易失效。而绝对路径是永远有效的!

    如果是日常使用,我们推荐相对路径 —— 因为简单。

    如果是进行添加配置文件之类的,推荐绝对路径 —— 因为不会出错。

    cd 命令后面可以跟上任何以绝对路径或相对路径构建的路径。

    所以在前面在根目录下进入linux_2也可以这样进入:(后9行)pwd只是为了显示,可以不显示

    cd ~(跳转到当前用户的家目录)

    ~: 表示home

    默认一个用户在登录时,都是处于该用户的家目录中的。

    一个普通用户的家目录一般都是在 home 路径下有一个以你名字命名的文件夹。

    如果是 root 用户,它会在根目录下的 root 目录下。

    (关于 root 和普通用户的差别,我们在后面的权限章节会详细讲解)
     

    cd -(跳转至上一次所处的路径)

    cd /(跳到根目录)
     

    一起演示:

    3. 基本创建操作

    touch 指令
    语法 :touch [ 选项 ]...  文件 ...
    功能 touch 命令参数可更改文档或目录的日期时间,包括存取时间和更改时间,或者新建一个不存在的文件。
    常用选项
    -a    --time=atime --time=access --time=use 只更改存取时间。
    -c    --no-create  不建立任何文档。
    -d  使用指定的日期时间,而非现在的时间。
    -f  此参数将忽略不予处理,仅负责解决 BSD 版本 touch 指令的兼容性问题。
    -m    --time=mtime --time=modify  只更改变动时间。
    -r  把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同。
    -t  使用指定的日期时间,而非现在的时间

    touch 新文件名(创建新文件)

    touch:创建文件

    touch 命令参数可更改文档或目录的日期时间,

    包括存取时间和更改时间,或者新建一个不存在的文件。

    本章我们只讲 touch 普通用法,我们不去讲它的常用选项。

    本章只需掌握 touch 的最普通的用法,即用 touch 来创建普通文件。

    (对于 touch 修改文件时间等用法我们放到讲开发工具 makefile 的时候再讲)

    前面讲目录结构的本质时把一开始建的mytest.c讲成test.c了,现在再来建立一个test.c:

    mkdir 新目录名(创建新目录)

    mkdir 指令:
    语法 mkdir [ 选项 ] dirname...
    功能 :在当前目录下创建一个名为 “dirname” 的目录
    常用选项
    -p, --parents   可以是一个路径名称。此时若路径中的某些目录尚不存在 , 加上此选项后 , 系统将自动建立好那些尚不存在的目录, 即一次可以建立多个目录 ;
    举例
    mkdir –p test/test1 : 递归建立多个目录(test1在test里面)

    演示建立一个目录和递归建立多个目录:

     4. 基本删除操作

    rmdir 指令 && rm 指令:
    rmdir 是一个与 mkdir 相对应的命令。 mkdir 是建立目录,而 rmdir 是删除命令。
    语法 rmdir [-p][dirName]
    适用对象 :具有当前目录操作权限的所有使用者
    功能 :删除空目录
    常用选项
    -p 当子目录被删除后如果父目录也变成空目录的话,就连带父目录一起删除。
    rm 命令可以同时删除文件或目录
    语法 rm [-f-i-r-v][dirName/dir]
    适用对象 :所有使用者
    功能 :删除文件或目录
    常用选项
    -f 即使文件属性为只读 ( 即写保护 ) ,亦直接删除
    -i 删除前逐一询问确认
    -r 删除目录及其下所有文件

    rmdir 非空目录名(删除非空目录)

    注意,rmdir 只能删除空目录:

    在前面的基础上进入到code2目录

    rm 文件名(删除文件)

    因为文件里面不可能还有一个文件,所以不存在删除空文件的说法。

    rm删除普通文件:发现他还询问我们是否确定删除,输入y代表确定,n代表不确定:

    rm -r 目录名/文件名(删除目录/文件)

    rm -r 虽然可以删除文件,但是删除文件用rm就可以了,rm -r 一般用来删除非空文件

    像删除一个目录我们可以通过 " -r 递归式删除 "

    不同于rmdir只能删除空目录,rm -r除了可以删除空目录,还可以删除非空目录:

     (如果删除的是空目录它就不会问你是否要进入这个目录了)

    如果我们想删除一个非空目录:(基于上面code2里面还是有code3的)

    这里把code2和code3一起删掉,然后新创建空目录code2,再把code2删掉:

    rm -rf 文件名/目录名(强制删除文件/目录)

    rm 还有一个选项, -r 表示递归,还可以带一个 f (force,即强迫) :

    有时候我想删一个文件,系统会提示你 "你确认吗?"

    我们带一个 -f,  意思就是说 —— "我非常确认!你不要给我提示了!"

    在上面的基础上,我们新创建一个test2.c文件和code2目录,

    在code2目录里建立一个code3空目录,然后把这三强制删除:

     (前面不用强制删除是以后为了在公司等重要场所一个机会,两次都错就说不了自己误删了吧)

    注意事项:不要在 root 下输入:rm -rf /

    否则你的系统有可能会挂掉,即便没有挂,它它会从根目录开始递归把能删的都删了。

    (如果你想试,且你现在也没啥文件,可以试试,就算挂掉了,去云服务器后台重启就行)

    5.  man手册

    在写 C/C++ 的时候记不得某个函数,我们可以去查cpulspuls文档。

    Linux 的命令有很多参数,我们不可能全记住,但是我们可以通过查看联机手册获取帮助。

    对于没有 man 手册的问题:root 下输入 yum install -y man-pages

    访问Linux联机手册 的命令是
    man 语法 : man [ 选项 ] 命令
    常用选项
    -k 根据关键字搜索联机帮助 num 只在第 num 章节找
    -a 将所有章节的都显示出来,比如 man printf 它缺省从第一章开始搜索,查到就停止,用a 选项,当按下q退出,他会继续往后面搜索,直到所有章节都搜索完毕。
    解释一下,man 手册分为 8 章(最常用的是前3章)
    1 是普通的命令
    2 是系统调用,如open,write之类的(通过这个,至少可以很方便的查到调用这个函数,需要加什么头文件)
    3 是库函数,如printf,fread4是特殊文件,也就是/dev下的各种设备文件
    5 是指文件的格式, 比如 passwd, 就会说明这个文件中各个字段的含义
    6 是给游戏留的, 由各个游戏自己定义
    7 是附件还有一些变量, 比如向 environ 这种全局变量在这里就有说明
    8 是系统管理用的命令, 这些命令只能由 root 使用, ifconfifig

    举个简单的例子,我们想搜一下 printf ,但是又不想脱离 Linux 去搜,

    这时我们可以去问系统的那个男人 —— man,用man查一下man:(按q退出)

     用man查一下rm:

     用man查一下printf:

    我们发现,printf 在这里竟然是一个命令?!是的,你没有看错。(其实也是个命令,后期讲)

    man 不仅可以用来查命令,还可以用来查C语言函数。

    因为 Linux 这款操作系统本身是由C语言写的,所以它的 man 手册默认是带C语言的标准手册的。

    所以如果想查C语言的直接 man 就可以了,想查其他语言你也可以选择安装对应的语言手册。

    但是我们一般不用在上面安装,直接百度搜对应语言的在线手册看会更好,看的也舒服。

    用man查一下C语言的scanf函数:

    实际上,man 手册更多的是用来查指令和系统调用接口的。

    所以,如果我们想查某个不懂的命令我们只需要 man 一下,问问那个男人就可以了。


    前面说到:man 常用选项
    -k 根据关键字搜索联机帮助 num 只在第 num 章节找
    -a 将所有章节的都显示出来,比如 man printf 它缺省从第一章开始搜索,查到就停止,用a 选项,当按下q退出,他会继续往后面搜索,直到所有章节都搜索完毕。
    解释一下,man 手册分为 8 章(最常用的是前3章)
    1 是普通的命令
    2 是系统调用,如open,write之类的(通过这个,至少可以很方便的查到调用这个函数,需要加什么头文件)
    3 是库函数,如printf,fread4是特殊文件,也就是/dev下的各种设备文件
    5 是指文件的格式, 比如 passwd, 就会说明这个文件中各个字段的含义
    6 是给游戏留的, 由各个游戏自己定义
    7 是附件还有一些变量, 比如向 environ 这种全局变量在这里就有说明
    8 是系统管理用的命令, 这些命令只能由 root 使用, ifconfifig

    现在再给大家看一个查询的案例:

    前面直接man printf,printf是C语言的函数,也是linux的命令,所以默认从1开始查,查到1就停止了,scanf不是命令,查到3停止,然后显示出来,现在man 3 printf:

    6. 笔试选择题

    这里先放一些笔试题,有点超纲,旨在让自己去找一些学习技巧和拓展学习。

    1. 以下哪个命令输出Linux内核的版本信息( )

    A.uname -r

    B.vmstat

    C.sar

    D.stat

    2. linux 2.6.* 内核默认支持的文件系统有哪些( )[多选]

    A.ext3

    B.ext2

    C.ext4

    D.xfs

    E.ufs

    3. linux查看cpu占用的命令是什么( )

    A.top

    B.netstat

    C.free

    D.df

    4. 在Linux系统中, 为找到文件try_grep含有以a字母为行开头的内容, 可以使用命令( )

    A.grep -E #$ try_grep

    B.grep -E #a try_grep

    C.grep -E ^$ try_grep

    D.grep -E ^a try_grep

    5. 在使用mkdir命令创建新的目录时,在其父目录不存在时先创建父目录的选项是( )

    A.-m

    B.-d

    C.-f

    D.-p

    6. 批量删除当前目录下后缀名为.c的文件。如a.c、b.c。( )[不定项选择题]

    A.rm *.c

    B.find . -name "*.c" -maxdepth 1 | xargs rm

    C.find . -name "*.c" | xargs rm

    D.以上都不正确

    7. Linux 有三个查看文件的命令,若希望在查看文件内容过程中可以用光标上下移动来查看文件内容,应使用命令( )

    A.cat

    B.more

    C.less

    D.menu

    答案及解析

    1. A

    uname -r 查看linux内核版本信息

    vmstat   报告关于内核线程、虚拟内存、磁盘、陷阱和 CPU 活动的统计信息

    sar 主要帮助我们掌握系统资源的使用情况,特别是内存和CPU的使用情况

    stat 用于显示文件的状态信息

    2. ABCD

    A 全称Linux extended file system, extfs,即Linux扩展文件系统,ext2为第二代

    D XFS一种高性能的日志文件系统,2000年5月,Silicon Graphics以GNU通用公共许可证发布这套系统的源代码,之后被移植到Linux 内核上。XFS 特别擅长处理大文件,同时提供平滑的数据传输

    E UFS是UNIX文件系统的简称,它来源于4.3Tahoe发行版中提供的BSD Fat Fast File System(FFS)系统,属于FFS的演化版本

    3. A

    A top 查看cpu资源使用状态

    B netstat 查看网络连接状态

    C free 查看内存资源状态

    D df 查看磁盘分区资源状态

    4. D

    grep选项中,-E选项可以用来扩展选项为正则表达式;

    $表示匹配文件末尾,字符需要在$之前表示以字符结尾  a$表示以a结尾

    ^表示匹配文件起始,字符需要在^之后表示以字符起始  ^a表示以a起始

    5. D

    A -m 在创建目录的同时设置权限

    B -d 没有这个选项

    C -f 没有这个选项

    D -p 在创建多层级目录的时候若上级目录不存在则创建

    6. AB

    A rm *.c *通配符,表示匹配任意字符任意次

    B find . -name "*.c" -maxdepth 1 | xargs rm  

        find . -name "*.c" -maxdepth 1 找到当前目录下.*结尾的文件,目录深度为1

        xargs是一个强有力的命令,它能够捕获一个命令的输出,然后传递给另外一个命令,用于很多不支持|管道来传递参数的命令

    相当于将前边命令的执行结果,也就是查找到的文件名,传递给后边的rm指令进行删除

    C find . -name "*.c" | xargs rm 没有进行深度控制,删除的不仅是当前目录下的文件,会将子目录下的文件也删除

    7. C

     A cat  打印文件内容到终端显示

    B more 分页显示文件内容,但是通常向上翻页不好使

    C less 分页显示文件内容,可以灵活上下移动光标和翻页

    D menu 没有这个指令(至少centos7上默认没有这个命令)

    本篇完。

    下一篇:零基础Linux_3(基本指令_下)目录/文件的复制移动查看打包+其它指令。

  • 相关阅读:
    代码随想录 Day38 完全背包问题 LeetCode T70 爬楼梯 T322 零钱兑换 T279 完全平方数
    泛微OA表说明
    聚观早报 |  iPhone 14 系列正式发布;腾讯增持育碧股票至9.99%
    Neo4j图数据库_web页面关闭登录实现免登陆访问_常用的cypher语句_删除_查询_创建关系图谱---Neo4j图数据库工作笔记0013
    设计模式之创建型模式
    第八章——权限管理与备份
    three.js中关于摄影机
    开关电源环路稳定性分析(03)-开环电源
    input输入多行文本:删除“首先 其次 此外 总的来说”
    Microsoft Defender Vulnerability部署方案
  • 原文地址:https://blog.csdn.net/GRrtx/article/details/131706406