linux学习笔记——文件和目录管理
时间:2009-02-28 来源:bobo3406
1、特殊目录
1) .:当前目录
2) ..:上一层目录
3) -:前一个工作目录
4) ~:当前用户家目录
5) ~liangcb:名称为liangcb的用户的家目录
注意:根目录/也有上一层目录..,它的上一层目录就是它本身。
pwd(显示当前路径)
该命令有-L和-P两个参数,主要是针对连接文件时有区别,当一个文件时连接文件时,如果使用-L参数,显示的就是该连接文件所在的目录,但如果使用-P参数,显示的则是连接所指向的目标文件所在的目录。例如:
cd /var/mail
pwd
/var/mail
pwd -P
/var/spool/mail
其中:/var/mail是连接文件,链接到/var/spool/mail。如果不带参数选项,默认的是-L。
mkdir(创建新目录)
该命令有两个参数-m和-p
-m:创建目录的同时设置目录的权限,例如:
mkdir -m 711 test1
-p:使用该参数可以递归地创建目录,例如:
mkdir -p test1/test2/test3/test4
执行上述命令,就会递归地创建test1~4这4个目录,但在默认的条件下,这是不允许的。
rmdir(删除“空”的目录)
与mkdir类似,该命令也有一个-p参数,使用该参数,在删除当前空目录的同时,其上层的空目录也会一并删除,例如:
rmdir -p test1/test2/test3/test4:如果4个目录都是空,则删除,否则一个不能
rmdir test1/test2/test3/test4: 如果test4为空,则删除(此时只能删除test4)。
注意:rmdir命令只能删除空的目录,如果目录非空,应该使用rm –rf删除。
PATH环境变量
例如,当我们执行ls命令时,不需要执行/bin/ls,这是因为命令所在的路径已经在PATH环境变量中,命令执行时,系统会按照PATH的设计去搜索可执行文件。
所以,有时候当遇到command not found(命令未找到)错误时,并不一定是系统没有这个命令,而也有可能是该命令所在的路径并不在PATH环境变量中,这时,只需要将其加入到PATH中就可以执行了。
ls(查看文件和目录)
语法格式:
ls [参数] [目录或文件名]
主要参数:
-a 显示所有文件,包含隐藏文件;包括“.“和“..“
-A 显示所有文件,包含隐藏文件,不包括“.“和“..“目录;
-d 仅可以查看目录的属性参数及信息,而不列出目录内的文件数据;
-f 直接列出结果,而不进行排序(ls默认会以文件名进行排序)
-F 这个参数加上后,能给目录添加上/,给可执行文件加上*,给符号链接加上 @ 等等,来标记文件名,目的是让用户方便查看;
-l 长格式输出,包含文件的各种属性
说明:如果以长格式输入,总共显示出八段内容:
第一段文件种类及权限,也就是类似这样的-rw-r--r-- ,我们在前面讲到,如果在这段中,第一字符表示文件的类型,如果出现-,表示普通文件。如果是d开头的就是目录。在这个例子中,123.txt是普通文件,而mkuml-2004.07.17就是一个目录。关于文件的种类,请参考 :
rw-r--r--是权限位,我们在以后的教程中会讲到。
第二段 硬链接个数(文件系增加一个硬链接,数字会增加1,默认从1开始,1表示无硬链接文件,如果是一个目录,它的默认值应该是2。目录是不能做硬链接的)
如果我们不以长格式输出的话,可以把参数省略;
第三段 文件或目录所占用的字节数,如果您想用K来表示,请用ls -lh /root
第四段 最后访问日期
第五段 最后访问时间
第六段 文件名
-h 习惯人们可阅读的方式来显示文件或目录的大小,比如K、M或G等;
-i 列出inode位置,而非列出文件属性
-p 在目录的后面附加/标记;
-r 逆序列出文件;
-R 与子目录内容一起列出来;
-S 按照文件大小排序
-t 按文件最后访问(或修改)的时间排序,最新的排在最前面;
--help 获得帮助;
--color=never 表示输出没有彩色
--color=auto 表示自动
--color=always 表示输出内容有彩色
--full-time 以完整的时间模式(包含年、月、日、时、分)输出
--time={atime,ctime} 输出最近访问时间(atime)或者最近一次改变权限等属性的时间(ctime)。在默认的情况下,输出的是文件内容最近一次被改动的时间(mtime)
文件或目录的复制工具cp
cp 的语法和参数
cp [参数选项] 源文件或目录 目标文件或目录
注:参数是可选的,常用参数比如 -r,-R,-p,-i ;
参数说明:
-a 等同于-dpr参数一起使用;在复制过程中尽可能保留源文件或目录的属性;
-b 给被覆盖的文件做备份。比如我们把file1 复制到file2时,如果file2存在,我们把file2覆盖掉,用这个参数就能同时生成一个file2~的文件,注意文件名后有~结尾
-d 不间接引用符号链接,保持源文件和目标文件之间的硬链接关系;
-f 删除已存在的目标文件;
-i 覆盖已存在的目标文件之前给出警告提示,这是人机交互的选项;
-l 建立文件硬链接,而不是复制;
-p 保存源文件或目录的最后修改时间和模式,比如要保持目标目录或文件的属主、组、权限和最后访问(或修改)时间;
-R 复制目录时,包括所有的子目录和文件;
-s 建立源文件的符号链接,而不是复制源文件。源文件名必须用绝对路径;
-r 复制目录时,包括所有的子目录和文件;-r选项不同于-R之处在于尝试打开目的地文件前先删除已存在的目的地文件
-v 在复制之前,输出每个文件的名字;
删除文件工具rm
rm 是用来删除一个或多个文件的工具,并且能用于删除非空目录。我们前面提到了可以加参数-rf 就可以强制删除一个非空目录。
rm的语法格式;
#rm [参数选项] file1 file2 ... ...
#rm [参数选项] dir1 dir2 dir3 ... ...
rm 常用参数:
-f 不显示警告或提示信息就删除,用的时候需要小心;
-i 删除文件时,显示警告信息,要多用,这样比较安全;根据提示,输入y就表示删除,输入n,请示不删除;
-r或-R 表示可以删除整个目录(包括子目录及所有文件),要小心用;
移动文件或目录的命令 mv
mv 命令是用来移动文件或目录的;有以下几种格式;
#mv file1 file2 注:把file1移动到file2,如果file2不存在,则创建file2文件名;
#mv file1 dir 注:把一个文件移动到一个事实存在的目录;
#mv dir1 dir2 移动目录dir1 到 dir2 ,如果dir2不存在,则创建它;
#mv file1 file2 file3 ... ... dir 移动file1、file2、file3等多个文件到dir目录中;
#mv dir1 dir2 ... ... dirn 注:移动目录dir1和dir2等多个目录到dirn目录中
参数:
-f 强制移动
-i 若目标文件已经存在,就会询问是否覆盖
-u 若目标文件已经存在,且日期没有源文件新,才会更新
获取文件名或者其中的路径名
有时候,遇到一个较长的绝对路径,我们可能希望知道其中哪一个是文件名,哪一段是路径名,或者提取它们,这是可以使用basename和dirname,例如:
basename /etc/sysconfig/network
获得network
dirname /etc/sysconfig/network
获得/etc/sysconfig
查看文件的内容
1) cat:由第一行显示文件,且一次整个显示
cat的参数中,-E可以用来显示行尾的换行符,-T可以用来显示tab,-v可以用来显示一些特殊的符号,-n可以显示行号,-A相当于-ETv
2) tac:与cat相反,是从最后一行开始显示
3) nl:也是从第一行一次显示整个文件,但输出行号
4) more:一页一页显示文件
空格键:表示向下翻页;
ENTER:表示向下翻一行;
/字符串:在显示的内容中搜索该字符串;
n:向下搜索前面的字符串
:f:立刻显示文件名以及当前的行号
5) less:与more类似,只是more只能向后翻页,它可以向前翻页
空格键,pagedown,pageup:翻页
/字符串:向下搜索字符串
?字符串:向上搜索字符串
n:重复向下搜索(与/或者?有关)
N:重复向上搜索(与/或者?有关)
6) head,tail:显示前几行或者末尾几行,都可以使用-n number指定显示的行数。
head和tail的巧妙用法:
显示文件的第11行到20行:
head -n 20 filename | tail -n 10
touch(修改文件时间或创建新文件)
如果touch所跟的文件名不存在,会创建该文件,否则,将该文件的mtime,atime都改为当前时间,但不会更改ctime。
文件和目录的权限
文件默认权限:-rw-rw-rw-
目录默认权限:drwxrwxrwx
使用umask命令可以查看当前用户创建文件或者目录的默认属性值,例如:
umask
显示0022
umask -S
显示u=rwx,g=rx,o=rx
注意:umask返回的数值所代表的含义是当用户创建文件或者目录时,需要从默认权限中减去的权限值。例如:
022代表需要从组用户和其他用户中去除写权限。
可以使用umask number直接修改这一属性值。
文件搜索
1) which:寻找可执行文件,-a 将所有可找到的命令都列出来,否则,只列出找到的第一个。
2) whereis:
-b 找二进制文件
-m 找在帮助文件manual路径下的文件
-s 找源文件
-u 没有帮助文件的文件
3) locate
4) find find命令详述.htm
注:whereis,locate和find命令的区别:
1) Linux系统会将系统中的所有文件都记录在一个数据库文件中(通常是/var/lib/slocate/slocate.db);
2) Whereis和locate是从数据库里查找文件,而find是从硬盘中直接查找文件,因此前二者的速度会明显快于find;
3) 但由于数据库文件的更新需要时间,所以使用whereis和locate查找文件时,经常会找到已经被删除的文件或者无法找到刚刚建立不久的文件;
4) 可以在搜索之前通过/usr/bin/updatedb命令来更新数据库文件。