Bashシェルをかなりの時間使用している場合は、echoコマンドを使用してLinuxターミナルで文字列を出力する方法をおそらくご存知でしょう。ただし、printfコマンドを使用すると、特定のフォーマットでテキストを印刷するのがはるかに簡単になります。
今日は、Bashスクリプトスキルを強化するためにprintf関数を使用する方法を学習します。
Bash printf関数とは何ですか?
名前が示すように、printfはフォーマットされたテキストの文字列を出力する関数です。つまり、文字列構造(形式)を記述し、後で値(引数)を入力することができます。
C / C ++プログラミング言語に精通している場合は、printfがどのように機能するかをすでに知っているかもしれません。 BashシェルのPrintfは非常に似ていますが、いくつかの小さな違いがあります。
もっと詳しく知る: C ++プログラミングを始めるのに最適なサイト
Bashシェルでprintfを使用する方法
printfの基本的な構文は次のとおりです。
printf format [argument]
Printfは フォーマット 実装中の文字列 リーク (( ) と ディレクティブ (( % )指定されたを使用して 引数 。次のコマンドの出力に注意してください。
$ printf 'Hello, %s' world
Hello, world
Printfは 世界 引数を置き換え、 %NS 指定された文字列内の文字。
出力後、Bashが新しい行を作成しないことに気付くかもしれません。 echoコマンドとは異なり、printfは、出力が出力された後に新しい行が必要であるとは想定しません。したがって、改行文字を使用する必要があります NS それぞれの場合。
文字列を印刷してから新しい行に移動するには、次のように入力します。 printf'Hello、world n ' 。
Hello, world
printfは、すべての引数にフォーマットを再利用しようとすることを覚えておくことが重要です。これを有利に使用できますが、注意しないと、次のような結果になる可能性があります。
$ printf 'My name is %s ' Jordan Gloor
My name is Jordan My name is Gloor
引数が欠落している場合、printfはすべてのディレクティブを次のように解釈することにも注意してください。 0 (数の場合)および ヌル (文字列の場合)。
$ printf 'Hello, %s.'
Hello, .
Linuxでprintfを使用したBashスクリプトがどのように機能するかがわかったので、コマンドでBashスクリプトを使用する準備が整いました。
Linux Bashprintfの例
Printfは、スクリプトで使用できる多くのフォーマット指定子を備えています。ただし、今日は、この関数の一般的なもののみを取り上げます。
1.出力を文字列でフォーマットする
テキストの文字列で出力をフォーマットするには、 %NS 指令。
$ printf '%s is one of the largest online %s.' MUO 'technology publications'
MUO is one of the largest online technology publications.
2.出力文字列を小数でフォーマットします
文字列を整数でフォーマットするには、 %NS 符号付き小数のディレクティブ。
$ printf 'MUO was founded in %d.' 2007
MUO was founded in 2007.
出力で符号なし10進数を使用する場合は、 %u 代わりにディレクティブ。
PCがインターネットに接続できないのはなぜですか
関連している: Linuxで「Bash」とはどういう意味ですか?
3.printfを使用して数学関数を出力します
printfコマンドを使用した数学関数のフォーマットは簡単です。 Bashで通常行うように、式を二重括弧内に配置し、引数リストで式を指定するだけです。
$ printf '1 + 1 is %d' $((1+1))
1 + 1 is 2
4.16進数をフォーマットします
16進数をフォーマットする必要がある場合は、 % NS 小文字および % NS 大文字の場合。
$ printf %X 1000
3E8C
5.日付と時刻を印刷します
現在の日付と時刻を印刷するには、printfを 日にち コマンドを実行し、次のディレクティブを渡します。
$ printf '%(%m-%d-%Y %H:%M:%S)T' $(date +%s)
03-26-2021 15:27:57
前述の出力で、月、日、年、時、分、秒のフォーマット指定子を確認できます。
6.文字列をUnicode文字でフォーマットする
printfでUnicode文字を印刷するには、 u 16ビットUnicodeのエスケープと U 32ビットUnicodeの場合。
たとえば、 著作権 次のコマンドでシンボルを作成します。
$ printf 'u00A9'
©
7.出力に間隔を追加します
ディレクティブ指定子の前に、印刷される最小文字数を定義することにより、文字列を間隔を空けてフォーマットできます。未使用の文字はスペースで埋められます。
たとえば、次のように入力します printf '%s:%5d n' '値1'25'値2'120 出力します:
Value 1: 25
Value 2: 120
NS %5d 出力のフォーマット指定子は、フォーマットされた文字列に最低5文字が含まれることを示します。 25は2桁しかないため、残りの文字にスペースが追加されます。
幅として負の数を渡すと、ディレクティブは右寄せではなく左寄せになります。
$ printf '%-10s: %d ' 'Circles' 25 'Boxes' 120
Circles : 25 Boxes : 120
幅を変数にしたい場合は、数値の代わりにアスタリスクを渡すことができます。printfは、引数リストで見つかった次の数値を使用します。
$ printf '%*s: %d ' -10 'Circles' 25 -10 'Boxes' 120
Circles : 25 Boxes : 120
関連している: LinuxのBashForLoopsについて知っておくべきことすべて
Linuxのprintfコマンドを学ぶ
Bashスクリプトユーティリティベルトのprintfコマンドを使用すると、端末で複雑でさまざまな文字列の印刷を開始する準備が整います。 Bashスクリプトを開発するときは、可能な限り最も生産的な環境で作業していることを確認することが重要です。これにより、コマンドラインスキルが向上するだけでなく、ワークフロー全般が強化されます。
共有 共有 つぶやき Eメール 開発者向けの10のベストLinuxディストリビューションオープンソースオペレーティングシステムで開発を開始する準備はできましたか?これがプログラミングに最適なLinuxディストリビューションです。
ps4proを入手する価値はありますか次を読む 関連トピック
- Linux
- Linux Bash Shell
- Linuxコマンド
ジョーダンはMUOのスタッフライターであり、誰もがLinuxにアクセスしてストレスを感じさせないようにすることに情熱を注いでいます。彼はまた、プライバシーと生産性に関するガイドを書いています。
ヨルダングローアのその他の作品ニュースレターを購読する
ニュースレターに参加して、技術的なヒント、レビュー、無料の電子書籍、限定セールを入手してください。
購読するにはここをクリックしてください