在Linux中命令行管理文件和帮助

文化   2024-08-04 22:41   北京  


正文共:3888 字 19 图 预估阅读时间:5 分钟

1、命令行管理文件

Linux中,一切皆文件,文件就要有一定的组织方式,Linux是以树形组织文件:树的根(根目录)——>树枝(文件夹、目录)——>树叶(文件)。LSB(Linux Standards Base,Linux标准基础)是Linux标准库,在LSB下的FHS(Filesystem Hierarchy Standard,文件系统层次结构标准)规定了目录结构,也就是说所有Linux都要遵守这个标准。在这里与windows系统不同,windows系统是一个多树结构,一个磁盘相当于一个树的根,而在Linux中只有一棵树,如果有多个文件系统,就要将新文件系统挂在这棵树的一个树杈上,这个树杈将作为文件系统的入口。

文件有两类数据:

  • 元数据:用来描述文件特征的系统数据包含文件的属性信息,比如文件的权限、所有者、大小、创建时间等。通过元数据,系统可以识别和管理文件,不需要直接读取文件。

  • 数据:不同文件中实际数据的内容。

注意:目录是一种特殊文件,Linux中,文件名严格区分大小写,文件名不能包含“/”这个字符,文件名长度不能超过255个字符,以点(.)开头的文件都是隐藏文件。

1.1、目录结构

使用ls /查看根目录:

目录
介绍
/
根目录,所有的文件和目录,皆是由根目录延伸。
/boot
开机启动过程所需的文件,比如:内核文件,引导文件等,一般都在200M左右。
/opt
第三方应用程序的安装位置,兼容老程序系统附件就装在这个目录中。
/srv
系统自行管理的服务用到的数据。
/usr
universal shared,read-only data,全局共享只读数据目录。可独立分区编辑安装的第三方软件、共享的库,包括文件和静态只读程序数据。重要的子目录:usr/bin,用户命令;/usr/sbin,系统管理命令;/usr/local,第三方应用程序安装位置。
/etc
配置文件。
/var
动态变化的文件,如:数据库、缓存目录、日志文件等。
/run
自本次系统启动以来启动的进程的运行时数据,包括进程ID文件和锁定的文件等。此目录会在重启时重新创建。
/root
root用户的家目录。
/home
普通用户的个人数据和配置文件的主目录,每切换用户时,首先就是切换到用户的家目录,每个用户的家目录里面有这个用户特有的环境变量,可以用ls -a查看有四个.bash开头的文件,就是这个用户的环境变量。
/proc
用于输出内核和进程信息相关的虚拟文件系统放置的内存数据,不会占用磁盘空间,内存中有什么:1.系统开机时的硬件信息,比如CPU的信息:/proc/cpuinfo,内存信息:/proc/meminfo。2.进程信息,数字命名的文件都是进程的信息,数字代表这个进程的PID(Process ID,进程ID)。
/sys
用于输出当前系统上硬件设备相关信息的虚拟文件系统。
/tmp
临时文件目录。
/dev
设备文件目录。
/media
便携式移动设备挂载目录,比如:U盘,光盘。
/mnt
临时挂载文件系统或设备,当访问外部设备,会将该设备挂载到文件系统某个目录上,‘/mnt’就是一个常见的挂载点。
/bin
供所有用户使用的基本命令,不能独立分区,系统启动时会用到的程序。
/sbin
管理类的基本命令,不能独立分区,系统启动时会用到的程序。
/lib
基本共享库文件,以及内核模块文件。
/lib64
专用于64位系统上的共享库文件。

1.2、根据名称查找文件

根据一个路径定位一个文件在哪儿,路径又分为绝对路径和相对路径:绝对路径表示从根目录起始;相对路径表示从当前位置起始。

一个点表示当前目录:

ls ./

两个点表示上一级目录即父目录:

ls ../

返回到自己的家目录:

cd

返回上一次的工作目录:

cd

切换到父目录:

cd ..

切换到当前用户的家目录,如果指定用户,就切换到指定用户的家目录。

cd ~

注意:系统有两个变量来记录路径:PWD(Print Working Directory 记录当前路径),OLDPWD(Old Working Directory 记录上一次路径)。cd -,就是取OLDPWD这个变量的值。

1.3、目录的管理

1.3.1、ls

-l:输出权限、拥有者、拥有组、大小等详细信息。

在这里各个第一个字符含义为:-表示一个文件,d表示是一个目录,b表示块设备文件,c表示字符设备文件,l连接文件,s套接字文件,一般用于本地进程互相通讯。

-d:查看目录的信息。

-h:以可读的方式显示大小,按大小排序:-Sh。

-a:包含隐藏文件内在的所有文件,以点(.)开头的都是隐藏文件。

-R:递归,包含子目录的内容。

-t:按时间排序,时间越近越靠前,如果想反过,时间越久越靠前:-tr。

1.3.2、创建目录

mkdir

-p同时创建多级目录。

-m创建目录同时,给予权限,比如:mkdir -m 777 /tmp/tt

注意:创建目录时,一定要注意路径是否正确。

1.3.3、删除目录

rmdir

这个命令只能删除空目录,如果目录下有文件,必须先把必须把文件删除,才能删除目录。

rm -r

rm本意思是删除一个文件,递归删除,先删除目录下的子文件和子目录,再删除指定目标。

rm -rf

强制删除,不会做任何提示,很容易删错。

1.3.4、目录的移动

mv

在移动时,包括的子目录和子文件一起移动。

1.3.5、目录的复制

cp -r

将/bin下的jsj目录复制到/root:cp -r /bin/jsj /root/。

将目录及目录下的子文件和子目录一同复制,cp的本意是复制一个文件。

1.4、文件的管理

1.4.1、创建文件

touch

创建一个空文件,更新文件的时间戳为当前时间。

注意:一个目录或文件有三种时间,mtime文件内容被修改时间,ls -l查看的就是这个时间。

atime 文件最近一次被访问时间。

查看atime(Access Time文件访问时间)。

ls -l /tmp/f1 --time=atime

查看ctime(Change time 文件状态改变时间)当文件的元数据发生变化时,ctime会更新,不仅包括内容的修改,还有文件属性的更改。time更新不代表文件内容被修改了。

ls -l /tmp/f1 - -time=ctime

获取文件的元数据,包括三个时间,分别是Access(文件访问时间),Modify(文件内容修改时间),Change(文件状态改变时间)。

stat /tmp/f1

1.4.2、查看文件

统计文件行数、单词数、字符数:

wc

-l:只统计行数,-w:单词数,-c:字符数。

  • 按字母排序输出:

sort /etc/passwd

-r,反序输出,-f,忽略大小写,-t字段分隔符,-k指定字段为标准排序,-n按数值大小排序,-u排序后去除重复。

  • 去重但不进行排序

uniq

-c,显示每行重复出现的次数。

-d,仅显示重复过的行。

-u,仅显示不曾重复的行。

  • 把文件内容全部输出,加-n选项,显示行号。

cat

输出文件的换行符:cat -E

反向查看文件:tac

  • more

空格往尾部翻一屏,b往首部翻一屏,enter往尾部翻一行,不能往上翻行,more还带有搜索功能,/搜索关键字,n下一个关键字,N上一个关键字。

  • less

less用法和more类似,不同的是,less可以循环方式查看文件。

j往下翻往上一行,k翻一行,g跳到文件首部,G跳至文件尾部。

  • head默认显示文件的前10行,-n选项可以指定只显示第几行。

只显示第一行head -n 1

tail:只显示文件的后10行,也可以用-n选项指定行数。

tail -f:跟踪显示文件新追加的内容。

1.4.3、复制文件

cp 复制多个文件,最后一个参数必须为目录。

1.4.4、移动文件

mv

移动一个文件,也可以用作重命名一个文件。

1.4.5、删除文件

rm

rm file

1.4.6、其他工具

通过探测文件内容判断文件类型,使用权限为所有用户。

file

-v:在标准输出后显示版本信息,并且退出。

-z:探测压缩过的文件类型。

-L:允许符合链接。

-f name:从文件namefile中读取要分析的文件名列表。

注意:file能识别的文件类型有目录、Shell脚本、二进制可执行文件、文本文件等,不能探测包括图形、音频、视频等多媒体文件类型。

  • diff

用于两个文件之间的比较,并指出两者的不同,使用权限为所有用户。

-a:将所有文件当作文本文件处理。

-b:忽略空格造成的不同。

-c:使用纲要输出格式。

-l:忽略大小写的变化。

1.5、通配符

通配符,用于匹配符合相关条件的符号,一般用来匹配文件名和路径。

通配符是由shell处理的,它只会出现在命令的“参数”里。当shell在参数中遇到通配符时,shell会将其当作路径或文件名去搜寻可能的匹配:若符合要求的匹配存在,则进行代换(路径扩展);否则将该通配符作为一个普通字符传递给“命令”,然后由命令行处理。

通配符
解释
?
匹配一个任意字符
[ ]
匹配括号中列出的字符中的任意一个
{ }
匹配指定字符中的任意单个字符
[0-9]
匹配0-9中间任意一个字符
[1,3]
逗号表示只匹配1或3
[!1]
叹号表示非
[^1]
和叹号意思一样
[a-z A-Z]
表示任意一个大小写字母
{1,3}
逗号表示只匹配1或3
{1..3}
..表示匹配1到3这个范围内的任意一个

注意:通配符看起来和正则表达式很像,其实不同,通配符是shell识别的特殊字符,且只有* 、? 、[ ] 、{ }这4种。

1.5.1、字符合集

字符集
解释
[:space:]
空白字符,包括空白字符、tab制表符,换页
[:punct:]
所有标点符号
[:lower:]
所有小写字母
[:upper:]
所有大写字母
[:alpha:]
所有大小写字母
[:digit:]
所有数字0-9
[:alnum:]
所有数字和大小写字母

注意:字符集的中括号“[ ]”,不是通配符,如果要匹配,还要在外面再加一个[ ]。

1.5.2、实例

查看mnt目录下,f开头,后面跟一个数字的文件:

ls /mnt/f[0-9]
ls /mnt/f[[:digit:]]

批量创建文件:

touch /mnt/f{1..10}

查看f开头,后面跟了1或2的文件:

ls /mnt/f{1,2}

2、帮助

2.1、内部命令

help command

2.2、外部命令

  • command --help

  • command -h

  • man 手册

  • Info信息

  • 程序自带的文档:readme、install等

  • 程序官方文档

  • 百度、谷歌

2.3、help

2.3.1、内部命令

查看echo命令帮助:

help echo

2.3.2、外部命令

查看ls命令的简单帮助,详细帮助要用man,/bin目录下面都是外部命令。

ls --help

2.3.3、帮助信息格式

[ ]
表示可选
表示同一内容可以多次出现
|
表示多选一
<>
表示必选

2.4、man帮助手册

每个程序,都有帮助文档,但大量的文档,会占用大量的空间,所以需要压缩,man手册就是压缩过的程序文档。

man手册的配置文件,指定了man命令搜索路径。

cat /etc/man.config

man总共分为9个章节,主要是1、5章节

man命令以less方式打开帮助手册。

章节
作用
man 1
用户命令
man 2
系统调用
man 3
库函数调用
man 4
设备文件和特殊文件
man 5
配置文件
man 6
游戏
man 7
协议、标准等
man 8
系统管理和特权命令,比如磁盘分区命令。
man 9
Linux内核API(内核调用)

2.4.1、搜索关键字

精准匹配read,进行搜索。

whatis,有一个数据库,可将系统上所有的帮助手册与之对应的关键字创建为一个数据库,命令就是从它的数据库中查询数据。

mkwhatis,手动创建数据库。

whatis read : 默认,系统有一个计划任务,自动创建这个数据库。

apropos read和whatis的区别,apropos模糊匹配,也是在whatis数据库中搜索。

man -f read 等价于whatis read。

man -k read 等价于apropos read。

例:查找passwd这个文件的帮助,passwd既是一个命令又是一个配置文件,如果直接man passwd,会从第一章往后查找,一直到找到为止,然而在第一章命令章节里,就有passwd,所以这样找到的passwd这个命令的帮助。如果查找passwd这个配置文件的帮助:man 5 passwd

在第一章的sslpasswd帮助中,有一个passwd命令。

man -f passwdman 5 passwd

如果是最小化安装,passwd(5)可能没有。

2.5、info

info命令比man命令更加详细,但一般很少用。

它会将三个passwd的帮助合并显示。

info passwd

2.6、程序的自身文档

安装软件时,会在/usr/share/doc目录下创建一个以程序名命名的目录,然后把自己的说明文档和使用方法文档放在该目录下,也可到相应程序的官方网站查看相应的官方文档。

通过firefox浏览器查看http程序文档:

Firefox file:///usr/share/doc/httpd-2.4.6

2.7、官方文档

http://access.redhat.com/documentation/en-us/https://wiki.centos.org/zh/Documentation

2.8、google用法

2.8.1、双引号

把搜索词放在双引号中,代表完全匹配搜索,也就是说搜索结果返回的页面包含双引号中出现的所有的词,连顺序也必须完全匹配。

2.8.2、fileytpe

用于搜索特定的文件格式。

如:linux filetype:pdf

2.8.3、site

用来搜索某个域名下所有的文件。

如:echo site:centos.org

长按二维码
关注我们吧

--推荐阅读--

访问Liunx命令行

铁军哥
高级网络规划设计师,中国电信高级技术规划工程师,天翼云认证高级解决方案架构师,H3C认证网络工程师。 继续加油,努力传播知识,影响更多人!
 最新文章