软硬链接,重定向

Posted dreamfreedom

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了软硬链接,重定向相关的知识,希望对你有一定的参考价值。

1.软硬连接

  1.1 软链接又叫符号链接,这个文件包含了另一个文件的路径名。可以是任意文件或目录,可以链接不同文件系统的文件。

    链接文件甚至可以链接不存在的文件,这就产生一般称之为”断链”的现象,链接文件甚至可以循环链接自己。类似于编程语言中的递归。

    软链接文件只是其源文件的一个标记,当删除了源文件后,链接文件不能独立存在,虽然仍保留文件名,但却不能查看软链接文件的内容了。
              来自--https://baike.baidu.com/item/%E8%BD%AF%E9%93%BE%E6%8E%A5/7177481   
      1.1.1 创建方式   ln -s source destination  软链接的相对路径不是相对当前目录,而是软连接本身的相对路径  如下:
          我要将/date/linksoft    软链接到root下,对的代码这样(我当前在data目录):ln -s ../data/linksoft ../root   这个相对路径是相对root来讲的
          错的-->>ln -s linksoft /root/         指向本身了
lrwxrwxrwx. 1 root root     8 Sep 26 09:40 linksoft -> linksoft

 

 
 
  1.2 一个文件有几个文件名(用ln命令实现多个文件名),我们就说该文件的链接数为几。由定义可知,此链接数可以是1, 这表明该文件只有一个文件名。
总之,硬链接就是让多个不在或者同在一个目录下的文件名,同时能够修改同一个文件,其中一个修改后,所有与其有硬链接的文件都一起修改了。
    1.2.2 创建方式   ln source destination     
  1.3 软硬链接区别
      1.硬链接增加链接号,软连接不加
      2.硬链接不能链接目录,软连接可以链接目录
      3.硬链接不能跨分区或者设备,软连接可以跨分区
      4.硬链接是文件类型不变,软连接的文件类型变为  l
      5.硬链接被删除减少链接号,软链接被删不减
      6.软链接删除时,若软链接为目录,则删除的软链接不能加 ‘ / ’,否则删除的是软链接,链向文件当中的内容
      7.硬链接 inode号相同,软链接不同
      8.本质上,硬链接是同一个文件,起了不同的名字,而软链接则不是同一个文件
        查看硬链接文件  find /data inum 1135    -----找/data下inode 为1135的文件
  2.重定向
    标准输入(STDIN)-0 默认接受来自键盘的输入
    标准输出(STDOUT)-1 默认输出到终端窗口
    标准错误(STDERR)-2 默认输出到终端窗口 
    I/O重定向:改变默认位置 
技术图片

STDOUT和STDERR可以被重定向到文件

    命令 操作符号 文件名

    支持的操作符号包括:

    > 把STDOUT重定向到文件    

    2> 把STDERR重定向到文件

w.txt  文件存在,l.txt 不存在的文件    把标准正确输入到f3.txt  把标准错误输入到&1  而&1所带表的是f3.txt  这个文件  

cat w.txt l.txt 1>f3.txt 2>&1

下面代码效果和上面一样,仔细看看书写哪个地方不一样

cat w.txt l.txt 2>f3.txt 1>&2

 

 

    &> 把所有输出重定向到文件 

  

[root@CentOS-10-64-2019-0921 data]# cat database /etc/shadow &> allout.txt

 

    > 文件内容会被覆盖

    set –C 禁止将内容覆盖已有文件,但可追加

    >| file 强制覆盖

[root@CentOS-10-64-2019-0921 data]# set -C
[root@CentOS-10-64-2019-0921 data]# echo hello world > allout.txt 
bash: allout.txt: cannot overwrite existing file
[root@CentOS-10-64-2019-0921 data]# echo hello world >| allout.txt 
[root@CentOS-10-64-2019-0921 data]# cat allout.txt 
hello world
[root@CentOS-10-64-2019-0921 data]# 

 

 

    set +C 允许覆盖

[root@CentOS-10-64-2019-0921 data]# set +C
[root@CentOS-10-64-2019-0921 data]# echo hello CHIAN > allout.txt 
[root@CentOS-10-64-2019-0921 data]# cat allout.txt 
hello CHIAN
[root@CentOS-10-64-2019-0921 data]# 

 

 

    >> 原有内容基础上,追加内容

 
[root@CentOS-10-64-2019-0921 data]# echo cnblogs.com/dreamfreedom >> allout.txt 
[root@CentOS-10-64-2019-0921 data]# cat allout.txt 
hello CHIAN
cnblogs.com/dreamfreedom
[root@CentOS-10-64-2019-0921 data]# 

 

                                              

以上是关于软硬链接,重定向的主要内容,如果未能解决你的问题,请参考以下文章

Linux深入理解重定向inode详解与软硬链接的概念及区别

Linux系统编程:基础IO 下dup2 实现输出重定向输入重定向追加重定向 | 理解磁盘 | 理解文件系统中inode的概念 | 软硬链接

linuxbingc(IO)系统调用文件接口重定向静态库&动态库软硬链接简单文件系统

linuxbingc(IO)系统调用文件接口重定向静态库&动态库软硬链接简单文件系统

Linux系统编程:基础IO 下dup2 实现输出重定向输入重定向追加重定向 | 理解磁盘 | 理解文件系统中inode的概念 | 软硬链接

Linux系统编程:基础IO 下dup2 实现输出重定向输入重定向追加重定向 | 理解磁盘 | 理解文件系统中inode的概念 | 软硬链接