百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

.NET 10 牛逼!Linux 以 Shebang 方式执行脚本

gudong366 2025-06-30 18:04 5 浏览

需求:昨天看了张队在博客园发表的文章,无需创建项目 C# 单文件可以直接执行了。我们在 Linux 下执行一些任务的时候,可能需要编写 shell 脚本,对于不懂 shell 语言的人来说,写不出来或者有学习成本,如果自会 C# 语言,现在也可以通过 Shebang 格式来写一个脚本,在 Linux 服务器上面执行。

Linux Shebang

shebang(也称为 hashbang 或 pound-bang)是一个由井号(#)和感叹号(!)组成的字符序列(#!),它出现在Unix-like操作系统中的脚本文件的第一行。shebang用于指定执行该脚本的解释器。当一个脚本文件被执行时,操作系统会查找文件的第一行,如果发现shebang,它会使用指定的解释器来运行脚本。

如下列出了一些典型的shebang解释器指令:

  1. #!/bin/sh—使用sh,即Bourne shell或其它兼容shell执行脚本

  2. #!/bin/csh—使用csh,即C shell执行

  3. #!/usr/bin/perl -w—使用带警告的Perl执行

  4. #!/usr/bin/python -O—使用具有代码优化的Python执行

  5. #!/usr/bin/php—使用PHP的命令行解释器执行

复制代码


什么是 dotnet run app.cs?

.NET 10 Preview 4 中的一项新功能,它使 C# 的入门变得前所未有的轻松。现在,您可以直接使用 运行 C# 文件dotnet run app.cs。这意味着您无需再创建项目文件或搭建整个应用程序的框架即可运行快速脚本、测试代码片段或实验某个想法。它简单、直观,旨在简化 C# 开发体验,尤其适合刚入门的开发者。之前都是通过第三方开发者来填补这项空白(例如:cs-script、dotnet-script 等)。

到目前为止,使用dotnetCLI 执行 C# 代码需要包含文件的项目结构.csproj。借助这项新功能(我们称之为基于文件的应用),您可以直接运行独立.cs文件,就像使用 Python 或 JavaScript 等脚本语言一样。

备注:基于文件的应用仍然需要 .NET SDK 才能使用,因为它们仍然使用基于 MSBuild 的常规系统构建。如果您希望使用“dotnet run app.cs”运行基于文件的应用,则必须具备 .NET SDK

在 Linux 编写 C# 脚本

本文使用 Rocky Linux 9 系统进行测试,首先下载 .NET 10 SDK preview.5 到系统,命令如下:

  1. wget https://builds.dotnet.microsoft.com/dotnet/Sdk/10.0.100-preview.5.25277.114/dotnet-sdk-10.0.100-preview.5.25277.114-linux-x64.tar.gz

  2. mkdir -p /data/sdks/dotnet10

  3. tar -xzvf dotnet-sdk-10.0.100-preview.5.25277.114-linux-x64.tar.gz -C /data/sdks/dotnet10

复制代码


如下图:



简单代码

编写一个 hello.cs 脚本,代码如下:

  1. #!/data/sdks/dotnet10/dotnet run


  2. Console.WriteLine("Hello from C# script! 我是小渣渣");

复制代码


赋予执行权限,并执行,命令如下:

  1. chmod +x hello.cs

  2. ./hello.cs

复制代码


输出如下:



依赖 nuget 包代码

往往逻辑比较复杂,可能需要引入第三方 nuget 包,调用里面的函数才能完整我们的需求,可以使用 #:package 指令来引入 nuget 包,以 Newtonsoft.Json 为例,代码如下:

  1. #!/data/sdks/dotnet10/dotnet run


  2. #:package Newtonsoft.Json@13.0.3


  3. using Newtonsoft.Json;


  4. var output =
    JsonConvert.SerializeObject(new { name = "你好 .NET", version = "10" }, Formatting.Indented);

  5. Console.WriteLine(output);

复制代码


输出如下:



参考:


https://devblogs.microsoft.com/dotnet/announcing-dotnet-run-app/


https://www.cnblogs.com/shanyou/p/18930500


相关推荐

梦幻诛仙12职业1亿元宝版本架设教程(包含资源下载)

架设教程:1;上传脚本zx到bin文件夹,给权限chmod-R777/bin2;输入zx安装宝塔面板输入对应序号,中途输入Y继续3;安装好之后,会给个宝塔地址及账号密码,复制地址...

Java零基础入门,科普Java你应该了解什么

最近很多人问我想学Java但是一点基础没有,网上看了一堆学习线路图还是无从下手。今天耗时3小时整理了一套保姆级的Java入门教程,建议收藏按照线路图一点点学习。一、Java的概况Java是1995年6...

01.Java发展历史(java发展历史简要)

1.Java发展历史Java由SunMicrosystems公司(现为Oracle公司)的JamesGosling及其团队在1991年开发,最初命名为"Oak",后改名为"...

Ubuntu16.04.1安装Java8(ubuntu终端安装java)

上篇文章讲解了怎么在Windows下安装Java8《Windows10安装Java8》,这里讲解下怎么在Linux下安装Java。由于之前已经安装了Ubuntu16.04.1《VmwareWorkst...

性能测试能力提升-JVM GC监控和优化

一、背景接着上一篇的知识:性能测试能力提升-JVMGC原理,本篇文章,我们将主要介绍JVMGC监控和优化相关的知识:命令行方式监控GC图形化方式监控GC什么时候需要开始GC优化?GC优化的目的GC...

Spring Boot Jar 包秒变 Docker 镜像实现多环境部署

你是否在互联网大厂后端开发工作中,遇到过这样的困扰?当完成一个SpringBoot项目开发,准备将Jar包部署到不同环境时,却发现各个环境依赖不同、配置复杂,部署过程繁琐又容易出错,不仅耗费...

「JDK 11」关于 Java 模块系统,看这一篇就够了

继2014年3月Java8发布之后,时隔4年,2018年9月,Java11如期发布,其间间隔了Java9和Java10两个非LTS(LongTermSupp...

对Java学习的10条建议(对java的认识和理解)

不少Java的初学者一开始都是信心满满准备迎接挑战,但是经过一段时间的学习之后,多少都会碰到各种挫败,以下北风网就总结一些对于初学者非常有用的建议,希望能够给他们解决现实中的问题。Java编程的准备:...

JAVA入门教程-第1章 概述(java入门指南)

大道至简-JAVA入门教程在本教程中,你将学习Java语言的基础知识。Java基础内容涵盖:Java基础概念、Java词法结构、Java数组、Java流程控制、Java字符串、Java...

推荐一款Java音频视频编码器,很赞

Jave2是什么JAVE2(Java音频视频编码器)库是ffmpeg项目上的Java包装器。开发人员可以利用JAVE2将音频和视频文件从一种格式转码为另一种格式。在示例中,您可以将AVI文件转换为MP...

【JAVA教程】JAVA入门及开发环境安装

一、Java开发环境概述Java开发需要三个核心组件:JDK(JavaDevelopmentKit)-Java开发工具包,开发、编译、调试Java程序JRE(JavaRuntimeE...

Windows和Linux环境下的JDK安装教程

JavaDevelopmentKit(简称JDK),是Java开发的核心工具包,提供了Java应用程序的编译、运行和开发所需的各类工具和类库。它包括了JRE(JavaRuntimeEnviro...

记Tomcat优化方案(tomcat优化的几种方法)

Tomcat服务吞吐量评估方案问题:评估方案在一台8核16G的linux服务器上,使用tomcat容器部署服务。在正常情况下如何评估这个tomcat服务可处理的连接数,即服务的吞吐量,请在正常情况下考...

JVM GC诡异问题排查,k8s差点害死我……

前言本文将通过一个真实的生产环境案例,详细展示如何系统性地排查和解决JVM垃圾收集问题。这个案例涵盖了从问题发现、分析诊断到最终解决的完整过程,对于理解JVM调优实战具有重要的参考价值。系统背景我们的...

Thorium Reader - 功能强大的跨平台免费电子书阅读器

在日常阅读日益普及的今天,选择一款合适的电子书阅读器至关重要。ThoriumReader作为一款独具特色的阅读应用,正逐渐在众多同类产品中崭露头角,为用户带来了卓越的阅读体验。  跨平台的便捷性...