出力URLをコマンドにリンクしようとしましたが、open
grepのカラー設定を変更したり、他のユーティリティを使用して出力を追加したりしても、出力に特殊文字がある複数のawk
インスタンスが見つかりました。cut
次のように:
最初の2回open
コマンドを実行したときに、次の2つのURLを受け取りました。
パイプでリンクしたり、色の設定が変更された場合でも、URLに特殊文字が追加されていることがわかります。これは次のコマンドで確認できますod
。
➜ ~ apm show vim-mode | grep https | cut -d' ' -f2 | od -atx1
0000000 esc [ 4 m h t t p s : / / g i t h
1b 5b 34 6d 68 74 74 70 73 3a 2f 2f 67 69 74 68
0000020 u b . c o m / a t o m / v i m -
75 62 2e 63 6f 6d 2f 61 74 6f 6d 2f 76 69 6d 2d
0000040 m o d e esc [ 2 4 m nl
6d 6f 64 65 1b 5b 32 34 6d 0a
➜ ~ apm show vim-mode | grep --color=none https | cut -d' ' -f2 | od -atx1
0000000 esc [ 4 m h t t p s : / / g i t h
1b 5b 34 6d 68 74 74 70 73 3a 2f 2f 67 69 74 68
0000020 u b . c o m / a t o m / v i m -
75 62 2e 63 6f 6d 2f 61 74 6f 6d 2f 76 69 6d 2d
0000040 m o d e esc [ 2 4 m nl
6d 6f 64 65 1b 5b 32 34 6d 0a
0000052
次の2つの出力はawk
URLを削除しようとしますapm
が、特殊文字も導入し、open
コマンドはそのURLをファイルとして開こうとします。これは以下で確認されましたod
。
➜ ~ apm show vim-mode | awk -F' ' '/http/ {print $2}' | od -atx1
0000000 esc [ 4 m h t t p s : / / g i t h
1b 5b 34 6d 68 74 74 70 73 3a 2f 2f 67 69 74 68
0000020 u b . c o m / a t o m / v i m -
75 62 2e 63 6f 6d 2f 61 74 6f 6d 2f 76 69 6d 2d
0000040 m o d e esc [ 2 4 m nl
6d 6f 64 65 1b 5b 32 34 6d 0a
解決策は素敵ですsed oneliner、sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g"
すべての特殊文字を正常に削除します。最後のコマンドはこのオネライナーを使用し、期待どおりにopen
正常に進行します。https://github.com/atom/vim-mode
これが確認されましたod
。
➜ ~ apm show vim-mode | awk -F' ' '/http/ {print $2}' | sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g" | od -atx1
0000000 h t t p s : / / g i t h u b . c
68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63
0000020 o m / a t o m / v i m - m o d e
6f 6d 2f 61 74 6f 6d 2f 76 69 6d 2d 6d 6f 64 65
0000040 nl
0a
0000041
したがって、いくつかの質問が残ります。
- なぜ動作しないのです
grep --color=none
か? - さまざまなギターユーティリティに特殊文字が追加されるのはなぜですか?
私はこれが私のシェル設定に関連していると思います。私はそれを使用していますジムそしてポイントトピック
編集する
設定がTERM=dumb
うまくいかないようです。
➜ github-application master ✓ diff <(TERM=dumb apm show vim-mode | od -atx1) <(apm show vim-mode | od -atx1)
➜ github-application master ✓
設定NPM_CONFIG_COLOR=false
も影響しないようです。
➜ ~/w/s/g/m/todo master ✓ diff <(NPM_CONFIG_COLOR=false apm show vim-mode | od -atx1) <(apm show vim-mode | od -atx1)
➜ ~/w/s/g/m/todo master ✓
URLに下線があるのでそうです。もっと詳しく調べました。別の問題
答え1
で特殊文字を挿入したようですapm
。
➜ ~ apm show vim-mode | grep https | cut -d' ' -f2 | od -atx1
0000000 esc [ 4 m h t t p s : / / g i t h
1b 5b 34 6d 68 74 74 70 73 3a 2f 2f 67 69 74 68
0000020 u b . c o m / a t o m / v i m -
75 62 2e 63 6f 6d 2f 61 74 6f 6d 2f 76 69 6d 2d
0000040 m o d e esc [ 2 4 m nl
6d 6f 64 65 1b 5b 32 34 6d 0a
➜ ~ apm show vim-mode | grep --color=none https | cut -d' ' -f2 | od -atx1
0000000 esc [ 4 m h t t p s : / / g i t h
1b 5b 34 6d 68 74 74 70 73 3a 2f 2f 67 69 74 68
0000020 u b . c o m / a t o m / v i m -
75 62 2e 63 6f 6d 2f 61 74 6f 6d 2f 76 69 6d 2d
0000040 m o d e esc [ 2 4 m nl
6d 6f 64 65 1b 5b 32 34 6d 0a
0000052
➜ ~ apm show vim-mode | od -atx1
0000000 esc [ 3 6 m v i m - m o d e esc [ 3
1b 5b 33 36 6d 76 69 6d 2d 6d 6f 64 65 1b 5b 33
0000020 9 m nl � 94 9c � 94 80 � 94 80 sp esc [ 3
39 6d 0a e2 94 9c e2 94 80 e2 94 80 20 1b 5b 33
0000040 3 m 0 . 6 5 . 1 esc [ 3 9 m nl � 94
33 6d 30 2e 36 35 2e 31 1b 5b 33 39 6d 0a e2 94
0000060 9c � 94 80 � 94 80 sp esc [ 4 m h t t p
9c e2 94 80 e2 94 80 20 1b 5b 34 6d 68 74 74 70
0000100 s : / / g i t h u b . c o m / a
73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 61
0000120 t o m / v i m - m o d e esc [ 2 4
74 6f 6d 2f 76 69 6d 2d 6d 6f 64 65 1b 5b 32 34
0000140 m nl � 94 9c � 94 80 � 94 80 sp A d d sp
6d 0a e2 94 9c e2 94 80 e2 94 80 20 41 64 64 20
0000160 v i m sp m o d a l sp c o n t r o
76 69 6d 20 6d 6f 64 61 6c 20 63 6f 6e 74 72 6f
0000200 l nl � 94 9c � 94 80 � 94 80 sp 5 0 3 8
6c 0a e2 94 9c e2 94 80 e2 94 80 20 35 30 33 38
0000220 6 1 sp d o w n l o a d s nl � 94 94
36 31 20 64 6f 77 6e 6c 6f 61 64 73 0a e2 94 94
0000240 � 94 80 � 94 80 sp 1 0 1 4 sp s t a r
e2 94 80 e2 94 80 20 31 30 31 34 20 73 74 61 72
0000260 s nl nl R u n sp ` a p m sp i n s t
73 0a 0a 52 75 6e 20 60 61 70 6d 20 69 6e 73 74
0000300 a l l sp v i m - m o d e ` sp t o
61 6c 6c 20 76 69 6d 2d 6d 6f 64 65 60 20 74 6f
0000320 sp i n s t a l l sp t h i s sp p a
20 69 6e 73 74 61 6c 6c 20 74 68 69 73 20 70 61
0000340 c k a g e . nl nl
63 6b 61 67 65 2e 0a 0a
0000350
e esc [ 2 4
特定の関心分野です。
これはbashに切り替えて、同じ結果が得られれば確認できます。
bash-3.2# apm show vim-mode | grep https | cut -d' ' -f2 | od -atx1
0000000 esc [ 4 m h t t p s : / / g i t h
1b 5b 34 6d 68 74 74 70 73 3a 2f 2f 67 69 74 68
0000020 u b . c o m / a t o m / v i m -
75 62 2e 63 6f 6d 2f 61 74 6f 6d 2f 76 69 6d 2d
0000040 m o d e esc [ 2 4 m nl
6d 6f 64 65 1b 5b 32 34 6d 0a
ヒントをくれた@muruに感謝!