百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

Linux终端生存指南 文件类型(linux终端生存指南 文件类型是什么)

nanshan 2024-11-07 11:25 18 浏览 0 评论

这是一系列基础命令的集合,我会从使用角度介绍,看完这些以后你能够在Linux终端下完成大部分之前需要鼠标和键盘才能完成的操作。

今天是第二篇,Linux下的几种特殊文件类型介绍。

  • 普通文件和目录
  • 链接文件
  • 管道文件
  • 套接字文件
  • 设备文件

查看文件类型

Windows中我们经常通过后缀名来区分文件类型,比如我们常见的.exe、.doc、.ppt等。

但是Linux中一般不通过后缀名来判断文件类型,因为Linux除了一些特定软件通过后缀名来区分自己的软件支持的文件类型,Linux中的文件一般都不带后缀名。

Linux查看文件类型是通过命令 ls -l 实现:

ubuntu@ubuntu-virtual-machine:~$ ls -l
总用量 64
drwxrwxr-x 2 ubuntu ubuntu 4096 4月  12 22:55 1
-rw-rw-r-- 1 ubuntu ubuntu   11 4月  15 21:16 2.txt
-rw-rw-r-- 1 ubuntu ubuntu    0 4月  12 22:55 3
-rw-rw-r-- 1 ubuntu ubuntu    4 4月  12 22:57 4.txt
-rw-rw-r-- 1 ubuntu ubuntu    0 4月  12 23:00 5.txt
-rw-rw-r-- 1 ubuntu ubuntu    0 4月  12 23:01 7.txt
drwxr-xr-x 2 ubuntu ubuntu 4096 4月  10 22:58 桌面
drwxrwxr-x 3 ubuntu ubuntu 4096 4月   9 19:10 develop
drwxrwxr-x 2 ubuntu ubuntu 4096 4月  12 23:26 mydir
drwxrwxr-x 2 ubuntu ubuntu 4096 4月  12 23:32 mydir2
drwxrwxr-x 2 ubuntu ubuntu 4096 4月  12 23:32 mydir4
drwx------ 5 ubuntu ubuntu 4096 4月  12 22:22 snap
-rw-rw-r-- 1 ubuntu ubuntu    0 4月  12 22:51 t.txt

根据文件显示信息的第一个字符可以判断文件类型:

第一个字符

文件类型

-

普通文件

d

目录

b

块设备文件

c

字符设备文件

s

套接字文件

p

管道文件

l

链接文件

还有一个命令也可以查看文件类型:file命令,直接执行file 文件路径:

ubuntu@ubuntu-virtual-machine:~$ file ./2.txt
./2.txt: ASCII text

每一种文件类型都有自己的使用场景,我在此简单说明类型和主要功能,后面我会对每种文件的实现和使用专门整理。

普通文件和目录

这两个文件类型在上一篇文章介绍得非常详细,这里不在说明。

链接文件

链接文件请现在就了解并能够使用,一种软链接,一种硬链接。

链接文件都可以直接读取和修改源文件的内容。

硬链接有很多局限性,所以日常工作中用得最多的应该是软链接。

通过ln命令创建链接文件,命令格式:

ln [选项] 源文件 目标文件

选项:

  • s:soft ,即制定创建的链接文件类型是软链接文件;如果不加 "-s" 选项,就是硬链接文件;
  • f:force,强制选项。如果被创建的链接文件存在同名文件,则删除目标文件后再建立链接文件;

软链接

这是最常用的链接文件,我们前面说了Linux下一切皆文件。

而软链接类似于 Windows 系统中给文件创建快捷方式,它的文件内容中保存了源文件(或目录)的绝对路径

注意:一定是绝对路径,否则会出现链接的源文件找不到的情况。

使操作者可以通过另一个文件符号访问另一个文件。

创建软链接的例子:

ubuntu@ubuntu-virtual-machine:~$ ln -s 2.txt 2.txt.s
ubuntu@ubuntu-virtual-machine:~$ ls -l
总用量 64
-rw-rw-r-- 1 ubuntu ubuntu   11 4月  15 21:16 2.txt
lrwxrwxrwx 1 ubuntu ubuntu    5 4月  15 21:33 2.txt.s -> 2.txt

软链接显示的文件信息是链接文件,并且显示了文件的源文件名和链接文件名。

硬链接

硬链接这里就介绍一下他与软链接的主要使用区别:

  • 不能跨文件系统
  • 不能链接目录

这两个明显的缺点使平时使用比较少。

创建硬链接的例子:

ubuntu@ubuntu-virtual-machine:~$ ln 2.txt 2.txt.h
ubuntu@ubuntu-virtual-machine:~$ ls -l
总用量 68
-rw-rw-r-- 2 ubuntu ubuntu   11 4月  15 21:16 2.txt
-rw-rw-r-- 2 ubuntu ubuntu   11 4月  15 21:16 2.txt.h

硬链接文件信息的显示和源文件一模一样,连文件类型都是一模一样的。

注意

删除了源文件,软链接就没有操作主题了,当你去操作软链接的时候会报错找不到对应的文件。

而硬链接不受到影响,即使已经没有了源文件,仍然可以操作,其内容与删除源文件之前的内容一致。

ubuntu@ubuntu-virtual-machine:~$ rm 2.txt
ubuntu@ubuntu-virtual-machine:~$ cat 2.txt.s
cat: 2.txt.s: 没有那个文件或目录
ubuntu@ubuntu-virtual-machine:~$ cat 2.txt.h
1234

4567

1111

管道文件

管道是一种进程间通信的方式,而且管道也有两种类型,有名管道和无名管道。

管道顾名思义,就像一根实际的管道那样为进程间建立一个通讯的通道,相互收发数据。

有名管道和无名管道的区别主要是:有名管道可以在任意两个进程之间通讯,而无名管道只能在父子进程之间通讯。

我想你可能目前还对进程的概念不太清楚,你可以先忽略管道类型差异,这样简单理解:管道可以是在两个程序之间建立一个通道,相互读写数据。而对于两种管道类型目前这个阶段记住两个关键字:有名管道fifo,无名管道pipe。

套接字文件

网络通信的文件符号,网络编程以此为锚点进行读写操作。

这个与管道一样也是一种进程间通信方式,目前阶段请了解这是用于网络通信,记住关键词:socket即可。

设备文件

设备文件一般在/dev/目录下。我们在这个目录下可以看到很多设备文件:

ubuntu@ubuntu-virtual-machine:~$ ls /dev/
autofs           dm-0      hugepages  loop4         nvram   sg0       tty12  tty25  tty38  tty50  tty63      ttyS17  ttyS3    vcs    vcsu         vsock
block            dm-1      hwrng      loop5         port    sg1       tty13  tty26  tty39  tty51  tty7       ttyS18  ttyS30   vcs1   vcsu1        zero
bsg              dma_heap  initctl    loop6         ppp     shm       tty14  tty27  tty4   tty52  tty8       ttyS19  ttyS31   vcs2   vcsu2        zfs
btrfs-control    dmmidi    input      loop7         psaux   snapshot  tty15  tty28  tty40  tty53  tty9       ttyS2   ttyS4    vcs3   vcsu3
bus              dri       kmsg       loop8         ptmx    snd       tty16  tty29  tty41  tty54  ttyprintk  ttyS20  ttyS5    vcs4   vcsu4
cdrom            dvd       lightnvm   loop9         pts     sr0       tty17  tty3   tty42  tty55  ttyS0      ttyS21  ttyS6    vcs5   vcsu5
cdrw             ecryptfs  log        loop-control  random  stderr    tty18  tty30  tty43  tty56  ttyS1      ttyS22  ttyS7    vcs6   vcsu6
char             fb0       loop0      mapper        rfkill  stdin     tty19  tty31  tty44  tty57  ttyS10     ttyS23  ttyS8    vcsa   vfio
console          fd        loop1      mcelog        rtc     stdout    tty2   tty32  tty45  tty58  ttyS11     ttyS24  ttyS9    vcsa1  vga_arbiter
core             fd0       loop10     mem           rtc0    tty       tty20  tty33  tty46  tty59  ttyS12     ttyS25  udmabuf  vcsa2  vgubuntu
cpu              full      loop11     midi          sda     tty0      tty21  tty34  tty47  tty6   ttyS13     ttyS26  uhid     vcsa3  vhci
cpu_dma_latency  fuse      loop12     mqueue        sda1    tty1      tty22  tty35  tty48  tty60  ttyS14     ttyS27  uinput   vcsa4  vhost-net
cuse             hidraw0   loop2      net           sda2    tty10     tty23  tty36  tty49  tty61  ttyS15     ttyS28  urandom  vcsa5  vhost-vsock
disk             hpet      loop3      null          sda5    tty11     tty24  tty37  tty5   tty62  ttyS16     ttyS29  userio   vcsa6  vmci

常见设备文件命名规则作如下:

  • /dev/hd[a-t]:IDE设备
  • /dev/sd[a-z]:SCSI设备
  • /dev/fd[0-7]:软驱
  • /dev/md[0-31]:软raid设备
  • /dev/loop[0-7]:回环设备
  • /dev/ram[0-15]:内存
  • /dev/null:黑洞,丢进去的东西就再也找不到了
  • /dev/ttyS[0-3]:串口
  • /dev/tty[0-63]:虚拟终端
  • /dev/lp[0-3]:并口
  • /dev/console:控制台
  • /dev/fb[0-31]:framebuffer

块设备

用程序可以随机访问设备数据,程序可自行确定读取数据的位置。

硬盘、软盘和闪存都是典型的块设备,应用程序可以寻址磁盘上的任何位置进行数据读写。

sda1块设备属于块设备:

ubuntu@ubuntu-virtual-machine:~$ ls -l /dev/sda1
brw-rw---- 1 root disk 8, 1 4月  11 22:07 /dev/sda1

字符设备

提供连续的数据流,可以顺序读取,但通常不支持随机存取。

键盘和串口是常见的字符设备,只能顺序的读写数据。

tty串口设备属于字符设备:

ubuntu@ubuntu-virtual-machine:~$ ls -l /dev/tty
crw-rw-rw- 1 root tty 5, 0 4月  12 22:21 /dev/tty

相关推荐

宝塔免费的 SSL/TLS 证书如何续签

申请之前,请确保域名已解析,如未解析会导致审核失败(包括根域名)宝塔SSL申请的是免费版TrustAsiaDVSSLCA-G5证书,仅支持单个域名申请有效期1年,不支持续签,到期后需要重新申...

HTTPS、HTTP、TLS/SSL工作及握手原理、PKI/CA密钥体系

一、HTTPS与HTTP介绍二、TLS/SSL工作原理三、TSL/SSL握手过程四、HTTPS性能优化五、PKI体系一、HTTPS与HTTP介绍1.Https(SecureHypetextTran...

什么是SSL证书卸载 SSL证书卸载有什么作用

SSL证书是数字证书的一种,安装部署的话可以对网站起到身份验证和数据加密的作用。网站部署SSL证书,相对就必然会有SSL证书卸载,那么SSL证书卸载是什么呢?SSL证书卸载有什么作用?随着SSL通信量...

让SSL/TLS协议流行起来:深度解读SSL/TLS实现1

一前言SSL/TLS协议是网络安全通信的重要基石,本系列将简单介绍SSL/TLS协议,主要关注SSL/TLS协议的安全性,特别是SSL规范的正确实现。本系列的文章大体分为3个部分:SSL/TLS协...

苹果、谷歌、微软等一致同意!SSL/TLS证书最长有效期锐减至47天

快科技4月14日消息,苹果此前向CA/B论坛(负责管理SSL/TLS证书的行业组织)提议,将所有证书有效期缩短至45天。日前CA/B论坛服务器证书工作组投票通过SC-081v3提案,最终决定将SSL/...

Android怎么设置端口转发,将访问本设备的端口转到另外一台设备

一、Android系统怎么设置端口转发,将访问本设备的端口转到另外一台设备?要设置端口转发,您需要先在Android设备上安装一个支持端口转发的应用程序。其中一个常用的应用是"Termux&#...

大神级产品:手机装 Linux 运行 Docker 如此简单

本内容来源于@什么值得买APP,观点仅代表作者本人|作者:灵昱Termux作为一个强大的Android终端模拟器,能够运行多种Linux环境。然而,直接在Termux上运行Docker并不可行,需要...

关于H3C交换机的SSH功能配置方法(华三交换机ssh配置)

对于交换机的初步学习,作为初学者的我,还望诸位不吝赐教。若存在不足之处,烦请大家多提宝贵意见。同样身为初学者的我们,亦可携手共进,相互分享技术经验。一、本地用户配置(核心步骤)1.创建用户并设置密码...

Linux常用操作ssh(linux中的ssh命令)

ssh#p是小写ssh-p22user@hostsftp#连接sftp-P22root@host#将文件上传到服务器上:put[本地文件的地址][服务器上文件存储的位置]#将...

小白心得,如何使用SSH连接飞牛系统(fnos)?

一、背景作为一个刚接触飞牛系统的小白,在研究飞牛os的时候,发现很多功能都需要连接ssh,但是如何使用SSH连接飞牛系统成为入门飞牛os的一道坎。下面以自己的学习经历详细记录下过程吧。二、系统设置1、...

如何在 Windows 11 或 10 上使用 Winget 安装 OpenSSH

SSH(SecureShell)是大多数开发人员和系统管理员用来通过Linux远程连接托管服务器或任何云服务的工具,因为SSH在Linux中是内置的。然而,对于Windows呢?是的...

linux文件之ssh配置文件的含义与作用

ssh远程登录命令是操作系统(包括linux和window系统)下常用的操作命令,可以帮助用户,远程登录服务器系统,查看,操作系统相关信息。linux系统对于ssh命令有专门保存其相关配置的目录和文件...

害怕Linux SSH不安全?这几个小妙招安排上!

ssh是访问远程服务器最常用的方法之一,同时,其也是Linux服务器受到攻击的最常见的原因之一。不过别误会...我们并不是说ssh有什么安全漏洞,相反,它在设计上是一个非常安全的协议。但是安...

Linux系统突现未知端口连接?高级排查命令全解析

导语“服务器突然出现未知外连端口,流量监控显示异常数据传输!”——这是运维工程师最不愿面对的告警。据统计,2023年全球企业因异常端口通信导致的数据泄露事件中,68%的攻击者利用了未被监控的端口通道。...

内网穿透系列五:自建SSH隧道实现内网穿透端口转发,Docker部署

以下是对这个自建SSH隧道工具的简单介绍:一款基于OpenSSH构建的内网穿透与端口转发工具,通过SSH隧道技术实现支持所有TCP协议通信,包括SSH、HTTP、HTTPS等各类应用提供灵活部署方式,...

取消回复欢迎 发表评论: