linux---文件系统与目录结构、目录操作、输入输出

linux—文件系统与目录结构、目录操作、输入输出

文件目录结构

  • 文件和目录被组织成一颗倒置的树状结构
  • 文件系统从根开始, “/”
  • 文件名严格区分大小写
  • 隐藏文件以“.”开头
  • 路径的分隔符为“/”,正斜杠

文件命名规范

  • 文件字符最长为255个字符
  • 包括路径在内文件名最长为4095个
  • 颜色表示
    • 蓝色:文件夹或目录
    • 绿色:可执行文件
    • 红色:压缩文件
    • 蓝绿色:链接文件
    • 灰色:其他文件
    • 白色:文件
  • 文件名:除了斜杠和NULL其他的所有字符都可以使用。
  • 对大小写敏感

文件系统结构

  • /boot:引导文件的存放位置,内核文件、引导加载器都在这里。
  • /bin:所有的用户都可以使用的命令
  • /sbin:管理类的命令
  • /lib:启动时程序使用的基本库文件,以.so结尾
  • /lib64:专门存放X86_64系统上的辅助库文件
  • /etc:存放配置文件的目录
  • /home/username:普通用户的家目录
  • /root:管理员的家目录
  • /media:便携式移动设备的挂载点
  • /mnt:临时文件的挂载点
  • /dev:设备文件和特殊文件的存放位置
  • /opt:第三方的安装应用
  • /tmp:存放临时文件
  • /usr:存放安装程序
  • /var:存放经常变化的文件,比如日志
  • /proc:存放内核启动和进程相关的虚拟文件
  • /sys:输出当前系统上的硬件相关的一些文件
  • /srv:系统上允许的服务用到的数据

Linux应用程序的组成

  • 二进制文件
    • /bin
    • /sbin
  • 库文件
    • /lib
    • /lib64
  • 配置文件
    • /etc
    • /etc/name
  • 帮助文件
    • /usr/share/man
    • /usr/share/doc

绝对路径和相对路径

  • 绝对路径
    • 以根开始
    • 完整的文件的存放位置
    • 可以读取到任何一个文件
  • 相对路径
    • 不以根开始
    • 相对于当前的位置来决定的
    • 可以简短的表示一个文件或者文件夹
    • .当前目录
    • …父级目录、

目录名和基名

[root@localhost ~]# basename /etc/sysconfig/network-scripts/ifcfg-ens33 
ifcfg-ens33
[root@localhost ~]# basename /etc/sysconfig/network-scripts
network-scripts
[root@localhost ~]# dirname /etc/sysconfig/network-scripts/ifcfg-ens33 
/etc/sysconfig/network-scripts
[root@localhost ~]# dirname /etc/sysconfig/network-scripts
/etc/sysconfig

切换目录

  • cd 切换目录 change directory

    • 可以使用相对路径
    • 可以使用绝对路径
  • cd 切换到家目录

  • cd - 回到上一次的目录

  • pwd 显示当前的工作目录

  • # 查看链接的真正目录
    [root@localhost lib]#pwd -P
    /usr/lib
    

列出目录或文件

ls list

ls -a   显示所有文件
ls -l 	以长文件格式显示文件列表
[root@localhost lib]#ls -l
total 48
drwxr-xr-x.  3 root root    18 Dec  7 03:36 alsa
权限 硬盘的引用次数 属主 属组   大小  访问时间     文件名称
ls -R 	递归显示目录
ls -d	显示目录本身
ls -1	(数字1)文件分行显示
ls -S	按照文件的大小排序
ls -r 	倒序显示
ls -t	按照时间来排序
ls -lh	显示人类易读的方式
ls -d	显示当前目录下的文件夹
l.		只显示隐藏文件

linux下的目录类型

  • -用来表示文件
  • d用来表示目录
  • b块设备
  • c字符设备
  • l表示符号链接文件
  • s套接字socket

查看文件的状态

stat 'filename'

touch创建文件

touch a		创建一个空文件和刷新时间,有就只刷新修改时间,如果没有就创建
touch -a a  只修改访问时间和改动时间
touch -m a  修改修改时间和改动时间

文件通配符

  • *所有
  • ?1个
  • ~表示用户的家目录
  • [123] 其中一个
  • [^123] 取反
  • [0-9] 表示数字
  • [a-z] 字母(有坑)缺少Z
  • [A-Z] 缺少a
  • [:lower:] 小写字母
  • [:upper:] 大写字母
  • [:alpha:] 所有字母
  • [:alnum:] 字母和数字

创建删除目录

mkdir  filename   创建目录
mkdir -p filenameA/B/C   递归创建
mkdir -pv filenameA/B/C   递归创建  -v显示详细过程
# 显示目录树
yum install -y tree

tree  显示目录树
tree -d  只显示文件夹
tree -L 2  只显示2层

rmdir  只能删除空目录
rmdir -p 递归删除  只能删除空的父目录
rmdir -pv 递归删除  只能删除空的父目录 -v显示详细过程

rm -rf 删除非空目录

复制文件和文件夹

cp copy 默认情况下时别名,原来本身命令时不提示覆盖的

cp --help
Usage: cp [OPTION]... [-T] SOURCE DEST
  or:  cp [OPTION]... SOURCE... DIRECTORY
  or:  cp [OPTION]... -t DIRECTORY SOURCE...

cp a b  把acopy到b
-i  显示提示信息
-n  不覆盖
-r/-R  递归复制
-b  备份原来的文件
-p  保留原来的属性
  • 如果源文件是文件的话
    • 目标是文件
      • 目标文件不存在,则新建目标文件,并把内容写道目标文件中
      • 如果目标文件存在,直接覆盖
    • 目标是文件夹
      • 在文件夹中新建一个同名文件,并把文件写到文件中
  • 如果源文件是多个文件的话
    • 目标必须是个文件夹,文件夹必须存在,其他情况都会报错

移动

mv move

Usage: mv [OPTION]... [-T] SOURCE DEST
  or:  mv [OPTION]... SOURCE... DIRECTORY
  or:  mv [OPTION]... -t DIRECTORY SOURCE...
mv a b
-i 		提示
-b 		备份
-f 		强制
-v 		显示过程

删除

rm remove

Usage: rm [OPTION]... FILE...
Remove (unlink) the FILE(s).

rm file
-r	递归删除
-f	强制
rm -rf  慎用

链接

软链接

  • 相当于windows的快捷方式
  • 创建的命令 ln -s f1 f2 给f1创建一个链接f2
  • 源文件改变它也会随着改变
  • 源文件删除,他也没了

硬链接

  • ln f1 f2
  • 磁盘引用次数会发生变化
  • 指向的是硬盘上的同一块区域
  • 不能对目录做硬链接
  • 源文件改变它也会随着改变
  • 源文件删除,它还可以用

file 查看文件的类型

输入和输出

  • 标准输入 默认是来自键盘的输入 stdin 0
  • 标准输出 默认输出到终端窗口 stdout 1
  • 标准错误输出 默认输出到终端窗口 stderror 2

I/O重定向

> 覆盖

  • >将标准输出重定向到文件中
  • 2> 将错误输出到重定向文件中
  • &> 将所有的输出到重定向文件中

禁止、允许覆盖

  • 禁止覆盖set -C
  • 允许覆盖set +C

>> 追加

  • >>将标准输出追加到文件中

  • 2>>

  • &>>

分开保存

ls f sdas > log.log 2> error.log

合并所有的输出

  • &>覆盖重定向
  • &>>追加重定向
  • ls f dsadas > r 2>1 相当于 &>
  • (command1;command2)2> f1 多个错误输出到一个文件
  • /dev/null 黑洞

< 输入

从文件导入stdin

tr 字符替换

tr 'a-z' 'A-Z'  小写换大写
tr -t abc 12    -t截断  abc 替换为12c
tr abc 12       abc替换为122
tr -d abc       -d 删除abc
tr -s a         -s 去重
tr -sc a        -c 取反

处理完成后 不能协会源文件,要写到新的文件中。

多行发送给stdin

# 方式2
cat > f1
dsada
dasda
dsadas

# 方式2
cat > f2 <<EOF
>dasdas
>dasdas
>EOF
EOF不是必须的,可以自己随便写,两次相同即可

管道

管道使用“|”来表示

命令1|命令2|命令3

  • 把命令1的输出当命令2的输入
  • 把2的输出当3的输入
  • 默认情况只能传输标准输出,如果像输出错误信息则需要加上 |&
  • 一般用来组合多个命令
  • 有一些命令是不接受管道的
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Linux Socket服务器端编程实例 例:建立一个Linux TCP服务器,等待客户端的连接请求,一旦接收到客户端请求,将客户端的IP地址和端口号打印出来,并且向客户端发送"Hello!Socket communication world!"字符串,然后关闭服务器。 0 Linux-Socket-服务器编程实例全文共13页,当前为第1页。 Linux Socket服务器端编程实例 Socket服务器编程中的头文件 #include<stdlib.h> stdlib 头文件即standard library标准库头文件。 该文件包含了的C语言标准库函数的定义,常用的函数如malloc()、calloc()、realloc()、free()、system()、atoi()、atol()、rand()、srand()、exit()等等。 1 Linux-Socket-服务器编程实例全文共13页,当前为第2页。 Linux Socket服务器端编程实例 #include<stdio.h> stdio 就是指 "standard input & output"(标准输入输出),所以,源代码中如用到标准输入输出函数时,就要包含这个头文件! 例如c语言中的 printf("%d",i); scanf("%d",&i);等函数。 2 Linux-Socket-服务器编程实例全文共13页,当前为第3页。 Linux Socket服务器端编程实例 #include<errno.h> 提供错误号errno的定义。查看错误代码errno是调试程序的一个重要方法。当linux C api函数发生异常时,一般会将errno变量(需include errno.h)赋一个整数值,不同的值表示不同的含义,可以通过查看该值推测出错的原因。 3 Linux-Socket-服务器编程实例全文共13页,当前为第4页。 Linux Socket服务器端编程实例 #include<string.h> string.h是预先定义好的函数库头文件,里面定义了一些字符串函数,如bzero等,添加这个头文件后才可以使用和字符串相关的操作函数 4 Linux-Socket-服务器编程实例全文共13页,当前为第5页。 Linux Socket服务器端编程实例 #include<netdb.h> Unix和Linux特有的头文件,主要定义了与网络有关的结构、变量类型、宏、函数等。所以在进行Socket网络编程时,必须要包含这个头文件。 5 Linux-Socket-服务器编程实例全文共13页,当前为第6页。 Linux Socket服务器端编程实例 #include<sys/types.h> 在应用程序源文件中包含 <sys/types.h> 以访问 整型、长整型和指针数据模型的定义。所有这些类型在 32位编译环境中保持为 32 位值,并会在64位编译环境中增长为 64 位值。 6 Linux-Socket-服务器编程实例全文共13页,当前为第7页。 Linux Socket服务器端编程实例 #include<netinet/in.h> 数据结构sockaddr_in就定义在这个头文件中。 #include<sys/socket.h> 这个头文件提供socket函数及相关数据结构 7 Linux-Socket-服务器编程实例全文共13页,当前为第8页。 Linux Socket服务器端编程实例 main函数中的参数 在Linux C语言中,main函数通常写作以下形式: int main(int argc,char *argv[]) 其中的两个参数argc和*argv[]是什么含义呢? 8 Linux-Socket-服务器编程实例全文共13页,当前为第9页。 Linux Socket服务器端编程实例 argc:命令行总的参数的个数,即argv中元素的个数。 *argv[ ]:字符串数组,用来存放指向字符串参数的指针数组,每一个元素指向一个参数。 9 Linux-Socket-服务器编程实例全文共13页,当前为第10页。 Linux Socket服务器端编程实例 argv[0]:指向程序的全路径名。 argv[1]:指向在DOS命令行中执行程序名后的第一个字符串。 argv[2]:指向第二个字符串。 … … 10 Linux-Socket-服务器编程实例全文共13页,当前为第11页。 Linux Socket服务器端编程实例 比如编译好的程序为my.exe 在命令行执行 my.exe 1 2 3 那argc就是4,argv[0]是"my.exe",argv[1]是"1",argv[2]是"2",argv[3]是"3"; 11 Linux-Socket-服务器编程实例全文共13页,当前
好的,我会根据我的理解为你解释一下Linux-4.9.88/drivers/pinctrl文件下的目录结构和各个文件的作用。 该目录结构主要包含以下几个目录和文件: 1. core.c:这是pinctrl子系统的核心文件,它实现了pinctrl的核心功能,如pin配置、pinmux配置、GPIO控制等。 2. devicetree.c:该文件实现了从设备树中解析出GPIO和pinmux配置信息的功能。 3. pinconf.c:该文件实现了pin的配置功能,包括配置输入/输出模式、上拉/下拉电阻等。 4. pinconf-generic.c:该文件实现了通用的pin配置功能,包括配置输入/输出模式、上拉/下拉电阻等。 5. pinmux.c:该文件实现了pinmux的配置功能,包括配置多个设备之间的pin复用关系。 6. pinctrl-bcm2835.c:该文件是一个具体平台的pinctrl驱动程序,它实现了针对BCM2835芯片的pinctrl控制。 7. pinctrl-single.c:该文件实现了针对单个GPIO控制器的pinctrl控制,用于不支持多个GPIO控制器的平台上。 8. pinctrl-gpio.c:该文件实现了GPIO控制功能,包括GPIO的配置、读取和写入等。 9. pinctrl-nomadik.c:该文件是一个具体平台的pinctrl驱动程序,它实现了针对ST-Ericsson Nomadik平台的pinctrl控制。 总的来说,Linux-4.9.88/drivers/pinctrl文件下的目录结构主要是为了支持pinctrl子系统的各种功能而设计的,包括pin配置、pinmux配置、GPIO控制等。其中,各个文件的作用分别是实现了pinctrl的核心功能、从设备树中解析出GPIO和pinmux配置信息、pin的配置、通用的pin配置功能、pinmux的配置功能、具体平台的pinctrl驱动程序等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大聪明Smart

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值