您的位置:首页 > 科技 > 能源 > 莱芜新闻网今日莱芜头条_网站策划论文_seo系统培训_舆情服务网站

莱芜新闻网今日莱芜头条_网站策划论文_seo系统培训_舆情服务网站

2024/11/18 14:01:31 来源:https://blog.csdn.net/qq_63159859/article/details/143632884  浏览:    关键词:莱芜新闻网今日莱芜头条_网站策划论文_seo系统培训_舆情服务网站
莱芜新闻网今日莱芜头条_网站策划论文_seo系统培训_舆情服务网站

文章目录

        • 1.重定向
        • 2.软硬链接

1.重定向

C语言中默认会打开三个流:标准输入、标准输出和标准错误。而在Linux中分别对应的文件描述符是0,1,2,而对应的设备是:显示器、键盘、显示器。如果使用cat命令查看一个文本信息默认输出在显示器上,那么可以通过重定向的方式输入到一个文件中。
输出重定向 >: 将输出重定向到指定文件,会覆盖会文件内容。

xiyan@LAPTOP-87PRR6K8:~$ mkdir new
xiyan@LAPTOP-87PRR6K8:~$ cd new
xiyan@LAPTOP-87PRR6K8:~/new$ vim hello.txt
xiyan@LAPTOP-87PRR6K8:~/new$ cat hello.txt
hello 1
hello 2
xiyan@LAPTOP-87PRR6K8:~/new$ cat hello.txt > hello
xiyan@LAPTOP-87PRR6K8:~/new$ ls
hello  hello.txt
xiyan@LAPTOP-87PRR6K8:~/new$ echo hello world > hello # 会覆盖
xiyan@LAPTOP-87PRR6K8:~/new$ cat hello
hello world

追加重定向 >>: 将输出追加到指定文件的末尾,不覆盖已有内容

xiyan@LAPTOP-87PRR6K8:~/new$ echo hello world >> hello
xiyan@LAPTOP-87PRR6K8:~/new$ echo hello world >> hello
xiyan@LAPTOP-87PRR6K8:~/new$ cat hello
hello world
hello world
hello world

输入重定向 <: 可以从文件中输入内容,而不是从键盘读取。

xiyan@LAPTOP-87PRR6K8:~/new$ cat < hello
hello world
hello world
hello world

另外可以将一些错误的信息,输出到指定的文件中

xiyan@LAPTOP-87PRR6K8:~/new$ ls 1> info.txt - 命令正确输出
xiyan@LAPTOP-87PRR6K8:~/new$ cat info.txt
hello
hello.txt
info.txt
xiyan@LAPTOP-87PRR6K8:~/new$ pa 2> error.txt -错误的信息输出到文件中
xiyan@LAPTOP-87PRR6K8:~/new$ cat error.txt
pa: command not found
xiyan@LAPTOP-87PRR6K8:~/new$ gcc hello.c 2> error.txt - 将编译报错信息重定向到error.txt中
2.软硬链接

Linux中软硬链接都是给文件且别名,而它们本质的区别在于硬链接指向的是同一个inode,inode不能够跨文件系统,所以硬链接是不可用于跨文件系统的。而软件链接有独立的inode,它可以跨文件系统使用。(inode(索引节点)是用于存储文件或目录的元数据的数据结构)
创建硬链接:

xiyan@LAPTOP-87PRR6K8:~$ mkdir ln
xiyan@LAPTOP-87PRR6K8:~$ cd ln
xiyan@LAPTOP-87PRR6K8:~/ln$ pwd
/home/xiyan/ln
xiyan@LAPTOP-87PRR6K8:~/ln$ touch hello.txt
xiyan@LAPTOP-87PRR6K8:~/ln$ echo "hello world1" >> hello.txt
xiyan@LAPTOP-87PRR6K8:~/ln$ echo "hello world2" >> hello.txt
xiyan@LAPTOP-87PRR6K8:~/ln$ ln hello.txt hello.bak
xiyan@LAPTOP-87PRR6K8:~/ln$ echo "hello world3" >> hello.bak
xiyan@LAPTOP-87PRR6K8:~/ln$ cat hello.txt
hello world1
hello world2
hello world3
xiyan@LAPTOP-87PRR6K8:~/ln$ rm hello.txt
xiyan@LAPTOP-87PRR6K8:~/ln$ cat hello.bak
hello world1
hello world2
hello world3

如果为一个文件创建一个硬链接,修改链接文件源文件也跟着修改。而删除源文件,硬链接文件不会受影响,当所有的硬链接都删除文件才会被删除。类似于文件的拷贝。
创建软链接:

xiyan@LAPTOP-87PRR6K8:~/ln$ touch hello.c
xiyan@LAPTOP-87PRR6K8:~/ln$ ln -s hello.c hello.link
xiyan@LAPTOP-87PRR6K8:~/ln$ vim hello.link
xiyan@LAPTOP-87PRR6K8:~/ln$ cat hello.c
xiyan@LAPTOP-87PRR6K8:~/ln$ unlink hello.link

软链接可以链接到目录,软链接如果指向的源文件被删除,它会变成一个“死链接”(dangling link)。它相当于Windows中的快捷方式。
rm unlink都是删除文件,当引用计数变为0,没有文件名和inode关联,系统认为用户不管了这个文件了会删除。unlink有对应的系统调用接口。
注意一个细节:
文件的引用计数是1,而目录的引用计数是2。为什么呢? 文件就是代表一个文件名就对应一个inode而目录中的 .和目录名都指向同一个inode(76963)

xiyan@LAPTOP-87PRR6K8:~/ln$ touch test.txt
xiyan@LAPTOP-87PRR6K8:~/ln$ mkdir mydir
xiyan@LAPTOP-87PRR6K8:~/ln$ ll -i
76963 drwxr-xr-x  2 xiyan xiyan 4096 Nov  8 21:56 mydir/
76862 -rw-r--r--  1 xiyan xiyan    0 Nov  8 21:56 test.txt
xiyan@LAPTOP-87PRR6K8:~/ln$ cd mydir/
xiyan@LAPTOP-87PRR6K8:~/ln/mydir$ ll -i
76963 drwxr-xr-x 2 xiyan xiyan 4096 Nov  8 21:56 ./
76887 drwxr-xr-x 3 xiyan xiyan 4096 Nov  8 21:56 ../
xiyan@LAPTOP-87PRR6K8:~/ln$ cd mydir/
xiyan@LAPTOP-87PRR6K8:~/ln/mydir$ cd ..
xiyan@LAPTOP-87PRR6K8:~/ln$ ln test.txt test.bak
xiyan@LAPTOP-87PRR6K8:~/ln$ ll -i
76862 -rw-r--r--  2 xiyan xiyan    0 Nov  8 22:05 test.bak
76862 -rw-r--r--  2 xiyan xiyan    0 Nov  8 22:05 test.txt
xiyan@LAPTOP-87PRR6K8:~/ln$ ln -s test.txt test.link
xiyan@LAPTOP-87PRR6K8:~/ln$ ll -i
76862 -rw-r--r--  2 xiyan xiyan    0 Nov  8 22:05 test.bak
76966 lrwxrwxrwx  1 xiyan xiyan    8 Nov  8 22:10 test.link -> test.txt
76862 -rw-r--r--  2 xiyan xiyan    0 Nov  8 22:05 test.txt

硬链接的引用计数会生是因为多个硬链接共享同一个inode。而软链接不会产生引用计数是因为独有的inode。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com