周一上午九点,一家做 A-股 量化的 私募 把研究机的账号交到你手上。你 ssh 上去,屏幕上只有一行 quant@research-cn:~$。在能跑回测之前,你必须先知道:数据文件在哪个目录、谁能读谁能写、python 这个名字到底解析到 /opt/conda/envs/quant311/bin/python 还是别的什么东西。这一课就把这层「底座」交给你;后面三课会假设你已经能闭着眼睛在 Linux 研究机 上找到自己的家目录。
文件系统布局:一台研究机的样子
POSIX 文件系统从一个 /(根目录)开始向下展开。一台典型的 量化研究机 你会看到这几个目录:
/— 根目录,全部其它路径都挂在它下面。/home/<user>— 你的家目录,等价写法是~。cd ~永远回家。/data或/mnt/data— 共享的市场数据挂载点,通常是 NFS:研究侧只读、落地任务可写。本机上你会看到/data/market-data/cn/equity/daily/(A-股 日 bar,只读)、/data/market-data/cn/equity/tick/(tick 文件,只读)。/opt— 厂商或团队预装的软件。你的 Python 来自/opt/conda/envs/quant311/。/tmp— 临时盘,重启就清空。任何重要东西都不要留在这里。/var/log— 系统与应用日志。/etc— 系统配置。
绝对路径以 / 开头,从根算起;相对路径以 .(当前目录)、..(上级目录)或一个裸名字开头,从工作目录算起。pwd 打印当前工作目录;cd /data/market-data/cn/equity/daily/ 跳到那里;cd ~ 回家;cd - 跳回上一次 cd 来之前的目录——加班调试时这一招省你十几次重输路径。
读懂 ls -lah
ls 一个目录会给你文件名;ls -l 会多出权限、所属、大小、时间;-a 把以 . 开头的隐藏文件也列出来;-h 把字节数写成 K / M / G 这种人类可读形式。三个开关一起用是日常默认。
$ ls -lah /data/market-data/cn/equity/daily/
-rw-r--r-- 1 quant research 3.2M Apr 24 15:32 bars_510300_20250424.csv.gz
-rw-r--r-- 1 quant research 2.8M Apr 24 15:32 bars_510500_20250424.csv.gz
-rw-r--r-- 1 quant research 1.9M Apr 24 15:32 bars_510050_20250424.csv.gz
每一行从左到右是这样读的:第一个字符是文件类型——- 普通文件、d 目录、l 符号链接(symlink,指向另一个 inode 的别名)。接下来九个字符是三组三元组:用户(u)、组(g)、其他(o),每组依次是 r(读)、w(写)、x(执行;目录上则是「能不能进入」)。rw-r--r-- 翻译过来就是:所有者读写,组只读,其他只读。然后是链接计数(1 代表只有一个目录项指向它)、所有者(quant)、所属组(research)、人类可读大小、修改时间,最后才是文件名。
cp / mv / rm:Linux 没有回收站
cp src dst 复制,mv src dst 移动或改名,rm file 删除。这里有一条要刻进肌肉记忆的纪律:Linux 没有回收站。rm 立即从文件系统里抹掉文件,rm -rf <path> 递归删除目录、不需要确认。大多数研究机上最常见的事故就是 rm -rf $DIR 而 DIR 是空的——这一行会展开成 rm -rf /,把根目录递归扫掉。对策是养成两步习惯:先 ls -lah <path> 确认你正要删的就是你想删的,再敲 rm -rf <path>。
权限:chmod、chown、umask
文件模式(file mode)可以用符号或八进制两种方式来设置。符号形式 chmod u+x,g-w,o=r file 是「给用户加执行、去掉组写、其他改成只读」。八进制形式更紧凑:每一位是三位二进制(r=4, w=2, x=1)的总和,0644 就是 rw-r--r--、0755 就是 rwxr-xr-x、0700 就是 rwx------、0600 就是 rw-------。
chmod 0600 ~/.ssh/id_ed25519
chmod 0700 ~/.ssh
chmod 0644 /tmp/example.csv
chown user:group file 改所有者和组;chgrp group file 只改组。umask 是「默认拒绝掩码」(default-deny mask):新文件的最终模式是 0666 & ~umask、新目录是 0777 & ~umask。多数 量化团队 的 研究机 默认 umask 0022(即新文件 0644、新目录 0755);共享数据落地脚本会显式 umask 0027 以禁止 other 写入。
要记住两条 SSH 权限纪律:私钥(~/.ssh/id_ed25519 等)必须 0600,否则 ssh 拒绝使用;~/.ssh/ 目录本身必须 0700,authorized_keys 也得是 0600。SSH 这么严格不是吓你——一个 world-readable 的私钥等价于把家钥匙挂在小区门口。
Shell 环境变量与 $PATH
Shell 是你和内核之间的胶水层。它维护一组环境变量(environment variable),子进程(每个你启动的程序)都继承这一组。常用的几个:
echo $HOME
echo $USER
echo $PATH
which python
command -v python
export RESEARCH_DATA=/data/market-data
echo $RESEARCH_DATA
$PATH 是一个用冒号分隔的目录列表;当你敲一个裸命令名(例如 python),shell 从左到右遍历 $PATH 列出的目录,找到的第一个可执行文件就是要跑的那一个。which python 与更可移植的 command -v python 都告诉你具体跑的是哪个二进制。如果你 export PATH=/opt/conda/bin:$PATH,那 /opt/conda/bin/python 会被先找到,覆盖系统默认的 /usr/bin/python。
export VAR=value 把变量写入环境,子进程能看到;VAR=value cmd 只对这一条命令暴露;unset VAR 移除。注意 = 两边不能有空格——VAR = value 会被解析成「运行命令 VAR,参数是 = 和 value」。
启动文件:~/.bashrc 与 ~/.profile
每开一个新终端,bash 会按规则读一组启动文件。常用规则可以记成两条:
~/.bashrc在每个交互 shell(interactive shell)启动时被 source。这里写别名(alias ll='ls -lah')、提示符自定义、shell 选项——你希望每次开新终端都立刻生效的东西。~/.profile或~/.bash_profile在登录 shell(login shell)启动时被 source 一次。这里写export PATH=/opt/conda/bin:$PATH、export TZ=Asia/Shanghai、export RESEARCH_ROOT=$HOME/research——你希望被这次登录之后的每个程序都看到的环境变量。
zsh(现代 macOS 的默认 shell)对本课所有内容都和 bash 行为一致;这一课里的命令与启动文件规则你都可以原样套用。
练习
Exercise
你刚拿到一个全新的研究机账号。(a) 打印你的家目录和当前工作目录。(b) 创建目录 ~/research/2025-04-24/,在其中 touch 一个文件 notes.md。(c) 用 chmod 显式把 notes.md 设为 0644、目录设为 0755。(d) 运行 ls -lah ~/research/2025-04-24/,确认 notes.md 的模式串是 -rw-r--r--。(e) 在 ~/.profile 中追加 export RESEARCH_ROOT=$HOME/research,开一个新的登录 shell,用 echo $RESEARCH_ROOT 验证新变量已设置。
提示
echo $HOME;当前目录用 pwd。mkdir -p <path> 一次性建好整条路径,不会因为中间层缺失而报错。提示
0644 = rw-r--r--,0755 = rwxr-xr-x。给文件用 chmod 0644;给目录用 chmod 0755。修改 ~/.profile 后需要新开一个登录 shell(例如重新 ssh 一次),它才会被重新 source。下一课预告
文件在哪、谁能读写、Shell 怎么找程序——这一层 substrate 就到这里。下一课进入 Unix 哲学的核心:用 | 把小程序串起来。你会看到 grep、sed、awk、jq 怎么把一个 tick 文件压成「行数、品种数、总成交额」三个数;也会学会一条纪律——超过三段、需要跨行状态,就该停下来写 Python 了。
阅读清单
- 《鸟哥的 Linux 私房菜》第四版,第 5–7 章(文件权限、目录配置、用户与群组)。
- GNU coreutils 中文手册(社区翻译)。
man bash中文版关于~/.bashrc与~/.profile的小节。- OpenSSH 中文手册关于
~/.ssh/权限的章节。
补一条额外注释:A-股 量化团队(私募 / 公募 / 券商自营)通常在 Linux 研究机 上完成所有数据落地与回测,Windows 仅用作交易终端。把研究机当成你工作日的家——熟悉到能在黑屏里 cd 不看路径。
参考卡
本课 三 块 Fenced ```bash 与 Inline 行内 代码:ls -lah、chmod 三 连、shell 环境 演示;~/.bashrc 与 ~/.profile 的 区别;export PATH=/opt/conda/bin:$PATH。