linux下常见的命令
linux下常见的目录
概览
不同于 windows,在一切资源为文件的 linux 系统中,是以树结构来管理文件系统,根节点被称为根目录,用“/”表示

常见目录及功能

/sys 目录详解

偏向硬件和底层,专门用于提供与内核和硬件设备的交互,提供了内核对象及其属性的可视化界面,通常用于监控和管理硬件设备。
例如查看 cpu 的核心线程数量(13600kf:6 大核,4 小核,20 线程)可以访问:
1 | cd /sys/devices/system/cpu |
可以看到以下信息:

/proc 目录详解
面向进程/运行时统计信息

/bin 目录详解

usr:并不是 user 的缩写,而是 Unix System Resources ,代表 Unix 系统资源
目录 | 含义 | 包含 |
---|---|---|
/bin(binary) | 存放核心 OS 程序和脚本文件,一般是系统预装的程序 | cat,bash,ls,pwd 等 |
/user/bin | 存放用户程序的二进制文件,不是系统自带的程序,用户自己安装的发行版程序 | gcc,g++,git 等 |
/user/local/bin | 存放用户自己的可执行程序,不会被系统升级而覆盖同名文件,例如 gcc 之后的文件。 | |
/sbin | 存放 root 用户或者使用 sudo 权限的用户才能访问的程序或者命令 | ifconfig,shutdown,mount 等 |
存放于 bin 目录下的程序或者脚本是可以直接执行的,执行的顺序取决于环境变量中各个文件夹的前后顺序!

根据环境变量可知.如果这几个 bin 目录中有同一个可执行文件,他们的执行顺序会是:**/usr/local/bin > /sbin > /bin**
/etc 目录详解
存储系统配置文件和全局配置文件
系统配置文件:passwd 文件储存用户密码,group 文件存储用户自定义组信息,hosts 定义本地主机名字和 IP 地址的映射,ssh 存储与 ssh 服务相关配置文件等
全局配置文件:.bashrc 文件存储全系统的 bash 配置等
/run 目录详解

run
目录在 Linux 系统中通常位于根目录下 (/run
)。这个目录主要用于存储系统和进程的运行时数据,例如 PID 文件、套接字文件、锁文件等。
一些 run
目录的特点:
- 临时文件系统 (tmpfs):
/run
通常挂载为tmpfs
,这意味着它在系统启动时创建,并在系统关闭或重启后清空。 - 早期启动: 由于
/run
是在系统早期启动时创建的,所以它可以用于存储需要在其他文件系统挂载之前可用的临时文件。 - 权限和所有权: 只有 root 用户和特定服务或进程可以在
/run
目录中创建文件。
常见的子目录和文件:
/run/lock/
:锁文件目录,进程用来避免多个实例同时运行。/run/user/
:每个用户有自己的运行时目录,用于用户进程的临时文件。/run/systemd/
:Systemd 使用的一些运行时数据。
/home 目录详解
在 Linux 系统中,/home
目录是用户的主目录,存放每个用户的个人数据和配置文件。每个用户通常在 /home
目录下有一个独立的子目录,这个子目录以该用户的用户名命名。
一些特点和用途:
- 用户数据存储:用户的个人文件、文档、下载、图片、音乐等通常存储在他们的主目录下(例如
/home/username
)。 - 配置文件:用户配置文件(如桌面环境、应用程序的设置)通常保存在主目录中的隐藏文件夹或文件中。这些文件夹和文件的名称以
.
开头,例如.bashrc
、.config
等。 - 权限:每个用户通常只对自己的
/home/username
目录有完全的读写权限,而对其他用户的主目录没有权限,除非是系统管理员(root)用户。 - 分区:有些系统管理员在安装操作系统时会将
/home
分为一个单独的分区,这样在系统重装时可以保留用户的数据。
你可以通过 cd ~
或 cd /home/username
来切换到当前用户的主目录。
/root 目录详解
在 Linux 系统中,/root
文件夹是专门为 root 用户(超级用户)设置的主目录。与普通用户的主目录通常位于 /home/username
不同,root 用户的主目录位于系统的根目录下,即 /root
。
关键点:
权限限制:只有 root 用户或具有足够权限的用户才能访问和修改
/root
目录中的文件。普通用户默认无法访问这个目录。用途:root 用户可以在
/root
目录中存储自己的配置文件、脚本和数据,类似于普通用户在他们的主目录中保存个人文件的方式。**不要混淆
/
**:/root
目录不同于根目录/
,根目录是整个文件系统的起点,而/root
是 root 用户的个人主目录。
参考资料
linux下目录的操作
cd-切换目录
1 | $ man cd |
常用方式:
1 | $ cd # 切换到用户家目录 |
cd -:切换到上次的工作目录,通过 env 中的 OLDPWD 变量记录着工作目录的切换
mkdir-创建目录
1 | $ man mkdir |
常用方式:
1 | $ mkdir dir |
rmdir-删除空目录
rmdir
不同于 rm -r
只能用来删除空目录
1 | $ man rmdir |
常用方式:
1 | $ rmdir dir |
通配符
通配符:主要用于文件名匹配,功能简单,常用于操作系统的命令行(如 ls
、cp
)。常见的通配符包括:
*
:匹配任意长度的字符(包括零个字符)。?
:匹配单个字符。[abc]
:匹配括号内的任意一个单字符。[!abc]:不匹配括号内的任意一个字符
示例:
*.txt
匹配所有.txt
结尾的文件。file?.txt
匹配file1.txt
、file2.txt
等。
常用方式:
1 | #这是当前的目录结构 |
ls-查看目录项
1 | $ man ls |
常用方式:
1 | $ ls # 查看当前的工作目录 |
目录项详解
1 | $ ls -l |

第 1 列的第一个字母用来表示文件的类型:
-: 普通文件
d(directory): 目录
c(character): 字符设备文件(鼠标,键盘,显示器…)
b(block): 块设备文件(磁盘)
l(symbolic link): 符号链接
s(socket): 本地套接字
p(named pipe): 有名管道第 1 列后面九个字符(分为 3 组)表示权限。依次代表拥有者、拥有组和其他用户的读(r)、写(w)、执行(x)权限。可读则显示 r,可写则显示 w,可执行则显示 x, 没有相关权限则显示-。
第 2 列表示硬链接数。
第 3 列表示拥有者。
第 4 列表示拥有组。
第 5 列表示文件所占空间的大小。
第 6 列表示最近修改时间。
第 7 列为文件名
cp-复制文件或目录
1 | $ man cp |
常用方式:
1 | $ cp text1 text2 # 将text1复制到text2中;如果text2存在,则覆盖。 |
mv-移动文件
mv(move)命令可以用来移动文件和目录,我们也可以用 mv 命令来为文件和目录重命名。
1 | $ man mv |
move 为什么没有-r 选项,而 cp 却有?
移动操作(mv)本质上只是改变文件或目录的位置指针,而不涉及复制或删除文件内容。
复制操作(cp)需要复制目录中的所有内容,因此需要 -r 选项来递归复制。
常用方式:
1 | $ mv text1 text2 #将text2重命名为text1;如果text2存在则覆盖 |
rm-删除文件或目录
rm(remove)命令可以删除文件或目录
1 | $ man rm |
常用方式:
1 | $ rm text1 text2 text3 #删除text1,text2,text3 |
rm 删除的文件是无发找回的,请慎重使用
linux下的文件操作
touch-创建文件
linux 有很多创建文件的方法,最常见的有以下三种:
1 | $ echo "hello world!" > text #创建文件text,并且文件中包含内容“hello world” |
查找文件
which-查找可执行程序的路径
1 | $ man which |
常用方式:
1 | $ which bash # 查看bash的路径 |

which 查找的程序路径是和环境变量中 PATH [bin 目录的顺序](# /bin 目录详解)有关的,是 path 中的第一个路径
find-可以在一个目录中递归的查询符合指定要求的文件
1 | $ man find |
常用方式:
1 | $ find /usr/include/ ~/Code/filelearning/ -name "stdio.h" |

1 | $ find /dev/ -type b |

1 | $ find . -size 66M #找大小向上取整为66M的文件 |

1 | $ find /usr/include -name "stdio.h" # 在/usr/include目录下查找stdio.h文件 |
权限查找中的数字含义:$ find . -perm 777
1 | $ ls -l |
- 第 1 列后面九个字符(分为 3 组)表示权限。依次代表所属用户、同组用户和其他用户的读(r)、写(w)、执行(x)权限。可读则显示 r,可写则显示 w,可执行则显示 x, 没有相关权限则显示-。
可以用二进制来简易表示这些用户的所拥有的权限,1 代表有该权限,0 代表无该权限:
rwx rw- r– <==可写为==>111 110 100,
而三个二进制的数组成一个 8 进制的数,于是又可以改写为:
rwx rw- r– <==可写为==>111 110 100<==可写为==>746
所以 777<==可写为==>rwxrwxrwx,即所有用户都有读写执行该文件的权限,
$ find /dev -perm 777:查找可以被所有用户读写执行的文件
查看文件
cat-查看文件所有内容
1 | $ man cat |
常见用法
1 | $ cat /etc/passwd |
head-查看文件的前几行
1 | $ man head |
常见用法:
1 | $ head text1 #默认查看text1的前10行 |
tail-查看文件的后几行
1 | $ man tail |
常见用法:
1 | ##常规用法和head差不多,便不赘述 |

less/more-分屏浏览文件
1 | $ man more |
less 是 more 的升级版本,性能更好,不需要一次性加载所有的文件内容到内存中,有 less 选 less
常见用法:
1 | $ less text1 |
进入浏览界面后快捷键:
快捷键 | 含义 |
---|---|
f(forward) | 往后翻一页 |
b(backforword) | 往前翻一页 |
:n(next) | 查看下一个文件 |
:p(previous) | 查看上一个文件 |
q(quiet) | 退出查看模式 |
重定向
直白点讲就是把文件中的内容代替键盘输入到输入缓冲区中,把本该输出到屏幕上的输出缓冲区的内容写到文件中去。

通常我们借助重定向符号来完成这一功能,以下是缓冲区和其对应的符号

“>”,”2>”和“>>”,“>>”的区别:单符号”>”,”2>”表示覆盖文件中的内容,双符号“>>”,”2>>表示追加到文件中”去。
常见用法:
1 | $ ./isPrimes < input.txt #将input.txt中的数字代替键盘输入的数字 |
1 | //这是判断素数的函数 |
结果如下:
1 | yong@yongubuntu:~/桌面/code$ cat input.txt |
其他常用方法:
1 | $ who > users |
grep-搜索文件内容
grep(globally search for a regular expression)命令可以用于搜索文件内容,它的功能
非常强大!grep 命令会按正则表达式去搜索文件,如果文件中某一行匹配指定的正则
表达式,grep 命令则会显示这一行。
1 | $ man grep |
常见用法:
1 | $ grep -nE "God" Bible.txt #显示Bible.txt中包含God的行,并显示行号 |
grep通常会搭配正则表达式使用,这里有关于正则表达式的讲解
linux下命令的组合
1.先后顺序执行
格式如下:
1 | cmd1;cmd2;cmd3 |
示例:
1 | sudo mkdir dir;cd dir;touch file; |
2.前一个命令的输出是下一个命令的输入
格式如下:
1 | cmd1 | cmd2(管道) |
示例:
1 | $ history | tail -n 5 #显示最近5条命令 |
3.前一个命令的输出是下一个命令的参数
xargs
xargs:extended arguments,可以将标准输入里面的每一行转换成为命令的参数,通常搭配管道使用
使用方法
格式如下:
1 | cmd1 | xargs cmd2 |
示例1:
1 | $ ls -lh | xargs grep -nEc "9月" #统计当前目录下所有文件中包含“9月”的行数 |
示例2:
快速找到一个大型项目中的所有.cpp文件,并且找到main函数所在的行
1 | $ find . -name "*.cpp" | xargs grep -nE "\<main\(" |
- 本文作者: 迪丽惹Bug
- 本文链接: https://lyroom.github.io/2024/09/13/linux文件子系统/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!