bash / shellスクリプトでlikeのようなUTF-8文字を使用する必要がありますか?


36

ここでの単純なコードは、次のコマンドで起動した場合、私のマシンで期待どおりに機能しbashます。

function ⏰(){
 date
}

これを使用している他の人に問題がありますか、それとも普遍的ですか?

私は今のところ他のソースコードでこのようなものを見たことがないので、疑問に思っています。

編集:無限の可能性があります。たとえば、機能の役割を絵文字の使用などですばやく区別するために使用できます。

ファイルを変更または削除できるものの場合は💣、進行中の作業の場合はinteractive、対話型メニューの場合は...

そのすべての標準を作成する必要があると思いますが、興味深いアイデアのようです。
5文字までのランダムな行は、コードが何をしているのかを理解するのに役立ちます。(もちろん、それらの読み方を学ぶ必要があります。)

さらなる編集:試してみる。今のところ、エディターですべての関数を折り畳むと(またはcat myscript.sh|grep function)このようになります。(私のユニコードはgeany、ここに比べて、または私の端末でずっと良く見えます。)

function _1(){
function ⬚⬚_2(){
function ⬚⬚⬚_📃_D(){
function ⬚⬚⬚⬚_📃_X(){
function ⬚⬚⬚⬚⬚_📃_Y(){
function ⬚⬚⬚⬚⬚⬚__P(){
function ⬚⬚⬚⬚_📃_Z(){
function ⬚⬚⬚⬚⬚__U(){
function ⬚⬚⬚⬚⬚__O(){

奇妙なインデント⬚を使用して、関数の相互関係を示し、記号📃/❓を使用して、それぞれの役割を明確に区別しています。(もちろん、これらは私の実際の関数名ではありません。最後にランダムな文字を付けただけですが、それらがなくても関係を明確に見ることができます。)


8
古いサーバーでスクリプトを使用する必要がある場合、bash絵文字サポートが最近であるため、これは機能しませんでした。しかし、最近のLinuxではおそらく大丈夫です。
キウィ

18
@Iporいいえ、Unicodeを表します(Unicodeの「Uni」はユニバーサルを表します)。
スティーブンキット

5
ユニバーサルをどのように「ユニバーサル」にしたいですか?通常のUTF-8とUTF-16の問題で、Cygwinで動作しますか?現在のIBM z / OSシステムサービスでは、まだEBCDIC文字セットを処理する必要がありますか?8ビットバイトを最小単位として使用しない歴史的なUnixコンピューターでは?POSIX制限には理由があります
...-Dirkt

6
POSIXによると、関数の名前は、ポータブル文字セットの文字で構成する必要があります。「ユニバーサル」が「任意のシェル」を意味する場合、この意味ではユニバーサルではありません。
クサラナナンダ

6
シェルスクリプトで<whatever>を実行しても安全かどうかを尋ねられた場合、答えはほとんどありません。まあ、やってecho $fooも安全です。
マッテオイタリア

回答:


55

このための有用なガイドラインは、「Portable Operating System Interface」(POSIX)です。これは、ほとんどのUnixライクなシステムで実装されている標準のファミリーです。通常、シェルスクリプトをPOSIXで義務付けられている機能に限定して、異なるシェルやプラットフォームで使用できるようにすることをお勧めします。

「シェルコマンド言語」関数定義の POSIX仕様によると:

この関数はfnameという名前です。アプリケーションは、それが名前であることを保証しなければなりません(IEEE Std 1003.1-2001のBase Definitionsボリューム、セクション3.230、Nameを参照)。実装では、関数名に他の文字を拡張として使用できます。

「名前」の定義へのリンクをたどる:

シェルコマンド言語で、ポータブル文字セットのアンダースコア、数字、およびアルファベットのみで構成される単語。

その文字セットには、U0000とU007Eの間の文字のみが含まれます。
したがって、「⏰」(U23F0)などの文字は、POSIX準拠の識別子では無効です。

あなたのシェルはそれらを受け入れるかもしれませんが、それは他の人が同様に受け入れることを保証しません。
異なるプラットフォームおよびソフトウェアバージョンでスクリプトを使用できるようにするには、このような非準拠識別子の使用を避ける必要があります。


18
目安として...標準キーボードにキーがない場合は、使用しないでください。
SnakeDoc

6
@SnakeDoc youtube.com/watch?v=3AtBE9BOvvk「標準」絵文字キーボード;)
ジョーン

9
@Jornたぶん「普通の小売店でキーボードを買えないなら」と言うべきだった... lol
SnakeDoc

4
@SnakeDoc良いスタートです-しかし、私がこれを入力しているキーボードには、£、€、および¬のキーがあり、これらはすべてポータブル文字セットの外にあります。さらに深刻なのは、一部の同僚がä、ö、ü、è、é、およびßを備えたキーボードを持っていることです。これらはすべて文字ですが、移植可能な関数名には適していません。
マーティンボナーはモニカをサポートします

2
POSIX準拠ですが、POSIX限定ではありませんか?
ボブ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.