Skip to content
GitHub

Linux File

位置全称说明
/etcConfiguration Files系统和软件的配置文件
/usrUnix Software Resource应用程序默认安装位置
/devDevice Files系统外围设备
/mntMount Directory空目录, 用于临时挂载文件系统
/binUser Binaries所有用户可用的基本命令
/homeHome Directories普通用户的主目录
/procProcess Information虚拟文件系统, 以映射系统与进程在内存中的信息
位置说明
/etc/environment任意用户打开命令行加载, 系统环境变量
/etc/profile任意用户打开命令行加载
/etc/bash.bashrc任意用户打开命令行加载
~/.profile当前用户打开命令行时执行的文件
~/.bashrc当前用户打开 bash 命令行时执行的文件
/etc/ssh/sshd_configssh 服务配置文件
/etc/apt/source.list(Ubuntu) apt 下载源文件
/var/cache/apt/archives/(Ubuntu) apt 下载包安放位置
/ect/rc.d/rc.local系统启动时执行的文件(centos, redhat)

以树状结构展示指定目录下的所有文件和子目录

 $ tree <path>                                   # 显示目录的树状层级图

 > Zip/
   ├── targe.tar.gz
   └── main.sh

 > 0 directories, 2 files

 $ tree -a                                       # 显示所有隐藏文件
 $ tree -d                                       # 仅显示目录不显示文件
 $ tree -f                                       # 树状图显示绝对路径

pwd: print working directory dir: directories

显示当前绝对路径

 $ pwd                                           # 显示当前路径
 > /root/Desktop

 $ dirs                                          # 显示当前路径
 > /root/Desktop

 $ echo $PWD                                     # 当前路径的全局变量
 > /root/Desktop

list files 显示当前路径下的文件及目录

 $ ls                                            # 显示当前目录下所有文件及目录
 $ ls -a                                         # --all 额外显示隐藏文件及目录
 $ ls -l                                         # 使用长格式显示文集及目录详细信息
 $ ls -R                                         # --recursive 递归显示所有子目录
 $ ls -S                                         # sort 根据文件大小排序

 $ ls -alS                                       # 参数可无顺序合并, 结果按参数显示
 > total 40
 > drwxr-xr-x 10 root root 4096 Feb 27 20:44 .
 > drwx------ 14 root root 4096 Feb 27 20:35 ..
 > drwxr-xr-x  3 root root 4096 Oct 24 20:33 Blog

显示文件信息

 $ file <file>                                   # 显示文件类型
 $ file main.py
 > main.py: Python script, ASCII text executable # 文件名, 类型, 编码类型

change directory 切换工作路径

 $ cd <path>                                     # 切换到 <path> 目录

 $ cd ..                                         # 返回上级目录
 $ cd -                                          # 回到上次所有在目录

 $ cd folder                                     # 目录必须存在, 否则切换失败
 > bash: cd: folder: No such file or directory

make directories 创建目录

 $ mkdir <dir>                                   # 创建目录
 $ mkdir -v 1st 2nd 3rd                          # 创建多个文件夹, 并显示过程
 > mkdir: created directory '1st'
 > mkdir: created directory '2nd'
 > mkdir: created directory '3rd'

 $ mkdir -p <path>                               # 创建多级目录,无论多级目录是否存在都会创建
 $ mkdir -p 1st/2nd/3rd
 > mkdir: created directory '1st/2nd'
 > mkdir: created directory '1st/2nd/3rd'

创建文件

 $ touch <file> <file>                           # 文件不存在, 创建文件, 文件存在不创建, 可同时创建多个

 $ touch 1st/main.sh                             # 创建时可以添加路径, 路径不存在会报错
 > touch: cannot touch '1st/main.sh': No such file or directory

remove 删除文件

 $ rm <file>                                     # 删除文件, 或删除文件夹
 $ rm -f <file>                                  # --force 强制删除文件, 不询问
 $ rm -r <path>                                  # -R, --recursive 递归删除, 删除文件夹及下所有文件
 $ rmdir <path>                                  # 删除空目录, 目录下有文件或文件夹报错
 > rmdir: failed to remove '1st': Directory not empty

move: 移动文件或文件夹

 $ mv <file|dir> <file|dir>                      # 剪切复制并重新命名, 文件目录均可
 $ mv <file>  <path>/                            # 保存文件名移动

 $ mv -v                                         # --verbose 显示过程, 打印原名及更改后名
 $ mv -f                                         # --force 强制移动, 存在同名则覆盖
 $ mv -n                                         # --no-clobber 存在同名文件则不移动

 $ mv -bv main.sh master.sh                      # 文件重命名, 同名文件修改文件名令 mv 命令得以成功执行
 > renamed 'main.sh' -> 'master.sh' (backup: 'master.sh~')
 > master.sh  master.sh~

copy 复制文件

 $ cp <file|dir> <file|dir>                      # 复制黏贴重命名

 $ cp -v                                         # --verbose 显示详细过程
 $ cp -f                                         # --force 强制复制, 存在同名直接覆盖
 $ cp -r                                         # -R, --recursive 递归复制
 $ cp -b                                         # backup 存在同名文件时, 目标文件改名
 $ cp -l                                         # --link 创建源文件的硬链接
 $ cp -s                                         # --symbolic-link 创建源文件的符号链接

 $ cp -v main.sh main.sh
 > 'main.sh' -> 'main.sh'

 $ ln <source> <target>                          # 创建文件的硬链接 (使用绝对路径)
 $ ln -s <source> <target>                       # --symbolic 创建文件的符号链接 (使用绝对路径)
  • 硬链接: 一个数据绑定两个名字, 两名字都删除才无法访问数据
  • 符号链接: 数据的”软链接” “快捷方式”, 只是一个链接, 不含数据

查询指定文件

 $ find <path> <options>                         # 列出在 <path> 下符合参数的文件或目录(绝对路径)

 $ find . -name "*.txt"                          # 在 当前目录查找所有后缀为 .txt 的文件,模式匹配需要双括号 ""
 > ./a.txt
 > ./b.txt

 $ find . -path "*lib*"                          # 在当前目录所有绝对地址中含有 'lib' 的文件或目录
 > ./temp
 > ./temp/a.txt
 > ./temp/b.txt

 $ find temp -regex ".*\.txt$"                   # 当前目录的 temp 文件夹下符合正则表达式的文件
 > temp/a.txt                                    # .* 任意字符任意次, \.txt$ 以 .txt 结尾
 > temp/b.txt

 $ find <dir> <options> -exec <command> {} \;    # 对查找到的文件进行操作
 $ find . -name "*.sh" -exec rm {} \;            # 删除当前目录下后缀为 .sh 文件
 $ find . -name "*.py" -exec mv {} /root \;      # 将当前目录下后缀为 .py 文件移动到 /root

 $ find . -type f -exec sh -c 'echo >{}' \;      # 清空当前目录下所有文件内容

concatenate 读取文件内容

 $ cat <file>                                    # 读取并打印文件内容
 $ cat -n <file>                                 # 打印文件内容并添加行数
 > 1  1st
 > 2  2nd
 > 3  3rd

读取文件部分内容

 $ head <file>                                   # 显示文件的前 10 行
 $ head -n 5 <file>                              # --lines 显示文件前 5 行
 $ head -c 20 <file>                             # --bytes 显示文件前 20 个字符

 $ tail <file>                                   # 显示文件的后 10 行
 $ tail -n 5 <file>                              # --lines 显示文件后 5 行
 $ tail -c 20 <file>                             # --bytes 显示文件最后 20 个字符

 $ head -c 5 log
 > 1st
 > 2