git bash 如何扩展支持tree命令.docx

上传人:A*** 文档编号:142725250 上传时间:2020-08-22 格式:DOCX 页数:27 大小:1.12MB
返回 下载 相关 举报
git bash 如何扩展支持tree命令.docx_第1页
第1页 / 共27页
git bash 如何扩展支持tree命令.docx_第2页
第2页 / 共27页
git bash 如何扩展支持tree命令.docx_第3页
第3页 / 共27页
git bash 如何扩展支持tree命令.docx_第4页
第4页 / 共27页
git bash 如何扩展支持tree命令.docx_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《git bash 如何扩展支持tree命令.docx》由会员分享,可在线阅读,更多相关《git bash 如何扩展支持tree命令.docx(27页珍藏版)》请在金锄头文库上搜索。

1、git bash 如何扩展支持tree命令前情概要git 自从迁移到 windows 系统后,日子过得还算潇洒自在,自己不仅有漂亮的命令行工具还有 windows小伙伴喜闻乐见的图形化工具.然而, git bash 只是精简的虚拟小窝,某些好用的第三方命令居然没有提供,连 cmd 那家伙都支持的 tree 命令,堂堂的 git bash 居然都不支持.实在是,心病难消,这一节势必要解决掉 tree 命令,顺便介绍下如何扩展更多命令,让你们还敢嘲笑我不如 cmd 那个老家伙?以上故事也是纯属虚构,如愿了解故事前情,请参考 git本是别人家的孩子,windows用户却不干了回到正题弄清楚事情的来龙

2、去脉后,对我们解决问题有什么帮助呢?帮助可大了去了,刨根问题找到了源头,问题自然迎刃而解!我劝少年放弃吧你确定不是在逗我?让我直接放弃?亲,真的抱歉呢,放弃是解决问题的最快途径!.谈一谈为什么要放弃?git bash 命令行使用的是 mintty 终端,而 mintty 终端并不能完全替代 cmd ,也没有提供包管理工具供我们扩展第三方命令.所以默认情况下,如果没有提供某些命令,那我们只好放弃在 git bash 命令行中使用这些命令.此路不通,自然会寻求其他解决途径,比如可以借助 cmd 命令行或者其他第三方软件等,没必要非要坚持使用 git bash!既然本文是 tree 命令引发的讨论,

3、那就谈点和主题有关的技能点,不然岂不是跑题了?tree 命令虽然 git bash 不提供,但是 cmd 却已经内置了.值得注意的是, cmd 提供的 tree 命令比较特殊,并不是常见的 .exe 结尾文件,而是 .com 结尾的文件.所以 git bash 中输入 tree 命令时,自身 /usr/bin 中没有 tree.exe 文件,而系统中也没有 tree.exe 命令,那么就会提示找不到命令了啊!手动补全命令那么第一种调用方法便是补全后缀名,这样自然能够调用 cmd 的 命令.git bash 并不识别 .com 后缀的命令,输入 tree 命令时以为是 tree.exe ,实际

4、上 tree 命令应该是 的简写.我擦,竟然出现乱码,根据我多年的开发经验来看,乱码问题多半是编码问题导致的,那么修改下终端的编码设置应该就能解决问题.在命令行窗口内右键弹出 mintty 终端的设置页面,选择文本( Text)中本地化( Locale)配置,选择中文简体( zh_CN),字符集( Characterset)设置为 UTF-8.瞬间被打脸,无论是原来的 git bash 命令行窗口还是新开的命令行窗口,仍然还是乱码!然而,我是不会承认被打脸的,世人皆醉我独醒,肯定是 bug,哈哈!其实,中文乱码真的是 bug ,还是官方认可的 bug 哟,我并没有被打脸呢,后续会介绍.调用c

5、md程序既然 git bash 没有提供 tree 命令,而恰巧 cmd 提供了 tree 命令,那为何不假借他人之手实现自己的目的呢?在 cmd 中使用 tree 命令直接输入即可得到目录树结构,但是现在需要在 git bash 中调用 cmd 中的 tree 命令.# 直接输入 tree 命令,正确响应并且无中文乱码. G:sublimetesttree 卷 工作 的文件夹 PATH 列表 卷序列号为 00000093 CC3C:50D0 G:. cmd git # 输入 cmd tree 命令,虽无报错,但也没有正确响应. G:sublimetestcmd tree Microsoft

6、Windows 版本 6.3.9600 (c) 2013 Microsoft Corporation。保留所有权利。cmd 中直接输入 tree 命令即可,无需通过 cmd tree 这种方式,还以为你要调用 cmd 命令呢!因此,我们需要告诉 git bash 要通过 cmd 去调用下 tree 命令.# 注意看前缀是 snowdreams1006home MINGW64 表明当前处于 git bash 环境 snowdreams1006home MINGW64 /g/sublime/test # 输入 cmd tree 命令,虽无报错,但也没有正确响应,并且仍然有中文乱码. $ cmd t

7、ree Microsoft Windows 汾 6.3.9600 (c) 2013 Microsoft Corporation # 输出 tree 命令,正确响应但有中文乱码.此时命令行前缀已经更改为 G:sublimetest 表明当前不再处于git bash 环境! G:sublimetesttree tree PATH 0000006B CC3C:50D0 G:. cmd git通过上述操作结果来看,不难发现以下问题. cmd tree命令切换到cmd环境,并且tree命令并没有执行. 换句话说,cmd tree和cmd dir或者cmd的作用相同,都是切换了当前bash环境. 进入cm

8、d命令行运行tree能够得到正确响应,但存在中文乱码. 想要退出cmd环境,Ctrl+C组合即可重新回到git bash环境.由此可见,不加任何参数冒昧进入到 cmd 环境还是比较麻烦的,因此下面提供带参数的命令帮助我们阅后即焚.cmd/c tree 命令,阅后即焚,表示执行完立即退出.snowdreams1006home MINGW64 /g/sublime/test $ cmd /c tree PATH 00000008 CC3C:50D0 G:. cmd git snowdreams1006home MINGW64 /g/sublime/test $执行命令前后我们都在 git bash

9、 环境并且在 cmd 中得到正确响应结果,唯一的区别就是多加了 /c 参数,表示执行完命令立即退出 cmd 环境.优雅调用cmd简单总结下,如何在 git bash 中借助 cmd 实现 tree 命令. : 补全调用命令后缀名,直接调用系统命令. cmd/c tree: 借助cmd运行tree命令,从而实现调用tree的目的. 这两种方式都存在中文乱码问题,即使设置了终端的编码方式也没有解决乱码.调用 tree 命令的目的已经达到,没有解决的问题是中文乱码.解决问题最快速的方式是百度一下或者从官网寻求帮助,这次我选择后者,因为百度一下人人都会,不用我再讲了吧!简单解释下这段话的意思:如果在

10、mintty 终端调用原生 cmd 程序,简单的输出指令没有什么问题,交互指令可能存在问题. 因此建议使用 winpty 进行包装再调用原生 cmd 程序.winpty 是一种提供与 cmd 通信的软件包,详情请参考https:/ winpty 试试看!snowdreams1006home MINGW64 /g/sublime/test # winpty + : 正常输出且无中文乱码 $ winpty 卷 工作 的文件夹 PATH 列表 卷序列号为 00000074 CC3C:50D0 G:. cmd git snowdreams1006home MINGW64 /g/sublime/te

11、st # winpty + cmd /c tree : 正常输出且无中文乱码 $ winpty cmd /c tree 卷 工作 的文件夹 PATH 列表 卷序列号为 000000B3 CC3C:50D0 G:. cmd git snowdreams1006home MINGW64 /g/sublime/test $果然是神药,一下子就治好了我多年的老寒腿啊! winpty : 不叫小名而叫全称,直接调用系统命令 winpty cmd/c tree: 假借他人之手,变相调用系统命令上文中说设置文件编码应该能够解决中文乱码问题结果仍然有乱码,猜测是 bug ,现在没有打脸吧?既然已经提供了解决方

12、案,那文章是不是应该到此为止了呢?不不不,远远还没结束,这只是开胃小菜,好戏还在后头呢.更何况这命令也忒长了,记不住啊!很简单,可以设置别名啊,把常用命令设置成别名,这样就记住啦!输入 alias 命令没有报错,说明目前环境是支持设置别名的.snowdreams1006home MINGW64 /g/sublime/test $ alias alias ll=ls -l alias ls=ls -F -color=auto -show-control-chars alias node=winpty node.exe按照 linux 的操作习惯,命令行设置的一般都是临时性的,想要永久生效,都要写

13、入到文件中,别名这种当然要一劳永逸设置成永久文件.snowdreams1006home MINGW64 /g/sublime/test $ cat /etc/bashrc cat: /etc/bashrc: No such file or directory snowdreams1006home MINGW64 /g/sublime/test $ cat /.bashrc cat: /c/Users/snowdreams1006/.bashrc: No such file or directory竟然配置文件都不存在?当然不存在了啊!快醒醒,你是在 Windows 系统上并不是 Linux 系

14、统,上哪给你弄这些配置文件去?脑海中迅速闪现哲学基本问题: 我是谁,我在那,我在干什么?我是 Windows 系统用户,正在 git bash 命令行中试图设置别名,没有找到类似于 linux 配置文件.既然你明白你何出来,那你去那里看看有没有什么发现?snowdreams1006home MINGW64 /g/sublime/test $ cd /e/git snowdreams1006home MINGW64 /e/git $ winpty 卷 软件 的文件夹 PATH 列表 卷序列号为 00000063 223E:7300 E:. bin cmd dev mqueue shm看到熟悉的 ./etc/bash.bashrc 文件,顿时亲切不少,设置一下别名再说.snowdreams1006home MINGW64 /e/git $ echo

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > IT计算机/网络 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号