テキストの大文字と小文字を変更するカスタムターミナル関数

テキストの大文字と小文字を変更するカスタムターミナル関数

change_case私は、Web サイトのタイトルを管理するのに役立つ、以下のように機能するカスタム ターミナル関数を探しています。

change_case [option] "string"

option:
    upper - STRING TO UPPERCASE
    lower - string to lowercase
    sentence - Uppercase first letter of every word, others to lowercase
    custom - String to Sentence Case except These Words if they appear as the 1st letter:
        [in,by,with,of,a,to,is,and,the]

タイトルの例 -自動的にログインするのではなく、ログイン画面が表示されるようにするにはどうすればよいですか?

アッパー:自動的にログインするのではなく、ログイン画面が表示されるようにするにはどうすればよいですか?

より低い:自動的にログインするのではなく、ログイン画面が表示されるようにするにはどうすればよいですか?

文:自動的にログインするのではなく、ログイン画面が表示されるようにするにはどうすればよいですか?

カスタム:自動的にログインするのではなく、ログイン画面が表示されるようにするにはどうすればよいですか?

答え1

それはそれほど複雑ではありません:

  1. 以下のスクリプトを空のファイルにコピーし、change_case(拡張子なし)として保存します~/bin(ディレクトリを作成する必要がある場合があります)。スクリプトを実行可能にする
  2. 特にディレクトリがまだ存在しない場合は、ログアウト/ログインする必要がある場合があります(または代わりに、次を実行しますsource ~/.profile:)
  3. ターミナル ウィンドウを開き、次のコマンドを実行してテストします。

    change_case custom this is a test case to see if all in the script works
    

    出力:

    This is a Test Case to See If All in the Script Works
    

質問のすべてのオプション (上限、下限、文、カスタム) でテストしましたが、すべてが例どおりに機能するはずです。

スクリプト

#!/usr/bin/env python3
import sys

string = sys.argv[2:]
opt = sys.argv[1]

excluded = ["in","by","with","of","a","to","is","and","the"]

if opt == "lower":
    print((" ").join(string).lower())
elif opt == "upper":
    print((" ").join(string).upper())
elif opt == "sentence":
    print((" ").join(string).title())
elif opt == "custom":
    line = []
    for s in string:
        s = s.title() if not s in excluded else s
        line.append(s)
    print((" ").join(line))

関連情報