4.4 文件管理
4.4.1 ls:文件名列表
- 基本功能
- 不给出实参时,列出当前目录下所有文件和目录
- 实参为文件时,列出文件项
- 实参为目录时,列出目录下的所有文件项
- 在同一命令行中可以指定多个实参
【注意!】 ls :列出所有的文件和目录
应该是ls -l 和 ls -l /
前一个是显示当前目录内容
后一个是显示根目录内容
- ls命令有几十个选项
- 控制列表格式,有选择的为每个项目列出某些属性
- 选项-F (Flag)
- 若列出的是目录,就在名字后面缀以斜线 /
- 若列出的是可执行文件,就在名字后面缀以星号 *
- 若列出的是符号连接文件,就在名字后面缀以符号@
- 若列出的是普通文件,则名字面后无任何标记
- Linux选项-h(human-readable)
- 以便于阅读的方式打印数值 (例如:1K 234M 2G)
ls选项-l: 长格式列表(1)
- 例:ls -l arg
- -rwxr-x--x l liang stud 519 Jul 5 15:02 arg
- 第1列:文件属性
- 第1字符为文件类型
- 普通文件 b 块设备文件(Block)
d 目录文件(Dir) c 字符设备文件(Char)
l 符号连接文件(Link) p 命名管道文件(Pipe)
- 文件的访问权限(rwx读权限,写权限,可执行权限)
- 2-4字符: 文件所有者对文件的访问权限
- 5-7字符: 同组用户对文件的访问权限
- 8-10字符:其它用户对文件的访问权限
- 文件的访问权限(rwx读权限,写权限,可执行权限)
- 第2列:文件link数,涉及到此文件的目录项数
- 第3列,第4列:文件主的名字和组名
- 第5列
- 普通磁盘文件:列出文件大小(字节数)
- 目录:列出目录表大小,不是目录下文件长度和
- 符号连接文件:列出符号连接文件自身的长度
- 字符设备和块设备文件:列出主设备号和次设备号
- 管道文件:列出管道内的数据长度
- 第6列:文件最后一次被修改的日期和时间
- 第7列:文件名
- 对于符号连接文件,附带列出符号连接文件的内容
【其他格式】
- -a (all)列出那些文件名首字符为圆点的文件(默认情况下这些文件不列出)。例如:
- ls ~
- ls –a ~
- -s (size)列出文件占用的磁盘空间
- -i (i-node)列出文件的i节点号
-d (directory)当ls的参数是目录时,不象默认的情况那样列出目录下的文件,而是列出目录自身的信息
- ls与ls *的区别 1.目标目录中所有的文件。2.当前目录+文件
- ls –l /etc与ls –ld /etc的区别
以长格式的形式查看/etc目录下所有文件
4.4.2拷贝文件
功能: 复制文件或目录说明: cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中。若同时指定多个文件或目录,而最后的目的地并非一个已存在的目录,则会出现错误信息
- 命令的两种格式和功能
- cp file1 file2
- cp file1 file2 ... filen dir
其中file1,……,filen为文件名,dir为已有目录名
- 例:
- cp a.c a.bak
- cp a.c b.c backup.dir
- 例: cp *.c bak.d
- 与DOS命令COPY *.C BAK.D执行结果相同,过程不同
- UNIX中实际执行cp a1.c a2.c b1.c b2.c bak.d
- 例2: cp bak.d/p*.c 命令
- 实际执行cp bak.d/pl.c bak.d/p2.c
将 bak.d 目录下的p1.c覆盖 p2.c
- 结果文件p1.c将覆盖掉p2.c
- 与DOS的COPY BAK.D/P*.C执行结果不同
- 将这两个文件拷贝到当前目录下的正确用法:
- cp bak.d/p*.c .
注意当前目录就是一个点!!!!
4.4.3 mv: 移动文件
- 格式1
- mv file1 file2
- mv file1 file2 ... filen dir
- mv dir1 dir2
- 功能
- 使用mv命令可以将文件和目录改名
- 可以将文件和子目录从一个目录移动到另一个目录
4.4.4 rm命令格式
- rm file1 file2 ... filen
- 例
rm core a.out
rm .o .tmp
rm*.bak
- 选项
- -r 递归地(Recursive)删除实参表中的目录,也就是删除一整棵目录树。
- -i 每删除一个文件前需要操作员确认(Inform)
- -f 强迫删除(Force)。只读文件也被删除并且无提示
- 其它问题
- 正在运行的可执行程序文件不能被删除
rm是常用的命令,该命令的功能为删除一个目录中的一个或多个文件或目录,它也可以将某个目录及其下的所有文件及子目录均删除。对于链接文件,只是删除了链接,原有文件均保持不变。
rm是一个危险的命令,使用的时候要特别当心,尤其对于新手,否则整个系统就会毁在这个命令(比如在/(根目录)下执行rm * -rf)。所以,我们在执行rm之前最好先确认一下在哪个目录,到底要删除什么东西,操作时保持高度清醒的头脑。
1.命令格式:
rm [选项] 文件…
2.命令功能:
删除一个目录中的一个或多个文件或目录,如果没有使用- r选项,则rm不会删除目录。如果使用 rm 来删除文件,通常仍可以将该文件恢复原状。
3.命令参数:
-f, --force 忽略不存在的文件,从不给出提示。
-i, --interactive 进行交互式删除
-r, -R, --recursive 指示rm将参数中列出的全部目录和子目录均递归地删除。
-v, --verbose 详细显示进行的步骤
--help 显示此帮助信息并退出
--version 输出版本信息并退出
4.命令实例:
实例一:删除文件file,系统会先询问是否删除。
命令:
rm 文件名
输出:
[root@localhost test1]# ll
总计 4
-rw-r--r-- 1 root root 56 10-26 14:31 log.log
root@localhost test1]# rm log.log
rm:是否删除 一般文件 “log.log”? y
root@localhost test1]# ll
总计 0[root@localhost test1]#
说明:
输入rm log.log命令后,系统会询问是否删除,输入y后就会删除文件,不想删除则数据n。
实例二:强行删除file,系统不再提示。
命令:
rm -f log1.log
输出:
[root@localhost test1]# ll
总计 4
-rw-r--r-- 1 root root 23 10-26 14:40 log1.log
[root@localhost test1]# rm -f log1.log
[root@localhost test1]# ll
总计 0[root@localhost test1]#
实例三:删除任何.log文件;删除前逐一询问确认
命令:
rm -i *.log
输出:
[root@localhost test1]# ll
总计 8
-rw-r--r-- 1 root root 11 10-26 14:45 log1.log
-rw-r--r-- 1 root root 24 10-26 14:45 log2.log
[root@localhost test1]# rm -i *.log
rm:是否删除 一般文件 “log1.log”? y
rm:是否删除 一般文件 “log2.log”? y
[root@localhost test1]# ll
总计 0[root@localhost test1]#
实例四:将 test1子目录及子目录中所有档案删除
命令:
rm -r test1
输出:
[root@localhost test]# ll
总计 24drwxr-xr-x 7 root root 4096 10-25 18:07 scf
drwxr-xr-x 2 root root 4096 10-26 14:51 test1
drwxr-xr-x 3 root root 4096 10-25 17:44 test2
drwxrwxrwx 2 root root 4096 10-25 17:46 test3
drwxr-xr-x 2 root root 4096 10-25 17:56 test4
drwxr-xr-x 3 root root 4096 10-25 17:56 test5
[root@localhost test]# rm -r test1
rm:是否进入目录 “test1”? y
rm:是否删除 一般文件 “test1/log3.log”? y
rm:是否删除 目录 “test1”? y
[root@localhost test]# ll
总计 20drwxr-xr-x 7 root root 4096 10-25 18:07 scf
drwxr-xr-x 3 root root 4096 10-25 17:44 test2
drwxrwxrwx 2 root root 4096 10-25 17:46 test3
drwxr-xr-x 2 root root 4096 10-25 17:56 test4
drwxr-xr-x 3 root root 4096 10-25 17:56 test5
[root@localhost test]#
实例五:rm -rf test2命令会将 test2 子目录及子目录中所有档案删除,并且不用一一确认
命令:
rm -rf test2
输出:
[root@localhost test]# rm -rf test2
[root@localhost test]# ll
总计 16drwxr-xr-x 7 root root 4096 10-25 18:07 scf
drwxrwxrwx 2 root root 4096 10-25 17:46 test3
drwxr-xr-x 2 root root 4096 10-25 17:56 test4
drwxr-xr-x 3 root root 4096 10-25 17:56 test5
[root@localhost test]#
实例六:删除以 -f 开头的文件
命令:
rm -- -f
输出:
[root@localhost test]# touch -- -f
[root@localhost test]# ls -- -f
-f[root@localhost test]# rm -- -f
rm:是否删除 一般空文件 “-f”? y
[root@localhost test]# ls -- -f
ls: -f: 没有那个文件或目录
[root@localhost test]#
也可以使用下面的操作步骤:
[root@localhost test]# touch ./-f
[root@localhost test]# ls ./-f
./-f[root@localhost test]# rm ./-f
rm:是否删除 一般空文件 “./-f”? y
[root@localhost test]#
实例七:自定义回收站功能
命令:
myrm(){ D=/tmp/$(date +%Y%m%d%H%M%S); mkdir -p $D; mv "$@" $D && echo "moved to $D ok"; }
输出:
[root@localhost test]# myrm(){ D=/tmp/$(date +%Y%m%d%H%M%S); mkdir -p $D; mv "$@" $D && echo "moved to $D ok"; }
[root@localhost test]# alias rm='myrm'
[root@localhost test]# touch 1.log 2.log 3.log
[root@localhost test]# ll
总计 16
-rw-r--r-- 1 root root 0 10-26 15:08 1.log
-rw-r--r-- 1 root root 0 10-26 15:08 2.log
-rw-r--r-- 1 root root 0 10-26 15:08 3.log
drwxr-xr-x 7 root root 4096 10-25 18:07 scf
drwxrwxrwx 2 root root 4096 10-25 17:46 test3
drwxr-xr-x 2 root root 4096 10-25 17:56 test4
drwxr-xr-x 3 root root 4096 10-25 17:56 test5
[root@localhost test]# rm [123].log
moved to /tmp/20121026150901 ok
[root@localhost test]# ll
总计 16drwxr-xr-x 7 root root 4096 10-25 18:07 scf
drwxrwxrwx 2 root root 4096 10-25 17:46 test3
drwxr-xr-x 2 root root 4096 10-25 17:56 test4
drwxr-xr-x 3 root root 4096 10-25 17:56 test5
[root@localhost test]# ls /tmp/20121026150901/
1.log 2.log 3.log
[root@localhost test]#
说明:
上面的操作过程模拟了回收站的效果,即删除文件的时候只是把文件放到一个临时目录中,这样在需要的时候还可以恢复过来。
参考资料:
[http://codingstandards.iteye.com/blog/983531](http://codingstandards.iteye.com/blog/983531)
4.4.5 df 查看系统空闲空间
linux中df命令的功能是用来检查linux服务器的文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。
1.命令格式:
df [选项] [文件]
2.命令功能:
显示指定磁盘文件的可用空间。如果没有文件名被指定,则所有当前被挂载的文件系统的可用空间将被显示。默认情况下,磁盘空间将以 1KB 为单位进行显示,除非环境变量 POSIXLY_CORRECT 被指定,那样将以512字节为单位进行显示
3.命令参数:
必要参数:
-a 全部文件系统列表
-h 方便阅读方式显示
-H 等于“-h”,但是计算式,1K=1000,而不是1K=1024
-i 显示inode信息
-k 区块为1024字节
-l 只显示本地文件系统
-m 区块为1048576字节
--no-sync 忽略 sync 命令
-P 输出格式为POSIX
--sync 在取得磁盘信息前,先执行sync命令
-T 文件系统类型
选择参数:
--block-size=<区块大小> 指定区块大小
-t<文件系统类型> 只显示选定文件系统的磁盘信息
-x<文件系统类型> 不显示选定文件系统的磁盘信息
--help 显示帮助信息
--version 显示版本信息
4.4.5 tar 解压文件
tar
-c: 建立压缩档案-x:解压-t:查看内容-r:向压缩归档文件末尾追加文件-u:更新原压缩包中的文件
这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。下面的参数是根据需要在压缩或解压档案时可选的。-z:有gzip属性的-j:有bz2属性的-Z:有compress属性的-v:显示所有过程-O:将文件解开到标准输出
下面的参数-f是必须的
-f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名。
tar -cf all.tar *.jpg这条命令是将所有.jpg的文件打成一个名为all.tar的包。-c是表示产生新的包,-f指定包的文件名。
tar -rf all.tar *.gif这条命令是将所有.gif的文件增加到all.tar的包里面去。-r是表示增加文件的意思。# tar -uf all.tar logo.gif这条命令是更新原来tar包all.tar中logo.gif文件,-u是表示更新文件的意思。# tar -tf all.tar这条命令是列出all.tar包中所有文件,-t是列出文件的意思# tar -xf all.tar这条命令是解出all.tar包中所有文件,-t是解开的意思
压缩
tar -cvf jpg.tar *.jpg //将目录里所有jpg文件打包成tar.jpg
tar -czf jpg.tar.gz *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用gzip压缩,生成一个gzip压缩过的包,命名为jpg.tar.gz
tar -cjf jpg.tar.bz2 *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用bzip2压缩,生成一个bzip2压缩过的包,命名为jpg.tar.bz2
tar -cZf jpg.tar.Z *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用compress压缩,生成一个umcompress压缩过的包,命名为jpg.tar.Z
rar a jpg.rar *.jpg //rar格式的压缩,需要先下载rar for linux
zip jpg.zip *.jpg //zip格式的压缩,需要先下载zip for linux
解压
tar -xvf file.tar //解压 tar包
tar -xzvf file.tar.gz //解压tar.gz
tar -xjvf file.tar.bz2 //解压 tar.bz2
tar -xZvf file.tar.Z //解压tar.Z
unrar e file.rar //解压rar
unzip file.zip //解压zip
总结
1、*.tar 用 tar -xvf 解压
2、*.gz 用 gzip -d或者gunzip 解压
3、.tar.gz和.tgz 用 tar -xzf 解压
4、*.bz2 用 bzip2 -d或者用bunzip2 解压
5、*.tar.bz2用tar -xjf 解压
6、*.Z 用 uncompress 解压
7、*.tar.Z 用tar -xZf 解压
8、*.rar 用 unrar e解压
9、*.zip 用 unzip 解压