Linux 基础的文件目录操作命令,融合多部Linux经典著作,去除多余部分,保留实用部分。
显示目录或文件: 显示目标列表,在Linux系统中是使用率较高的命令.ls命令的输出信息可以进行彩色加亮显示,以分区不同类型的文件
[root@localhost ~]# ls --help
命令语法:[ ls [选项] 文件或目录 ]
-a #显示所有文件,包括隐藏文件,连同.与..的文件也列出来
-A #显示所有文件,包括隐藏文件,但不列出.与..
-d #仅列出目录
-f #直接列出结果不排序
-h #文件大小显示为B KB MB
-i #列出文件的Inode号
-l #以长格式显示
-n #列出uid与gid
-S #以文件容量大小排序(大文件在前小文件在后)
-t #以时间大小排序(大日期在前小日期在后)
-r #将排序结果反向输出
-R #递归显示目录以及子目录
-Z #列出SELinux安全上下文
--full-time #列出文件详细时间
--time=atime/ctime/mtime #列出指定时间
使用 ls -lh
参数查询所在目录详细信息
[root@localhost ~]# ls -lh
total 0
-rw-r--r--. 1 root root 0 Nov 13 09:36 admin
drwxr-xr-x. 2 root root 6 Nov 13 09:36 lyshark
第1项: 文件权限位
第2项: 引用计数(文件:硬链接数 目录:目录下的子目录个数)
第3项: 文件的所有者(属主->此处为root)
第4项: 文件的所属组(属组->此处为root)
第5项: 文件大小(默认单位字节byte)
第6项: 最后一次修改时间
第7项: 文件名
使用 ls -lh --full-time
显示文件创建的详细时间信息
[root@localhost ~]# ls -h --full-time
total 0
-rw-r--r--. 1 root root 0 2018-11-13 09:36:25.172274787 -0500 admin
drwxr-xr-x. 2 root root 6 2018-11-13 09:36:13.292275532 -0500 lyshark
使用 ls -lhS
显示文件,并按照文件由大到小打印
[root@localhost ~]# ls -lhS
total 0
drwxr-xr-x. 2 root root 6 Nov 13 09:36 lyshark
-rw-r--r--. 1 root root 0 Nov 13 09:36 admin
使用 ls -lhrS
显示文件,并按照文件由小到大打印
[root@localhost ~]# ls -lhrS
total 0
-rw-r--r--. 1 root root 0 Nov 13 09:36 admin
drwxr-xr-x. 2 root root 6 Nov 13 09:36 lyshark
使用 ls -lZ
显示文件,并显示SeLinux安全上下文
[root@localhost ~]# ls -lZ
-rw-r--r--. root root unconfined_u:object_r:admin_home_t:s0 admin
drwxr-xr-x. root root unconfined_u:object_r:admin_home_t:s0 lyshark
目录跳转与切换: 切换当前的哦工作目录
[root@localhost ~]# cd --help
命令语法:[ cd [选项] 目录 ]
cd #进入用户主目录
cd ~ #进入用户主目录
cd - #返回进入此目录之前所在的目录
cd .. #返回上级目录
cd ../.. #返回上两级目录
cd !$ #把上个命令的参数作为cd参数使用
使用 cd ~ or cd
切换到用户家目录
[root@localhost etc]# pwd
/etc
[root@localhost etc]# cd
[root@localhost ~]# pwd
/root
使用 cd ..
切换上一级目录里去
[root@localhost ~]# pwd
/root
[root@localhost ~]# cd ..
[root@localhost /]# pwd
/
使用 cd ../..
切换上两级目录里去
[root@localhost sysconfig]# pwd
/etc/sysconfig
[root@localhost sysconfig]# cd ../..
[root@localhost /]# pwd
/
创建新目录: mkdir命令用来创建一个新目录,或者递归创建一些目录。
[root@localhost ~]# mkdir --help
语法格式:[ mkdir [选项] 新目录名 ]
-v #显示创建过程
-p #递归创建目录
-Z #设置安全上下文
-m #建立目录时同时设置权限
使用 mkdir -p
递归创建目录
[root@localhost ~]# mkdir -p /tmp/lyshark/lyshark
[root@localhost ~]# ls -lh /tmp/lyshark/
total 0
drwxr-xr-x. 2 root root 6 Nov 13 09:56 lyshark
使用 mkdir -m
建立目录时同时设置权限.
[root@localhost ~]# mkdir -m 000 lyshark
[root@localhost ~]# ls -lh
total 0
d---------. 2 root root 6 Nov 13 10:02 lyshark
创建空文件: touch命令用于创建空文件按,或者把已存在文件的时间标签更新为系统当前的时间。
[root@localhost ~]# touch --help
语法格式:[ touch [选项] 文件名 ]
-a #修改访问时间
-c #修改文件时间,若文件不存在则不创建新文件
-m #仅修改mtime
-t #修改文件时间(touch -t 1806101012)
使用 touch
命令在当前目录下创建一个空文件lyshark.txt.
[root@localhost ~]# ls -lh
total 0
[root@localhost ~]# touch lyshark.txt
[root@localhost ~]# ls -lh
total 0
-rw-r--r--. 1 root root 0 Nov 13 10:32 lyshark.txt
使用 touch -t
命令修改文件的时间改成15年11月03日11点59分.
[root@localhost ~]# ls -lh --full-time
total 0
-rw-r--r--. 1 root root 0 2018-11-13 10:35:50.639051120 -0500 lyshark.txt
[root@localhost ~]# touch -t 1511031159 lyshark.txt
[root@localhost ~]# ls -lh --full-time
total 0
-rw-r--r--. 1 root root 0 2015-11-03 11:59:00.000000000 -0500 lyshark.txt
复制文件或目录: cp命令用来将一个或多个源文件或者目录复制到指定的目的文件或目录。
[root@localhost ~]# cp --help
语法格式:[ cp [选项] 源文件或目录 目标目录 ]
-a #相当于pdr
-d #连同链接文件的属性一起复制
-f #强制复制
-i #如目标文件已存在,则覆盖时询问
-p #连同文件属性一起复制(备份常用)
-r #递归复制,用于目录的复制
-s #复制时创建软连接
-u #源文件更新时才会提示复制
使用 cp -a
命令实现文件拷贝,将/etc/的文件拷贝到/tmp/目录下.
[root@localhost ~]# cp -a /etc/* /tmp/
[root@localhost ~]# ls -lh /tmp/
total 1.1M
-rw-r--r--. 1 root root 16 Oct 13 12:37 adjtime
-rw-r--r--. 1 root root 1.5K Jun 7 2013 aliases
-rw-r--r--. 1 root root 12K Oct 13 12:39 aliases.db
drwxr-xr-x. 2 root root 236 Oct 13 12:34 alternatives
....省略....
使用 cp -s
命令实现拷贝文件,将/etc/passwd创建软链接到/tmp/目录下.
[root@localhost ~]# cp -s /etc/passwd /tmp/
[root@localhost ~]# ls -lh /tmp/
total 0
lrwxrwxrwx. 1 root root 11 Nov 13 10:09 passwd -> /etc/passwd
使用 cp -a
命令实现一次拷贝多个文件,到/tmp/目录下.
[root@localhost ~]# cp -a /etc/passwd /etc/shadow /tmp/
[root@localhost ~]# ls -lh /tmp/
total 8.0K
-rw-r--r--. 1 root root 898 Oct 13 12:37 passwd
----------. 1 root root 714 Oct 13 12:37 shadow
移动文件或目录: mv命令用来对文件或目录重新命名,如果文件存在则会强制更新。
[root@localhost ~]# mv --help
语法格式:[ mv [选项] 源文件或目录 目标目录 ]
-f #强制移动
-i #以互动方式移动
-u #源文件更新才会移动
使用 mv
命令实现将/etc/passwd移动到/tmp目录下.
[root@localhost ~]# mv /etc/passwd /tmp/
[root@localhost ~]# ls -lh /tmp/
total 4.0K
-rw-r--r--. 1 0 root 898 Oct 13 12:37 passwd
使用 mv
命令实现一次移动多个文件,下面将/etc/passwd和/etc/shadow 移动到/tmp目录下.
[root@localhost ~]# mv /etc/passwd /etc/shadow /tmp/
[root@localhost ~]# ls -lh /tmp/
total 8.0K
-rw-r--r--. 1 0 root 898 Oct 13 12:37 passwd
----------. 1 0 root 714 Oct 13 12:37 shadow
使用 mv
命令实现重命名,将当前目录下的lyshark改名为linux.
[root@localhost ~]# ls -lh
total 0
drwxr-xr-x. 2 root root 6 Nov 13 10:19 lyshark
[root@localhost ~]# mv lyshark/ linux
[root@localhost ~]# ls -lh
total 0
drwxr-xr-x. 2 root root 6 Nov 13 10:19 linux
删除文件或目录: rm命令可以删除一个目录中的一个或多个文件或目录,也可以将某个目录及其下属的所有文件及其子目录均删除掉.
[root@localhost ~]# rm --help
语法格式:[ rm [选项] 文件或目录 ]
-f #不提示警告信息,直接删除
-r #递归删除
-i #删除前提示
-fr #常用搭配
使用 rm -fr
命令删除当前目录下的linux目录.
[root@localhost ~]# ls
linux
[root@localhost ~]# rm -fr linux/
[root@localhost ~]# ls
使用 rm -fr *
命令使用通配符,删除指定文件夹内的所有文件.
[root@localhost lyshark]# ls
1 10 2 3 4 5 6 7 8 9
[root@localhost lyshark]# rm -fr *
[root@localhost lyshark]# ls
判断文件的类型: file命令用来检测给定文件的类型,file命令对文件的检查分为文件系统、魔法幻数检查和语言检查3个过程
[root@localhost ~]# file --help
语法格式:[ file [选项] 文件或目录 ]
-b #列出辨识结果时,不显示文件名称
-c #详细显示指令执行过程
-f 文件名 #在文件中一次读取并判断格式
-z #查询压缩包信息
使用 file
命令判断/etc/passwd 和 /bin/bash 文件的格式.
[root@localhost ~]# file /etc/passwd
/etc/passwd: ASCII text
[root@localhost ~]# file /bin/bash
/bin/bash: ELF 64-bit LSB executable, x86-64, version 1 (SYSV),
dynamically linked (uses shared libs), for GNU/Linux 2.6.32,
BuildID[sha1]=9a57e086388119ecd285c4d5c66823f3f3b68ab5, stripped
使用 file -z
命令读取lyshark.tar.gz压缩包文件属性.
[root@localhost ~]# ls -lh
total 9.4M
-rw-r--r--. 1 root root 9.4M Nov 13 10:51 lyshark.tar.gz
[root@localhost ~]# file -z lyshark.tar.gz
lyshark.tar.gz: POSIX tar archive (GNU) ,
(gzip compressed data, from Unix, last modified: Tue Nov 13 10:51:13 2018)
使用 file -f
命令在文件中读取指定行,并依次判断文件.
[root@localhost ~]# cat temp
/etc/passwd
/etc/shadow
/bin/bash
/bin/ls
[root@localhost ~]# file -f temp
/etc/passwd: ASCII text
/etc/shadow: ASCII text
/bin/bash: ELF 64-bit LSB executable, x86-64, version 1 (SYSV),
dynamically linked (uses shared libs), for GNU/Linux 2.6.32,
BuildID[sha1]=9a57e086388119ecd285c4d5c66823f3f3b68ab5, stripped
/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV),
dynamically linked (uses shared libs), for GNU/Linux 2.6.32,
BuildID[sha1]=ec3f3e5e8160c9917e8a4b896fe9044748472991, stripped
查询文件状态: stat命令用于显示文件的状态信息,stat命令的输出信息比ls命令的输出信息要更详细。
[root@localhost ~]# stat --help
语法格式:[ stat [选项] 文件或目录 ]
-L #支持符号连接
-f #显示文件系统状态而非文件状态
-t #以简洁方式输出信息
使用 stat
命令查询/bin/bash文件的相信信息.
[root@localhost ~]# stat /bin/bash
File: ‘/bin/bash’
Size: 964544 Blocks: 1888 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 50340311 Links: 1
Access: (0755/-rwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Context: system_u:object_r:shell_exec_t:s0
Access: 2018-11-13 09:33:12.197999579 -0500
Modify: 2017-09-26 09:14:20.000000000 -0400
Change: 2018-10-13 12:32:43.377997461 -0400
Birth: -
使用 stat -f
命令显示系统的状态信息.
[root@localhost ~]# stat -f /bin/bash
File: "/bin/bash"
ID: fd0000000000 Namelen: 255 Type: xfs
Block size: 4096 Fundamental block size: 4096
Blocks: Total: 4452864 Free: 4155020 Available: 4155020
Inodes: Total: 8910848 Free: 8877953
创建链接文件: ln命令用来为文件创件连接,既可以创建软连接也可以创建硬链接。
[root@localhost ~]# ln --help
语法格式:[ stat [选项] 文件或目录 ]
-L #支持符号连接
-d #建立目录的硬链接
-f #强制建立链接
-i #覆盖前询问
-s #建立一个软链接
使用 ln
命令建立一个硬链接.
[root@localhost ~]# ls -lhi
total 944K
33844798 -rwxr-xr-x. 1 root root 942K Sep 26 2017 bash
[root@localhost ~]# ln bash bash_ln
[root@localhost ~]# ls -lhi
total 1.9M
33844798 -rwxr-xr-x. 2 root root 942K Sep 26 2017 bash
33844798 -rwxr-xr-x. 2 root root 942K Sep 26 2017 bash_ln
使用 ln -s
命令建立一个软链接.
[root@localhost ~]# ls -lhi
total 944K
33844798 -rwxr-xr-x. 1 root root 942K Sep 26 2017 bash
[root@localhost ~]# ln -s bash bash_link
[root@localhost ~]# ls -lhi
total 944K
33844798 -rwxr-xr-x. 1 root root 942K Sep 26 2017 bash
33959316 lrwxrwxrwx. 1 root root 4 Nov 13 11:06 bash_link -> bash
文本打印命令: cat 文件打印滚屏命令,控制参数输出。
[root@localhost ~]# cat --help
语法格式:[ cat [选项] 文件名 ]
-b #列出行号,空白行不标号
-E #将结尾段行符$显示出来
-T #将Tab键以^I显示出来
-n #打印出行号
使用 cat -n
命令给指定文本标号并打印.
[root@localhost ~]# cat -n /etc/passwd
1 root:x:0:0:root:/root:/bin/bash
2 bin:x:1:1:bin:/bin:/sbin/nologin
3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
4 adm:x:3:4:adm:/var/adm:/sbin/nologin
5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
6 sync:x:5:0:sync:/sbin:/bin/sync
....省略....
使用 cat -E
命令显示文本结束符$.
[root@localhost ~]# cat -E /etc/passwd
root:x:0:0:root:/root:/bin/bash$
bin:x:1:1:bin:/bin:/sbin/nologin$
daemon:x:2:2:daemon:/sbin:/sbin/nologin$
adm:x:3:4:adm:/var/adm:/sbin/nologin$
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin$
sync:x:5:0:sync:/sbin:/bin/sync$
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown$
....省略....
显示开头文本: head命令用于显示文件的开头的内容,在默认情况下,head命令显示文件的头10行内容
[root@localhost ~]# head --help
语法格式:[ head [选项] 文件名 ]
-c 10 #显示前10个字符
-n 10 #显示前10行
-v #总是显示文件名的头信息
-q #不显示文件名的头信息
使用 head -c
命令显示文本的前20个字符.
[root@localhost ~]# head -c 20 /etc/passwd
root:x:0:0:root:/roo
[root@localhost ~]#
使用 head -n
命令显示文本前3行.
[root@localhost ~]# head -n 3 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
显示结尾文本: tail命令用于输入文件中的尾部内容,tail命令默认在屏幕上显示指定文件的末尾10行
[root@localhost ~]# tail --help
语法格式:[ tail [选项] 文件名 ]
-c 10 #显示后10个字符
-n 10 #显示文件后10行
-f #持续监测文件后面的变化
--pid=PID #与-f合用,表示在进程ID,死掉之后结束
使用 tail -n
命令显示文本后3行.
[root@localhost ~]# tail -n 3 /etc/passwd
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
lyshark:x:1000:1000:lyshark:/home/lyshark:/bin/bash
使用 tail -f
命令动态监控一个文件.
[root@localhost ~]# tail -f /var/log/messages
Nov 13 10:01:01 localhost systemd: Starting Session 3 of user root.
Nov 13 10:10:54 localhost kernel: e1000: ens32 NIC Link is Down
Nov 13 10:10:58 localhost kernel: e1000: ens32 NIC Link is Up
Nov 13 10:10:58 localhost NetworkManager[772]: <info>
....省略....
使用 tail --pid=PID
命令监视一个进程.
[root@localhost ~]# ps
PID TTY TIME CMD
1404 pts/0 00:00:00 bash
11441 pts/0 00:00:00 ps
[root@localhost ~]#
[root@localhost ~]# tail --pid=1401
tail: warning: PID ignored; --pid=PID is useful only when following
....省略....
使用 tail -n +5
命令从第五行以后开始打印.
[root@localhost ~]# tail -n +5 /etc/passwd
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
....省略....
使用 tail -n +5 | head -n 3
命令从第五行开始打印,向下打印2行内容.
[root@localhost ~]# tail -n +5 /etc/passwd |head -n 3
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
指定格式输出文本: nl命令读取file参数缺省情况下标准输入,计算输入中的行号,将计算过的行号写入标准输出.
[root@localhost ~]# nl --help
语法格式:[ nl [选项] 文件名 ]
-c 10 #显示后10个字符
-b a #列出行号,包括空格(类似 cat -n)
-b t #列出行号,不包括空格(类似 cat -n)
-n ln #行号显示在最左边
-n rn #行号显示在最右边
-n rz #行号显示在最右边,并加0补齐
-w #指定补齐0的个数
使用 nl -b a
命令给文本标号打印(类似于cat -n).
[root@localhost ~]# nl -b a /etc/passwd
1 root:x:0:0:root:/root:/bin/bash
2 bin:x:1:1:bin:/bin:/sbin/nologin
3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
4 adm:x:3:4:adm:/var/adm:/sbin/nologin
5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
6 sync:x:5:0:sync:/sbin:/bin/sync
....省略....
使用 nl -b a -n rz
命令列出文本并给予编号,空格0填充.
[root@localhost ~]# nl -b a -n rz /etc/passwd
000001 root:x:0:0:root:/root:/bin/bash
000002 bin:x:1:1:bin:/bin:/sbin/nologin
000003 daemon:x:2:2:daemon:/sbin:/sbin/nologin
000004 adm:x:3:4:adm:/var/adm:/sbin/nologin
000005 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
....省略....
使用 nl -b a -n rz -w 3
命令列出文本并给予编号,编号填充2行0.
[root@localhost ~]# nl -b a -n rz -w 3 /etc/passwd
001 root:x:0:0:root:/root:/bin/bash
002 bin:x:1:1:bin:/bin:/sbin/nologin
003 daemon:x:2:2:daemon:/sbin:/sbin/nologin
004 adm:x:3:4:adm:/var/adm:/sbin/nologin
005 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
....省略....
非纯文本文件打印: od用于输出文件的八进制、十六进制或其它格式编码字节,此命令主要用来查看保存在二进制文件中的值.
[root@localhost ~]# od --help
语法格式:[ od [选项] 文件名 ]
-t a #利用默认字符来输出
-t c #使用ASCII字符输出
-t d #使用十进制输出
-t f #使用浮点数输出
-t o #使用八进制输出
-t x #使用十六进制输出
使用 od -t a
命令使用默认格式输出.
[root@localhost ~]# od -t a /bin/cd
0000000 # ! / b i n / s h nl b u i l t i
0000020 n sp c d sp " $ @ " nl
0000032
使用 od -t c
命令使用ASCII输出.
[root@localhost ~]# od -t c /bin/cd
0000000 # ! / b i n / s h \n b u i l t i
0000020 n c d " $ @ " \n
0000032
使用 od -t x
命令输出二进制文件的十六进制。
[root@localhost ~]# od -t x /bin/cd
0000000 622f2123 732f6e69 75620a68 69746c69
0000020 6463206e 40242220 00000a22
翻页浏览文本: 命令more/less
是文本翻阅查看命令。
[root@localhost ~]# more --help
语法格式:[ more 文件名 ]
空格 #像下翻一页
B #向上翻一页
Enter #向下滚动一行
/字符串 #向下查找字符串
:f #立即显示行号
q或Q #退出
[root@localhost ~]# less --help
语法格式:[ less [选项] 文件名 ]
-e #文件显示完成后自动退出
-f #强制显示文件
-l #搜索时忽略大小写的差异
-N #每一行行首显示行号
空格 #向下翻动一页
[pageup] #向上翻动一页
/字符串 #向下查找字符串
?字符串 #向上查找字符串
q #退出
文件打补丁: 给指定的配置文件打补丁,通过对比生成差异文件,并打入补丁.
[root@localhost ~]# diff --help
语法格式:[ diff [选项] 源文件 新文件 > *.patch ]
-a #将任何文档当做文本文档处理
-b #忽略空格造成的不同
-B #忽略空白行造成的不同
-I #忽略大小写造成的不同
-N #当比较目录时,若某个文件只在一个目录中,则另一个目录中视作空文件
-r #当比较目录时,递归比较子目录
-u #使用同一的输出格式
[root@localhost ~]# diff -Naur /root/old /root/new > lyshark.patch #生成补丁文件
[root@localhost ~]# patch -p2 old < lyshark.patch #追加打补丁