包括在不同的目录间切换,建立与删除目录,建立与删除文件,查看文件内容等
一.目录与路径 1.相对路径与绝对路径 绝对路径:路径写法一定由根目录/ 写起,例如:/usr/share/doc这个目录
相对路径:路径写法不是由根目录写起,指相对于当前工作目录的路径,例如:cd ../usr
2.目录的相关操作 (1)切换目录:cd命令 1 2 3 4 5 6 cd [相对路径或绝对路径] cd . #代表此层目录 cd .. #代表上一层目录 cd ~ #代表目前使用者身份所在的家目录 cd - #代表前一个工作目录 cd ~account #代表account这个使用者的家目录
(2)显示当前所在目录:pwd命令 1 2 root@ubuntu:/var/www# pwd /var/www
(3)建立新目录:mkdir命令 1 2 3 4 5 6 7 8 9 10 11 12 13 14 root@ubuntu:/tmp# mkdir test root@ubuntu:/tmp# ls -dl test drwxr-xr-x 2 root root 4096 Mar 7 05:37 test root@ubuntu:/tmp# mkdir -p test1/test2/test3/test4 #-p代表递归建立目录 root@ubuntu:/tmp# ls -dl test* drwxr-xr-x 2 root root 4096 Mar 7 05:37 test drwxr-xr-x 3 root root 4096 Mar 7 05:42 test1 root@ubuntu:/tmp# mkdir -m 711 test2 #-m代表指定目录权限 root@ubuntu:/tmp# ls -dl test* drwxr-xr-x 2 root root 4096 Mar 7 05:37 test drwxr-xr-x 3 root root 4096 Mar 7 05:42 test1 drwx--x--x 2 root root 4096 Mar 7 05:43 test2
(4)删除目录:rmdir命令 1 2 3 4 5 6 7 8 9 10 11 root@ubuntu:/tmp# rmdir test root@ubuntu:/tmp# ls -dl test* drwxr-xr-x 3 root root 4096 Mar 7 05:42 test1 drwx--x--x 2 root root 4096 Mar 7 05:43 test2 root@ubuntu:/tmp# rmdir test1 rmdir: failed to remove `test1': Directory not empty #test1目录尚有内容,无法删除 root@ubuntu:/tmp# rmdir -p test1/test2/test3/test4 #-p连通上层目录一起删除 root@ubuntu:/tmp# ls -dl test* drwx--x--x 2 root root 4096 Mar 7 05:43 test2
二.文件与目录管理 1.文件与目录的查看:ls命令 1 2 3 ls -a 显示全部文件,包括隐藏文件 ls -d 仅列出目录本身,而不是列出目录内的文件数据 ls -l 详细信息显示,包括文件的属性与权限等数据
2.文件或目录的复制命令:cp命令 1 2 3 4 5 6 7 8 9 10 root@ubuntu:~# cp .bashrc /tmp/test/bashrc root@ubuntu:~# ls /tmp/test bashrc root@ubuntu:~# cp -i .bashrc /tmp/test/bashrc #-i:若目标文件以及存在时,在覆盖时会先询问操作的进行 cp: overwrite `/tmp/test/bashrc'? y root@ubuntu:~# cp -a .bashrc /tmp/test/bashrc2 #-a:连同文件属性也一起复制过去 root@ubuntu:~# ls -l /tmp/test/bashrc2 .bashrc -rw-r--r-- 1 root root 3106 Apr 19 2012 .bashrc -rw-r--r-- 1 root root 3106 Apr 19 2012 /tmp/test/bashrc2
1 2 3 4 5 6 7 8 9 10 11 root@ubuntu:/tmp# ls -dl test* drwxr-xr-x 2 root root 4096 Mar 7 06:07 test drwxr-xr-x 2 root root 4096 Mar 7 18:11 test1 root@ubuntu:/tmp# ls test1 root@ubuntu:/tmp# cp test test1 cp: omitting directory `test' root@ubuntu:/tmp# cp -r test test1 #-r:如果是目录的复制需要加上-r的选项 root@ubuntu:/tmp# ls test1 test root@ubuntu:/tmp# ls test1/test bashrc bashrc1 bashrc2
3.文件或目录的删除命令:rm命令 1 2 3 4 5 6 7 8 9 root@ubuntu:/tmp# rm test2 rm: cannot remove `test2': Is a directory root@ubuntu:/tmp# rm -r test2 #当删除目录时,需要加上-r选项 root@ubuntu:/tmp# ls -dl test* drwxr-xr-x 2 root root 4096 Mar 7 06:07 test drwxr-xr-x 3 root root 4096 Mar 7 18:12 test1 root@ubuntu:/tmp# rm -ir test #加入-i选项,删除前会询问操作者是否操作,避免误删除 rm: descend into directory `test'? ^C #按下[ctrl]+c中断删除操作
4.移动文件或目录命令或重命名:mv命令 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 root@ubuntu:~/tmp# mkdir mvtest root@ubuntu:~/tmp# cp ~/.bashrc bashrc root@ubuntu:~/tmp# ls bashrc mvtest root@ubuntu:~/tmp# mv bashrc mvtest #将bashrc文件移动到mvtest目录下 root@ubuntu:~/tmp# ls mvtest root@ubuntu:~/tmp# ls mvtest bashrc root@ubuntu:~/tmp# ls mvtest mvtest2 root@ubuntu:~/tmp# mv mvtest mvtest2 #将mvtest目录移动到mvtest2目录下 root@ubuntu:~/tmp# ls mvtest2 root@ubuntu:~/tmp# ls mvtest2 mvtest root@ubuntu:~/tmp# mv mvtest2 mvtest1 #将mvtest2目录重命名为mvtest1目录 root@ubuntu:~/tmp# ls mvtest1 root@ubuntu:~/tmp# ls mvtest1/ mvtest root@ubuntu:~/tmp# ls mvtest1/mvtest/ bashrc
5.获取路径的文件名与目录名称:basename命令和dirname命令 1 2 3 4 root@ubuntu:~# basename /etc/sysconfig/network network #获取最后的文件名 root@ubuntu:~# dirname /etc/sysconfig/network /etc/sysconfig #获取目录名
三.文件内容查看 1.直接查看文件内容:cat,tac,nl命令 1 2 3 root@ubuntu:~# cat /etc/passwd #从第一行开始显示文件内容 root@ubuntu:~# tac /etc/passwd #从最后一行开始显示文件内容 root@ubuntu:~# nl /etc/passwd #在文件内容前加上行号
2.可翻页查看:more,less命令 cat命令是将文件内容一次性显示出来,没有一页一页翻动的功能,而more 和less 命令具有一页一页翻动的功能
在more命令按以下键的功能:
1 2 3 4 空格键(space):代表向下翻一页 Enter:代表向下翻一行 b或[ctrl]-b:代表往回翻页 q:代表立刻离开more,不再显示该文件内容
在less命令按以下键的功能:
1 2 3 4 空格键:向下翻动一页 [pagedown]:向下翻动一行 [pageup]:向上翻动一行 q:离开less程序
3.数据截取:head,tail命令 head 命令能取出一个文件的前几行,tail 则是取出文件的后几行
1 2 3 4 5 6 7 8 9 head [-n number] 文件 root@ubuntu:~# head /etc/manpath.config #默认显示前十行 root@ubuntu:~# head -n 20 /etc/manpath.config #显示前二十行 root@ubuntu:~# head -n -100 /etc/manpath.config #后一百行不会显示出来 tail [-n number]文件 root@ubuntu:~# tail /etc/manpath.config #默认显示最后十行 root@ubuntu:~# tail -n 20 /etc/manpath.config #显示最后二十行 root@ubuntu:~# tail -n +100 /etc/manpath.config #后一百行显示出来
4.非纯文本文件读取:od命令 1 2 od [-t TYPE] 文件 可读取二进制等文件
5.创建文件:touch命令
四.文件默认权限:umask 当我们建立一个新的文件或目录时,它的默认权限与umask
有关,它指定了目前用户在建立文件或目录时候的权限默认值,得知umask
的方法:
1 2 3 4 root@ubuntu:~/tmp# umask 0022 root@ubuntu:~/tmp# umask -S u=rwx,g=rx,o=rx
查看的方式有两种,一种可以直接输入umask
,就可以看到数字类型的权限设置值,另一种则是加入-S
这个选项,就会以符号类型的方式来显示出权限了
但是要注意的是,这里umask的值并不直接是文件或目录的默认权限值,它规定的是是默认值需要减掉的权限,文件的默认权限值为:-rw-rw-rw-
,即666
;目录的默认权限值为drwxrwxrwx
,即777
,再减去umask指定的值,那么
1 2 建立文件时:(-rw-rw-rw-) - (-----w--w-) ==> -rw-r--r-- 建立目录时:(drwxrwxrwx) - (d----w--w-) ==> drwxr-xr-x
测试一下:
1 2 3 4 5 root@ubuntu:~/tmp# touch test1 root@ubuntu:~/tmp# mkdir test2 root@ubuntu:~/tmp# ls -dl test* -rw-r--r-- 1 root root 0 Mar 10 06:05 test1 drwxr-xr-x 2 root root 4096 Mar 10 06:05 test2
修改umask值的方式如下:
1 2 3 4 5 6 root@ubuntu:~/tmp# umask 002 root@ubuntu:~/tmp# touch test3 root@ubuntu:~/tmp# mkdir test4 root@ubuntu:~/tmp# ls -dl test[34] -rw-rw-r-- 1 root root 0 Mar 10 06:16 test3 drwxrwxr-x 2 root root 4096 Mar 10 06:16 test4
五.文件隐藏属性 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 A :当设定了 A 这个属性时,若你有存取此档案(或目录)时,他的访问时间 atime 将不会被修改,可避免I/O较慢的机器过度的存取磁盘。这对速度较慢的计算机有帮助 S :一般档案是异步写入磁盘的(原理请参考第五章sync的说明),如果加上 S 这个 属性时,当你进行任何档案的修改,该更动会『同步』写入磁盘中。 a :当设定 a 之后,这个档案将只能增加数据,而不能删除也不能修改数据,只有root 才能设定这个属性。 c :这个属性设定之后,将会自动的将此档案『压缩』,在读取的时候将会自动解压缩, 但是在储存的时候,将会先进行压缩后再储存(看来对于大档案似乎蛮有用的!) d :当 dump 程序被执行的时候,设定 d 属性将可使该档案(或目录)不会被 dump 备份 i :这个 i 可就很厉害了!他可以让一个档案『不能被删除、改名、设定连结也无法 写入或新增资料!』对于系统安全性有相当大的帮助!只有 root 能设定此属性 s :当档案设定了 s 属性时,如果这个档案被删除,他将会被完全的移除出这个硬盘 空间,所以如果误删了,完全无法救回来了喔! u :与 s 相反的,当使用 u 来配置文件案时,如果该档案被删除了,则数据内容其实还 存在磁盘中,可以使用来救援该档案喔!
1.设置文件隐藏属性:chattr命令 1 2 3 4 5 chattr [+-=][ASacdistu] 档案或目录名称 选项与参数: + :增加某一个特殊参数,其他原本存在参数则不动。 - :移除某一个特殊参数,其他原本存在参数则不动。 = :设定一定,且仅有后面接的参数
1 2 3 root@ubuntu:~/tmp# chattr +i test3 root@ubuntu:~/tmp# rm test3 rm: cannot remove `test3': Operation not permitted
由于对文件test3附加了i
的隐藏属性,所以无法删除
2.显示文件隐藏属性:lsattr命令 1 2 3 4 5 lsattr [-adR] 档案或目录 选项与参数: -a :将隐藏文件的属性也秀出来; -d :如果接的是目录,仅列出目录本身的属性而非目录内的文件名; -R :连同子目录的数据也一并列出来!
1 2 root@ubuntu:~/tmp# lsattr test3 ----i--------e- test3
六.观察文件类型:file命令 1 2 3 4 root@ubuntu:~/tmp# file ~/.bashrc /root/.bashrc: ASCII English text root@ubuntu:~/tmp# file /usr/bin/passwd /usr/bin/passwd: setuid ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=0xc101d30ff4513f2dbad17fcc483dcda4a38e1df0, stripped
七.命令与文件的查找 1.脚本文件的查找:which命令 1 2 3 4 5 6 7 8 9 which [-a] command 选项与参数: -a:将所有由PATH目录中科院找到的命令均列出,而不止第一个被找到的命令名称 root@ubuntu:~/tmp# which passwd /usr/bin/passwd root@ubuntu:~/tmp# which ls /bin/ls root@ubuntu:~/tmp# which cd
可以发现有的命令是找不到的,因为which是默认找PATH内所规范的路径,去查找执行文件的文件名
2.文件的查找:whereis,locate/updatedb,find命令 whereis
由一些特定的目录查找文件
1 2 3 4 5 6 7 8 9 10 whereis [-bmsu] 文件或目录名 -b 只查找二进制文件。 -B<目录> 只在设置的目录下查找二进制文件。 -f 不显示文件名前的路径名称。 -m 只查找说明文件。 -M<目录> 只在设置的目录下查找说明文件。 -s 只查找原始代码文件。 -S<目录> 只在设置的目录下查找原始代码文件。 -u 查找不包含指定类型的文件。
locate
是在已建立的数据库/var/lib/mlocate 里面的数据所查找到的,不用再去硬盘当中读取数据,所以较为快速,数据库默认一天更新一次,如果要手动更新数据库,需要输入updatedb
命令
1 2 3 4 locate [-ir] keyword -i:忽略大小写的差异 -l:仅输出几行的意思
find
1 2 3 root@ubuntu:~/tmp# find /var -mtime +4 #+4代表大于等于5天前的文件 root@ubuntu:~/tmp# find /var -mtime -4 #-4代表小于等于4天内的文件 root@ubuntu:~/tmp# find /var -mtime 4 #4-5那一天的文件