Linux(更新中~)
以点(.)开头的在Linux下为隐藏文件
在Linux系统中,文件名以点(.)开头通常具有特殊的含义,这种文件通常被称为“隐藏文件”。隐藏文件在Linux系统中不会在普通的文件浏览器中显示,除非用户显式地设置文件浏览器显示隐藏文件。这种设计有助于隐藏系统和配置文件,以及其他用户可能不需要直接操作的文件,从而保持文件系统的整洁性和安全性。
在Linux系统中,以点开头的文件通常具有以下一些常见特点:
-
隐藏文件:文件管理器默认不显示以点开头的文件,这些文件对于用户来说是隐藏的。
-
配置文件:许多以点开头的文件是用来存储应用程序或系统的配置信息,如
.bashrc
、.gitignore
等。 -
临时文件:有时以点开头的文件用于存储临时数据,例如
.tmp
文件。 -
配置目录:类似于文件,以点开头的目录(如
.config
)也可以用来存储配置信息。
在Windows系统中,隐藏文件与Linux系统中以点开头的隐藏文件有些不同。Windows系统中隐藏文件的隐藏属性是通过文件属性中的“隐藏”属性来控制的。隐藏文件在Windows资源管理器中默认是不可见的,用户需要在文件夹选项中启用“显示隐藏的文件、文件夹和驱动器”选项才能看到这些隐藏文件。
隐藏文件在Windows系统中可以具有以下一些常见特点:
-
系统文件:一些系统文件和文件夹被设置为隐藏,以防止用户误删除或编辑这些关键文件,例如
boot.ini
。 -
临时文件:某些应用程序会生成临时文件,并将这些文件设置为隐藏,以避免用户手动修改或删除。
-
配置文件:类似于Linux系统,Windows系统中也有一些应用程序的配置文件被设置为隐藏,以防止用户意外编辑或删除这些文件。
如果您想查看在Windows系统中隐藏的文件,可以按照以下步骤操作:
-
通过资源管理器:
- 打开“文件资源管理器”。
- 点击顶部菜单中的“查看”选项。
- 在“显示/隐藏”区域中,勾选“隐藏项目”。
-
通过命令行:
- 使用
dir /a
命令来显示所有文件,包括隐藏文件。 - 使用
attrib
命令来查看和修改文件的属性,包括隐藏属性。
- 使用
attrib
是Windows命令行中一个用于修改文件属性的命令。通过attrib
命令,您可以查看和更改文件或目录的属性,包括隐藏属性、只读属性、系统属性等。
语法:
attrib [+R | -R] [+A | -A] [+S | -S] [+H | -H] [drive:][path]filename [/S [/D]]
参数:
+R
:设置只读属性。-R
:取消只读属性。+A
:设置存档属性。-A
:取消存档属性。+S
:设置系统文件属性。-S
:取消系统文件属性。+H
:设置隐藏属性。-H
:取消隐藏属性。[drive:][path]filename
:指定要处理的文件或目录。/S
:对指定目录中的所有文件执行操作。/D
:对目录进行操作。
示例用法:
-
查看文件属性:
attrib filename
-
设置文件为只读:
attrib +R filename
-
取消文件只读属性:
attrib -R filename
-
设置文件为隐藏:
attrib +H filename
-
取消文件隐藏属性:
attrib -H filename
-
将目录及其子目录下所有文件设置为只读:
attrib +R /S /D directory
通过attrib
命令,您可以方便地管理文件和目录的属性,包括设置只读、存档、系统和隐藏属性等。请注意,在使用该命令时要小心谨慎,确保不会对系统文件或重要文件造成意外更改。
创建一个空文件需要占有磁盘空间
在文件系统中,创建一个空文件实际上会占据一定的磁盘空间。即使文件内容为空,文件系统也需要分配一定的存储空间来存储文件的元数据(文件名、权限等)以及文件的大小信息。这个分配的空间通常称为“簇”或“块”。
在大多数现代文件系统中,文件系统以簇为单位来分配存储空间。即使文件内容为空,文件系统也会分配至少一个簇的空间来存储这个文件。这意味着即使文件非常小,也会占用一个最小簇的空间,这个簇的大小取决于文件系统的配置。
举例来说,如果文件系统的簇大小为4KB,那么一个大小为1KB的空文件也会占用4KB的磁盘空间。这是因为文件系统以簇为单位来分配空间,而不是以文件实际大小来分配。
因此,尽管空文件不包含实际数据,但在文件系统层面上,仍然需要分配一定的磁盘空间来存储文件的元数据和分配的簇。这也是为了维护文件系统的结构和元数据信息。
文件=文件内容数据+文件属性数据(元数据)
.,..
在计算机中通常有特殊含义:
-
.
:在文件系统中,.
代表当前目录,表示当前所在的目录。 -
..
:..
代表父目录,即当前目录的上一级目录。
路径分隔符
在 Linux 和 Windows 中,路径分隔符是不同的。
-
Linux 使用正斜杠
/
作为路径分隔符。例如:/home/user/Documents/file.txt
-
Windows 使用反斜杠
\
作为路径分隔符。例如:C:\Users\Username\Documents\file.txt
这种差异源于操作系统的设计和历史发展,而在不同操作系统上,路径分隔符的使用是为了指示文件的位置或路径。当编写代码或指定文件路径时,需要注意使用正确的路径分隔符,以确保程序在不同操作系统上的兼容性。
绝对路径与相对路径
绝对路径:绝对路径是文件或目录在文件系统中的完整位置,从根目录开始一直描述到目标文件或目录的路径。
相对路径:相对路径描述一个文件或目录相对于另一个参考位置的位置。这个参考位置可以是当前工作目录或另一个文件或目录
热点路径
"热点路径"通常指的是在一个系统或应用程序中频繁访问的路径,可以是文件系统中的文件路径或者网络中的地址路径。在性能优化和系统调优方面,关注和优化热点路径可以显著提高系统的性能和响应速度。
在软件开发或系统优化中,关注热点路径可能涉及以下方面:
-
磁盘 I/O:如果某些文件路径被频繁读取或写入,这些路径就成为热点路径。优化这些路径的访问方式、缓存机制或存储结构可以提高磁盘 I/O 性能。
-
网络请求:在网络应用程序中,某些接口或资源的访问频率较高,这些请求路径也可以被视为热点路径。对于这些路径,可以考虑使用缓存、CDN 加速或负载均衡等技术进行优化。
-
数据库查询:数据库中某些查询路径可能会被频繁执行,成为热点路径。通过索引优化、查询优化、缓存查询结果等方法可以改善数据库性能。
-
代码路径:在软件开发中,某些代码路径可能会被频繁执行,成为热点路径。通过代码优化、算法优化等方式提高这些路径的执行效率。
优化热点路径可以帮助系统更有效地利用资源,提高系统整体性能和响应速度。不同类型的系统可能有不同的热点路径,因此需要根据具体情况进行分析和优化。
ls 指令
语法: ls [选项][目录或文件]
功能:对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息。
常用选项:
-
-a
:列出目录下的所有文件,包括以.
开头的隐含文件。
例子:ls -a
-
-d
:将目录象文件一样显示,而不是显示其下的文件。
例子:ls -d directory_name
-
-i
:输出文件的i
节点的索引信息。
例子:ls -ai file_name
-
-k
:以k字节的形式表示文件的大小。
例子:ls -alk file_name
-
-l
:列出文件的详细信息。
例子:ls -l
-
-n
:用数字的UID
(用户标识)和GID
(组标识)代替名称。
例子:ls -n
-
-F
:在每个文件名后附上一个字符以说明该文件的类型。
例子:ls -F
-
-r
:对目录反向排序。
例子:ls -r
-
-t
:以时间排序。
例子:ls -t
-
-s
:在文件名后输出该文件的大小。
例子:ls -s
-
-R
:列出所有子目录下的文件(递归)。
例子:ls -R
-
-1
:一行只输出一个文件。
例子:ls -1
whoami指令
whoami
是一个常用的命令,用于显示当前登录用户的用户名。在 Linux 和 Unix 系统中,whoami
命令通常用于确定当前会话的用户身份。执行 whoami
命令后,系统会返回当前登录用户的用户名。
示例:
$ whoami
执行上述命令后,系统将显示当前用户的用户名,这有助于确认当前以哪个用户身份登录系统。
pwd指令
pwd
是一个常用的命令,用于显示当前工作目录的路径。在 Linux 和 Unix 系统中,pwd
命令通常用于确定当前所处的目录位置。
示例:
$ pwd
执行上述命令后,系统将返回当前工作目录的完整路径。
cd 指令
Linux系统中,磁盘上的文件和目录被组成一棵目录树,每个节点都是目录或文件。
语法:cd 目录名
功能:改变工作目录。将当前工作目录改变到指定的目录下。
cd ~:进入用户家目
cd -:返回最近访问目录
touch指令
语法:touch [选项] 文件名
功能:touch命令参数可更改文档或目录的日期时间,包括存取时间和更改时间,或者新建一个不存在的文件。
常用选项:
-a
、--time=atime
、--time=access
、--time=use
:仅更改存取时间。-c
、--no-create
:不创建任何文件。-d
:使用指定的日期时间,而不是当前时间。-f
:此选项在Linux中忽略不处理,仅解决BSD版本touch
命令的兼容性问题。-m
、--time=mtime
、--time=modify
:仅更改修改时间。-r
:将指定文件或目录的日期时间设置为与参考文件或目录的日期时间相同。-t
:使用指定的日期时间,而不是当前时间。
touch
是一个常用的命令,用于创建空白文件或者更新文件的访问和修改时间戳。在 Linux 和 Unix 系统中,touch
命令可以执行以下操作:
-
创建空白文件:如果指定的文件不存在,
touch
命令将创建一个空白文件。示例:
$ touch example.txt
-
更新文件时间戳:如果文件已经存在,
touch
命令将更新文件的访问时间和修改时间为当前时间。示例:
$ touch example.txt
-
指定时间戳:您还可以使用
-t
选项来指定要设置的时间戳。示例:
$ touch -t 202108291200 example.txt
使用 -r
选项将 file2.txt
的日期时间设置为与 file1.txt
相同:
$ touch -r file1.txt file2.txt
stat指令
stat
是一个在 Unix 和 Linux 系统中用于显示文件或文件系统状态的命令。stat
命令提供了有关文件的详细信息,包括文件的权限、类型、大小、时间戳等。
以下是 stat
命令的基本语法和一些常见用法:
-
基本语法:
stat [选项] 文件名
-
常见选项:
-c
:自定义输出格式。-t
:指定时间格式。-f
:显示文件系统状态而非文件状态。-L
:跟随符号链接。-x
:显示扩展文件系统信息。
-
示例用法:
-
显示文件详细信息:
$ stat filename
-
显示文件系统状态而非文件状态:
$ stat -f directoryname
-
显示扩展文件系统信息:
$ stat -x filename
-
自定义输出格式:
$ stat -c "File: %n Size: %s bytes"
-
mkdir指令
mkdir
是一个常用的命令,用于在 Unix 和类 Unix 系统中创建目录。下面是一些关于 mkdir
命令的基本用法和示例:
基本语法:
mkdir [选项] 目录名
常见选项:
-p
:递归创建目录,即如果上级目录不存在也一并创建。-m
:设置新建目录的权限模式。--mode
:设置新建目录的权限模式。-v
:显示创建的目录信息。
示例用法:
-
创建一个名为
mydir
的目录:mkdir mydir
-
递归创建目录
parent/child
:mkdir -p parent/child
-
创建一个目录并设置权限为
rwxr-xr--
:mkdir -m 754 mydir
-
创建目录并显示创建信息:
mkdir -v mydir
od
在Linux中,od
是一个命令行工具,用于以不同的格式查看文件的内容。od
代表"octal dump",即八进制转储。这个工具可以将文件内容以各种不同的格式(如八进制、十六进制、ASCII等)进行显示,通常用于查看文件的二进制数据或非文本文件的内容。
一般用法:
od [选项] [文件名]
常用选项:
-t
:指定输出格式,如-tc
表示以ASCII字符形式输出。-A
:指定显示的字符集,如-A n
表示使用 n 类字符集。-j
:跳过指定的字节数开始显示。-N
:显示指定的字节数。-b
:以八进制格式显示。-x
:以十六进制格式显示。-c
:以ASCII字符格式显示。-s
:跳过指定的字节数开始显示。
示例用法:
-
显示文件内容的十六进制格式:
od -x file.txt
-
显示文件内容的ASCII字符格式:
od -c file.txt
-
显示文件内容的八进制格式,每行显示16个字节:
od -t o1 -w16 file.txt
-
显示文件内容的八进制格式,跳过前100个字节:
od -j100 -t o1 file.txt
od
命令在处理二进制文件或者需要查看文件内容的原始数据时非常有用,可以帮助用户以不同的格式查看文件的内容,从而更好地理解文件的结构和内容。
objcopy
objcopy
是 GNU Binutils 软件包中的一个命令行实用工具。它用于复制和转换目标文件。这个工具允许您创建一个目标文件的副本,可能会在过程中更改其格式或其他属性。
以下是 objcopy
的基本用法示例:
objcopy [选项] 输入文件 输出文件
objcopy
的一些常见选项包括:
-O 格式
:指定输出格式(例如,binary
、ihex
、elf32-i386
)。--strip-all
:从输出文件中删除所有符号和重定位信息。--add-symbol
:向输出文件添加一个符号。--rename-section oldname=newname
:重命名一个节。
# 示例1: 复制二进制文件
objcopy -I binary -O binary input.bin output.bin
# 示例2: 移除调试信息
objcopy --strip-debug program_with_debug program_stripped
# 示例3: 添加新的段
objcopy --add-section .extra_data=data_file.bin executable.bin new_executable.bin
# 示例4: 删除特定段
objcopy --remove-section .debug_info program.elf program_no_debug.elf
# 示例5: 转换文件格式
objcopy -I ihex -O binary input.hex output.bin
objdump
objdump
是GNU Binutils工具包中的另一个实用程序,用于显示有关二进制目标文件的信息。它可以查看可执行文件、目标文件、共享库和核心转储文件的内容。objdump
可以显示二进制文件的各种信息,如目标文件的符号表、段的内容、反汇编代码等。
以下是一些常见用法和示例,说明如何使用objdump
命令:
示例1: 显示目标文件的符号表
objdump -t executable_file
示例2: 反汇编可执行文件
objdump -d executable_file
示例3: 显示目标文件的段内容
objdump -x executable_file
示例4: 显示核心转储文件的信息
objdump -p core_dump_file
示例5: 显示共享库的符号表
objdump -T shared_library
-a
或--archive-headers
:显示存档头信息-f
或--file-headers
:显示整体文件头内容-p
或--private-headers
:显示特定对象格式的文件头内容-h
或--[section-]headers
:显示节头内容-x
或--all-headers
:显示所有头部内容-d
或--disassemble
:显示可执行部分的汇编内容-D
或--disassemble-all
:显示所有部分的汇编内容
objdump
命令的 -s
选项用于显示目标文件的内容,包括指定节的十六进制和ASCII表示形式。
objdump
命令的 -S
选项用于显示源代码和汇编代码的混合输出。这个选项可以帮助您查看源代码和对应的汇编代码之间的关联。