Linux's directory structure
< Linux's directory structure - 1.2 >
As you may have noticed, Linux organizes its files differently from Windows. First the directory structure may seem unlogical and strange and you have no idea where all the programs, icons, config files, and others are. This tuXfile will take you to a guided tour through the Linux file system. This is by no means a complete list of all the directories on Linux, but it shows you the most interesting places in your file system.
Author: Nana Långstedt < nana.langstedt at gmail.com >
tuXfile created: 18 January 2002
Last modified: 22 September 2005
< / >
The root directory. The starting point of your directory structure. This is where the Linux system begins. Every other file and directory on your system is under the root directory. Usually the root directory contains only subdirectories, so it's a bad idea to store single files directly under root.
Don't confuse the root directory with the root user account, root password (which obviously is the root user's password) or root user's home directory.
< /boot >
As the name suggests, this is the place where Linux keeps
information that it needs when booting up. For example, this is where
the Linux kernel is kept. If you list the contents of /boot
, you'll see a file called vmlinuz
- that's the kernel.
< /etc >
The configuration files for the Linux system. Most of these files are text files and can be edited by hand. Some interesting stuff in this directory:
/etc/inittab
A text file that describes what processes are started at system bootup
and during normal operation. For example, here you can determine if you
want the X Window System to start automatically at bootup, and
configure what happens when a user presses Ctrl+Alt+Del.
/etc/fstab
This file contains descriptive information about the various file
systems and their mount points, like floppies, cdroms, and so on.
/etc/passwd
A file that contains various pieces of information for each user account. This is where the users are defined.
< /bin, /usr/bin >
These two directories contain a lot of programs (binaries, hence the directory's name) for the system. The /bin
directory contains the most important programs that the system needs to operate, such as the shells, ls
, grep
, and other essential things. /usr/bin
in turn contains applications for the system's users. However, in some
cases it really doesn't make much difference if you put the program in /bin
or /usr/bin
.
< /sbin, /usr/sbin >
Most system administration programs are stored in these directories. In many cases you must run these programs as the root user.
< /usr >
This directory contains user applications and a variety of other
things for them, like their source codes, and pictures, docs, or config
files they use. /usr
is the largest directory on a Linux system, and some people like to have it on a separate partition. Some interesting stuff in /usr
:
/usr/doc
Documentation for the user apps, in many file formats.
/usr/share
Config files and graphics for many user apps.
/usr/src
Source code files for the system's software, including the Linux kernel.
/usr/include
Header files for the C compiler. The header files define structures
and constants that are needed for building most standard programs. A
subdirectory under /usr/include
contains headers for the C++ compiler.
/usr/X11R6
The X Window System and things for it. The subdirectories under /usr/X11R6
may contain some X binaries themselves, as well as documentation,
header files, config files, icons, sounds, and other things related to
the graphical programs.
< /usr/local >
This is where you install apps and other files for use on the local machine. If your machine is a part of a network, the /usr
directory may physically be on another machine and can be shared by
many networked Linux workstations. On this kind of a network, the /usr/local
directory contains only stuff that is not supposed to be used on many
machines and is intended for use at the local machine only.
Most likely your machine isn't a part of a network like this, but it doesn't mean that /usr/local
is useless. If you find interesting apps that aren't officially a part of your distro, you should install them in /usr/local
. For example, if the app would normally go to /usr/bin
but it isn't a part of your distro, you should install it in /usr/local/bin
instead. When you keep your own programs away from the programs that
are included in your distro, you'll avoid confusion and keep things nice
and clean.
< /lib >
The shared libraries for programs that are dynamically linked. The shared libraries are similar to DLL's on Winblows.
< /home >
This is where users keep their personal files. Every user has their own directory under /home
,
and usually it's the only place where normal users are allowed to write
files. You can configure a Linux system so that normal users can't even
list the contents of other users' home directories. This means that if
your family members have their own user accounts on your Linux system,
they won't see all the w4r3z you keep in your home directory. ;-)
< /root >
The superuser's (root's) home directory. Don't confuse this with the root directory (/) of a Linux system.
< /var >
This directory contains variable data that changes constantly when the system is running. Some interesting subdirectories:
/var/log
A directory that contains system log files. They're updated when the
system runs, and checking them out can give you valuable info about the
health of your system. If something in your system suddenly goes wrong,
the log files may contain some info about the situation.
/var/mail
Incoming and outgoing mail is stored in this directory.
/var/spool
This directory holds files that are queued for some process, like printing.
< /tmp >
Programs can write their temporary files here.
< /dev >
The devices that are available to a Linux system. Remember that in
Linux, devices are treated like files and you can read and write devices
like they were files. For example, /dev/fd0
is your first floppy drive, /dev/cdrom
is your CD drive, /dev/hda
is the first IDE hard drive, and so on. All the devices that a Linux kernel can understand are located under /dev
, and that's why it contains hundreds of entries.
< /mnt >
This directory is used for mount points. The different physical storage devices (like the hard disk drives, floppies, CD-ROM's) must be attached to some directory in the file system tree before they can be accessed. This attaching is called mounting, and the directory where the device is attached is called the mount point.
The /mnt
directory contains mount points for different devices, like /mnt/floppy
for the floppy drive, /mnt/cdrom
for the CD-ROM, and so on. However, you're not forced to use the /mnt
directory for this purpose, you can use whatever directory you wish.
Actually in some distros, like Debian and SuSE, the default is to use /floppy
and /cdrom
as mount points instead of directories under /mnt
.
< /proc >
This is a special directory. Well, actually /proc is just a virtual directory, because it doesn't exist at all! It contains some info about the kernel itself. There's a bunch of numbered entries that correspond to all processes running on the system, and there are also named entries that permit access to the current configuration of the system. Many of these entries can be viewed.
< /lost+found >
Here Linux keeps the files that it restores after a system crash or when a partition hasn't been unmounted before a system shutdown. This way you can recover files that would otherwise have been lost.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本