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 选项可接受不同的时间/日期格式。