尼玛哥编写这些命令,只是为了自己能够更好的学习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 3月 6 23:50 1
drwx--x--x. 2 root root 4096 3月 6 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 :行号栏位的占用的位数。
- -b :指定行号指定的方式,主要有两种:
- 相应的参数及其含义
举例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 :代表往回翻页,不过这动作只对文件有用,对管线无用。
- 在 more 这个程序的运行过程中,你有几个按键可以按的:
举例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 这个程序;
- 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 [数字] [文件名]
- -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