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字符:其它用户对文件的访问权限
  • 第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 解压

results matching ""

    No results matching ""