• 【Linux修炼手册:基本指令(上)】


    目录

    1 ls 指令

    2 pwd命令

    3 cd 指令

    4 touch指令

    5 mkdir指令(重要)

    6 rmdir指令 && rm 指令(重要)

    7 cp指令(重要)

    8 mv指令(重要)

    9 cat

    总结:


    1 ls 指令

    语法:ls [选项][目录或文件]

    功能 对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息。

    首先我们来看只用ls命令不带选项的情况:

     我们不难发现,只用ls命令不带选项只是会列举该目录下所有子目录与文件,只有目录名或者文件名,没有其他详细信息。

    而当我们为其带上选项后:如带上 -l

     就会列出文件的详细信息(包括文件的属性)

    此命令还可以简写为:ll

     这两个是等价的。

    其他常用选项:

    • -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 -la:

     ls -la等价与ls -l -a,与我们前面说的类似,有些命令可以合并。那这里的.和..又是什么意思呢?

    .表示当前目录

    ..表示上级目录

     

     我们可以通过cd..返回到上级目录,然后通过pwd命令显示用户当前所在的目录(cd和pwd这两个命令都很简单,后面也会提及),至于关于其他有关ls的带选项的命令我这里就不一一展示了,大家有兴趣可以自己下去试试。


    2 pwd命令

    语法 : pwd
    功能 显示用户当前所在的目录
    常用选项:无

    3 cd 指令

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

     在这里我们就得了解什么是绝对路径?什么是相对路径?

    我们知道在Windows中路径分隔符是用'\'(反斜杠),而Linux中路径分隔符是用'/'(斜杠).Linux系统中,磁盘上的文件和目录被组成一棵目录树,每个节点都是目录或文件。

    我们不难发现这些文件和目录本质上就形成了一颗多叉树,而这些子文件和子目录的公共祖先我们把它称为根目录('/'),也就是说当我们不断回退回退到根目录时就不会再回退了。

     那这和绝对路径相对路径有啥关呢?

    绝对路径:路径从根目录出发。一般在配置某些文件中,对某种文件进行配置的时候采用。

    相对路径:路径从当前目录出发,用起来比较方便,也是后面我们指令操作时,路径定位的常用方式。

    我们可以来试试:

    我们不难发现通过绝对路径找我们始终是从根目录下寻找,所以不用回退到上一级目录,而相对路径寻找的时候我们有可能要通过回退才能找到我们想要的路径。

     

     


    4 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不能用来建立目录

    在这里,我们提前了解一个有意思的命令:tree

    第一次使用tree命令需要安装,安装的命令为:

    yum install -y tree

    我们可以在lesson3后面创建一个名为text3.c的文件:

     通过tree来查看文件和目录就更为清楚了。


    5 mkdir指令(重要)

    语法 mkdir [选项] dirname...
    功能 在当前目录下创建一个名为 “dirname”的目录
    常用选项
    -p, --parents  可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录

     使用mkdir递归创建多个目录一定要加上-p选项:

     


    6 rmdir指令 && rm 指令(重要)

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

     通过上面命令的介绍我们不难发现rmdir只能删除空目录:

     但是rm可以删文件也可以删目录,不管是否为空:

     当我们只带-r选项时,操作系统会一次询问我们是否要删去?y表示yes,n表示no.

    但是我们如果用-rf选项时就直接删除,不会询问。

    另外大家谨慎使用:rm -rf /  

    该命令会将根目录下的所有文件和目录全部删完,如果是云服务器还好,重装一个花不了多少时间,但如果是用的虚拟机的话就比较麻烦了,强烈建议大家不要轻易尝试。


    7 cp指令(重要)

    语法 cp [选项] 源文件或目录 目标文件或目录
    功能 : 复制文件或目录
    说明 : cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中。若同时指定多个文件或目录,而最后的目的地并非一个已存在的目录,则会出现错误信息
    常用选项:
    • -f 或 --force 强行复制文件或目录, 不论目的文件或目录是否已经存在 。
    • -i 或 --interactive 覆盖文件之前先询问用户 。
    • -r递归处理,将指定目录下的文件与子目录一并处理。若源文件或目录的形态,不属于目录或符号链接,则一律视为普通文件处理 。
    • -R 或 --recursive递归处理,将指定目录下的文件及子目录一并处理。

     我们可以简单试试:

     我们还可以通过-rf选项强制递归拷贝多个文件或者目录:

     假设目的目录不存在又会发生什么呢?

     


    8 mv指令(重要)

    mv 命令是 move 的缩写,可以用来 移动文件或者将文件改名 move (rename) fifiles ),是 Linux 系统下常用的命令,经常用来备份文件或者目录。
    语法 : mv [选项] 源文件或目录 目标文件或目录
    功能 :
    1. 视mv命令中第二个参数类型的不同(是目标文件还是目标目录),mv命令将文件重命名或将其移至一个新的目录中。
    2. 当第二个参数类型是文件时,mv命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它将所给的源文件或目录重命名为给定的目标文件名。
    3. 当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个,mv命令将各参数指定的源文件均移至目标目录中。
    常用选项:
    • -f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖
    • -i :若目标文件 (destination) 已经存在时,就会询问是否覆盖

    我们可以来试试:

     我们不难发现,用mv移动多级目录的时候是不用带-r选项的。

    如何用mv指令给文件或则目录改名呢?

     这里要想得到正确的改名还得在目标文件和目录带上正确的路径,否则将会得不到想要的结果。


    9 cat

    语法 cat [选项][文件]
    功能 查看目标文件的内容
    常用选项
    • -b 对非空输出行编号
    • -n 对输出的所有行编号
    • -s 不输出多行空行

    在这之前我们先解决一个问题:如何打开一个文件并且向里面编写我们想要的代码呢?

    这里我们先不讲vim(vim在后面我们会详细讲解)除了用vim我们还能用一些更为简单的工具吗?

    答案肯定是有的:那就是nano

    第一次使用nano命令需要用下面的命令安装:

    yum install -y nano

    安装好之后我们就可以通过:nano +文件名进去写代码了:

     这个工具就跟记事本一样,不会给你提示有关代码编写的快捷,当我们编写好了之后应该怎样保存退出呢?

    先按Ctrl+x,然后按y再回车就保存退出了。

    我们可以看到text3.c中已经有数据了:

     那我们想看text3.c中内容该怎么办?

    这时候就要用cat:

    当然我们还可以用-b -s 选项来给出我们想要的行号:

     那我们如何编译呢?

     我们可以用gcc编译器来实现,通过执行当前目录下的a.out文件来得到我们想要的结果。

     我们再来认识一个命令:stat

    它的作用是获取文件的所有属性

     在这之前我们还得了解一个常识:任何文件都有3个时间分别叫做Access Time  ,Modify Time ,

    Change Time.(为了好记住可以记作ACM),至于这3个时间分别代表什么意思?我后面的博客会给大家介绍,这里就不再多讲了。


    总结:

    Linux基本命令这一块儿听着或许有些枯燥,但是这些基本指令我们每一个人都要很好的掌握,这也为后来进一步学习打下基础,基本指令下将在下一篇文章分享,如果该文有什么不对的地方欢迎评论区指正。

     

  • 相关阅读:
    绝对路径与相对路径
    怎么通过ssh连上ipv6的服务器?阿里云怎么配置ipv6?wsl2怎么支持ipv6?
    Java之动态代理的详细解析
    03【MyBatis参数深入】
    后App时代的小程序化技术?
    网页版的 Redis 可视化工具来了,已开源?
    【C++】定位程序崩溃(Mingw)
    11 Daemonset:忠实可靠的看门狗
    CocosCreator3.8研究笔记(十八)CocosCreator UI组件(二)
    用例图中include和extend的含义
  • 原文地址:https://blog.csdn.net/m0_68872612/article/details/127773674