目录书签管理利器bashmarks工具在OpenHarmony PC上的适配及使用
本项目将bashmarks目录书签工具适配到OpenHarmony PC平台。bashmarks是一个轻量级Shell脚本工具,提供5个核心命令(s/g/p/d/l)实现快速目录跳转功能,适用于开发、文档管理等场景。
📋 目录
1. 📖 背景介绍
1.1 📑 bashmarks工具简介
bashmarks 是一个用Shell脚本编写的目录书签管理工具,允许你保存和快速跳转到常用目录。
什么是目录书签?
想象一下,你每天都要访问几个固定的目录,比如:
- 你的项目目录:
/home/user/projects/myproject/src/main/java/com/example - 你的文档目录:
/home/user/Documents/notes/2025/12 - 你的下载目录:
/home/user/Downloads
每次都要输入这么长的路径是不是很麻烦?bashmarks就像浏览器的书签一样,让你给这些常用目录起个简单的名字(比如myproject、notes),以后只需要输入g myproject就能快速跳转过去!
核心功能:
- 📑 保存书签: 使用
s命令保存当前目录为书签(就像浏览器收藏网页) - 🚀 快速跳转: 使用
g命令快速跳转到书签目录(Go to bookmark) - 📋 打印路径: 使用
p命令打印书签对应的目录路径(Print path) - 🗑️ 删除书签: 使用
d命令删除不需要的书签(Delete bookmark) - 📊 列出书签: 使用
l命令列出所有已保存的书签(List bookmarks) - ⌨️ Tab补全: 支持Tab键自动补全书签名称(输入
g my<TAB>自动补全)
应用场景:
- 📁 快速访问常用项目目录: 开发时经常需要在多个项目间切换
- 🔧 开发环境目录管理: 管理工具、配置文件等目录
- 📚 文档目录快速导航: 快速访问笔记、文档等目录
- 🎓 学习和教学目录管理: 管理学习资料、课程目录
- 🚀 提高终端操作效率: 减少重复输入长路径,提高工作效率
为什么选择bashmarks?
- ✅ 简单易学: 只有5个命令,几分钟就能掌握
- ✅ 轻量级: 纯Shell脚本,无需安装额外软件
- ✅ 跨平台: 支持所有Linux系统(包括OpenHarmony)
- ✅ 持久化: 书签永久保存,重启终端也不丢失
1.2 🎯 适配目标
将bashmarks工具适配到鸿蒙PC(OpenHarmony PC)平台,实现:
- 🐚 Shell脚本跨平台支持
- 🏗️ 支持aarch64-linux-ohos架构
- 📦 生成HNP格式的安装包
- 📦 生成tar.gz格式的发布包
- 💻 提供可执行的
bashmarks脚本
1.3 🔧 技术栈
- 语言: 🐚 Bash Shell Script
- 构建系统: Makefile
- 目标平台: 🎯 aarch64-linux-ohos
- 打包格式: 📦 HNP (HarmonyOS Native Package)
- 依赖: 无外部依赖(纯Shell脚本)
1.4 💡 工具优势
相比手动输入长路径,bashmarks提供了:
- ✅ 快速访问: 一条命令即可跳转到常用目录
- ✅ 简洁命令: 使用单字母命令(s, g, p, d, l)
- ✅ Tab补全: 支持Tab键自动补全,提高输入效率
- ✅ 持久化存储: 书签保存在
~/.sdirs文件中,永久保存 - ✅ 跨会话: 书签在终端会话之间持久保存
- ✅ 轻量级: 纯Shell脚本实现,无需编译,无外部依赖
2. 🛠️ 环境准备
2.1 💻 系统要求
- 开发环境: 💻 macOS / 🐧 Linux / 🪟 Windows (WSL)
- Shell: 🐚 Bash 3.0+(bashmarks最低要求)
- Python: 🐍 Python 3.x(用于构建脚本)
- Git: 📦 Git(用于获取版本号)
- 鸿蒙SDK: 📦 OHOS SDK (包含native工具链和hnpcli打包工具)
2.2 📥 SDK安装
- 📥 下载SDK
# 下载鸿蒙SDK
cd ~
wget https://cidownload.openharmony.cn/version/Master_Version/ohos-sdk-full_ohos/20250819_020817/version-Master_Version-ohos-sdk-full_ohos-20250819_020817-ohos-sdk-full_ohos.tar.gz
# 解压SDK
tar -zvxf version-Master_Version-ohos-sdk-full_ohos-20250819_020817-ohos-sdk-full_ohos.tar.gz
- 📁 SDK目录结构
ohos-sdk/
├── native/
│ ├── llvm/bin/ # 🔧 编译器工具链
│ ├── sysroot/ # 📚 系统根目录(头文件和库)
│ └── build-tools/ # 🛠️ 构建工具
└── toolchains/
└── hnpcli # 📦 HNP打包工具
2.3 🐚 Shell环境配置
bashmarks是Shell脚本,需要Bash环境支持。OpenHarmony PC默认支持Bash,无需额外配置。
什么是Shell?
Shell是用户与操作系统交互的界面。在终端中输入命令,Shell会解释并执行这些命令。常见的Shell有Bash、Zsh等。
验证Bash版本:
# 在终端中输入以下命令
bash --version
# 应该看到类似这样的输出:
# GNU bash, version 5.0.17(1)-release (aarch64-unknown-linux-gnu)
# 或者
# bash version 3.0 或更高版本
如果Bash版本太低怎么办?
如果Bash版本低于3.0,bashmarks可能无法正常工作。不过OpenHarmony PC默认的Bash版本通常都满足要求。
检查当前使用的Shell:
# 查看当前Shell
echo $SHELL
# 应该显示:/bin/bash 或类似路径
3. 📁 项目结构分析
3.1 📂 目录结构
bashmarks4oh/
├── Makefile # Makefile构建脚本
├── build_ohos.sh # OpenHarmony构建脚本
├── hnp.json # HNP包配置
├── README.md # 项目说明
├── LICENSE # 许可证
├── CHANGELOG.md # 变更日志
├── README.OPENSOURCE # 开源说明
└── bashmarks.sh # 主脚本文件 ⭐
3.2 🔧 Makefile关键配置
# Installation paths (can be overridden by environment variables)
PREFIX ?= /usr/local
INSTALL_DIR ?= ${PREFIX}/bin
BINARY_NAME = bashmarks.sh
all:
@echo "bashmarks is a shell script, no compilation needed"
@echo "Please run 'make install'"
install:
mkdir -p $(INSTALL_DIR)
cp bashmarks.sh $(INSTALL_DIR)/bashmarks
chmod +x $(INSTALL_DIR)/bashmarks
clean:
rm -f bashmarks bashmarks_*
关键配置说明:
- ⚠️ 无需编译: bashmarks是Shell脚本,无需编译
- 📁 安装路径: 通过
INSTALL_DIR环境变量指定安装目录 - 🔧 权限设置: 使用
chmod +x设置执行权限
3.3 📝 脚本功能说明
bashmarks.sh提供了以下函数(你只需要记住前5个):
用户命令(常用):
s <bookmark_name>- 保存当前目录为书签(Save)g <bookmark_name>- 跳转到书签目录(Go)p <bookmark_name>- 打印书签路径(Print)d <bookmark_name>- 删除书签(Delete)l- 列出所有书签(List)
内部函数(了解即可):
check_help- 显示帮助信息_bookmark_name_valid- 验证书签名称是否合法_comp/_compzsh- Tab补全支持(Bash和Zsh)_purge_line- 安全删除书签(防止数据丢失)
书签存储机制:
- 📁 存储位置: 书签保存在
~/.sdirs文件中(~代表你的用户主目录) - 📝 存储格式: 使用环境变量格式:
export DIR_bookmark_name="path" - 🔄 路径展开: 支持
$HOME变量展开(/home/user会被替换为$HOME) - 💾 持久化: 书签永久保存,即使重启终端也不会丢失
示例:书签文件内容
# ~/.sdirs 文件内容示例
export DIR_myproject="/home/user/projects/myproject"
export DIR_notes="$HOME/Documents/notes"
export DIR_downloads="/home/user/Downloads"
4. 🔍 问题诊断与解决
4.1 🔍 问题1:Shell脚本无需编译
问题描述:
bashmarks是Shell脚本,不需要编译,但构建脚本需要适配。
解决方案:
在build_ohos.sh中直接安装脚本,无需编译步骤:
# bashmarks是shell脚本,无需编译,直接安装
echo "Installing bashmarks..."
export INSTALL_DIR=${BASHMARKS_INSTALL_HNP_PATH}/bin
make install
4.2 🔍 问题2:脚本执行权限
问题描述:
安装的脚本需要执行权限才能使用。
解决方案:
在Makefile中使用chmod +x设置执行权限:
install:
mkdir -p $(INSTALL_DIR)
cp bashmarks.sh $(INSTALL_DIR)/bashmarks
chmod +x $(INSTALL_DIR)/bashmarks
4.3 🔍 问题3:用户配置说明
问题描述:
用户安装后需要知道如何配置bashmarks。
解决方案:
在安装后显示使用说明:
echo "To use bashmarks, add the following to your ~/.bashrc or ~/.bash_profile:"
echo " source ${BASHMARKS_INSTALL_HNP_PATH}/bin/bashmarks"
5. ✏️ 详细修改步骤
5.1 📝 步骤1:创建build_ohos.sh
创建build_ohos.sh脚本:
#!/bin/bash
# bashmarks OpenHarmony build script
# bashmarks is a shell script for saving and jumping to commonly used directories
set -e
export BASHMARKS_INSTALL_HNP_PATH=${HNP_PUBLIC_PATH}/bashmarks.org/bashmarks_0.0.1
sys_prefix=${PREFIX}
export PREFIX=${BASHMARKS_INSTALL_HNP_PATH}
echo "Installation prefix: ${PREFIX}"
# 创建安装目录
mkdir -p ${BASHMARKS_INSTALL_HNP_PATH}/bin
mkdir -p ${BASHMARKS_INSTALL_HNP_PATH}/share/man/man1
# 先清理旧的构建产物,确保干净环境
make clean || true
# bashmarks是shell脚本,无需编译,直接安装
echo "Installing bashmarks..."
export INSTALL_DIR=${BASHMARKS_INSTALL_HNP_PATH}/bin
make install
# 验证安装
if [ -f "${BASHMARKS_INSTALL_HNP_PATH}/bin/bashmarks" ]; then
echo "bashmarks installed successfully"
echo "Installed file:"
ls -lh "${BASHMARKS_INSTALL_HNP_PATH}/bin/bashmarks" || true
else
echo "Error: bashmarks not found after installation"
exit 1
fi
# 复制 HNP 打包所需的描述文件
test -f hnp.json
cp hnp.json ${BASHMARKS_INSTALL_HNP_PATH}/
# 打包HNP和tar.gz
echo "Packing HNP package..."
pushd ${BASHMARKS_INSTALL_HNP_PATH}/../
${HNP_TOOL} pack -i ${BASHMARKS_INSTALL_HNP_PATH} -o ${ARCHIVE_PATH}/
echo "Creating tar.gz archive..."
tar -zvcf ${ARCHIVE_PATH}/ohos_bashmarks_0.0.1.tar.gz bashmarks_0.0.1/
popd
export PREFIX=${sys_prefix}
echo "Build completed successfully!"
关键步骤:
- ✅ 创建安装目录
- ✅ 调用
make install安装脚本 - ✅ 验证安装结果
- ✅ 打包HNP和tar.gz
5.2 📝 步骤2:创建hnp.json
创建hnp.json配置文件:
{
"type":"hnp-config",
"name":"bashmarks",
"version":"0.0.1",
"install":{}
}
5.3 📝 步骤3:更新Makefile
确保Makefile包含正确的安装目标:
install:
mkdir -p $(INSTALL_DIR)
cp bashmarks.sh $(INSTALL_DIR)/bashmarks
chmod +x $(INSTALL_DIR)/bashmarks
@echo ""
@echo "bashmarks installed successfully to $(INSTALL_DIR)/bashmarks"
@echo ""
@echo "To use bashmarks, add the following to your ~/.bashrc or ~/.bash_profile:"
@echo " source $(INSTALL_DIR)/bashmarks"
6. ✅ 构建验证
6.1 🚀 执行构建
cd /Users/baixm/HarmonyOSPC/build
./build.sh --sdk /Users/baixm/ohos-sdk --module bashmarks4oh
6.2 ✅ 构建输出
Installing bashmarks...
mkdir -p /Users/baixm/HarmonyOSPC/data/service/hnp/bashmarks.org/bashmarks_0.0.1/bin
cp bashmarks.sh /Users/baixm/HarmonyOSPC/data/service/hnp/bashmarks.org/bashmarks_0.0.1/bin/bashmarks
chmod +x /Users/baixm/HarmonyOSPC/data/service/hnp/bashmarks.org/bashmarks_0.0.1/bin/bashmarks
bashmarks installed successfully to /Users/baixm/HarmonyOSPC/data/service/hnp/bashmarks.org/bashmarks_0.0.1/bin/bashmarks
To use bashmarks, add the following to your ~/.bashrc or ~/.bash_profile:
source /Users/baixm/HarmonyOSPC/data/service/hnp/bashmarks.org/bashmarks_0.0.1/bin/bashmarks
USAGE:
------
s <bookmark_name> - Saves the current directory as "bookmark_name"
g <bookmark_name> - Goes (cd) to the directory associated with "bookmark_name"
p <bookmark_name> - Prints the directory associated with "bookmark_name"
d <bookmark_name> - Deletes the bookmark
l - Lists all available bookmarks
bashmarks installed successfully
Installed file:
-rwxr-xr-x 1 baixm staff 5.3K Dec 15 09:21 /Users/baixm/HarmonyOSPC/data/service/hnp/bashmarks.org/bashmarks_0.0.1/bin/bashmarks
Packing HNP package...
[INFO][HNP][hnp_pack.c:116]PackHnp end. srcPath=..., hnpName=bashmarks, hnpVer=0.0.1
Creating tar.gz archive...
Build completed successfully!
6.3 🔍 验证要点
- ✅ 安装成功,无错误
- ✅ 脚本文件权限正确(-rwxr-xr-x)
- ✅ HNP包生成成功
- ✅ tar.gz包生成成功
7. 💻 使用示例
7.1 🚀 基本使用(新手必读)
⚠️ 重要提示:解决"command not found"问题
问题现象:
# 在OpenHarmony PC终端执行
s myproject
# 提示:bash: s: command not found
问题原因:
bashmarks的s、g、p、d、l命令是Shell函数,不是独立的可执行文件。这些函数定义在bashmarks.sh脚本中,需要通过source命令加载到当前Shell环境才能使用。
解决方案(按顺序执行):
步骤1:找到bashmarks的安装路径
在OpenHarmony PC上,bashmarks可能安装在以下位置之一:
# 查找bashmarks文件
which bashmarks
# 返回结果
/data/app/base.org/base_1.0/bin/bashmarks
步骤2:临时测试(验证bashmarks是否可用)
# 假设找到的路径是 /data/service/hnp/bashmarks.org/bashmarks_0.0.1/bin/bashmarks
# 临时source一次,测试是否可用
source /data/app/base.org/base_1.0/bin/bashmarks
# 测试命令是否可用
s -h
# 如果看到帮助信息,说明bashmarks脚本正常,继续下一步
# 如果还是提示command not found,检查路径是否正确

步骤3:永久配置(添加到.bashrc)
# 步骤3.1:编辑.bashrc文件
nano ~/.bashrc
# 或者使用vim
vim ~/.bashrc
# 步骤3.2:在文件末尾添加以下行(替换为实际找到的路径)
source /data/app/base.org/base_1.0/bin/bashmarks
# 步骤3.3:保存文件
# nano: 按Ctrl+O保存,Enter确认,Ctrl+X退出
# vim: 按Esc,输入:wq,按Enter
# 步骤3.4:重新加载配置
source ~/.bashrc
# 步骤3.5:验证配置是否生效
s -h
# 应该看到:
# s <bookmark_name> - Saves the current directory as "bookmark_name"
# g <bookmark_name> - Goes (cd) to the directory associated with "bookmark_name"
# ...
步骤4:如果.bashrc不生效,尝试.bash_profile
# 有些系统使用.bash_profile而不是.bashrc
nano ~/.bash_profile
# 添加相同的内容
source /data/app/base.org/base_1.0/bin/bashmarks
# 保存并重新加载
source ~/.bash_profile
步骤5:验证安装(重要!)
# 关闭当前终端,重新打开一个新终端窗口
# 然后执行:
s -h
# 如果看到帮助信息,说明配置成功!
# 如果还是提示command not found,继续排查:
故障排除检查清单:
# ✅ 检查1:bashmarks文件是否存在
ls -la /data/app/base.org/base_1.0/bin/bashmarks
# 如果文件不存在,说明安装有问题,需要重新安装
# ✅ 检查2:bashmarks文件是否有执行权限
ls -l /data/app/base.org/base_1.0/bin/bashmarks
# 应该看到 -rwxr-xr-x,如果没有x权限,执行:
chmod +x /data/app/base.org/base_1.0/bin/bashmarks
# ✅ 检查3:.bashrc文件是否存在且包含source命令
cat ~/.bashrc | grep bashmarks
# 应该能看到 source /data/service/hnp/.../bashmarks 这一行
# ✅ 检查4:当前Shell是否是Bash
echo $SHELL
# 应该显示 /bin/bash 或类似路径
# ✅ 检查5:手动source一次,看是否有错误
source /data/app/base.org/base_1.0/bin/bashmarks
# 如果没有错误输出,说明脚本本身没问题
# ✅ 检查6:检查函数是否已加载
type s
# 应该显示:s is a function
# 如果显示:bash: type: s: not found,说明函数没有加载
如果以上步骤都无效,尝试以下方法:
# 方法A:直接在终端中source(临时方案)
# 每次打开终端都需要执行一次
source /data/app/base.org/base_1.0/bin/bashmarks
# 方法B:创建别名(备选方案)
# 在.bashrc中添加:
alias bashmarks='source /data/app/base.org/base_1.0/bin/bashmarks'
# 然后每次打开终端执行:bashmarks
# 方法C:检查Termony的配置
# 如果通过Termony集成,可能需要检查Termony的启动脚本
# 参考Termony文档,确保bashmarks在Termony启动时被加载
**第一步:**参考开源鸿蒙终端工具Termony增加外部HNP包合入base.hnp的设计与实现实战教程博文内容使Termony能够在编译构建hnp包时能够同时将外部的hnp包引入到base.hnp包中。
Termony
- ...
- external-hnp
第二步:配置bashmarks(重要!)
# 编辑你的.bashrc文件(如果不存在会自动创建)
nano ~/.bashrc
# 在文件末尾添加以下一行(替换为实际路径)
source /path/to/bashmarks_0.0.1/bin/bashmarks
# 保存文件(按Ctrl+O,然后Enter,再按Ctrl+X退出)
# 重新加载配置
source ~/.bashrc
步骤3:验证安装
# 输入以下命令,如果看到帮助信息,说明安装成功
s -h
# 应该看到:
# s <bookmark_name> - Saves the current directory as "bookmark_name"
# g <bookmark_name> - Goes (cd) to the directory associated with "bookmark_name"
# ...
常见问题:
-
❓ 问题: 输入
s -h提示"command not found"- ✅ 解决步骤:
- 确认bashmarks文件路径:
find /data/service/hnp -name "bashmarks" 2>/dev/null - 手动source一次:
source /path/to/bashmarks - 测试:
s -h(应该能看到帮助信息) - 如果临时可用,添加到
.bashrc:echo "source /path/to/bashmarks" >> ~/.bashrc - 重新加载:
source ~/.bashrc - 重新打开终端窗口测试
- 确认bashmarks文件路径:
- ✅ 解决步骤:
-
❓ 问题: 不知道bashmarks安装在哪里
-
✅ 解决: 使用以下命令查找:
find /data/service/hnp -name "bashmarks" 2>/dev/null find ~/.hnp -name "bashmarks" 2>/dev/null ls -la /data/service/hnp/bashmarks.org/bashmarks_0.0.1/bin/ 2>/dev/null
-
-
❓ 问题: 配置后新终端窗口还是不能用
- ✅ 解决:
- 检查
.bashrc文件是否包含source命令:cat ~/.bashrc | grep bashmarks - 检查路径是否正确:
ls -la /path/to/bashmarks - 检查文件权限:
chmod +x /path/to/bashmarks - 尝试使用
.bash_profile:echo "source /path/to/bashmarks" >> ~/.bash_profile
- 检查
- ✅ 解决:
📑 保存书签(第一次使用)
# 在鸿蒙PC终端执行
# 步骤1:进入你想保存的目录
cd test
# 步骤2:使用s命令保存(s是save的缩写)
s test
# 输出:无输出,表示成功!
# 如果看到错误信息,请检查书签名称是否合法(只能包含字母、数字、下划线)
# 步骤3:验证书签是否保存成功
l # 列出所有书签,应该能看到 myproject
# 或者
p test # 打印书签路径,应该显示 /home/user/projects/myproject

新手提示:
- 💡 书签名称不能包含空格和特殊字符(除了下划线
_) - 💡 书签名称区分大小写(
MyProject和myproject是不同的) - 💡 如果书签已存在,会被覆盖(不会报错)
🚀 跳转到书签(最常用功能)
# 在鸿蒙PC终端执行
# 步骤1:使用g命令跳转(g是go的缩写)
g test
# 输出:无输出,但当前目录已经切换到 /home/user/projects/myproject
# 步骤2:验证是否跳转成功
pwd # 打印当前目录,应该显示 /home/user/projects/myproject
# 如果书签不存在,会看到错误提示:
# WARNING: 'myproject' bashmark does not exist

新手提示:
- 💡
g命令会直接切换目录,就像cd命令一样 - 💡 如果目录不存在,会提示警告但不会报错
- 💡 可以使用Tab键自动补全书签名称(输入
g my<TAB>)
📋 打印书签路径
# 在鸿蒙PC终端执行
# 打印myproject书签的路径
p myproject
# 输出:
# /home/user/projects/myproject
🗑️ 删除书签
# 在鸿蒙PC终端执行
# 删除myproject书签
d myproject
# 输出:无输出,书签已删除
📊 列出所有书签
# 在鸿蒙PC终端执行
# 列出所有书签
l
# 输出示例:
# myproject /home/user/projects/myproject
# docs /home/user/Documents
# downloads /home/user/Downloads
7.2 🔧 实际应用场景(新手实战)
📁 场景1:项目目录管理(最常用)
场景描述:你正在开发3个项目,经常需要在它们之间切换。
操作步骤:
# 第1步:保存第一个项目
cd /home/user/projects/project1
s proj1
# 提示:使用简短的名字,输入更快
# 第2步:保存第二个项目
cd /home/user/projects/project2
s proj2
# 第3步:保存第三个项目
cd /home/user/projects/project3
s proj3
# 第4步:查看所有保存的书签
l
# 输出示例:
# proj1 /home/user/projects/project1
# proj2 /home/user/projects/project2
# proj3 /home/user/projects/project3
# 第5步:快速切换项目(这才是bashmarks的威力!)
g proj1 # 瞬间切换到project1,不用输入长路径!
g proj2 # 瞬间切换到project2
g proj3 # 瞬间切换到project3
对比传统方式:
# 传统方式(每次都要输入完整路径)
cd /home/user/projects/project1/src/main/java/com/example
# 太长了!容易出错!
# 使用bashmarks(只需输入书签名)
g proj1
# 简单!快速!不会出错!
新手练习:
- 创建3个测试目录:
mkdir -p ~/test/{proj1,proj2,proj3} - 分别保存为书签:
cd ~/test/proj1 && s p1(使用更短的名字) - 尝试快速切换:
g p1、g p2、g p3 - 查看所有书签:
l
📚 场景2:文档目录管理
场景描述:你有很多文档分散在不同目录,想快速访问。
操作步骤:
# 保存文档目录
cd /home/user/Documents/notes
s notes
cd /home/user/Documents/books
s books
cd /home/user/Documents/reports/2025
s reports2025 # 使用描述性名称
# 快速访问文档
g notes # 切换到notes目录
g books # 切换到books目录
g reports2025 # 切换到2025年报告目录
# 查看所有文档相关的书签
l | grep -E "notes|books|reports"
新手提示:
- 💡 使用有意义的书签名称,比如
notes、books,而不是n、b - 💡 可以包含年份等信息,如
reports2025 - 💡 使用
l命令查看所有书签,方便记忆
🔧 开发环境目录管理
# 保存开发环境目录
cd /opt/development/tools
s tools
cd /opt/development/configs
s configs
# 快速访问开发环境
g tools # 切换到tools目录
g configs # 切换到configs目录
7.3 ⌨️ Tab补全功能(提高效率的秘诀)
什么是Tab补全?
Tab补全是一个非常有用的功能:输入部分内容后按Tab键,系统会自动补全剩余部分。bashmarks支持Tab补全书签名称,让你输入更快、更准确!
使用方法:
# 步骤1:输入命令和部分书签名
g my
# 步骤2:按Tab键(不要按Enter!)
# 如果只有一个匹配的书签,会自动补全:
g myproject
# 如果有多个匹配的书签,按两次Tab会显示所有选项:
g my<TAB><TAB>
# 显示:
# myproject myproject2 mynotes
# 步骤3:继续输入更多字符,再按Tab
g myp<TAB> # 自动补全为 g myproject
支持的命令:
# g命令支持Tab补全
g my<TAB> # 自动补全为 g myproject
# p命令支持Tab补全
p my<TAB> # 自动补全为 p myproject
# d命令支持Tab补全
d my<TAB> # 自动补全为 d myproject
# s命令不支持Tab补全(因为要保存新书签)
新手提示:
- 💡 Tab补全可以大大减少输入错误
- 💡 如果Tab补全不工作,检查是否已经source了bashmarks脚本
- 💡 按两次Tab可以查看所有匹配的书签
7.4 📝 配置文件设置(重要!必须配置)
为什么需要配置?
bashmarks定义的是Shell函数,需要通过source命令加载到当前Shell环境中才能使用。如果不配置,每次打开新终端都要手动source,很麻烦。
配置方法(选择一种即可):
方法1:添加到.bashrc(推荐)
# 步骤1:打开.bashrc文件(如果不存在会自动创建)
nano ~/.bashrc
# 或者使用vim
vim ~/.bashrc
# 步骤2:在文件末尾添加以下行(替换为实际路径)
source /path/to/bashmarks_0.0.1/bin/bashmarks
# 步骤3:保存文件
# nano: 按Ctrl+O保存,Enter确认,Ctrl+X退出
# vim: 按Esc,输入:wq,按Enter
# 步骤4:重新加载配置
source ~/.bashrc
# 步骤5:验证配置是否生效
s -h # 如果看到帮助信息,说明配置成功!
方法2:添加到.bash_profile
# 步骤1:打开.bash_profile文件
nano ~/.bash_profile
# 步骤2:在文件末尾添加以下行
source /path/to/bashmarks_0.0.1/bin/bashmarks
# 步骤3:保存并重新加载
source ~/.bash_profile
如何找到bashmarks的安装路径?
# 方法1:使用find命令查找
find ~ -name "bashmarks" 2>/dev/null
# 方法2:如果使用HNP安装,通常在:
# /home/user/.hnp/bashmarks.org/bashmarks_0.0.1/bin/bashmarks
# 方法3:查看HNP安装信息
hnp list | grep bashmarks
常见问题:
- ❓ 问题: 配置后新终端窗口还是不能用
- ✅ 解决: 检查路径是否正确,确保bashmarks文件存在
- ❓ 问题: 不知道用.bashrc还是.bash_profile
- ✅ 解决: 通常使用.bashrc即可,如果.bashrc不生效,再试试.bash_profile
- ❓ 问题: 配置后提示"Permission denied"
- ✅ 解决: 检查bashmarks文件是否有执行权限:
chmod +x /path/to/bashmarks
- ✅ 解决: 检查bashmarks文件是否有执行权限:
7.5 ❓ 显示帮助信息
# 在鸿蒙PC终端执行
# 任何命令都可以使用-h, -help, 或--help查看帮助
s -h
g -h
p -h
d -h
l -h
# 输出示例:
# s <bookmark_name> - Saves the current directory as "bookmark_name"
# g <bookmark_name> - Goes (cd) to the directory associated with "bookmark_name"
# p <bookmark_name> - Prints the directory associated with "bookmark_name"
# d <bookmark_name> - Deletes the bookmark
# l - Lists all available bookmarks

7.6 💡 高级用法
在脚本中使用
#!/bin/bash
# 在脚本中使用bashmarks
# source bashmarks
source /path/to/bashmarks_0.0.1/bin/bashmarks
# 跳转到书签目录
g myproject
# 执行操作
ls -la
git status
# 返回原目录
cd -
组合使用多个命令
# 保存当前目录并跳转到另一个书签
cd /home/user/projects/newproject
s newproject
g myproject # 跳转到另一个项目
# 打印书签路径并在其中执行命令
cd $(p myproject)
ls -la
8. 📚 总结与最佳实践
8.1 ✅ 适配总结
本次适配成功实现了bashmarks工具在OpenHarmony PC平台上的部署:
- ✅ Shell脚本适配: bashmarks是纯Shell脚本,无需编译,直接安装
- ✅ Makefile配置: 使用Makefile管理安装过程
- ✅ 构建脚本优化:
build_ohos.sh脚本添加了安装和验证步骤 - ✅ HNP打包: 成功生成HNP格式的安装包和tar.gz发布包
- ✅ 功能验证: 脚本功能完整,支持保存、跳转、打印、删除、列出等操作
8.2 🎯 关键技术点
- Shell脚本: bashmarks是纯Shell脚本,无需编译
- 权限设置: 使用
chmod +x设置执行权限 - 用户配置: 需要用户手动source脚本到.bashrc或.bash_profile
- 书签存储: 书签保存在
~/.sdirs文件中 - Tab补全: 支持Bash和Zsh的Tab补全功能
8.3 💡 最佳实践
-
安装配置:
- ✅ 将bashmarks添加到.bashrc或.bash_profile
- ✅ 使用绝对路径source脚本
- ✅ 验证脚本是否加载成功
-
书签命名:
- ✅ 使用有意义的书签名称
- ✅ 避免使用特殊字符(只支持字母、数字、下划线)
- ✅ 使用简短但描述性的名称
-
日常使用:
- ✅ 为常用项目目录创建书签
- ✅ 定期清理不需要的书签
- ✅ 使用Tab补全提高效率
8.4 🚀 未来改进方向
-
功能增强:
- 📊 支持书签分类和标签
- 🔄 支持书签导入导出
- 📈 支持书签搜索功能
- 🔍 支持书签描述信息
-
用户体验:
- ⚡ 改进错误提示信息
- 🎯 支持书签重命名
- 📝 支持书签注释
-
文档完善:
- 📖 添加更多使用示例
- 🔍 添加故障排除指南
- 📚 添加高级用法文档
📚 附录
A. 相关资源
- bashmarks文档: https://github.com/huyng/bashmarks
- GitHub仓库: https://github.com/huyng/bashmarks
- Shell脚本教程: https://www.gnu.org/software/bash/manual/
- OpenHarmony官网: https://www.openharmony.cn/
B. 常见问题(新手必读)
Q1: bashmarks是什么?为什么要用它?
A: bashmarks是一个Shell脚本工具,用于保存和快速跳转到常用目录。想象一下,你每天都要访问/home/user/projects/myproject/src/main/java/com/example这个目录,每次都要输入这么长的路径很麻烦。使用bashmarks,你只需要:
cd /home/user/projects/myproject/src/main/java/com/example
s myproject # 保存为书签
# 以后只需要:
g myproject # 瞬间跳转!
Q2: 如何安装bashmarks?
A: 安装分为两步:
- 安装文件:使用HNP包或解压tar.gz包
- 配置环境:将bashmarks添加到.bashrc文件中:
# 编辑.bashrc
nano ~/.bashrc
# 添加这一行(替换为实际路径)
source /path/to/bashmarks_0.0.1/bin/bashmarks
# 保存并重新加载
source ~/.bashrc
Q3: 书签保存在哪里?会丢失吗?
A: 书签保存在~/.sdirs文件中(~代表你的用户主目录)。这个文件是隐藏文件(以.开头),使用ls -a可以看到。书签是永久保存的,即使重启终端或重启电脑也不会丢失。
Q4: 支持哪些Shell?
A: bashmarks支持Bash和Zsh,都支持Tab补全功能。OpenHarmony PC默认使用Bash,完全支持。
Q5: 如何删除所有书签?
A: 有两种方法:
# 方法1:使用d命令逐个删除
d bookmark1
d bookmark2
# ...
# 方法2:直接编辑书签文件(高级用户)
nano ~/.sdirs
# 删除所有内容,保存即可
Q6: 书签名称有什么限制?
A: 书签名称只能包含:
- ✅ 字母(a-z, A-Z)
- ✅ 数字(0-9)
- ✅ 下划线(_)
不能包含:
- ❌ 空格
- ❌ 特殊字符(如
-、.、/等) - ❌ 中文字符
Q7: 如何在脚本中使用bashmarks?
A: 在脚本开头source bashmarks脚本:
#!/bin/bash
# 加载bashmarks
source /path/to/bashmarks_0.0.1/bin/bashmarks
# 现在可以使用bashmarks命令了
g myproject
ls -la
Q8: Tab补全不工作怎么办?
A: 检查以下几点:
- 确保已经source了bashmarks脚本(这是最常见的原因)
- 确保使用的是Bash或Zsh(不是sh)
- 重新打开终端窗口试试
- 检查Shell版本:
bash --version(需要3.0+)
Q14: 执行s等命令时提示"command not found"怎么办?
A: 这是最常见的问题!原因是bashmarks的函数没有被加载到Shell环境中。按以下步骤解决:
步骤1:找到bashmarks安装路径
find /data/service/hnp -name "bashmarks" 2>/dev/null
# 或者
ls -la /data/service/hnp/bashmarks.org/bashmarks_0.0.1/bin/bashmarks
步骤2:临时测试
# 假设路径是 /data/service/hnp/bashmarks.org/bashmarks_0.0.1/bin/bashmarks
source /data/service/hnp/bashmarks.org/bashmarks_0.0.1/bin/bashmarks
s -h # 测试是否可用
步骤3:永久配置
# 添加到.bashrc
echo "source /data/service/hnp/bashmarks.org/bashmarks_0.0.1/bin/bashmarks" >> ~/.bashrc
source ~/.bashrc
# 或者添加到.bash_profile(如果.bashrc不生效)
echo "source /data/service/hnp/bashmarks.org/bashmarks_0.0.1/bin/bashmarks" >> ~/.bash_profile
source ~/.bash_profile
步骤4:验证
# 关闭终端,重新打开
s -h # 应该能看到帮助信息
如果还是不行,检查:
- bashmarks文件是否存在:
ls -la /path/to/bashmarks - 文件是否有执行权限:
chmod +x /path/to/bashmarks - .bashrc是否包含source命令:
cat ~/.bashrc | grep bashmarks - 当前Shell类型:
echo $SHELL(应该是/bin/bash)
Q9: 输入s myproject后没有反应,是成功了吗?
A: 是的!bashmarks命令成功时通常没有输出(这是Unix/Linux的惯例)。你可以用以下命令验证:
l # 列出所有书签,应该能看到myproject
p myproject # 打印路径,应该显示你保存的目录
Q10: 书签名称区分大小写吗?
A: 是的!MyProject和myproject是不同的书签。建议统一使用小写,避免混淆。
Q11: 可以给同一个目录保存多个书签吗?
A: 可以!比如:
cd /home/user/projects/myproject
s myproject
s proj
s mp
# 现在可以用 g myproject、g proj、g mp 都跳转到同一个目录
Q12: 如何查看书签文件的内容?
A: 使用以下命令:
# 查看书签文件内容
cat ~/.sdirs
# 或者使用编辑器查看
nano ~/.sdirs
Q13: 书签文件损坏了怎么办?
A: 如果书签文件损坏,可以:
- 备份原文件:
cp ~/.sdirs ~/.sdirs.backup - 删除损坏的文件:
rm ~/.sdirs - bashmarks会自动创建新的空文件
- 重新保存书签即可
🎉 结语
bashmarks工具为终端用户提供了便捷的目录书签管理能力,是提高终端操作效率的重要工具。通过本次适配,bashmarks成功运行在OpenHarmony PC平台上,为鸿蒙生态的开发者提供了强大的目录导航功能。
更多推荐



所有评论(0)