【Ubuntu】Ubuntu常用文件操作命令

Ubuntu下修改目录权限需要先用 sudo 来获得管理员权限,格式如下:

sudo chmod 600 ××× (只有所有者有读和写的权限)

sudo chmod 644 ××× (所有者有读和写的权限,组用户只有读的权限)

sudo chmod 700 ××× (只有所有者有读和写以及执行的权限)

sudo chmod 666 ××× (每个人都有读和写的权限)

sudo chmod 777 ××× (每个人都有读和写以及执行的权限) 

其中×××指文件名(也可以是文件夹名,不过要在chmod后加-ld)。

解释一下,其实整个命令的形式是

sudo chmod -(代表类型)×××(所有者)×××(组用户)×××(其他用户)

三位数的每一位都表示一个用户类型的权限设置。取值是0~7,即二进制的[000]~[111]。

这个三位的二进制数的每一位分别表示读、写、执行权限。

如000表示三项权限均无,而100表示只读。这样,我们就有了下面的对应:

0 [000] 无任何权限

4 [100] 只读权限

6 [110] 读写权限

7 [111] 读写执行权限

sudo chmod 777 -R /var/www/

 

掌握文件系统导航命令,用户便能够在树形目录中准确定位、自由进出。接下来,便可以开始“生产”文件了。

dir ls cd rm

1.touch

touch命令用于创建一个新文件。touch命令一般语法格式为:

touch  [ filename ]

其中filename是文件名。如果这个文件是已有文件,就改变这个文件的最后修改日期。

wdl@UbuntuFisher:~$ touch  Textfile.txt      //创建一个空白文件

wdl@UbuntuFisher:~$ ls  –l  Textfile.txt     //查看这个文件,创建日期为“2007-09-20 01:07”

-rw-r--r--  1  wdl  wdl  0  2007-09-20 01:07  Textfile.txt

wdl@UbuntuFisher:~$ touch  Textfile.txt      //修改这个文件的时间戳

wdl@UbuntuFisher:~$ ls  –l  Textfile.txt         //再次查看这个文件,创建日期为“2007-09-20 01:47”

-rw-r--r--  1  wdl  wdl  0  2007-09-20 01:47  Textfile.txt

 

2.file

在Linux文件系统中,文件扩展名不总是被使用或被一致地使用。那么,如果一个文件没有扩展名,或者文件与其扩展名不符时怎么办呢?file命令的功能用于判定一个文件的类型。file命令一般语法格式为:

file  [ filename ]

其中filename是文件名。命令的输出将显示该文件是二进制文件、文本文件、目录文件、设备文件,还是Linux中其他类型的文件。

wdl@UbuntuFisher:~$ file  /usr/games/banner

banner: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.0, dynamically linked (uses shared libs), stripped

wdl@UbuntuFisher:~$ file  Textfile.txt

Textfile.txt: UTF-8 Unicode text

以上使用file命令对两个文件/usr/games/banner和Textfile.txt的进行了文件类型判断。第一个文件为二进制可执行文件,第二个文件为UTF-8格式的文本文件。

 

3.cp

cp命令用于将给出的文件或目录复制到另一个文件或目录中。cp命令一般语法格式为:

cp  [ -a | -d | -f | -i | -p | -r | -l | -v ]  [ SOURCE ]  [ DEST ]

cp命令的选项很多

-a

该选项通常在复制目录时使用,保留链接、文件属性,并递归地复制目录,其作用等于dpr选项的组合

-d

复制时保留链接

-f

非交互模式的复制操作。覆盖已经存在的目标文件而不提示

-i

交互模式的复制操作,与-f选项相反。在覆盖目标文件之前将给出提示,要求用户确认,回答“Y”表示目标文件将被覆盖

-p

除复制源文件内容外,还将其修改时间和访问权限也同时复制

-r

若源文件是一个目录,cp命令将递归地复制该目录下的所有子目录和文件

-l

不做复制,只是链接文件

-v

显示详细的复制过程

cp 命令的参数:SOURCE表示源文件,DEST表示目标文件。无论是源文件还是目标文件,既可以是普通文件,也可以是目录。cp命令支持将多个源文件复制 到目标目录中。当然,复制操作需要具有必要的权限,通常至少要对源文件具有读取权限,对目标目录或文件具有写入权限。

wdl@UbuntuFisher:~$ cp      File_1.txt  File_2.txt

wdl@UbuntuFisher:~$ cp  -i  File_1.txt  File_2.txt

cp:是否覆盖'File_2.txt'? Y

以 上命令完成了将文件File_1.txt的内容复制到File_2.txt中。在使用cp命令第一次复制File_1.txt时,创建了文件 File_2.txt。再次使用cp命令,带有“-i”选项,系统提示是否需要覆盖,回答“Y”将删除旧的File_2.txt文件,重新创建一个 File_2.txt文件(使用ls命令查看File_2.txt的创建时间就可以知道是否是新文件)。

wdl@UbuntuFisher:~$ cp  –r  dir1/  dir2/

以上命令完成了整个目录的复制,必须使用“-r”选项,它代表着将dir1目录中的文件、子目录及其文件,一并复制到dir2目录中。

 

4.mv

mv命令用于将文件/目录改名,或将文件/目录由源目录移动到目标目录中。mv命令一般语法格式为:

mv  [ -i | -f | -v ]  [ SOURCE ]  [ DEST ]

mv命令的选项很多

-f

非交互模式的移动操作。覆盖已经存在的目标文件而不提示

-i

交互模式的移动操作。在覆盖目标文件之前将给出提示,要求用户确认,回答“Y”表示目标文件将被覆盖

-v

显示详细的移动过程

mv命令的参数:SOURCE表示源文件,DEST表示目标文件。无论是源文件还是目标文件,既可以是普通文件,也可以是目录。

wdl@UbuntuFisher:~$ mv      File_1.txt  dir1/myFile.txt

wdl@UbuntuFisher:~$ mv  -i  File_2.txt  dir1/myFile.txt

mv:是否覆盖'dir1/myFile_1.txt'? Y

以 上命令完成了将文件File_1.txt移动到dir1目录下,并且文件名改为myFile.txt。首先使用mv命令将File_1.txt移动到 dir1目录下。然后使用mv命令将File_2.txt移动到dir1下,mv命令带有“-i”选项,系统会提示“是否需要覆盖?”,回答“Y”将删除 旧的myFile.txt文件,重新创建一个myFile.txt文件。

wdl@UbuntuFisher:~$ mv  –v  dir1  dir2

'mywork' -> 'yourwork'

以上命令完成目录的改名,使用“-v”选项,系统会给出相应提示。

mkdir目录名创建一个目录

 

5.rm

rm命令用于在用户授权情况下,完成一个或多个文件/目录删除。rm命令可以将目录下的子目录、文件全部删除。对于链接文件,只是删除链接,原有文件保持不变。rm命令一般语法格式为:

rm  [ -i | -f | -r | -v ]  [ DEST ]

rm命令的选项很多

-f

非交互模式的删除操作,忽略不存在的文件

-i

交互模式的删除操作。在删除目标文件之前将给出提示,要求用户确认,回答“y”表示目标文件将被删除

-r

若源文件是一个目录,rm命令将递归地删除该目录下的所有子目录和文件

-v

显示详细的删除过程

rm命令的参数:DEST表示目标文件,既可以是普通文件,也可以是目录。rm命令支持多文件/目录删除。删除操作需要具有必要的权限,通常至少要对目标文件/目录具有写入权限。

wdl@UbuntuFisher:~$ rm      File_1.txt  File_2.txt

wdl@UbuntuFisher:~$ rm  -i  File_3.txt  File_4.txt

rm:是否删除  一般文件 File_3.txt?  Y

rm:是否删除  一般文件 File_4.txt?  Y

以上两条命令删除了4个文件。第一个rm命令强制删除两个文件,而没有任何提示;第二个rm命令以交互模式删除两个文件。

假设当前目录中的dir1目录结构为:

dir1

dir1/dir2

dir1/dir2/dir3

以下命令完成删除目录dir1,从执行结果可以看出递归删除的过程。

wdl@UbuntuFisher:~$ rm  -ri  dir1

rm:是否进入目录  'dir1'? Y

rm:是否进入目录  'dir1/dir2'? Y

rm:是否删除 目录 'dir1/dir2/dir3'? Y

rm:是否删除 目录 'dir1/dir2'? Y

rm:是否删除 目录 'dir1'? Y

需 要提醒的是,由于rm命令执行物理删除,一旦一个文件被删除,就不能恢复。如果以超级用户身份登录的话,用户使用rm命令可以删除整个文件系统。即使是普 通用户,执行“rm –if *”(使用通配符“*”),也可能会把当前目录中的所有内容删除。因此使用rm命令要非常小心。

 

小结:

mkdir 目录名         => 创建一个目录

rmdir 空目录名      => 删除一个空目录

rm 文件名 文件名   => 删除一个文件或多个文件

rm –rf 非空目录名 => 删除一个非空目录下的一切

touch 文件名        => 创建一个空文件

 

重命名文件(夹) / 移动文件(夹)到指定文件夹

执行格式: mv source destination

Example:

mv file1 file2    => 将文件 file1,更改文件名为 file2。

mv file1 dir1    => 将文件 file1,移到目录 dir1下,文件名仍为 file1。

mv dir1 dir2    => 若目录 dir2 存在,则将目录 dir1,及其所有文件和子目录,移到目录 dir2 下,新目录名称为 dir1。若目录 dir2 不存在,则将dir1,及其所有文件和子目录,更改为目录 dir2。

 

rename命令是专用于文件重命名的,而且根据其后的例子可以看出,rename除了给单个文件重命名,还可以批量文件重命名。同时,值得注意一点的是,rename命令是带3个参数而不是很多人认为的2个参数。

上面的例子中给出了两种文件批量重命名的用法,而实际上,rename结合通配符使用,它的功能比上面的例子所显示的更强大。基本的通配符有以下几个:

?    可替代单个字符

*    可替代多个字符

[charset]    可替代charset集中的任意单个字符

下面以例子加以说明:

如文件夹中有这些文件foo1, ..., foo9, foo10, ..., foo278,如果使用

rename foo foo0 foo?

则它只会把foo1到foo9的文件重命名为foo01到foo09,因为?通配符只能替代单个字符,所以被重命名的文件只是有4个字符长度名称的文件,文件名中的foo被替换为foo0。

再继续使用

rename foo foo0 foo??

则文件夹中的foo01到foo99的所有文件都被重命名为foo001到foo099,而foo100及其以后的文件名都不变,因为通配符?的使用,所以只重命名5个字符长度名称的文件,文件名中的foo被替换为foo0。

如果再继续使用

rename foo foo0 foo*

则foo001到foo278的所有文件都被重命名为foo0001到foo0278,因为通配符*可替代多个字符,所以,所有以foo开头的文件都被重命名了,文件名中的foo被替换为foo0。

我们再来看通配符[charset]的用法,还是继续在上面所说的文件夹中,执行如下命令

rename foo0 foo foo0[2]*

则从foo0200到foo0278的所有文件都被重命名为foo200到foo278,文件名中的foo0被替换为foo。

在使用中,三种通配符可以一起结合使用,关于具体的其它用法就只有自己不断的摸索了。

 

强制清空回收站

ubuntu8.04以前的版本

sudo rm -fr $HOME/.Trash/*

ubuntu 8.04

sudo rm -fr $HOME/.local/share/Trash/files/*


下面是touch命令用法

-a                     只更改访问时间

-c, --no-create        不创建任何文件

-d, --date=字符串        使用<字符串>表示时间而非当前时间

-f                     (忽略)

-m                     只更改修改时间

-r, --reference=文件   使用指定<文件>的时间属性而非当前时间

-t STAMP               使用 [[CC]YY]MMDDhhmm[.ss] 格式的时间而非当前时间

--time=WORD            使用 WORD 指定的时间:access、atime、use 都等于 -a

                           选项的效果,而 modify、mtime 等于 -m 选项的效果

--help     显示此帮助信息并离开

--version 显示版本信息并离开

请注意,-d 和 -t 选项可接受不同的时间/日期格式。

posted @ 2012-12-16 14:40  牧之丨  阅读(2343)  评论(0编辑  收藏  举报