我们知道对于Unix系列的操作系统,大多都有v节点。但是对于linux来说,只有通用的i节点,却没有v节点。
linux中,文件查找不是通过文件名称来查找的。实际上是通过i节点来实现文件的查找定位的。我们可以形象的将i节点看做是一个指针fip。当文件存储到磁盘上去的时候,文件肯定会存放到一个磁盘位置上,可以这样想象,既然文件数据是存放在磁盘上的,如果我们知道这个文件数据的地址,当我们想要读写文件的时候,我们是不是直接使用这个地址去找到文件就可以了呢?
是的,linux下,i节点其实就是可以这么认为,把i节点看作是一个指向磁盘上该文件存储区的地址。只不过这个地址我们一般是没办法直接使用的,而是通过文件名来间接使用的。事实上,i节点不仅包含了文件数据存储区的地址,还包含了很多信息,比如数据大小,等等文件信息。但是i节点是不保存文件名的。文件名是保存在一个目录项中。每一个目录项中都包含了文件名和i节点。
我们可以通过一个图来看看目录项,i节点,文件数据四者之间的关系。
从上图可以看到,目录项中包含了文件名和i节点。
同时,你会发现上图中,目录项A和目录项B的i节点指向同一个存储区,其中这个存储区存放的是printf("ha")的数据。
也就是意味着helloA.c和helloB.c的内容是一样的。
硬链接和符号链接的概念
硬链接 ln -d
符号链接 ln -s。
要想得到helloA.c和helloB.c这种关系,我们可以使用如下命令:
这样,就得到了helloA.c的硬链接helloB.c
对于硬链接来说。如果删掉源文件helloA.c,那么磁盘上数据文件时不会删除的。因为i节点上记录了该文件的硬链接数。只有硬链接数是0的时候,删除文件名的时候,该数据在磁盘上才会删除。
也就是说。这里,如果我们使用命令:
helloB.c同样可以正常使用,其内容就是printf("ha");
但是如果是符号链接:
这就是所谓的符号链接,符号链接其实是文件索引的索引。当源文件helloB.c删除之后,其实磁盘数据文件还在,helloC.c也无法使用。
符号链接包含了一个文件名的路劲,如果这个文件名被删除,这符号链接自然就不能正常工作了。
Linux修改环境变量PS1(命令行提示符),可以使用vi编辑/etc/profile文件,在最后加上:export PS1=’[u@h W]$ ‘即可,其中u显示当前用户账号,h显示当前主机名,W显示当前路径,$显示’$'符号。W 代替 w 就可以实现绝对路径到相对路径的转换。
默认的特殊符号所代表的意义:
d :代表日期,格式为weekday month date,例如:”Mon Aug 1″
H :完整的主机名称。例如:我的机器名称为:fc4.linux,则这个名称就是fc4.linux
h :仅取主机的第一个名字,如上例,则为fc4,.linux则被省略
t :显示时间为24小时格式,如:HH:MM:SS
T :显示时间为12小时格式
A :显示时间为24小时格式:HH:MM
u :当前用户的账号名称
v :BASH的版本信息
w :完整的工作目录名称。家目录会以 ~代替
W :利用basename取得工作目录名称,所以只会列出最后一个目录
# :下达的第几个命令
$ :提示字符,如果是root时,提示符为:# ,普通用户则为:$
但是这样设置之后显示的提示符是没有颜色的,如果希望加入颜色设置,可以这样:
PS1=”e[1;32mue[me[1;33m@e[me[1;35mhe[m:w$ "
此时,在终端中的显示应该是彩色的提示符了,其中的e[1;xxm和e[m就是改变终端字体颜色的部分,前者是修改颜色,后者是恢复到正常显示。但是 这时还会有问题,在提示符中输入第一行时,回车换行不正常,导致显示很混乱,因此,除了这个修改之外,还需要将全部非打印字符用专用的 bash 转义序列 "[" 和 "]” 括起来。这两个序列通知 bash,被括起来的字符不占用行 上的任何空间,这样就使自动换行能够继续正常工作。最终版本如下(可解决带颜色提示符的不换行问题):
PS1=”[e[1;32m]u[e[m][e[1;33m]@[e[m][e[1;35m]h[e[m]:w$ “
其中,颜色表示为:30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white。
如果需要改变目录在命令行下显示颜色:
1、将/etc/DIR_COLORS文件cp到~/下,并改名为.dir_colors。
2、编辑.dir_colors文件,找到“DIR 01;34 # directory”,将34改为36。
你可以找到文件的两行注释:
# Text color codes:
# 30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white
按照颜色对应的数字,你还可以把目录显示颜色改成其他的。
同样其他的显示效果(包括背景)也可以参照说明进行修改。
这样你就可以定制自己的linux下命令行方式下的个性化显示效果了。
3、重新登录,即可看到修改后的效果。
文件描述符(file descriptor)
每个进程都有打开的一组文件,这些打开的文件保存在一个数组中。文件描述符即保存在此数组的索引中。
最低可用文件描述符(lowest_available_fd)
当打开一个文件时,内核为此文件安排的文件描述符总是此数组中最低可用文件描述符。
文件描述符通过exec调用传递,且不会被改变。
标准输入文件描述符是0 标准输出文件描述符是 1 标准输出文件描述符是 2
unix假设文件描述符0、1、2都已经被打开,并且都连接到终端设备上。可以分别进行读写操作。
大多数程序将结果输出到文件描述符1,将错误消息输出到文件描述符2。
若是想修改程序的输入输出就必须修改相应的文件描述符。将0、1、2绑定到不同的文件即可实现重定向。
程序默认是从标准输入读取数据,将文件描述符0绑定到一个文件。即可实现从文件读取数据。
实际上,进程并不是从文件读取数据,而是从文件描述符读取数据。
如果文件描述符0定位到一个文件,那么这个文件就是标准输入的源。
您可能感兴趣的文章:
linux下设置文件描述符的方法
深入理解linux文件描述符fd和文件指针flip(图文)
Linux中查看与设置文件描述符的方法(图文)
Linux重定向实例详解
解析:Linux之管道与重定向
深入linux中重定向及管道详解
深入linux上shell重定向详解>>
Linux中重定向命令行的方法总结
shell i/o常用重定向方法详解
深入理解Linux重定向的使用
有关I/O重定向的详细教程