目次
回复内容:
ホームページ バックエンド開発 Python チュートリアル 会一门脚本语言,学 bash 就显得浪费时间?

会一门脚本语言,学 bash 就显得浪费时间?

Jun 06, 2016 pm 04:22 PM
bash else if ruby

首先bash虽然有if_else,可以调系统命令。但是许多局限性比如不支持多线程,没有库。所以会py或者ruby再去学bash,这是没必要 的。

回复内容:

日常工作,很多工作都是很琐碎 很细节的,你想不到你会遇到什么具体的小任务。
这时,你总不能打开vim 写个python脚本。
很可能还没写完#! ,shell 可能已经搞定了任务了。

所以会shell,熟练掌握各种命令,会sed awk,给日常工作带来很大的效率提升。
相信每一个Linux下的讨饭吃的程序员都深有体会。

琐碎任务一次性的任务交给shell; 注定要扩展,代码量不小,要维护的任务交给python.
需要效率的工作交给C。从来就不冲突。 学习 bash,并不仅仅是学习 bash 本身的语法,而是要去学习一下各种命令行工具的使用方式……
说到底,一切都是为了提高生产效率啊! 有py shell和ruby shell等等一大堆东西 另外一个角度看, 是shell script 让你拥有system utility的能力, 所有已安装的程序都洗干净了排着队等你调戏。sed, awk, kill, cat, ps, mkdir, rm, rsync, ..... 数都数不过来的别人幸苦调教好的漂亮姑娘,而*nix与生俱来的特性(redirection, pipe ...)又让它们可以很好的协同工作(因此do one thing, well) 。

如果你的程序有很多custom logic, 需要面向复杂些的数据结构,shell 的笨拙就会比较明显,这个时候就去找sexy的Python吧。 用Linux,bash还是要懂的。但是bash的语法确实有点奇怪(通常都是把c的语法当做是标准语法,所以说一门语言语法奇怪,就是说这门语言跟c的语法规则相去甚远),所以要想写好用的script,最好是学一门基于c的比较现代的语言。我现在用的是Python,然后需要执行bash的命令,就调用os,基本上所以的bash命令都可以用os.system("")这种方式运行。迄今为止,我唯一发现不能用os.system运行的就是 cd. Python中可以用os.chdir("")来实现 bash 的 cd. 今天服务器异地迁徙,我的shell脚本成功运维了500台服务器,包括对对等拷贝虚拟机配置按IP修改,组件启停,日志备份,服务器运行状态监控。shell起码不需要python解释器,代码上又异常优雅,你觉得shell不舒服,还是受到传统命令式编程的框架桎梏。每次打开vim看到花花绿绿又十分简洁的shell都让人陶醉,谁他妈再让我写Java或者python 去搞运维我就跟谁急 如果你是写需要长期运营的脚本,强烈推荐用python(或ruby等其他),倒不是说这样会更快,更方便,而是可读和可维护会好些,类似的还有makefile等,bash、sed、awk和make中那些奇怪的语法和符号的学习维护成本真的不如python中多啰嗦几句,而且用python可以做到一招通杀大多数需求,不然你的脑子得在bash,sed,awk之间来回切换
但如果你的脚本可能只是运行个一次,或临时一条命令,用bash还是很方便的
所以,bash不用很精通,但要保证会到一定水平,日常的工作区分来做
然而你也不可避免会碰到阅读维护其他人代码的情况,所以还是大致要了解下,比如if的语法,至于if里面的-a -o -f之类的可以问度娘了 当然不是浪费时间了(不然你让我们这种会用shell的情何以堪...)

假设路上有一坨屎, 你是用铲子(shell)铲掉, 还是开个铲车(python)来搞?
当然, 也会有粪坑, 但是大部分情况下是路上横躺了一坨屎, 极有可能还是别人丢过来的.

而且shell也没那么恶心嘛. 真正的脚本呢. 在*nix服务器下调试程序,查看程序debug日志或者运行日志,如果不懂shell,蛋疼死你 bash和命令行都设计拙劣。但现状如此,你不学就寸步难行。
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

C言語で複数の条件を判定するifの書き方 C言語で複数の条件を判定するifの書き方 Mar 25, 2024 pm 03:24 PM

C 言語では、if ステートメントは通常、単一の条件に基づいてコードの特定のブロックを実行するために使用されます。ただし、&&、||、! などの論理演算子を使用して、複数の条件を組み合わせて判定することができます。複数の条件を判断するために論理 AND (&&) を使用すること、少なくとも 1 つの条件を判断するために論理 OR (||) を使用すること、単一の条件の否定を判断するために論理 NOT (!) を使用すること、および if ステートメントのネストと括弧の使用が含まれます。優先順位を明確にするため。

Windows でシェル スクリプト ファイルを実行するさまざまな方法 Windows でシェル スクリプト ファイルを実行するさまざまな方法 Apr 13, 2023 am 11:58 AM

Linux 用 Windows サブシステム 最初のオプションは、Linux バイナリ実行可能ファイルを Windows システム上でネイティブに実行するための互換性レイヤーである Windows サブシステム for Linux または WSL を使用することです。ほとんどのシナリオで機能し、Windows 11/10 でシェル スクリプトを実行できるようになります。 WSL は自動的には利用できないため、Windows デバイスの開発者設定を通じて有効にする必要があります。これを行うには、[設定] > [更新とセキュリティ] > [開発者向け] に移動します。開発者モードに切り替え、プロンプトを確認して [はい] を選択します。次にWを探します

あまり知られていない 5 つの最新の Bash スクリプト テクニック あまり知られていない 5 つの最新の Bash スクリプト テクニック Jun 26, 2023 pm 08:36 PM

プログラマは多くの場合、Bash コマンド言語を使用してシェル スクリプトを作成し、手動タスクを自動化します。たとえば、さまざまな構成、ファイル操作、ビルド結果の生成、およびさまざまな DevOps 関連アクティビティのための Bash スクリプトを作成します。ほとんどすべての Unix 系または Unix ベースのオペレーティング システムでは、プリインストールされた Bash インタープリタがユーザーに提供されるため、Bash を使用して、より移植性の高い自動化スクリプトを作成できます。すでにご存知のとおり、Bash スクリプトとは、Bash コマンド言語、組み込み Bash コマンド、および GNU Core Tools などのコア オペレーティング システム CLI プログラムの構文を使用して一連のコマンドを作成することを指します。標準的で昔ながらの Bash スクリプトは通常、いくつかのコマンドを実行し、ターミナルにプレーン テキストを表示します。

Ubuntu Bash のパフォーマンス比較: Ubuntu と Win10 Anniversary Edition Ubuntu Bash のパフォーマンス比較: Ubuntu と Win10 Anniversary Edition Jan 04, 2024 pm 09:36 PM

今年の初めに Microsoft と Canonical が Windows 10 Bash と Ubuntu ユーザー空間をリリースしたとき、私は Windows 10 上の Ubuntu でネイティブ Ubuntu と比較していくつかの予備的なパフォーマンス テストを実行しようとしました。今回は、ネイティブ純粋な Ubuntu 間のベンチマーク比較について詳しく公開しました。 Ubuntu と Windows 10。 Windows 用の Linux サブシステム テストはすべてのテストを完了し、Windows 10 Anniversary Update とともにリリースされました。デフォルトの Ubuntu ユーザー スペースはまだ Ubuntu14.04 ですが、16.04 にアップグレードできます。したがって、テストは最初に 14.04 でテストされ、完了後、システムは 16.04 にアップグレードされます。

A の B 乗を求める Bash プログラム? A の B 乗を求める Bash プログラム? Aug 30, 2023 pm 09:01 PM

ここでは、bash スクリプトを使用して数値 A の B 乗を取得する方法を見ていきます。ロジックは簡単です。これを行うには、「**」演算子またはべき乗演算子を使用する必要があります。この概念を明確に理解するために、次のプログラムを見てみましょう。例#!/bin/bash#GNUbashScripta=5b=6echo "$(($a**$b))" 出力 15625

MySQL ストアド プロシージャでネストされた if ステートメントを使用する方法 MySQL ストアド プロシージャでネストされた if ステートメントを使用する方法 May 26, 2023 pm 12:07 PM

1. if 文の概要 if 文は、条件に応じて異なる演算を実行する分岐構造の文です。 if ステートメントは通常、条件式と 1 つ以上のステートメントで構成されます。条件式の値が true の場合、if ステートメント内のステートメントが実行され、それ以外の場合、if ステートメント ブロックはスキップされます。 if ステートメントの構文は次のとおりです: if(condition)thenstatement;elsestatement;endif; ここで、condition は条件式、statement は実行する必要がある SQL ステートメントです。 2. ネストされた if ステートメントの概要 if ネストされたステートメントとは、if ステートメント ブロック内に 1 つ以上の if ステートメント ブロックをネストして、さまざまな条件に基づいてさまざまな操作を実行することを指します。

Python、Ruby、その他の言語でインクリメント演算子が廃止されたのはなぜですか? Python、Ruby、その他の言語でインクリメント演算子が廃止されたのはなぜですか? May 11, 2023 pm 04:37 PM

多くの人は、一部の最新のプログラミング言語 (もちろん、「最近の」プログラミング言語を指すわけではありません) で、インクリメント演算子とデクリメント演算子がキャンセルされているという現象に気づいたかもしれません。言い換えれば、これらの言語には i++ や j-- のような表現はなく、i+=1 または j-=1 のような表現があるだけです。この回答では、この現象の背景と理由を設計哲学の観点から探ります。主流のプログラミング言語の中でインクリメント演算子とデクリメント演算子をサポートしていないのは Python、Rust、Swift だけと思われるため、厳密に言うと「i++ が消滅する」と言うのは偏見かもしれません。私が初めて Python に触れたときも、

Ruby は MySQL を操作するために Mysql2 接続をどのように使用しますか? Ruby は MySQL を操作するために Mysql2 接続をどのように使用しますか? Apr 17, 2023 pm 10:07 PM

Rubyはmysql2を使ってMySQLを操作し、mysqlに接続してmysqlを操作します。 geminstallmysql2 は mysql に接続して接続を確立します: require'mysql2'conn=Mysql2::Client.new({host:'192.168.200.73',username:'root',password:'P@ssword1!'}) 受け入れられた接続オプションには次のものが含まれます: Mysql2::Clie

See all articles