linux - Git Bash 在 Windows 7 上显示奇怪的字符

标签 linux git bash

<分区>

我在我的 Windows 中安装了 Gitbash 并定义了 Linux 命令行(例如 ls 以列出目录)但是命令行返回了奇怪的字符。

Reginaldo@Dell MINGW64 /c/dev/php/laravel/flamboyant (master)
$ php artisan
←[32mLaravel Framework←[39m version ←[33m5.1.29 (LTS)←[39m

←[33mUsage:←[39m
  command [options] [arguments]

←[33mOptions:←[39m
  ←[32m-h, --help←[39m            Display this help message
  ←[32m-q, --quiet←[39m           Do not output any message
  ←[32m-V, --version←[39m         Display this application version
  ←[32m    --ansi←[39m            Force ANSI output
  ←[32m    --no-ansi←[39m         Disable ANSI output
  ←[32m-n, --no-interaction←[39m  Do not ask any interactive question
  ←[32m    --env[=ENV]←[39m       The environment the command should run under.
  ←[32m-v|vv|vvv, --verbose←[39m  Increase the verbosity of messages: 1 for norm
al output, 2 for more verbose output and 3 for debug

←[33mAvailable commands:←[39m
  ←[32mclear-compiled←[39m      Remove the compiled class file
  ←[32mdown←[39m                Put the application into maintenance mode
  ←[32menv←[39m                 Display the current framework environment
  ←[32mhelp←[39m                Displays help for a command
  ←[32minspire←[39m             Display an inspiring quote
  ←[32mlist←[39m                Lists commands
  ←[32mmigrate←[39m             Run the database migrations
  ←[32moptimize←[39m            Optimize the framework for better performance
  ←[32mserve←[39m               Serve the application on the PHP development ser
ver
  ←[32mtinker←[39m              Interact with your application
  ←[32mup←[39m                  Bring the application out of maintenance mode
 ←[33mapp←[39m
  ←[32mapp:name←[39m            Set the application namespace
 ←[33mauth←[39m
  ←[32mauth:clear-resets←[39m   Flush expired password reset tokens
 ←[33mcache←[39m
  ←[32mcache:clear←[39m         Flush the application cache
  ←[32mcache:table←[39m         Create a migration for the cache database table
 ←[33mconfig←[39m
  ←[32mconfig:cache←[39m        Create a cache file for faster configuration loa
ding
  ←[32mconfig:clear←[39m        Remove the configuration cache file
 ←[33mdb←[39m
  ←[32mdb:seed←[39m             Seed the database with records
 ←[33mevent←[39m
  ←[32mevent:generate←[39m      Generate the missing events and listeners based
on registration
 ←[33mhandler←[39m
  ←[32mhandler:command←[39m     Create a new command handler class
  ←[32mhandler:event←[39m       Create a new event handler class
 ←[33mkey←[39m
  ←[32mkey:generate←[39m        Set the application key
 ←[33mmake←[39m
  ←[32mmake:command←[39m        Create a new command class
  ←[32mmake:console←[39m        Create a new Artisan command
  ←[32mmake:controller←[39m     Create a new resource controller class
  ←[32mmake:event←[39m          Create a new event class
  ←[32mmake:job←[39m            Create a new job class
  ←[32mmake:listener←[39m       Create a new event listener class
  ←[32mmake:middleware←[39m     Create a new middleware class
  ←[32mmake:migration←[39m      Create a new migration file
  ←[32mmake:model←[39m          Create a new Eloquent model class
  ←[32mmake:policy←[39m         Create a new policy class
  ←[32mmake:provider←[39m       Create a new service provider class
  ←[32mmake:request←[39m        Create a new form request class
  ←[32mmake:seeder←[39m         Create a new seeder class
  ←[32mmake:test←[39m           Create a new test class
 ←[33mmigrate←[39m
  ←[32mmigrate:install←[39m     Create the migration repository
  ←[32mmigrate:refresh←[39m     Reset and re-run all migrations
  ←[32mmigrate:reset←[39m       Rollback all database migrations
  ←[32mmigrate:rollback←[39m    Rollback the last database migration
  ←[32mmigrate:status←[39m      Show the status of each migration
 ←[33mqueue←[39m
  ←[32mqueue:failed←[39m        List all of the failed queue jobs
  ←[32mqueue:failed-table←[39m  Create a migration for the failed queue jobs dat
abase table
  ←[32mqueue:flush←[39m         Flush all of the failed queue jobs
  ←[32mqueue:forget←[39m        Delete a failed queue job
  ←[32mqueue:listen←[39m        Listen to a given queue
  ←[32mqueue:restart←[39m       Restart queue worker daemons after their current
 job
  ←[32mqueue:retry←[39m         Retry a failed queue job
  ←[32mqueue:subscribe←[39m     Subscribe a URL to an Iron.io push queue
  ←[32mqueue:table←[39m         Create a migration for the queue jobs database t
able
  ←[32mqueue:work←[39m          Process the next job on a queue
 ←[33mroute←[39m
  ←[32mroute:cache←[39m         Create a route cache file for faster route regis
tration
  ←[32mroute:clear←[39m         Remove the route cache file
  ←[32mroute:list←[39m          List all registered routes
 ←[33mschedule←[39m
  ←[32mschedule:run←[39m        Run the scheduled commands
 ←[33msession←[39m
  ←[32msession:table←[39m       Create a migration for the session database tabl
e
 ←[33mtracker←[39m
  ←[32mtracker:tables←[39m      Create the migrations for Tracker database table
s and columns
 ←[33mvendor←[39m
  ←[32mvendor:publish←[39m      Publish any publishable assets from vendor packa
ges
 ←[33mview←[39m
  ←[32mview:clear←[39m          Clear all compiled view files

Reginaldo@Dell MINGW64 /c/dev/php/laravel/flamboyant (master)

有人可以帮帮我吗?

最佳答案

您需要启用ansi 控制代码处理。参见 here了解详情。

Jason Karns 在 shell 中

我已经在 Windows 上使用 git 三年多了,我又爱上了命令行。 Bash,当然不是 windows 命令提示符。美丽,无处不在,充满疣的狂欢。 Git 严重依赖 GNU 实用程序,因此在 Windows 上它需要 cygwin 或 msys。以前被cygwin烧过,更喜欢msys+mingw的极简简洁。连同 git,整个 ruby​​ 生态系统都存在于 shell 中。然而,在 shell 中假定标准 ANSI 颜色支持的众多工具、 gem 和实用程序开始让我厌烦。你瞧,有一个可爱的解决方案可以为 Windows 上的 bash(和 cmd)提供 ansi 颜色支持:ansicon。

Download the zip and extract .有几种安装方式:

  1. 解压缩到永久位置(我使用 C:/bin/ansicon)。从适合您系统 (x86/x64) 的目录中执行 ansicon.exe -i,一切就绪。任何新的 shell(包括 bash 和 windows cmd)都会自动运行 ansicon 实用程序以显示颜色输出。确保在运行 ansicon.exe –u 之前不要移动可执行文件。这将删除注册表项并防止每个命令 shell 出现丑陋的错误消息。

  2. 或者,将 ansicon 可执行文件放在您的 PATH 中,或将其位置添加到您的 PATH 中。然后您可以使用 ansicon.exe –p 为 session 启动 ansicon。

此实用程序在我的 Windows XP 上运行良好。我一直无法让它在 Windows 7 上运行,但我听说应该支持它。当 Windows 7 问题得到解决时,我会发布更新。

更新

根本原因,已发现!如果您在 Windows x64 上将 JRuby 与 64 位 JVM 一起使用,则 ansicon 将无法工作。问题是 ansicon(64 位)能够注入(inject) 32 位进程,但反之则不行。目前,JRuby 启动器是一个 32 位可执行文件。因此,如果您运行的是 64 位 shell(cmd、bash 或其他),ansicon 将正确注入(inject)该进程。然后它将成功注入(inject)到 32 位 JRuby 启动器进程中。此时,出于所有意图和目的,您正在运行 32 位版本的 ansicon。因此,如果您在 64 位 JVM 上运行 JRuby,则 32 位 ansicon 无法注入(inject) 64 位 JVM。有一个开放的功能请求,要求 JRuby 将其 64 位版本与 64 位启动器一起发布。你应该投票支持这个功能。我还听说 adoxa (Jason Hood) 正在解决这个问题。保持发布。

当然,目前最简单的解决方案是保证JRuby使用32位的JVM。只需更改(或设置)您的 JAVA_HOME 环境变量以指向 32 位 JVM,您就大功告成了。

更新 2:问题已解决

最新的 64 位二进制文​​件 (ansi6432.z​​ip) 已解决此问题。只需在 1.51 版本之上下载并解压它们。

enter image description here

关于linux - Git Bash 在 Windows 7 上显示奇怪的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35387667/

相关文章:

git - 从 BitBucket 在 Confluence 中显示 PlantUML

java - 通过 java 应用程序使用 git

linux - 如何获取包含特定分区的磁盘名称

linux - Linux 配置文件中注释掉的行

c++ - 使用 nvcc、icpc 编译时来自 cudaGetDeviceCount 的运行时 cudaErrorInsufficientDriver 错误

linux - git可以存储或控制目录用户、组或权限

linux - shell脚本中for循环的迭代

bash - 使用 url 重定向下载文件

linux - 修改完整 csv 文件的最后一个字段

linux - Apache默认安装httpd.conf在哪里?