linux指令之文件的创建、查询、修改

导航:

mkdir(make directory)

rmdir(remove directory)

mv

查看文档的指令有哪些?以及各自的特点?

如何新建文档?

umask的使用?

如何设置文档的隐藏属性?

如何查看隐藏属性?

如何修改文档权限?

如何搜索文档?

小结:

mkdir(make directory)

功能:创建目录
案例:
mkdir test
点评:将创建一个目录名为test的目录



rmdir(remove directory)

功能:删除目录
案例:
rmdir test
点评:将删除目录test

 

mv

linux指令之文件的创建、查询、修改
功能:移动目录
范例一:
mv mvtest test
点评:将目录mvtest 移动到目录test下面

范例二:
mv mvtest mvtest2
点评:更名的效果

范例三:
mv test test2 mvtest
点评:将目录test test2 一并移动到mvtest下面
linux指令之文件的创建、查询、修改

 

查看文档的指令有哪些?以及各自的特点?

linux指令之文件的创建、查询、修改
cat 由第一行开始显示档案内容

tac 由最后一行开始显示,内容颠倒过来了

nl 显示的时候,顺道输出行号

more 一页一页的显示档案内容(Enter向下翻一行,空格向下翻一页,q离开more模式)

less 与more类似,但是比more更好,可以往前翻页(可以通过PageUp PageDown来进行翻页,空格向下翻一页,q离开)

head 只看头几行(head -n 跟数字可以指定显示多少行)

tail 只看尾几行 (tail -n 跟数字可以指定显示多少行)

od 以二进制的方式读取档案内容
linux指令之文件的创建、查询、修改

 

如何新建文档?

用touch指令来实现

touch指令不仅可以新建文档,还可以修改文档日期

案例:

linux指令之文件的创建、查询、修改
ll是ls -l 的别名,其实是一个意思

touch -d "2 days ago" testtouch
功能:将文件testtouch日期修改提前两天,其中-d表示天数

touch testtouch
功能:创建文件testtouch

touch -t 1307030202 testtouch
功能:将文件testtouch的日期修改为2013年7月3日2点2分,-t是一种时间格式
linux指令之文件的创建、查询、修改

 

umask的使用?

umask对于档案的预设管理很有关系。

比如umask的值为0022

那么新建文件和文件夹的权限为

linux指令之文件的创建、查询、修改

 我们新建一个文件和文件夹来看看

root@ubuntu:~/tmp# touch test1
root@ubuntu:~/tmp# mkdir test2

-rw-r--r--  1 root       root          0 2013-06-05 16:15 test1
drwxr-xr-x  2 root       root       4096 2013-06-05 16:15 test2

果然如想象的一样

那么我们重新设置一下umask为0002看看

umask 0002

linux指令之文件的创建、查询、修改
root@ubuntu:~/tmp# rm test1
root@ubuntu:~/tmp# rmdir test2

root@ubuntu:~/tmp# touch test1
root@ubuntu:~/tmp# mkdir test2

-rw-rw-r--  1 root       root          0 2013-06-05 16:22 test1
drwxrwxr-x  2 root       root       4096 2013-06-05 16:20 test2/
linux指令之文件的创建、查询、修改

这时候,只去除了一个w

 

如何设置文档的隐藏属性?

linux指令之文件的创建、查询、修改
答:用chattr
+ 增加一个特殊参数
- 移除一个特殊参数
= 仅有后面接的参数
A 设定了A这个属性,这个档案或目录的存取时间atime(access)将不可被修改。
S 将数据写入磁盘当中避免数据流失
a 设置a之后,这个档案只能增加数据,不能删除数据
c 设置这个属性之后,将会自动压缩文档
i 可以让一个档案不能被删除、改名、设定连结也无法写入或新增资料。
等等..
比较常用的是a和i
linux指令之文件的创建、查询、修改

案例:

root@ubuntu:~/tmp# touch attrtest
root@ubuntu:~/tmp# chattr +i attrtest
root@ubuntu:~/tmp# rm attrtest
rm: cannot remove `attrtest': Operation not permitted

 

如何查看隐藏属性?
答:通过lsattr指令
案例:

root@ubuntu:~/tmp# lsattr attrtest
-----a-----------e- attrtest
root@ubuntu:~/tmp# chattr -a attrtest
root@ubuntu:~/tmp# lsattr attrtest
-----------------e- attrtest

 

如何修改文档权限?

 答:通过执行chmod来修改

案例:

linux指令之文件的创建、查询、修改
root@ubuntu:~/tmp# touch attrtest
root@ubuntu:~/tmp# chmod 777 attrtest
root@ubuntu:~/tmp# ll
total 16
drwxrwxr-x  4 jiqing9006 jiqing9006 4096 2013-06-05 17:03 ./
drwxr-xr-x 26 jiqing9006 jiqing9006 4096 2013-06-05 15:21 ../
-rwxrwxrwx  1 root       root          0 2013-06-05 17:03 attrtest*
drwxrwxr-x  5 jiqing9006 jiqing9006 4096 2013-06-04 15:24 mvtest/
-rw-rw-r--  1 root       root          0 2013-06-05 16:22 test1
drwxrwxr-x  2 root       root       4096 2013-06-05 16:20 test2/
-rw-r--r--  1 root       root          0 2013-07-03 02:02 testtouch
linux指令之文件的创建、查询、修改

 

如何搜索文档?

答:通常先使用whereis或者locate来检查,如果真的找不到,才以find来搜索。whereis和locate是利用数据库来搜索数据,所以相当的快,而且没有实际的搜索硬盘,比较省时间。

而find速度慢,也操作硬盘了。

案例:

which搜寻执行档

root@ubuntu:~/tmp# which passwd
/usr/bin/passwd
root@ubuntu:~/tmp# which passwd -a
/usr/bin/passwd

whereis搜寻特定档案

root@ubuntu:~/tmp# whereis passwd
passwd: /usr/bin/passwd /etc/passwd /usr/share/man/man5/passwd.5.gz /usr/share/man/man1/passwd.1ssl.gz /usr/share/man/man1/passwd.1.gz

-b只找binary档案

-m只找manual下面的档案

-s只找source

root@ubuntu:~/tmp# whereis -b passwd
passwd: /usr/bin/passwd /etc/passwd
root@ubuntu:~/tmp# whereis -m passwd
passwd: /usr/share/man/man5/passwd.5.gz /usr/share/man/man1/passwd.1ssl.gz /usr/share/man/man1/passwd.1.gz

tips:

基本上 Linux 每天会针对 Linux 主机上所有档案的所在进行搜寻数据库的更新, 更新的程序就是 
updatedb。当然,也可以直接使用 /usr/bin/updatedb 来更新数据库档案呢!

locate

root@ubuntu:~/tmp# locate passwd
/etc/passwd
../var/lib/dpkg/info/passwd.postinst
/var/lib/dpkg/info/passwd.preinst

find 查询硬盘了

linux指令之文件的创建、查询、修改
root@ubuntu:~/tmp# find /home/jiqing9006 -mtime 0
/home/jiqing9006
/home/jiqing9006/file
/home/jiqing9006/.viminfo
/home/jiqing9006/tmp
/home/jiqing9006/tmp/test2
/home/jiqing9006/tmp/mvtest/demo
../home/jiqing9006/.cache/zeitgeist/daemon.log.2013-06-04
/home/jiqing9006/.cache/zeitgeist/daemon.log
find: `/home/jiqing9006/.gvfs': Permission denied
linux指令之文件的创建、查询、修改

上述指令表示查询24小时内更改的文件,0表示从当前到24小时前。

find / -mtime 3 表示三天前的24小时内。

linux指令之文件的创建、查询、修改
找出档名为 passwd 这个档案
[root@linux ~]# find / -name passwd
# 利用这个 -name 可以搜寻档名啊!

找出系统中,大于 1MB 的档案
[root@linux ~]# find / -size +1000k
# 虽然在 man page 提到可以使用 M 与 G 分别代表 MB 与 GB,
# 不过,俺却试不出来这个功能~所以,目前应该是仅支持到 c 与 k 吧! 
linux指令之文件的创建、查询、修改

 

小结:
什么是绝对路径与相对路径? 

绝对路径的写法为由 / 开始写,至于相对路径则不由 / 开始写!此外,相对路径为相对于目前
工作目录的路径! 


如何更改一个目录的名称?例如由 /home/test 变为 /home/test2  

mv /home/test /home/test2  


PATH 这个环境变量的意义?  

这个是用来指定执行档执行的时候,档案搜寻的目录路径。  


umask 有什么用处与优点?  

linux指令之文件的创建、查询、修改
umask 可以拿掉一些属性,因此,适当的定义 umask 有助于系统的安全, 因为他可以用来建立
预设的目录或档案的权限。  
当一个使用者的 umask 分别为 033 与 044 他所建立的档案与目录的权限为何?  
在 umask 为 033 时,则预设是拿掉 group 与 other 的 w(2)x(1) 权限,因此权限就成为『档
案 -rw-r--r-- , 目录 drwxr--r-- 』而当 umask 044 时,则拿掉 r 的属性,因此就成为『档
案 -rw--w--w-,目录 drwx-wx-wx』  
linux指令之文件的创建、查询、修改


什么是 SUID ?  

当一个指令具有 SUID 的功能时,则当其它人使用这个指令时,该程序将具有指令拥有者的权限。

 

当我要查询 /usr/bin/passwd 这个档案的一些属性时,可以使用什么指令来查询?  

ls -al, file, lsattr  


尝试用 find 找出目前 linux 系统中,所有具有 SUID 的档案有哪些?  

find / -type f -perm -4000 -print  



上一篇:《测试驱动的嵌入式C语言开发》——2.5节 “四阶段”模式


下一篇:一步一步SharePoint 2007之三十二:实现文档Event Handler(4)——尝试Event Handler