Linux命令行下获取Chromium所有打开标签页列表及命令异常排查
如何在Linux命令行获取Chromium已打开标签页的列表?
首先来说说你遇到的问题:你用strings ~/'.config/chromium/Default/Current Session' | grep 'https?:'只得到一个结果,是因为grep默认使用基础正则表达式(BRE),在BRE里?是特殊字符,但必须转义才能生效——你现在的写法是在字面匹配https?:这个字符串(包含问号),而不是匹配http:或https:,自然匹配不到多少结果。
而你用awk '/^https?:/'能成功,是因为awk默认使用扩展正则表达式(ERE),这里的?不需要转义,能正确识别为“匹配前面的s字符0次或1次”,所以能筛选出所有以http:或https:开头的行。
接下来给你几种更靠谱的解决方法:
方法1:修正你的grep命令
如果你还是想用strings+grep的方式,只需要调整grep的正则写法:
- 用扩展正则表达式模式(加
-E参数):strings ~/.config/chromium/Default/"Current Session" | grep -E 'https?:' - 或者在基础正则模式下转义
?:strings ~/.config/chromium/Default/"Current Session" | grep 'https\?:'
不过要注意:Current Session是Chromium运行时的临时锁文件,内容格式杂乱,而且如果Chromium正在运行,这个文件可能被进程锁定,读取到的内容可能不全甚至不准确。
方法2:用Chromium远程调试接口(最可靠)
这是获取当前打开标签页最准确的方式,步骤如下:
- 先关闭正在运行的Chromium,然后用远程调试端口重新启动:
chromium --remote-debugging-port=9222 - 用
curl获取标签页的JSON数据,再用jq解析出URL(需要先安装jq,比如sudo apt install jq):curl -s http://localhost:9222/json/list | jq -r '.[].url'
这个方法能直接从Chromium进程获取实时的标签页信息,结果准确且格式清晰。
方法3:读取Chromium历史数据库(适合Chromium未运行时)
如果Chromium已经关闭,你可以读取它的SQLite历史数据库来获取最近打开的页面(注意这不是当前打开的标签页,是历史记录):
sqlite3 ~/.config/chromium/Default/History "SELECT url FROM urls WHERE last_visit_time > strftime('%s','now') - 86400;"
上面的命令会查询最近24小时内访问过的URL,你可以调整时间参数(86400是秒数)来匹配你的需求。
内容的提问来源于stack exchange,提问作者MevatlaveKraspek
相关产品推荐
相关产品推荐

