CentOS基础文件基本操作命令
文件(夹)查看类命令
ls--显示指定目录下内容
说明:ls 显示结果以不同的颜色来区分文件类别。蓝色代表目录,灰色代表普通文件,绿色代表可执行文件,红色代表压缩文件,浅蓝色代表链接文件。
-a---显示所有内容,包括隐藏文件
说明:在Linux系统中,以“.”开头的就是隐藏文件或隐藏目录。
说明:ls -l命令可以简写成ll,
输出的信息共分为7组:
文件类别和文件权限、链接数或子目录个数、文件所有者、文件所属组、文件大小(单位为字节B)、文件创建或修改时间、文件名。
文件类别:第一组前1位表示文件类别,“-”代表普通文件,“d”代表目录,“l”代表符号链接,“c”代表字符设备,“b”代表块设备
文件权限:第一组后9位表示文件权限,前3位为user、中间3位为group、后三位为other的权限
-d---显示目录本身的属性而不是目录中的内容。
1
2
3
4
5
|
[root@localhost ~]
# ls -ld /home
drwxr-xr-x. 4 root root 4096 9月 22 10:41
/home
[root@localhost ~]
# ls -d /home
/home
[root@localhost ~]
#
|
-h---以K、M、G等单位显示文件大小(默认为字节)
1
2
3
4
5
6
7
|
[root@localhost ~]
# ls -h /home
justin lost+found
[root@localhost ~]
# ls -lh /home
总用量 20K
drwx------. 27 justin justin 4.0K 9月 22 13:19 justin
drwx------. 2 root root 16K 9月 18 15:30 lost+found
[root@localhost ~]
#
|
-R---若目录下有档案,也将档案依序列出
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
[root@localhost ~]
# ls -lR /home
/home
:
总用量 20
drwx------. 27 justin justin 4096 9月 22 13:19 justin
drwx------. 2 root root 16384 9月 18 15:30 lost+found
/home/justin
:
总用量 32
drwxr-xr-x. 2 justin justin 4096 9月 22 10:49 公共的
drwxr-xr-x. 2 justin justin 4096 9月 22 10:49 模板
drwxr-xr-x. 2 justin justin 4096 9月 22 10:49 视频
drwxr-xr-x. 2 justin justin 4096 9月 22 10:49 图片
drwxr-xr-x. 2 justin justin 4096 9月 22 10:49 文档
drwxr-xr-x. 2 justin justin 4096 9月 22 10:49 下载
drwxr-xr-x. 2 justin justin 4096 9月 22 10:49 音乐
drwxr-xr-x. 2 justin justin 4096 9月 22 10:49 桌面
/home/justin/
公共的:
总用量 0
/home/justin/
模板:
总用量 0
/home/justin/
视频:
总用量 0
/home/justin/
图片:
总用量 0
/home/justin/
文档:
总用量 0
/home/justin/
下载:
总用量 0
/home/justin/
音乐:
总用量 0
/home/justin/
桌面:
总用量 0
/home/lost
+found:
总用量 0
[root@localhost ~]
#
|
-t---将档案按照建立时间的先后次序列出
1
2
3
4
5
6
7
8
9
10
11
|
[root@localhost ~]
# ls -l /home
总用量 20
drwx------. 27 justin justin 4096 9月 22 13:19 justin
drwx------. 2 root root 16384 9月 18 15:30 lost+found
-rw-r--r--. 1 root root 0 9月 22 15:21 t
[root@localhost ~]
# ls -lt /home
总用量 20
-rw-r--r--. 1 root root 0 9月 22 15:21 t
drwx------. 27 justin justin 4096 9月 22 13:19 justin
drwx------. 2 root root 16384 9月 18 15:30 lost+found
[root@localhost ~]
#
|
说明:ls命令还可以结合通配符“?”或“*”一起使用,问号“?”可以匹配文件名中的一个任意字符,而“*”可以匹配文件名中的任意多个字符。这两个通配符同样也适用于Shell环境中的其他大多数命令。
1
2
3
4
5
6
7
8
9
10
11
12
|
gssapi_mech.conf popt.d xml
gtk-2.0 portreserve yp.conf
hal postfix yum
host.conf ppp yum.conf
hosts prelink.cache yum.repos.d
hosts.allow prelink.conf
hosts.deny prelink.conf.d
[root@localhost etc]
# ll -d /etc/po*.d
drwxr-xr-x. 2 root root 4096 1月 11 2010
/etc/popt
.d
[root@localhost etc]
# ll -d /etc/po?.d
ls
: 无法访问
/etc/po
?.d: 没有那个文件或目录
[root@localhost etc]
#
|
du---显示文件或目录大小
-h或--human-readable---以K,M,G为单位,提高信息的可读性
1
2
3
4
5
|
[root@localhost src]
# du -h nagios-3.5.0.tar.gz
1.8M nagios-3.5.0.
tar
.gz
[root@localhost src]
# du nagios-3.5.0.tar.gz
1748 nagios-3.5.0.
tar
.gz
[root@localhost src]
#
|
-a---显示全部目录和其次目录下的每个档案所占的磁盘空间
-b或-bytes---显示目录或文件大小时,以byte为单位
1
2
3
|
[root@localhost
local
]
# du -b src/nagios-3.5.0.tar.gz
1789376 src
/nagios-3
.5.0.
tar
.gz
[root@localhost
local
]
#
|
-c或--total---显示每个目录或文件的大小外,同时也显示所有目录或文件的总和
-m或--megabytes---以1MB为单位
-s---只显示各档案大小的总合
1
2
3
|
[root@localhost
local
]
# du -sh src/
41M src/
[root@localhost
local
]
#
|
-x---只计算同属同一个档案系统的档案
-L---计算所有的档案大小
df---显示档案系统的状况;主要用来了解系统中已经挂载的各个文件系统的磁盘使用情况
-h 显示更易读的容量单位
-T 显示文件系统的类型
1
2
3
4
5
6
7
8
|
[root@localhost ~]
# df -Th
文件系统 类型 容量 已用 可用 已用%% 挂载点
/dev/sda2ext4
9.9G 2.6G 6.9G 28% /
tmpfs tmpfs 504M 112K 504M 1%
/dev/shm
/dev/sda1ext4
194M 27M 158M 15%
/boot
/dev/sda5ext4
7.7G 147M 7.2G 2%
/home
/dev/sr0iso9660
2.9G 2.9G 0 100%
/media/RHEL_6
.3 i386 Disc 1
[root@localhost ~]
#
|
file---查看文件类型
1
2
3
4
5
6
|
[root@localhost home]
# file justin/
justin/: directory
[root@localhost home]
# file justin1
justin1: empty
[root@localhost ~]
# file install.log
install
.log: UTF-8 Unicode text
|
说明:file命令用于查看文件的类型,可以根据文件的内部存储结构来进行判别,而不根据文件的扩展名来进行判别。在Linux系统中,文件扩展名与文件类型没有绝对的关系。
创建文件名中可以带有空格,但需要用引号引起来,不建议使用空格
文件内容查看
cat---显示文件内容
1
|
[root@localhost log]
# cat /var/log/messages
|
说明:cat在显示文本文件的内容时不进行停顿,对于内容较长的文件,在快速滚屏显示之后,只有最后一页的文件内容保留在屏幕中显示,因此cat不适合查看长文件。
more---分页显示文件内容
-num--- 一次显示的行数
-s ---当遇到有连续两行以上的空白行,就代换为一行的空白行
+num ---从第 num 行开始显示
1
2
3
4
5
6
7
|
[root@localhost log]
# more -5s /var/log/messages
Sep 22 10:36:06 localhost kernel: imklog 5.8.10, log
source
=
/proc/kmsg
started.
Sep 22 10:36:06 localhost rsyslogd: [origin software=
"rsyslogd"
swVersion=
"5.8.10"
x-pid
=
"1323"
x-info=
"http://www.rsyslog.com"
] start
Sep 22 10:36:06 localhost kernel: Initializing cgroup subsys cpuset
Sep 22 10:36:06 localhost kernel: Initializing cgroup subsys cpu
--More--(0%)
|
说明:类似 cat ,不过会以一页一页的显示方便使用者逐页阅读,空白键(space):显示下一页,b 键:显示上一页,q 键 :退出
less----分页显示文件内容
说 明:less命令的用法与more命令类似,它们之间的区别是当文件内容显示到文件尾时,more命令会自动退出阅读环境,而less命令不自动退出,用 户仍然可以利用上下键来卷动文件,这样更加有利于对文件内容的反复阅读。当要结束浏览时,要在less命令的提示符“:”后按Q键退出
head---查看文件开头部分的内容
-n 指定显示的具体行数。
1
2
3
4
5
6
7
|
[root@localhost ~]
# head -5 /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
[root@localhost ~]
#
|
说明:默认情况下,head显示前10行内容
tail---查看文件末尾部分的内容
1
2
3
4
5
6
7
|
[root@localhost ~]
# tail -5 /etc/passwd
nfsnobody:x:65534:65534:Anonymous NFS User:
/var/lib/nfs
:
/sbin/nologin
abrt:x:173:173::
/etc/abrt
:
/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:
/var/empty/sshd
:
/sbin/nologin
tcpdump:x:72:72::/:
/sbin/nologin
justin:x:500:500:justin_peng:
/home/justin
:
/bin/bash
[root@localhost ~]
#
|
说明:tail命令用法与head命令类似
创建文件(夹)命令
touch---改变档案的时间记录,档案不存在则创建一个空文件,通常用来创建一个文件
1
2
3
4
|
[root@localhost home]
# touch file1 file2
[root@localhost home]
# ls
file1 file2 justin lost+found t
[root@localhost home]
#
|
-a 改变档案的读取时间记录。
-m 改变档案的修改时间记录。
-c 假如目的档案不存在,不会建立新的档
1
2
3
4
5
6
7
|
[root@justin
touch
]
# touch file{1..5}
[root@justin
touch
]
# ls
file1 file2 file3 file4 file5
[root@justin
touch
]
# touch file{6...9}
[root@justin
touch
]
# ls
file1 file2 file3 file4 file5
file
{6...9}
[root@justin
touch
]
#
|
说明:在实际使用中经常用于创建新的测试文件。使用文件名作为参数,可以同时创建多个文件,切中间只能是两个点号。当目标文件已经存在时,将更新该文件的时间标记,否则将创建指定名称的空文件。
mkdir---Make Directory---创建新的目录
-p 确保目录名称存在,不存在的就建一个。
1
2
3
4
5
6
7
|
[root@localhost home]
# ls
justin lost+found t
[root@localhost home]
# mkdir dir1
[root@localhost home]
# mkdir dir2/dir
mkdir
: 无法创建目录
"dir2/dir"
: 没有那个文件或目录
[root@localhost home]
# mkdir -p dir2/dir
[root@localhost home]
#
|
同时创建多级目录
1
2
3
4
5
6
7
8
|
[root@localhost home]
# ls
justin lost+found t
[root@localhost home]
# mkdir -p {dir1,dir2/{dir3,dir4}}
[root@localhost home]
# ls
dir1 dir2 justin lost+found t
[root@localhost home]
# ls dir2
dir3 dir4
[root@localhost home]
#
|
删除文件(夹)命令
rmdir---删除空目录(若目录非空删除中会报错)
-p 当子目录被删除后也成为空目录的话,则顺便一并删除
1
2
3
4
5
6
7
8
9
10
|
[root@localhost home]
# mkdir -p {dir1,dir2/dir3}
[root@localhost home]
# ls
dir1 dir2 justin lost+found t
[root@localhost home]
# rmdir dir1
[root@localhost home]
# rmdir dir2
rmdir
: 删除
"dir2"
失败: 目录非空
[root@localhost home]
# rmdir -p dir2/dir3/
[root@localhost home]
# ls
justin lost+found t
[root@localhost home]
#
|
rm---删除档案或目录
文件的删除权限是由上级目录决定的,即使一个用户有该文件的删除权限,没有上次目录的写权限也是无法删除该文件
-i 删除前逐一询问确认。
-v 显示删除过程
-f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。
-r 将目录及以下档案也逐一删除。
1
2
3
4
5
6
|
[root@localhost home]
# mkdir -p dir1/dir2
[root@localhost home]
# rm -r dir1/
rm
:是否进入目录
"dir1"
? y
rm
:是否删除目录
"dir1/dir2"
?y
rm
:是否删除目录
"dir1"
?y
[root@localhost home]
#
|
Linux 删除除某个文件之外的所有文件
1
2
3
4
5
6
|
[root@APP
rm
]
# ls
sda SDa sdaa SDaa sdaaa sdaaaa SDaaaa sdaab sdaz
[root@APP
rm
]
# ls |grep -v SD|xargs rm -f
[root@APP
rm
]
# ls
SDa SDaa SDaaaa
[root@APP
rm
]
#
|
还有一种更为方便的方法,需要卡其BashShell的extglob选项,
1
2
3
4
5
6
7
8
|
[root@APP
rm
]
# touch sda SDa sdaa SDaa sdaaa sdaaaa SDaaaa sdaab sdaz
[root@APP
rm
]
# rm -f !(SD*)
-
bash
: !: event not found
[root@APP
rm
]
# shopt -s extglob
[root@APP
rm
]
# rm -rf !(SD)
[root@APP
rm
]
# ls
SDa SDaa SDaaaa
[root@APP
rm
]
#
|
如果出现-bash: !: event not found表示当前系统未开启,
列出所有选项:shopt -p
列出所有打开的选项:shopt -s
开启extglob命令:shopt -s extglob
列出所有关闭的选项:shopt -u
关闭extglob命令:shopt -u extglob
开启之后,以下5个模式匹配操作符将被识别:
?(pattern-list) - 所给模式匹配0次或1次;
*(pattern-list) - 所给模式匹配0次以上包括0次;
+(pattern-list) - 所给模式匹配1次以上包括1次;
@(pattern-list) - 所给模式仅仅匹配1次;
!(pattern-list) - 不匹配括号内的所给模式。 !():与@()相反