zoukankan      html  css  js  c++  java
  • linux 基础学习之目录与文件处理命令

    尼玛哥编写这些命令,只是为了自己能够更好的学习linux,也欢迎大家有空都来看看学习学习~好的,接下里,咱们就开始学习下基本的文件与目录的管理

    一. 处理目录的常用命令

    • ls: 列出目录
    • cd:切换目录
    • pwd:显示目前的目录
    • mkdir:创建一个新的目录
    • rmdir:删除一个空的目录
    • cp: 复制文件或目录
    • rm: 移除文件或目录
    • mv:移动文件与木料,或修改名称
    • touch: 创建空文件.

    现在,咱们一个一个的看这几个常用的目录处理命令事如何使用的.

    ls: 列出目录

    • * 基本解释:*
      – 英文原意为list
      – 命令所在的路径是/bin/ls
      – 执行权限:所有的用户
      – 功能:显示目录文件
      – 语法: ls 选项[ -ald ] [文件或目录]
      • 相应的参数及其含义
        • -a :显示所有文件,包括影藏文件
        • -d :查看目录的属性
        • -l :显示目录的详细信息

    这里写图片描述


    cd 切换目录

    • 基本解释:
      – 英文原意为change directory
      – 命令所在的路径: shell 内置命令
      – 执行权限:所有的用户
      – 功能:显示目录文件
      – 语法: cd [目录](相对路径或者是绝对路径)
      • 相应的用法
        • cd .. 切换到上级目录
        • cd ../.. 切换到当前目录的上上两层目录
        • cd ~ 切换到用户的宿主目录
        • cd / 切换到根目录
        • cd - 切换至进入当前目录前所在目录
        • cd /etc/sysconfig/network-scripts/
          切换到某个目录,例如/etc/sysconfig/network-scripts/
    [root@kkc /]# cd /etc/sysconfig/network-scripts/
    [root@kkc network-scripts]# cd ..
    [root@kkc sysconfig]# cd ../..
    [root@kkc /]# cd ~
    [root@kkc ~]# cd /
    [root@kkc /]# cd -
    /root

    这里写图片描述


    pwd 显示目前所在的目录

    • 基本解释:
      – 英文原意为print working directory
      – 命令所在的路径: /bin/pwd
      – 执行权限:所有的用户
      – 功能:显示当前所在目录
      – 语法: pwd [-参数]
      • 相应的参数及其含义
        • -p 参数,显示出确实的路径,而非使用连结 (link) 路径。
    [root@kkc ~]# cd /var/mail
    [root@kkc mail]# pwd
    /var/mail
    [root@kkc mail]# pwd -P 
    /var/spool/mail

    这里写图片描述


    mkdir 创建新目录

    • 基本解释:
      – 英文原意为:make directories
      – 命令所在的路径: /bin/mkdir
      – 执行权限:所有的用户
      – 功能:创建新目录
      – 语法: mkdir [-参数] 新目录名
      • 相应的参数及其含义
        • -m :配置文件的权限喔!直接配置,不需要管理默认权限 (umask)
        • -p :帮助你直接将所需要的目录(包含上一级目录)递归创建起来

    举例1:-p 用法,咱们在/tmp目录下创建一个一个新的目录

    [root@kkc tmp]# mkdir 1/2/3/4
    mkdir: 无法创建目录"1/2/3/4": 没有那个文件或目录
    [root@kkc tmp]# mkdir -p 1/2/3/4
    [root@kkc tmp]# ls
    1                                       Jetty_0_0_0_0_50090_secondary____y6aanv  pulse-IUTDUHsxVJku
    hadoop-hadoop-datanode.pid              Jetty_0_0_0_0_8042_node____19tj0x        pulse-NLGmmKac2h3S
    hadoop-hadoop-namenode.pid              Jetty_0_0_0_0_8088_cluster____u0rgz3     yarn-hadoop-nodemanager.pid
    hadoop-hadoop-secondarynamenode.pid     keyring-IxgKJ5                           yarn-hadoop-resourcemanager.pid
    Jetty_0_0_0_0_50070_hdfs____w2cu08      keyring-MNCSHf                           yum.log
    Jetty_0_0_0_0_50075_datanode____hwtdwq  orbit-gdm
    [root@kkc tmp]# 

    通过以上代码,咱们知道,已经成功利用 -p 选项,创建了多层目录。
    举例2:-m 用法,创建权限为rwx–x–x的目录 2

    [root@kkc tmp]# mkdir -m 711 2
    [root@kkc tmp]# ls -l
    总用量 68
    drwxr-xr-x. 3 root   root   4096 36 23:50 1
    drwx--x--x. 2 root   root   4096 36 23:56 2

    上面的代码显示了,-m 的作用,可以在创建文件夹同时,给文件夹赋予权限。


    rmdir 删除空目录

    • 基本解释:
      – 英文原意为:remove empty directories
      – 命令所在的路径: /bin/rmdir
      – 执行权限:所有的用户
      – 功能:删除空目录
      – 语法: rmdir [-参数] 目录名
      • 相应的参数及其含义
        • -p :连同上一级空目录也一起删除

    举例3:范例:将mkdir范例中创建的目录/tmp底下的1/2/3/4文件删除!

    [root@kkc tmp]# rmdir 1
    rmdir: 删除 "1" 失败: 目录非空
    [root@kkc tmp]# rmdir -p 1
    rmdir: 删除 "1" 失败: 目录非空
    [root@kkc tmp]# rmdir  -p 1/2/3/4
    [root@kkc tmp]# ls
    2                                       Jetty_0_0_0_0_50090_secondary____y6aanv  pulse-IUTDUHsxVJku
    hadoop-hadoop-datanode.pid              Jetty_0_0_0_0_8042_node____19tj0x        pulse-NLGmmKac2h3S
    hadoop-hadoop-namenode.pid              Jetty_0_0_0_0_8088_cluster____u0rgz3     yarn-hadoop-nodemanager.pid
    hadoop-hadoop-secondarynamenode.pid     keyring-IxgKJ5                           yarn-hadoop-resourcemanager.pid
    Jetty_0_0_0_0_50070_hdfs____w2cu08      keyring-MNCSHf                           yum.log
    Jetty_0_0_0_0_50075_datanode____hwtdwq  orbit-gdm
    [root@kkc tmp]# 

    值得注意的是,咱们在使用rmdir 命令的时候,需要了解到,直接利用rmdir 1/2/3/4 ,将删除 1/2/3/4 当中的4 这个文件,而非删除整个1大文件夹,而想要删除1大文件夹,需要使用的命令是rmdir -p 1/2/3/4.


    cp复制文件或目录

    • 基本解释:
      – 英文原意为:copy
      – 命令所在的路径: /bin/cp
      – 执行权限:所有的用户
      – 功能:复制文件或目录
      – 语法:
      cp [- 参数 ] [目录名]
      cp [- 参数 ] [原文件或目录] [目标目录]
      • 相应的参数及其含义
        • -a:相当於 -pdr 的意思,至於 pdr 请参考下列说明
        • -d:若来源档为连结档的属性(link file),则复制连结档属性而非文件本身;
        • -f:为强制(force)的意思,若目标文件已经存在且无法开启,则移除后再尝试一次;
        • -i:若目标档(destination)已经存在时,在覆盖时会先询问动作的进行
        • -l:进行硬式连结(hard link)的连结档创建,而非复制文件本身;
        • -p:连同文件的属性一起复制过去,而非使用默认属性(备份常用);
        • -r:递归持续复制,用於目录的复制行为;
        • -s:复制成为符号连结档 (symbolic link),亦即捷径文件;
        • -u:若 destination 比 source 旧才升级 destination!

    举例4.咱们利用cp命令,将root 下的anaconda-ks.cfg 文件,复制到/tmp/1当中,再一次,咱们利用 -i参数观察,发现,会产生询问。

    [root@kkc ~]# cp ./anaconda-ks.cfg  /tmp/1
    [root@kkc ~]# cd /tmp
    [root@kkc tmp]# ls
    1                                    Jetty_0_0_0_0_50070_hdfs____w2cu08       keyring-IxgKJ5      yarn-hadoop-nodemanager.pid
    2                                    Jetty_0_0_0_0_50075_datanode____hwtdwq   keyring-MNCSHf      yarn-hadoop-resourcemanager.pid
    hadoop-hadoop-datanode.pid           Jetty_0_0_0_0_50090_secondary____y6aanv  orbit-gdm           yum.log
    hadoop-hadoop-namenode.pid           Jetty_0_0_0_0_8042_node____19tj0x        pulse-IUTDUHsxVJku
    hadoop-hadoop-secondarynamenode.pid  Jetty_0_0_0_0_8088_cluster____u0rgz3     pulse-NLGmmKac2h3S
    [root@kkc tmp]# cp  -i ./anaconda-ks.cfg  /tmp/1
    cp: 无法获取"./anaconda-ks.cfg" 的文件状态(stat): 没有那个文件或目录
    [root@kkc tmp]# cd
    [root@kkc ~]# cp  -i ./anaconda-ks.cfg  /tmp/1
    cp:是否覆盖"/tmp/1"y
    [root@kkc ~]# 

    rm 移除文件或目录

    • 基本解释:
      – 英文原意为:remove
      – 命令所在的路径: /bin/rm
      – 执行权限:所有的用户
      – 功能:删除文件
      – 语法: rm [-参数] 文件或者目录
      • 相应的参数及其含义
        • -f :就是 force 的意思,忽略不存在的文件,不会出现警告信息;
        • -i :互动模式,在删除前会询问使用者是否动作
        • -r :递归删除啊,常用在目录的删除了!非常危险的选项!!!!

    举例5. 咱们将例4当中,利用cp命令创建的文件1 删除!,注意加上 -i 删除前进行询问。

    [root@kkc tmp]# rm -i  1
    rm:是否删除普通文件 "1"?y
    [root@kkc tmp]# 

    mv 移动文件与目录,或修改名称

    • 基本解释:
      – 英文原意为:move
      – 命令所在的路径: /bin/mv
      – 执行权限:所有的用户
      – 功能:剪切文件,改名
      – 语法: mv [-参数] [原文件或者目录] [目标文件或目录]
      • 相应的参数及其含义
        • -f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
        • -i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
        • -u :若目标文件已经存在,且 source 比较新,才会升级 (update)

    举例6. 在/tmp当中,创建一个目录3,将文件1,移动到目录3当中,将文件1改名为nimage .

    [root@kkc tmp]# ls
    1                                    Jetty_0_0_0_0_50070_hdfs____w2cu08       keyring-IxgKJ5      yarn-hadoop-nodemanager.pid
    2                                    Jetty_0_0_0_0_50075_datanode____hwtdwq   keyring-MNCSHf      yarn-hadoop-resourcemanager.pid
    hadoop-hadoop-datanode.pid           Jetty_0_0_0_0_50090_secondary____y6aanv  orbit-gdm           yum.log
    hadoop-hadoop-namenode.pid           Jetty_0_0_0_0_8042_node____19tj0x        pulse-IUTDUHsxVJku
    hadoop-hadoop-secondarynamenode.pid  Jetty_0_0_0_0_8088_cluster____u0rgz3     pulse-NLGmmKac2h3S
    [root@kkc tmp]# mkdir 3
    [root@kkc tmp]# mv 1 3
    [root@kkc tmp]# cd 3
    [root@kkc 3]# ls
    1
    [root@kkc 3]# mv 1 nimage
    [root@kkc 3]# ls
    nimage
    [root@kkc 3]# 

    touch 创建空文件

    • 基本解释:
      – 英文原意为
      – 命令所在的路径是/bin/touch
      – 执行权限:所有的用户
      – 功能:创建空文件
      – 语法:touch [-参数] [文件名]
      • 相应参数及其含义
        • -a 只更改访问时间
        • -c, –no-create 不创建任何文件
        • -d, –date=字符串 使用指定字符串表示时间而非当前时间
        • -f (忽略)
        • -h, –no-dereference 会影响符号链接本身,而非符号链接所指示的目的地
          (当系统支持更改符号链接的所有者时,此选项才有用)
        • -m 只更改修改时间
        • -r, –reference=文件 使用指定文件的时间属性而非当前时间
        • -t STAMP 使用[[CC]YY]MMDDhhmm[.ss] 格式的时间而非当前时间

    举例7 .咱们在/tmp文件夹下新建一个 4文件.

    [root@kkc tmp]# touch 4
    [root@kkc tmp]# ls
    2  hadoop-hadoop-datanode.pid           Jetty_0_0_0_0_50070_hdfs____w2cu08       Jetty_0_0_0_0_8042_node____19tj0x     keyring-MNCSHf      pulse-NLGmmKac2h3S               yum.log
    3  hadoop-hadoop-namenode.pid           Jetty_0_0_0_0_50075_datanode____hwtdwq   Jetty_0_0_0_0_8088_cluster____u0rgz3  orbit-gdm           yarn-hadoop-nodemanager.pid
    4  hadoop-hadoop-secondarynamenode.pid  Jetty_0_0_0_0_50090_secondary____y6aanv  keyring-IxgKJ5                        pulse-IUTDUHsxVJku  yarn-hadoop-resourcemanager.pid
    [root@kkc tmp]# 

    二. 文件内容查看常用命令

    • cat :由第一行开始显示文件内容
    • tac :从最后一行开始显示, tac 与 cat是相反的拼写方式,当然作用也是相反的
    • nl :显示的时候,输出行号!
    • more :分页显示文件内容
    • less :与 more 类似,但是比 more 更好的是,他可以往前翻页!
    • head :只看开头的几行
    • tail :只看末尾的几行

    接下来,咱们简单的看看这几个常用的文件查询命令是如何使用的.


    cat 由第一行开始显示文件内容

    • 基本解释:
      – 英文原意为:
      – 命令所在的路径: /bin/cat
      – 执行权限:所有的用户
      – 功能:显示文件内容
      – 语法: cat [-参数] [文件名]
      • 相应的参数及其含义
        • -A :相当於 -vET 的整合选项,可列出一些特殊字符而不是空白而已;
        • -b :列出行号,仅针对非空白行做行号显示,空白行不标行号!
        • -E :将结尾的断行字节 $ 显示出来;
        • -n :列印出行号,连同空白行也会有行号,与 -b 的选项不同;
        • -T :将 [tab] 按键以 ^I 显示出来;
        • -v :列出一些看不出来的特殊字符

    举例8 .咱们查看/etc/sysconfig/network-scripts/ifcfg-eth0

    [root@kkc 3]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 
    DEVICE=eth0
    HWADDR=00:0C:29:E9:AE:39
    TYPE=Ethernet
    UUID=a420222d-2a9d-466d-967f-bc03c4152808
    ONBOOT=YES
    NM_CONTROLLED=yes
    BOOTPROTO=static
    
    IPADDR=192.168.159.22
    BCAST=192.168.159.255
    GATEWAY=192.168.159.2
    NETMASK=255.255.255.0
    
    DNS1=192.168.159.2
    DNS1=8.8.8.8
    [root@kkc 3]# 

    tac 由最后一行开始显示文件内容

    • 基本解释:
      – 英文原意为:
      – 命令所在的路径: /bin/tac
      – 执行权限:所有的用户
      – 功能:显示文件内容
      – 语法: tac [-参数] [文件名]
      • 相应的参数及其含义
        • -b, –before 在行前而非行尾添加分隔标志
        • -r, –regex 将分隔标志视作正则表达式来解析
        • -s, –separator=字符串 使用指定字符串代替换行作为分隔标志

    举例9.咱们用tac查看/etc/sysconfig/network-scripts/ifcfg-eth0

    [root@kkc 3]# tac  /etc/sysconfig/network-scripts/ifcfg-eth0 
    DNS1=8.8.8.8
    DNS1=192.168.159.2
    
    NETMASK=255.255.255.0
    GATEWAY=192.168.159.2
    BCAST=192.168.159.255
    IPADDR=192.168.159.22
    
    BOOTPROTO=static
    NM_CONTROLLED=yes
    ONBOOT=YES
    UUID=a420222d-2a9d-466d-967f-bc03c4152808
    TYPE=Ethernet
    HWADDR=00:0C:29:E9:AE:39
    DEVICE=eth0
    [root@kkc 3]# 

    nl 显示行号

    • 基本解释:
      – 英文原意为:
      – 命令所在的路径: /bin/nl
      – 执行权限:所有的用户
      – 功能:显示文件及其行号
      – 语法: nl [-参数] 文件
      • 相应的参数及其含义
        • -b :指定行号指定的方式,主要有两种:
          -b a :表示不论是否为空行,也同样列出行号(类似 cat -n);
          -b t :如果有空行,空的那一行不要列出行号(默认值);
        • -n :列出行号表示的方法,主要有三种:
          -n ln :行号在萤幕的最左方显示;
          -n rn :行号在自己栏位的最右方显示,且不加 0 ;
          -n rz :行号在自己栏位的最右方显示,且加 0 ;
        • -w :行号栏位的占用的位数。

    举例10.利用nl 列 出 /etc/sysconfig/network-scripts/ifcfg-eth0 的内容,并且,无论行内容是否为空,均显示内容。

    [root@kkc 3]# nl -b a /etc/sysconfig/network-scripts/ifcfg-eth0 
         1  DEVICE=eth0
         2  HWADDR=00:0C:29:E9:AE:39
         3  TYPE=Ethernet
         4  UUID=a420222d-2a9d-466d-967f-bc03c4152808
         5  ONBOOT=YES
         6  NM_CONTROLLED=yes
         7  BOOTPROTO=static
         8  
         9  IPADDR=192.168.159.22
        10  BCAST=192.168.159.255
        11  GATEWAY=192.168.159.2
        12  NETMASK=255.255.255.0
        13  
        14  DNS1=192.168.159.2
        15  DNS1=8.8.8.8
    [root@kkc 3]# 

    more 分页显示文件内容

    • 基本解释:
      – 英文原意为:
      – 命令所在的路径: /bin/more
      – 执行权限:所有的用户
      – 功能:分页显示文件内容
      – 语法: nl [-参数] 文件
      • 在 more 这个程序的运行过程中,你有几个按键可以按的:
        • 空白键 (space):代表向下翻一页;
        • Enter :代表向下翻『一行』;
        • /字串 :代表在这个显示的内容当中,向下搜寻『字串』这个关键字;
        • :f :立刻显示出档名以及目前显示的行数;
        • q :代表立刻离开 more ,不再显示该文件内容。
        • b 或 [ctrl]-b :代表往回翻页,不过这动作只对文件有用,对管线无用。

    举例11. 咱们试用一下more 打开文件 /etc/sysconfig/network-scripts/ifcfg-eth0

    [root@kkc 3]# more  /etc/sysconfig/network-scripts/ifcfg-eth0 
    DEVICE=eth0
    HWADDR=00:0C:29:E9:AE:39
    TYPE=Ethernet
    UUID=a420222d-2a9d-466d-967f-bc03c4152808
    ONBOOT=YES
    NM_CONTROLLED=yes
    BOOTPROTO=static
    
    IPADDR=192.168.159.22
    BCAST=192.168.159.255
    GATEWAY=192.168.159.2
    NETMASK=255.255.255.0
    
    DNS1=192.168.159.2
    DNS1=8.8.8.8
    [root@kkc 3]# 

    less一页一页翻动

    • 基本解释:
      – 英文原意为:
      – 命令所在的路径: /bin/less
      – 执行权限:所有的用户
      – 功能:分页显示文件内容(可以向上翻页)
      – 语法: less [-参数] 文件
      • less运行时可以输入的命令有:
        • 空白键 :向下翻动一页;
        • [pagedown]:向下翻动一页;
        • [pageup] :向上翻动一页;
        • / 字串 :向下搜寻字串的功能;
        • ? 字串 :向上搜寻字串的功能;
        • n :重复前一个搜寻 (与 / 或 ? 有关!)
        • N :反向的重复前一个搜寻 (与 / 或 ? 有关!)
        • q :离开 less 这个程序;

    举例12.利用less 命令查看/etc/sysconfig/network-scripts/ifcfg-eth0 文件

    [root@kkc 3]# less /etc/sysconfig/network-scripts/ifcfg-eth0 
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    DEVICE=eth0
    HWADDR=00:0C:29:E9:AE:39
    TYPE=Ethernet
    UUID=a420222d-2a9d-466d-967f-bc03c4152808
    ONBOOT=YES
    NM_CONTROLLED=yes
    BOOTPROTO=static
    
    IPADDR=192.168.159.22
    BCAST=192.168.159.255
    GATEWAY=192.168.159.2
    NETMASK=255.255.255.0
    
    DNS1=192.168.159.2
    DNS1=8.8.8.8
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    (END) 

    head取出文件前面几行

    • 基本解释:
      – 英文原意为:
      – 命令所在的路径: /bin/head
      – 执行权限:所有的用户
      – 功能:显示文件前面几行
      – 语法: head [-参数] 文件
      • 相应参数与含义:
        • -n :后面接数字,代表显示几行的意思.
          默认的情况中,显示前面 10 行!若要显示前 20 行,就得要命令为: head -n [数字] [文件名]

    举例13.咱们利用head来显示/etc/sysconfig/network-scripts/ifcfg-eth0的前5行代码。

    [root@kkc 3]# head -n 5 /etc/sysconfig/network-scripts/ifcfg-eth0 
    DEVICE=eth0
    HWADDR=00:0C:29:E9:AE:39
    TYPE=Ethernet
    UUID=a420222d-2a9d-466d-967f-bc03c4152808
    ONBOOT=YES
    [root@kkc 3]# 

    tail取出文件后边几行

    • 基本解释:
      – 英文原意为:
      – 命令所在的路径: /bin/tail
      – 执行权限:所有的用户
      – 功能:显示文件后边几行
      – 语法:tail [-参数] 文件
      • 相应参与含义:
        • -n :后面接数字,代表显示几行的意思.
        • -f :表示持续侦测后面所接的档名,要等到按下[ctrl]-c才会结束tail的侦测

    举例14. 咱们利用tail来显示/etc/sysconfig/network-scripts/ifcfg-eth0的后5行代码。

    [root@kkc 3]# tail -n 5 /etc/sysconfig/network-scripts/ifcfg-eth0 
    GATEWAY=192.168.159.2
    NETMASK=255.255.255.0
    
    DNS1=192.168.159.2
    DNS1=8.8.8.8
    [root@kkc 3]# ^C

  • 相关阅读:
    蓝鸥0c考试 绝密
    省市县用对象实现
    省市区用字典实现
    3道比较有用的oc练习题
    ios 开发 OC编程 类的扩展 协议 延展和 类目
    ios 开发 OC编程 内存管理
    ios 开发 OC编程 块语法bolck的一些应用
    ios 开发 OC编程 块语法bolck
    中等难度的通讯录.字典 动态分组法
    TestFlight
  • 原文地址:https://www.cnblogs.com/DeepRunning/p/9206025.html
Copyright © 2011-2022 走看看