ホームページ 運用・保守 Linuxの運用と保守 入出力、リダイレクト、パイプラインの例

入出力、リダイレクト、パイプラインの例

Jun 30, 2017 pm 03:49 PM
shell

1, 入出力、リダイレクト、パイプライン
2, <(cmd);>(cmd)
3,>;<;>>;<<; >> 1. 入力と出力、リダイレクト、パイプライン
1. Linux プログラムには、次の 3 つの標準入力と出力があります。
数字の 0 で表される標準入力は、デフォルトで、プログラムは通常、ユーザー入力を取得するために使用されます
数値 1 で表される標準出力は、デフォルトで画面に接続され、プログラムは通常、情報を出力するために使用されます
標準エラー、によって表されます数字の 2 はデフォルトで画面に接続されており、通常はエラー メッセージを出力するためにプログラムが使用されます
分析:
passwd コマンドは標準入力からユーザーのパスワードを読み取るため、ユーザーは次のようにパスワードを入力できます。キーボード
echoコマンドは結果を標準出力に出力するので、結果を画面上で見ることができます
通常のユーザーには/rootディレクトリを参照する権限がないため、エラーが発生したため、エラーメッセージを出力します標準エラー、つまり
2、>>
> 元のデータを削除し、新しいデータを元のデータに追加します
3、/dev/null
通称:ゴミ箱ファイル
# echo hello world >/dev/null -- redirect このファイルへのデータはカーネルによって破棄されました。この機能を使用して、特定の出力情報をブロックできます
# ls / /root 2> /dev/null -- コマンドのエラー メッセージをシールドします
4. 出力リダイレクト
ユーザーはデフォルトの入力と出力を変更できます必要に応じて指示します
# ls -l > test
# ls -l 1> test -- どちらも標準出力をテストファイルにリダイレクトします。つまり、デフォルトの 1 は省略できます
# ls / jjjj 2> test -- 標準エラーをテスト ファイルにリダイレクトします
# ls / /jjjj 1> stdout 2> stderr -- 標準出力と標準エラーを 2 つの異なるファイルにリダイレクトします
# ls /jjjj / > std 2>&1 -- 標準エラーを標準出力にマージし、ファイルにリダイレクトします
# ls /jjjj / &> std -- 結果は前のステートメントと同等になります。
# ls /jjjj / &>> -- 標準出力と標準エラーもファイルにリダイレクトします
# cat 0< /etc/passwd # cat < /passwd
# cat /etc/passwd --cat コマンドの標準入力はファイル /etc/passwd から来ます
6, パイプ
上記のリダイレクトは標準入力です 入力と出力は に接続されていますファイル。 複数のプログラム間で標準の入出力を接続して、コマンド間でデータを転送することもできます。このテクノロジーは、パイプラインと呼ばれています。プログラムの出力は、左側のプログラムから始まり、パイプの中を流れていくようなものです。右端のプログラムに流れます。パイプは、Linux シェルの非常に一般的なテクノロジです。パイプ テクノロジを使用すると、複数の小さなツールを一緒に使用して、非常に複雑で強力な機能を完成させることができます。
# cat /etc/passwd | head -n 3 -- 左側のコマンドの標準出力は、右側のコマンドの標準入力として使用されます# cat /etc/passwd | head -n 3 | tail -n 1
7. 標準入力と出力の詳細な説明
標準入力と出力は、プログラム用にデフォルトで Linux によって作成される 3 つのファイル記述子です。ただし、これは必須ではありません。つまり、プログラムはこれら 3 つの標準ファイル記述子を使用できませんが、新しいファイル記述子を開いて使用できます。プログラムが標準入出力を使用しない場合、ここで使用されるリダイレクトは機能しません。 例:
passwd: プログラムは標準入力からユーザーのパスワードを読み取るため、標準入力をリダイレクトすることでパスワードを提供できます
ssh: コマンドはリモートログイン用のプログラムであり、ユーザーを読み取ります。パスワードを入力すると、標準入力は使用されないため、標準入力をリダイレクトしてパスワードを指定することはできません
8. プロセスの標準入力と出力に接続されているファイルを確認します
# sleep 999 1> /tmp /good 2>&1 -- 1 つの端末でコマンドを実行します
# pgrep -x sleep --別の端末で sleep のプロセス ID を見つけます
# lsof -anop 16715 -d 0,1,2 -- 開いているファイルを表示しますプロセスによって
9. リダイレクトのタイミングを確認します
# vim file
# cat -n file > file -- cat が各行の前に行番号を追加し、結果をリダイレクトすることを期待します。元のファイルに戻ります file
# cat file -- 空です
理由: シェルはコマンドを実行する前に、最初にリダイレクト操作を実行します。このリダイレクト操作により、ファイル file の内容が消去されます。リダイレクト操作によってファイルがクリアされ、ファイルが cat された後は、当然、コンテンツは表示されません
$ sudo ls /root > /root/ls.log -- この例では、ユーザーにはその機会がありません。パスワードを入力するには、リダイレクト操作が最初に実行されるため、現在のユーザーは通常のユーザーであり、パス /root/ls.log にファイルを作成できません。シェルはエラーになり、終了します: bash: /root/ls。ログ: アクセス許可が拒否されました。この時点では、sudo コマンドは実行されていないため、パスワードを入力する機会はありません
2。
プロセス置換による標準出力のリダイレクト
3. プロセス置換
プロセスの標準出力は一時ファイルに保存され、一時ファイルのパスが返されます<()。プログラムの出力はあるが、中間ファイルを生成したくない場合は、プロセス置換の使用を検討できます
# Past <(seq $(wc -l /etc/passwd | Cut - d" " -f1)) <( awk -F: '{print $1}' /etc/passwd)
# Past <(seq 26) <(awk -F: '{print $1}' /etc /passwd) -- これら 2 つを比較できますコマンド
3.>;<;>>;<<;>><<<
1, > create (存在する場合は上書き)
# echo 'hello world' > test -- test が存在しない場合は作成し、存在する場合はその内容を上書きします
2, < ; -- からの入力リダイレクトfile
# less < /etc/passwd --/etc/passwdの内容をツールに入力します
# cat < <(ls /) --ここでコマンド置換が使用されます
# wc - l < $(echo /etc/passwd)
# wc -l <(cat /etc/passwd) -- ここではプロセス置換が使用されます
3, > ;> -- ファイルにリダイレクトしますそれを作成します (存在する場合は、ファイルの最後に追加します)
# echo 'hello george' >> george -- george が存在しない場合は作成し、存在する場合はコンテンツを追加しますファイルの終わり
4. << --リダイレクト、ヒアドキュメント
に使用されます。ヒアドキュメント
の基本的な形式は次のとおりです。
cmd << 区切り文字
ここの文書の内容
区切り文字
: << 区切り文字 --shell バッチコメント
ここの文書の内容
区切り文字
関数: 2 つの区切り文字の内容 (ここでは、Document Content) が入力パラメーターとして cmd に渡されます
# cat <> two
>
EOF -- これは単なるロゴであり、任意の有効な文字に置き換えることができます
> -- この記号は、情報の入力を求めるために端末によって生成される識別子です
区切り文字 -- である必要があります前に大文字で書かれます スペースを含め、その後に文字を置くことはできません
4.3、shell
# vim here.sh --
注: 変数を使用することもできます
#!/ bin/bash
cat <output.shecho "hello"
echo "world"echo $1
EOF
# chmod a+x here.sh
# ./ here.sh george
# cat Output. sh -- ここで内容を表示します。 $1 はスクリプトのパラメータになるように展開されます
注:
この変数を展開したくない場合は、二重引用符を使用する必要があります。最初の EOF を囲みます。
4.4、<<-
こちらのドキュメント 別の使用法は、「<<」を「<<-」に変更することです。 <<- を使用する場合の唯一の変更点は、ヒア ドキュメントのコンテンツ部分の各行の前にあるタブ (タブ文字) が削除されることです。この使用法は、ヒア ドキュメントを記述するときにコンテンツ部分をインデントするためです。ドキュメントを読みます5、<<< --Redirect、for Here string
# wc -l <<< "$(ls -l /home)"
# while read #!/bin/bash
while read line
do
if [ "${line#ftp:}" != "$line" ];then
awk -F: '{print $6 }' < << $line
break
fi
done < /etc/passwd
注: /etc/passwd ファイルの各行をループします。ホームディレクトリを出力し、ループを終了します
${line#ftp:}: ftp: は特定の行の先頭で一致し、行の不一致部分のみが取得されます
# chmod a +x string.sh
# ./string. sh
4. テキスト処理_1: cat;head;tail;cut;wc;sort;uniq;tr;tac;rev
テキスト処理はタスクですすべてのシステム管理者が頻繁に使用する重要な内容は、複数のツールを柔軟に組み合わせてタスクを完了することです
1。さらに多くのファイルを順番に出力し、標準出力に出力します
# cat -n /etc/passwd --ファイルの内容を表示し、行番号を追加します
# cat -A /etc/passwd --いくつかの非表示の文字を出力し、位置マーク
# cat 1.txt 2.txt > test.txt -- ファイルをマージします
2, head -- ファイルヘッダーを読み取ります
# head -n 3 /etc/passwd -- 最初のファイルを読み取りますファイル /etc/passwd の 3 行
# head -n -1 file -- ファイルの最後の行を破棄します
# head -c 3 /etc/passwd -- ファイル /etc/passwd の最初の 3 バイトを読み取ります
# head -c -3 file -- ファイルの最後の 3 バイトを破棄します
# head -c 10m /dev/urandom > big -- 10M ファイルを作成します
3, tail -- ファイルの末尾を読み取りますファイル
#
tail -n 3 /etc/passwd -- ファイル /etc/passwd の最後の 3 行を読み取ります
# tail -n +28 /etc/passwd -- 28 行目から最後まで読み取りますファイルの最初の 27 行を破棄します
# tail -c 3 /etc/passwd -- ファイル /etc/passwd の最後の 3 バイトを読み取ります
# tail -c +28 /etc/passwd -- 28 バイト目からファイルの終わりまで読み取り、ヘッダーの 27 バイトを破棄します
# tail -f /etc/passwd -- 最後の内容を追跡しますファイルの変更。ログ ファイルの変更を観察するためによく使用され、非常に実用的です
4. Cut - この関数は awk に似ていますが、データを列に出力する場合、awk は awk ほど強力ではなく複雑ではありません。よく使う、カット あまり時間がない
共通オプション:
-d --区切り文字を定義
-b --指定された位置のバイトを出力
-c -- 指定された位置に文字を出力します
# echo "a;b;c d;e" | Cut -d ";" -- -d は区切り文字を定義します (デフォルトは TAB)。 - f 出力に対応するフィールドを定義します
# cat -n /etc/passwd | Cut -d $'n' -f1,3-5,7 -- 改行文字を区切り文字として使用します
# echo 私は中国人です | Cut -b1-3 --
-b は指定された位置のバイトを出力します。utf8 の中国語文字は 3 バイトを占めます
# echo 私は中国人です Cut -c2-4 --
-c指定された位置; -b との違いは、英語以外の文字を処理する場合です
# echo Be a Brave 中国語 Cut -b1-2,9 -- 「偽の」文字を出力します
# echo -n Be a Brave Chinese | xxd -- 3 つのバイト 1、2、9 が次のようになります: e581 87
# echo -n false xxd -- そして "false" も
5. wc - バイト数を計算します。 、文字、単語、データ行
共通オプション:
-c - バイト数を計算します
-m - 文字数を計算します
-w -- 数をカウントします単語数
-l -- 行数を数えます
# echo -n 私は中国人です | wc -c -- -c バイト数を数えます、5 utf8 中国語は 15 バイトを占めます
# echo - n I am Chinese | wc -m -- -m は、コマンド Cut
と同様に、英語以外の文字を処理する場合に文字数をカウントします。 - -w は単語の数を数えます。単語を区切る区切り文字はありません。中国語のいわゆる「単語」とは異なり、5 文字を 1 つの単語としてカウントします
# echo -n Uppercase CHINESE | wc - w --2 つの単語
# echo -n Uppercase CHINESE | wc -c --17 英語バイト、-n なしの 18 バイト (改行文字があるため)
# echo -n Uppercase CHINESE | wc -m --17 英字、-n なし 18 (改行文字があるため)
# wc -l /etc/passwd -- -l は行数をカウントします
6. 並べ替え -- ファイルを行ごとに並べ替えます
共通オプション:
-t -- 区切り文字を指定します
-k -- 並べ替えフィールドを指定します
--重複した行を削除
-n, -h -- 値で並べ替え
-r -- 逆に並べ替え
# Cut -d ":" -f7 /etc/passwd -- -u 重複行を削除
# echo -e "1n2n10" | sort
# echo -e "1n2n10" sort -n -- -n 数値によるソート、K、M、G などは扱えません。
# ls -lh | tail -n +2 | sort -k5,5n -- -k は、ソートするフィールドを指定します。数値によって、K、M、G などの単位文字を処理できます
# head -4 /etc/passwd | sort -t: -k7,7
-- -t はフィールド区切り文字としてコロンを使用します。7 を押しますフィールドの並べ替え
# head -4 /etc/passwd | sort -t: -k7,7 -k3,3n --まず 7 番目のフィールドで並べ替え、7 番目のフィールドが同じ場合は、次に 3 番目のフィールドで並べ替えます
# echo -e "1n2n3" | sort -nr -- -r 並べ替えを反転します
# head -4 /etc/passwd | sort -t: -k7,7 -k3,3nr -- 3 番目のフィールドの並べ替えを反転します、同時に 2 つのフィールドを反転することもできます
7. uniq -- 連続する重複行を削除します
共通オプション:
-c -- 重複行の数をカウントします
# echo - e "1n1n2n1" | uniq -- 2 つの 1 が連続していないため、結果にはまだ 2 つの 1 が存在します
# echo -e "1n1n2n1" -- 重複を削除するために並べ替えは連続している必要はありません
# Cut -d: -f7 /etc/passwd | sort | uniq -c -- sort コマンドの例に基づいて、異なるログインシェルの出現数をカウントします
8, tr -- 同じ文字を変換、削除、削減します
共通オプション:
-d --delete、一致する文字をすべて削除
-s --reduce、同じ文字を減らす
形式: tr SET1 SET2
注: セット 1 の文字をセット 2 の対応する文字に変換するため、原則として 2 つのセットの文字数は同じである必要があります。 2 つのセット 文字数が等しくない場合、プログラムはエラーにはなりません。この場合の結果には注意してください。 ポイント:
a と tr は 2 つのセットにどのような文字があるかは気にせず、単に対応する位置の文字を 1 つずつ置き換えるだけです。
b と tr は 1 つの文字を置き換えることはできません。文字列を置き換えます
# echo abc | tr a-z A-Z -- 26 個の小文字を対応する大文字に変換します
# echo abc tr ab BA -- a と b をそれぞれ B と A に変換します
# echo良いこと | tr 良いか悪いか -- 「良い」は「悪い」に変換されます
# echo abcdefg | tr a-z AB -- セット 2 は短くなり、プログラムはセット 2 の最後の文字を自動的に使用してセット 2 を展開します
# echo abcdefg | tr a-b A-Z -- セット 2 は長くなり、プログラムは自動的にセット 2 を短くします
# echo Abc | tr a-zA-Z A-Za-z -- 英語の文字のサイズを反転します
# hello world | tr -d ow -- -d 一致する文字をすべて削除します
# echo 0123456789 | tr -d 13579
# tr -d '
# head -c 3m bigfile > file1 -- 最初の 3M データを file1 にインポートします
# tail -c 4m bigfile > file3 -- 最後の 3M データを file3 にインポートします
# head -c 6m bigfile - c 3m > file2 -- 中間 4M データを file2 にインポートします
# ls -lh file*
# cat file1 file2 file3 > newbigfile --cat を使用して 3 つのファイルを新しい大きなファイルにマージします
# md5sum newbigfile bigfile -- コマンドを使用して、古い大きなファイルと新しい大きなファイルの md5sum 値を比較します

以上が入出力、リダイレクト、パイプラインの例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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)

Windows 11 にクラシック シェルをインストールするにはどうすればよいですか? Windows 11 にクラシック シェルをインストールするにはどうすればよいですか? Apr 21, 2023 pm 09:13 PM

&lt;p&gt;オペレーティング システムをカスタマイズすることは、日常生活をより楽しくするための素晴らしい方法です。ユーザー インターフェイスの変更、カスタム テーマの適用、ウィジェットの追加などを行うことができます。そこで今日は、Windows 11にClassicShellをインストールする方法を説明します。 &lt;/p&gt;&lt;p&gt;このプログラムは長い間存在しており、オペレーティング システムを変更することができます。 2017年に解散したこの組織は現在、ボランティアによって運営され始めている。新しいプロジェクトは OpenShell と呼ばれ、興味のある人は現在 Github で入手できます。 &lt;/p&gt;&a

HRESULT 0x80073D02 問題が修正され、PowerShell のデプロイメントが失敗する HRESULT 0x80073D02 問題が修正され、PowerShell のデプロイメントが失敗する May 10, 2023 am 11:02 AM

スクリプトを実行すると、PowerShell で「Add-AppxPackage: Deployment failed with HRESULT: 0x80073D02, The package can be install because the resource itmodifying is currently in use. Error 0x80073D02...」というエラー メッセージが PowerShell に表示されますか?エラー メッセージに記載されているように、これは、前のプロセスの実行中にユーザーが 1 つまたはすべての WindowsShellExperienceHost アプリケーションを再登録しようとすると発生します。この問題を迅速に解決するための簡単な解決策がいくつかあります。解決策 1 – powershell コマンドを実行する前に終了する必要があるエクスペリエンス ホスト プロセスを終了します。

システム起動時に Explorer.exe が起動しない [修正] システム起動時に Explorer.exe が起動しない [修正] Jun 03, 2023 am 08:31 AM

最近、多くの Windows ユーザーが Windows システムの重大な問題に遭遇し始めています。問題は、システムのロード後に Explorer.exe が起動できず、ユーザーがファイルやフォルダーを開けないことです。ただし、Windows ユーザーは場合によってはコマンド プロンプトを使用して Windows エクスプローラーを手動で開くことができますが、これはシステムを再起動するたびに、またはシステム起動後に実行する必要があります。これは問題となる可能性があり、以下に説明する要因が原因です。システムファイルが破損しています。高速スタートアップ設定を有効にします。ディスプレイドライバーが古いか問題があります。システム内の一部のサービスに変更が加えられました。変更されたレジストリ ファイル。上記のすべての要素を念頭に置いて、ユーザーに確実に役立ついくつかの要素を考え出しました。

Linux でファイルの末尾の行をすばやく削除する方法 Linux でファイルの末尾の行をすばやく削除する方法 Mar 01, 2024 pm 09:36 PM

Linux システムでファイルを処理する場合、ファイルの末尾の行を削除する必要がある場合があります。この操作は実際のアプリケーションでは非常に一般的で、いくつかの簡単なコマンドで実行できます。この記事では、Linux システムでファイルの末尾の行をすばやく削除する手順と、具体的なコード例を紹介します。ステップ 1: ファイルの最終行を確認する 削除操作を実行する前に、最初にファイルの最終行がどの行であるかを確認する必要があります。ファイルの最後の行を表示するには、tail コマンドを使用できます。具体的なコマンドは次のとおりです: tail-n1filena

Open Shell Windows 11が動作しない問題の修正は次のとおりです。 Open Shell Windows 11が動作しない問題の修正は次のとおりです。 Apr 14, 2023 pm 02:07 PM

Windows 11 でオープン シェルが実行されないことは新しい問題ではなく、この新しいオペレーティング システムの登場以来ユーザーを悩ませています。 Open-Shell Windows 11 が動作しない問題の原因は特定されていません。プログラム内の予期しないエラー、ウイルスやマルウェアの存在、システム ファイルの破損などが原因で発生する可能性があります。知らない人のために説明すると、Open-Shell は 2017 年に廃止された Classic Shell の後継です。 Windows 11 に Classic Shell をインストールする方法に関するチュートリアルをご覧ください。 Windows 11のスタートメニューを置き換える方法

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

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

超ハードコア!非常に実用的な Python とシェル スクリプトの例 11 個! 超ハードコア!非常に実用的な Python とシェル スクリプトの例 11 個! Apr 12, 2023 pm 01:52 PM

Python スクリプトの例: エンタープライズ WeChat アラーム、FTP クライアント、SSH クライアント、Saltstack クライアント、vCenter クライアント、ドメイン名 SSL 証明書の有効期限の取得、今日の天気予報と将来の天気傾向グラフの送信、シェル スクリプトの例: SVN フル バックアップ、 Zabbixによるユーザーパスワードの有効期限の監視、ローカルYUMの構築、前回の記事の読者ニーズ(負荷が高い場合、占有率の高い処理スクリプトを見つけて通知を保存またはプッシュ通知する)については、少し長いので読んでください。記事の最後には、やはりイースターエッグがあります。エンタープライズ WeChat アラームの Python スクリプト部分 このスクリプトはエンタープライズ WeChat アプリケーションを使用して WeChat アラームを実行し、使用できます

Open Shell をインストールして Windows 11 で従来のスタート メニューを復元する方法 Open Shell をインストールして Windows 11 で従来のスタート メニューを復元する方法 Apr 18, 2023 pm 10:10 PM

OpenShell は、Windows 11 の [スタート] メニューをカスタマイズして、クラシック スタイルのメニューまたは Windows 7 スタイルのメニューに似せるために使用できる無料ソフトウェア ユーティリティです。以前のバージョンの Windows の [スタート] メニューは、システムのコンテンツを参照する簡単な方法をユーザーに提供しました。基本的に、OpenShell は ClassicShell の代替品であり、以前の Windows バージョンから後者のバージョンの機能を取得するのに役立つさまざまなユーザー インターフェイス要素を提供します。 ClassicShell は 2017 年に開発が中止されると、GitHub ボランティアによって OpenShell という名前で維持および開発されました。ウィン関連です

See all articles