Linux----3-----文件相关操作

来源:互联网 发布:上海华腾软件系统 编辑:程序博客网 时间:2024/06/08 13:51
 

Linux----3-----文件相关操作

----------------------------------------------------------------------------------------------------------------------

一:Linux文件系统

1linux的文件和目录都被组织成一个根节点开始的倒置树状结构.

说明:①文件系统的最顶层是由根目录开始的,系统使用" /"表示根目录。其中目录就是文件夹,目录中即可以存放文件,也可以存放其他子目录。文件中存储的是真正的信息。

②目录名和文件名是区分大小字符的,完整的文件名是由一连串的目录名或者文件路径组成的,其中每一个目录由/来分割。

Linux中有两个特殊的目录:一个是用户所在的工作目录,也叫当前目录,可以用" ."表示;另外一个是当前工作目录的上一层目录,也叫父目录,可以用".."表示。

2Linux系统中的一些重要目录

Linux系统采用文件系统层次标准(FHS)的文件结构,该标准一共定义了两层规范:第一层FHS只定义了根目录之下各个主要目录应该存放的文件(或者子目录)。第二层定义针对/user/var两个目录的子目录定义(如在user中存放的share目录应该共享)

说明:

Linux中共有三个bin目录,bin目录存放的是常用的可执行文件即命令和程序(如sudate);一个为根目录/bin、一个为/usr/bin两个bin中存放的数据大部分相同。第三个usr/local/bin默认是空的。

sbin目录用于存放系统的可执行文件,同样有三个:/sbin/usr/sbin/usr/sbin/local/sbin(默认这个也是空的);

Linux一个重要的用户使用最多目录:家目录。作用存放用户自己的文件或目录,每当用户登录linux系统时就会自动进入家目录。其中超级用户root的目录是/root。普通用户的家目录被存放在家目录/home至下,并以用于用户名为最后的子目录。如/home/cat.

④挂载点目录:操作系统检测到可移除式硬件被加入到文件系统时,就会产生一个挂载点,通常会被挂载到/media或者mnt目录。

根目录下的目录说明:

/bin    基础系统所需要的那些命令位于此目录,也是最小系统所需要的命令;比如 lscpmkdir等命令;功能和/usr/bin类似,这个目录中的文件都是可执行的,普通用户都可            以使用的命令。做为基础系统所需要的最基础的命令就是放在这里。

/boot  Linux的内核及引导系统程序所需要的文件,比如 vmlinuz initrd.img 文件都位于这个目录中。在一般情况下,GRUBLILO系统引导管理器也位于这个目录;

/dev    设备文件存储目录,比如声卡、磁盘... ...

/etc     系统配置文件的所在地,一些服务器的配置文件也在这里;比如用户帐号及密码配置文件;

/home  普通用户家目录默认存放目录;

/lib       库文件存放目录

/lost+found ext2ext3文件系统中,当系统意外崩溃或机器意外关机,而产生一些文件碎片放在这里。当系统启动的过程中fsck工具会检查这里,并修复已经损坏的文件系 统。 有时系统发生问题,有很多的文件被移到这个目录中,可能会用手工的方式来修复,或移到文件到原来的位置上。

/media 即插即用型存储设备的挂载点自动在这个目录下创建,比如USB盘系统自动挂载后,会在这个目录下产生一个目录 ;CDROM/DVD自动挂载后,也会在这个目录中创建一           个目录,类似cdrom 的目录。这个只有在最新的发行套件上才有,比如Fedora Core 4.0 5.0 等。可以参看/etc/fstab的定义;

/mnt   这个目录一般是用于存放挂载储存设备的挂载目录的,比如有cdrom 等目录。可以参看/etc/fstab的定义。有时我们可以把让系统开机自动挂载文件系统,把挂载点放在这           里也是可以的。主要看/etc/fstab中怎么定义了;比如光驱可以挂载到/mnt/cdrom 

/opt    表示的是可选择的意思,有些软件包也会被安装在这里,也就是自定义软件包,比如在Fedora Core 5.0中,OpenOffice就是安装在这里。有些我们自己编译的软件包,就           可以安装在这个目录中;通过源码包安装的软件,可以通过 ./configure --prefix=/opt/目录 。

/proc  操作系统运行时,进程(正在运行中的程序)信息及内核信息(比如cpu、硬盘分区、内存信息等)存放在这里。/proc目录伪装的文件系统proc的挂载目录,proc并不是真           正的文件系统,它的定义可以参见 /etc/fstab 

/root   Linux超级权限用户root的家目录;

/sbin   大多是涉及系统管理的命令的存放,是超级权限用户root的可执行命令存放地,普通用户无权限执行这个目录下的命令,这个目录和/usr/sbin;/usr/X11R6/sbin                       /usr/local/sbin目录是相似的; 我们记住就行了,凡是目录sbin中包含的都是root权限才能执行的。

/tmp   临时文件目录,有时用户运行程序的时候,会产生临时文件。/tmp就用来存放临时文件的。/var/tmp目录和这个目录相似。

/usr    这个是系统存放程序的目录,比如命令、帮助文件等。这个目录下有很多的文件和目录。当我们安装一个Linux发行版官方提供的软件包时,大多安装在这里。如果有涉及服           务器配置文件的,会把配置文件安装在/etc目录中。/usr目录下包括涉及字体目录/usr/share/fonts ,帮助目录 /usr/share/man/usr/share/doc,普通用户可执行文           件目录/usr/bin /usr/local/bin /usr/X11R6/bin ,超级权限用户root的可执行命令存放目录,比如 /usr/sbin /usr/X11R6/sbin /usr/local/sbin 等;还有程             序的头文件存放目录/usr/include

/var    这个目录的内容是经常变动的,看名字就知道,我们可以理解为vary的缩写,/var下有/var/log 这是用来存放系统日志的目录。/var/www目录是定义Apache服务器站点存           放目录;/var/lib 用来存放一些库文件,比如MySQL的,以及MySQL数据库的的存放地;

3Linux文件相对路径的说明

(1)除字符“/”外,所有字符都能使用,如果一个文件名包含了空格,那么使用时候要用引号将文件名括起来。

(2)目录名和文件名不能超过255个字符

(3)目录名和文件名区分大小写的。

(4)文件扩展名对Linux系统没有特殊的含义

(5)一个绝对路径必须以正斜线/开始。相对路径不是以正斜线/开始的,它只能包含从当前目录进行的一个遍历。

二:文件系统的相关操作指令

1pwd (print working directory)打印工作目录

[dog@localhost dog]$ pwd

/home/dog

[root@localhost root]# pwd

/root

说明:pwd是 print working directory 打印工作目录的缩写,显示结构就是用户的家目录。

2cd change directory)切换目录

(1)使用绝对路径

[dog@localhost dog]$ cd /home

[dog@localhost home]$ pwd

/home

[dog@localhost home]$ cd /home/dog

[dog@localhost dog]$ pwd

/home/dog

(2)使用".."进入上一级目录

[dog@localhost dog]$ cd  ..

[dog@localhost home]$ pwd

/home

(3)使用相对路径

[dog@localhost home]$ cd dog

[dog@localhost dog]$ pwd

/home/dog

(4)使用“~”或空白切换到用户的家目录

[dog@localhost /]$ cd  tmp

[dog@localhost tmp]$ cd vmware-tools-distrib

[dog@localhost vmware-tools-distrib]$ cd ~ /dog

[dog@localhost dog]$ pwd

/home/dog

说明:使用cd~ 可以快速的从其他文件路径快速回到家目录,使用cd就不行了.这就是cd ~ cd之间的小差别。所谓家目录对于普通用户就是/home/用户名;对于root用户就是 /root.

(5)使用 "-"切换到用户之前的工作目录  

[dog@localhost dog]$ cd -

/tmp/vmware-tools-distrib

[dog@localhost vmware-tools-distrib]$

说明:可以看出使用这个命令能够从dog 目录直接到了上次的目录

(6)使用系统变量$HOME切换到了用户的家目录

[dog@localhost vmware-tools-distrib]$ cd $HOME

[dog@localhost dog]$ pwd

/home/dog

说明:可以看出这个命令也能从其他目录直接到当前的目录的跳转。

说明:~ $HOME不仅可以在CD中使用,也可以在其他指令中使用,两个可以快速的到家目录。

3ls命令列出目录中的相关内容

语法命令:ls [optiops][directories|Files]

说明:参数一可以有多个选项, 参数二也可以有多个文件或者目录。

(1)可以使用“.和 “..进行选择当前目录或者上一级目录

[dog@localhost dog]$ ls ..

cat  dog  lost+found

(2)可以使用 ls /命令来显示根目录中的内容(无论此时在哪个目录都能使用)

[dog@localhost dog]$ ls  /

bin   dev  home    lib         misc  opt   root  tftpboot  usr

boot  etc  initrd  lost+found  mnt   proc  sbin  tmp       var

说明:ls /此后可以跟上任意文件或者目录名,不管此时在何种路径

(3)通过 ls -F 指令可以显示文件的文件的类型。

①/: 表示目录

*:表示可执行文件

③什么都没有:纯文本文件或者ASCII文件

@:表示符号链接

(4)通过ls -a指令显示全部的文件包括隐藏文件

(5)通过ls -l指令显示文件的详细资料

(6)可以一次同时显示多个文件的内容 [dog@localhost dog]$ ls /home /bin

(7)可以通过ls -lh设置显示文件大小为十进制式

(8)如果只想了解目录本身的命令可用方法 ls -ldh 

(9)可以使用ls -lR参数可以递归列举出文件目录以及文件目录的子文件

[dog@localhost dog]$ ls -ldh /home

drwxr-xr-x    5 root     root         4.0K Nov 30 10:06 /home

4cp命令复制文件和目录

使用cp命令可以将一个或多个文件或目录从一个位置复制到另外一个位置,

命令格式如下:cp [-option(s)] source(s) target 

说明:options是命令的选项可选择以下几种

-i : 在覆盖之前给提示出信息

-r:递归复制,当复制一个目录时,复制该目录下所有的内容

-p:保留一些特有的属性,如时间戳

-f:若目标文件已经存在,系统不询问而是强加复制,即直接覆盖掉原有的文件。

注意:cp命令的拷贝的源文件可以有多个,而目的文件只能有一个

(1)在本录里复制文件到本目录

[root@localhost root]# cd /tmp

[root@localhost tmp]# ls -l

-rw-r--r--    1 root     root         5054 Dec  1 08:25 app100.sxw

[root@localhost tmp]# cp app100.sxw app101.sxw

[root@localhost tmp]# ls -l

-rw-r--r--    1 root     root         5054 Dec  1 08:25 app100.sxw

-rw-r--r--    1 root     root         5054 Dec  1 08:30 app101.sxw

说明:①在本录中复制,则必须先切换到待复制的目录中,才能复制成功。

②凡是提示cp: omitting directory `vmware-root'说明待复制的是一个目录,必须加上一个参数-r ,说明是递复制目录。

③如果需要复制的目录和文件与原来文件的属性时间戳一样则可以用 -p 参数。这样就可以了。

(2)将一个文件或者多个文件复制到指定的目录

[root@localhost tmp]# cp app100 app101 vmware-root

[root@localhost tmp]# cd vmware-root

[root@localhost vmware-root]# ls

app100  app101

由于 vmware-roottmp文件中,所以只写出相对的路径即可,然后再进入vmware-root目录可以看出已经复制成功。

(3)使用文件通配符*的方法将多个文件复制到指定文件

[root@localhost tmp]# cp -r app* vmware-root

[root@localhost tmp]# cd vmware-root

[root@localhost vmware-root]# ls

app100  app101

说明:使用app*表示要复制以app开头的所有文件。

5:使用mv指令移动文件

1)使用mv指令可以将一个文件或者多个文件从一个目录移动到另外一个目录中。

[root@localhost tmp]# mv app100 app101 /home/cat

[root@localhost root]# su - cat

 [cat@localhost cat]$  cd ~

[cat@localhost cat]$ ls

app100  app101

可以看出将 /tmp目录中的 app100 app101 目录移动到了 cat的家目录中

(2)使用mv指令改变一个文件的文件名

[cat@localhost home]$ mv cat/app100 cat/ad100

[cat@localhost home]$ cd cat

[cat@localhost cat]$ ls

ad100  app101

可以看出mv指令其实将cat目录中的app100修改为了ad100.

(3)也可以使用mv指令直接修改目录名

[cat@localhost cat]$ mv ad100 app100

[cat@localhost cat]$ ls

app100  app101

可以看出在目录cat下使用mv指令将ad100 修改为了app100

说明:使用mv不仅可以移动文件目录也可以移动目录中的子文件。

总结:(1)如果指定目标不存在,系统将源文件和目录名更改为目标文件或目录名

(2)如果目的已存在,并且是文件,系统将指定的源文件更名为目标文件的名称并覆盖内容。

3)如果目的已存在,并且是目录,系统把指定的源文件移动到这个目录中,并且文件名与源文件名相同。

6:使用mldir创建目录

指令格式: mkdir 目录名 

说明:目录名即可以是相对路径,也可以是绝对路径。

makdir -p :可以创建出指定路径中不存在的目录。

[cat@localhost tmp]$ mkdir ~/app103/ad1

mkdir: cannot create directory `/home/cat/app103/ad1': No such file or directory

[cat@localhost tmp]$ mkdir -p ~/app103/ad1

[cat@localhost cat]$ ls -lF app103

total 4

drwxrwxr-x    2 cat      cat          4096 Dec  1 10:19 ad1/

说明:可以看出原本其中没有app103目录加入了 -p指令后,就能够创建出没有目录的路径。

7:使用touch命令创建文件

指令格式: touch 文件名

说明:文件名即可以使用绝对路径名,也可以使用相对路径名,而且可以是多个文件,文件名之间用空格隔开。

[cat@localhost app101]$ touch ad001 ad002 ad003

[cat@localhost app101]$ ls -f

.  ..  ad001  ad002  ad003

total 0

-rw-rw-r--    1 cat      cat             0 Dec  1 10:56 ad001

-rw-rw-r--    1 cat      cat             0 Dec  1 10:56 ad002

-rw-rw-r--    1 cat      cat             0 Dec  1 10:56 ad003

[cat@localhost app101]$ touch ad003

[cat@localhost app101]$ ls -l

total 0

-rw-rw-r--    1 cat      cat             0 Dec  1 10:56 ad001

-rw-rw-r--    1 cat      cat             0 Dec  1 10:56 ad002

-rw-rw-r--    1 cat      cat             0 Dec  1 10:57 ad003

说明:(1)使用touch能够一次同时创建出多个文件

2)使用touch在创建同名文件时,touch会将文件和目录的时间戳改为当前目录和文件的时间戳。

8:使用rm命令删除文件

指令格式:rm [-option(s)] files|directories

说明:(1)可以有多个文件或者多个目录

(2)-option(s)为命令的选项:

-i:交互式 ②-r:递归式③-f:强制式

(1)同时删除多个文件:

[cat@localhost app101]$ rm ad001 ad002

[cat@localhost app101]$ ls

ad003

2)使用文件通配符*的方法将删除多个文件

[cat@localhost app101]$ ls

ad001  ad002  ad003

[cat@localhost app101]$ rm  -r  ad*

[cat@localhost app101]$ ls

[cat@localhost app101]$ ls -l

total 0

可以看出:通过ad *可以将所有的文件删除,注意这里通过-r递归的删除了目录中的每一个文件。

9:使用rmdir 或者rm -r删除目录

指令格式:rmdir 目录名

说明:(1)要删除目录必须返回该目录的父目录

(2)使用rmdir只能删除空目录,即要删除的目录中既不能包括目录,也不能包括文件。

(3)使用rm -r则可以递归的方式删除目录。

[cat@localhost app101]$ ls

ad01  ad02  ad03

[cat@localhost app101]$ cd ..

[cat@localhost tmp]$ rmdir app101

rmdir: `app101': Directory not empty

原创粉丝点击