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

时间:2022-06-02 15:32:05

尼玛哥编写这些命令,只是为了自己能够更好的学习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目录下创建一个一个新的目录

[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