欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

linux 基础学习之目录与文件处理命令

程序员文章站 2022-03-09 14:26:19
...

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

一. 处理目录的常用命令

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

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

ls: 列出目录

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

linux 基础学习之目录与文件处理命令


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

linux 基础学习之目录与文件处理命令


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

linux 基础学习之目录与文件处理命令


mkdir 创建新目录

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

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

[aaa@qq.com tmp]# mkdir 1/2/3/4
mkdir: 无法创建目录"1/2/3/4": 没有那个文件或目录
[aaa@qq.com tmp]# mkdir -p 1/2/3/4
[aaa@qq.com 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
[aaa@qq.com 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文件.

[aaa@qq.com tmp]# touch 4
[aaa@qq.com 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
[aaa@qq.com 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

[aaa@qq.com 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
[aaa@qq.com 3]# 

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

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

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

[aaa@qq.com 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
[aaa@qq.com 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

[aaa@qq.com 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
[aaa@qq.com 3]# 

less一页一页翻动

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

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

[aaa@qq.com 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行代码。

[aaa@qq.com 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
[aaa@qq.com 3]# 

tail取出文件后边几行

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

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

[aaa@qq.com 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
[aaa@qq.com 3]# ^C