GNU/Linux >> Linux の 問題 >  >> Linux

Linux ターミナルで C# コードを実行する

もちろんそれは可能で、プロセスは非常に簡単です。

ここでは、Ubuntu Linux の手順を説明します。

ターミナルを開く:

Ctrl + Alt + T

タイプ

gedit hello.cs

gedit で 開いたウィンドウで、次のサンプル コードを貼り付けます:

using System;
class HelloWorld {
  static void Main() {
    Console.WriteLine("Hello World!");
  }
}

gedit を保存して閉じます。

端末タイプに戻る:

sudo apt update
sudo apt install mono-complete
mcs -out:hello.exe hello.cs
mono hello.exe

出力:

Hello World!

注:以下の @adabru の回答により、古いモノプラットフォームを使用していない限り、私のソリューションは時代遅れになります。

C# スクリプトは、Python や Perl スクリプトと同じように bash コマンド ラインから実行できますが、これを機能させるには少しの bash マジックが必要です。 Corey が前述したように、最初に Mono をマシンにインストールする必要があります。次に、次のコードを実行可能な bash スクリプトとして Linux マシンに保存します:

if [ ! -f "$1" ]; then
dmcs_args=$1
shift
else
dmcs_args=""
fi
script=$1
shift
input_cs="$(mktemp)"
output_exe="$(mktemp)"
tail -n +2 $script > $input_cs
dmcs $dmcs_args $input_cs -out:${output_exe} && mono $output_exe [email protected]                                                                          
rm -f $input_cs $output_exe

上記のスクリプトを /usr/bin/csexec として保存したと仮定すると、C# の「スクリプト」の例は次のとおりです。

#!/usr/bin/csexec -r:System.Windows.Forms.dll -r:System.Drawing.dll                                                                   
using System;                                                                                                                                
using System.Drawing;                                                                                                                        
using System.Windows.Forms;                                                                                                                  
public class Program                                                                                                                         
{                                                                                                                                            
    public static void Main(string[] args)                                                                                                     
    {                                                                                                                                          
        Console.WriteLine("Hello Console");                                                                                                      
        Console.WriteLine("Arguments: " + string.Join(", ", args));                                                                              
        MessageBox.Show("Hello GUI");                                                                                                            
    }                                                                                                                                          
}                                                                                                                                            

上記のコードを「hello.cs」などのファイルに保存し、実行可能にし、最初の行を以前に保存した bash スクリプトを指すように変更してから実行すると、「Hello」というダイアログとともに次の出力が表示されます。 GUI":

bash-4.2$ ./hello.cs foo bar baz
Hello Console
Arguments: foo, bar, baz

GUI を使用するには、実行レベル 5 である必要があることに注意してください。純粋なテキスト コンソールで実行される、より単純な C# スクリプトを次に示します。

#!/usr/bin/csexec                                                                                                                     
using System;                                                                                                                                
public class Program                                                                                                                         
{                                                                                                                                            
    public static void Main(string[] args)                                                                                                     
    {                                                                                                                                          
        Console.WriteLine("Hello Console");                                                                                                      
        Console.WriteLine("Arguments: " + string.Join(", ", args));                                                                              
    }                                                                                                                                          
}                                                                                                                                            

コマンド ライン引数は C# スクリプトに渡されますが、シバン引数 (「-r:System.Windows.Forms.dll -r:System.Drawing.dll」の上の最初の C# スクリプト) は C#コンパイラ。後者の機能を使用すると、必要なコンパイラ引数を C# スクリプトの最初の行で指定できます。

bash スクリプトがどのように機能するかの詳細に興味がある場合は、C# スクリプトの最初の行で渡されたすべての引数をシバン (#!) でひとまとめにし、その後にスクリプト名、スクリプトに渡されたコマンド ライン引数を続けます。自体。上記の最初の C# の例では、次の 5 つの引数が bash スクリプトに渡されます (引用符で区切られています)。

"-r:System.Windows.Forms.dll -r:System.Drawing.dll" "hello.cs" "foo" "bar" "baz"

スクリプトは、最初の引数がファイル名ではないと判断し、C# コンパイラの引数が含まれていると想定します。次に、'tail' を使用して C# スクリプトの最初の行を取り除き、結果を一時ファイルに保存します (C# コンパイラは stdin から読み取らないため)。最後に、コンパイラの出力は別の一時ファイルに保存され、スクリプトに渡された元の引数を使用して mono で実行されます。 「シフト」演算子を使用して、コンパイラの引数とスクリプト名を削除し、スクリプトの引数のみを残します。

C# スクリプトが実行されると、コンパイル エラーがコマンド ラインにダンプされます。


#! (hashbang) タグは、perl、php、bash、sh などのスクリプトが正しく実行されるように、使用するインタープリターをシェルに伝えるために使用されます。

ただし、C# はスクリプト言語ではなく、実行可能な形式にコンパイルすることを目的としています。 C# を使用する場合は、少なくともコンパイラとランタイムをインストールする必要があります。できれば、アプリケーションの開発とデバッグに役立つ IDE (統合開発環境) をインストールする必要があります。

コンパイラとランタイム用に Mono をインストールしてから、IDE 用に MonoDevelop をインストールします。


Linux
  1. Linuxターミナルで冒険に出かけましょう

  2. vlock –Linuxでユーザー仮想コンソールまたはターミナルをロックするスマートな方法

  3. Linuxターミナルでのmvコマンドの5つの使用

  1. PodmanでLinux仮想マシンを実行する

  2. Cowsay:Linux ターミナルで楽しむ

  3. Linuxでターミナルコンソールをズームインおよびズームアウトする方法

  1. WebブラウザでLinuxを実行するための10のベストWebサイト

  2. Unix コンソールまたは Mac 端末でシェル スクリプトを実行するには?

  3. Linux コンソールで、出力をラップしない方法