これは、Ubuntu Online、Fedora Online、Windowsオンラインエミュレーター、MAC OSオンラインエミュレーターなどの複数の無料オンラインワークステーションのいずれかを使用して、OnWorks無料ホスティングプロバイダーで実行できるコマンドzshtcpsysです。
プログラム:
NAME
zshtcpsys - zsh tcp システム
DESCRIPTION
モジュール zsh / net / tcp シェル内から TCP/IP 経由のネットワーク I/O を提供するために提供されます。
説明を見る zshモジュール(1)このマニュアルページは、関数スイートに基づく
モジュールにインストールされます。モジュールがインストールされている場合、機能は通常、
同時に、その場合、デフォルトの関数で自動読み込みが可能になります。
検索パス。 zsh / net / tcp モジュール、 zsh / zselect モジュールは
読み取り操作にタイムアウトを実装します。トラブルシューティングのヒントについては、
対応するアドバイス zftp 関数の説明 zshzftpsysとします。
基本的なI/O操作であるopen、close、read、sendに対応する関数があります。
命名 tcp_open など、機能も tcp_expect データのパターンマッチ分析用
入力として読み取る。このシステムでは、複数のデバイス間でデータの送受信が簡単に行えます。
一度に名前付きセッションを複数作成できます。さらに、シェルのラインエディタとリンクして
入力データが自動的に端末に表示されるような仕組み。その他の機能
ログ記録、フィルタリング、構成可能な出力プロンプトなどの機能が利用可能です。
利用可能なシステムを使用するには、`オートロード -U tcp_open'と
ラン tcp_open セッションを開始するには、以下に記載されている手順に従ってください。 tcp_open 関数は自動ロードされます
残りの機能。
TCP USER 関数
Basic I / O
tcp_open [ -qz ] host ポート [ セックス ]
tcp_open [ -qz ] [ -s セックス | -l セックス[,...] ] ...
tcp_open [ -qz ] [ -a fd | -f fd ] [ セックス ]
新しいセッションを開きます。最初の最も単純な形式では、ホストへのTCP接続を開きます。
host 港で ポート; 数値形式と記号形式はどちらも理解されます。
If セックス が指定されると、これはセッションの名前となり、参照に使用できます。
複数の異なるTCP接続にまたがる。 セックス が指定されていない場合、関数は
数値の名前の値を作成します(これは ファイル記述子と同じ
セッション名には含めないことを推奨します。
「面白い」キャラクター。面白いキャラクターは明確に定義されていないが、確かに
英数字やアンダースコアは含めず、空白は必ず含めます。
2番目のケースでは、開くセッションが1つ以上名前で指定されます。
セッション名は -s およびカンマ区切りのリスト -l; 両方のオプション
必要に応じて何度でも繰り返すことができます。セッションを開かなかった場合は
tcp_open 中止します。ホストとポートはファイルから読み取られます .ztcp_セッション 会場は
ユーザーのzsh初期化ファイルと同じディレクトリ、つまり通常はホーム
ディレクトリですが、 $ZDOTDIR 設定されている場合、ファイルは各行に
セッション名とそれに対応するホストとポートをこの順序で入力します(セッション名に注意してください)。
名前は最初で最後ではありません)、空白で区切られます。
3番目の形式では、パッシブおよびフェイクTCP接続が許可されます。オプション -a 使用されている、
引数は接続を待機するために開かれたファイル記述子です。関数はありません
このようなファイル記述子を開くためのフロントエンドが用意されていますが、`ztcp -l ポート'
パラメータに格納されたファイル記述子を使用して作成します $ REPLYを選択します。
リスニングポートは`で閉じることができますztcp -c fd'. `の呼び出しtcp_open -a fd' 意思
リモートTCP接続が確立されるまでブロックします ポート ローカルマシン上で。この時点で
セッションは通常の方法で作成され、
最初の 2 つの形式のいずれかを使用して作成されたアクティブな接続。
オプションの場合 -f が使用される場合、その引数は直接使用されるファイル記述子である
TCPセッションのように。TCP機能システムの残りの部分がどれだけうまく機能するか
これに対処する方法は、このファイル記述子の実際の基盤が何であるかによって異なります。通常の
ファイルは使用できなくなる可能性があります。何らかのFIFO(パイプ)の方がうまく機能しますが、
2つの異なるセッションから読み取ろうとするのは得策ではないことに注意してください。
同じ FIFO を一度に実行します。
オプションの場合 -q 3つの形式のいずれかで与えられ、 tcp_open 印刷されません
情報メッセージは表示されますが、いずれにしても適切な
状態。
ラインエディタ(zle)が使用されている場合(通常はシェルが
相互の作用、 tcp_open zle内に新しいデータをチェックするハンドラをインストールします
キーボード入力をチェックすると同時に、シェルが
待機中は CPU 時間を消費しません。テストはオペレーティング システムによって実行されます。
選択肢を与える -z いずれの形式でも tcp_open ハンドラーが
インストール中なので、データを明示的に読み取る必要があります。ただし、これは
関数から送信コマンドと読み取りコマンドの完全なセットを実行するために必要であり、
zleはこの時点ではアクティブではありません。一般的に言えば、ハンドラーはアクティブです
シェルがコマンドプロンプトまたは 変化した 内蔵。
zleがアクティブでない場合、このオプションは効果がありません。`[[ -o []]' はこれをテストします。
最初に開かれたセッションが現在のセッションとなり、その後の
tcp_open 変更しないでください。現在のセッションはパラメータに保存されます
$TCP_SESS; システムで使用されるパラメータの詳細については、以下を参照してください。
関数 tcp_on_open定義されている場合は、セッションが開かれたときに呼び出されます。
下記に説明があります。
tcp_close [ -qn ] [ -a | -l セックス[,...] | セックス ...]
指定されたセッションを閉じるか、指定されていない場合は現在のセッションを閉じるか、開いているすべてのセッションを閉じる
セッションの場合 -a が与えられます。オプション -l -s 一貫性を保つために両方とも処理されます
tcp_openただし、後者は冗長です。
閉じようとしているセッションが現在のセッションである場合、 $TCP_SESS 設定されていないため、
他のセッションがまだ開いている場合でも、現在のセッションが継続されます。
セッションが tcp_open -fファイル記述子が閉じられているため
コマンドラインから直接アクセスできる0~9の範囲です。
オプション -n が指定された場合、この場合にはファイル記述子を閉じる試みは行われません。
当学校区の -n オプションは正規品には使用されません ztcp セッション; ファイル記述子は常に
セッションは終了しました。
オプションの場合 -q が指定された場合、情報メッセージは印刷されません。
tcp_read [ -bdq ] [ -t に ] [ -T に ]
[ -a | -u fd[,...] | -l セックス[,...] | -s セックス ...]
現在のセッション、またはセッションのリスト(存在する場合)に対して読み取り操作を実行します。
が与えられます -u, -l or -s、またはオプションが有効な場合は開いているすべてのセッション -a が与えられます。
-u, -l or -s オプションは繰り返したり、組み合わせたりすることができます。 -u オプション
ファイル記述子を直接指定します(このシステムによって管理されるものだけが
有用)、他の2つは、 tcp_open 上記。
この関数は、リストされているすべてのセッションで利用可能な新しいデータをチェックします。
-b オプションが指定されている場合、新しいデータの待機をブロックしません。データの1行
利用可能なセッションのいずれかから読み取られ、パラメータに保存されます $TCP_LINE,
標準出力に表示される。 $TCP_SILENT 空でない文字列が含まれています。
標準出力に文字列を出力すると $TCP_PROMPT 開始時に表示されます
行の; このデフォルトの形式には、読み取られるセッションの名前が含まれます。
これらのパラメータの詳細については以下を参照してください。このモードでは、 tcp_read することができます
保留中の入力を示すステータス2を返すまで繰り返し呼び出されます。
指定されたすべてのセッションが処理されました。
オプション付き -b無限タイムアウトと同等で、関数はブロックされます
指定されたセッションの1つから行を読み取れる状態になるまで。ただし、
1 行のみが返されます。
オプション -d 保留中の入力をすべて排出することを示します。この場合
tcp_read 上記の方法で複数の行を処理することができます。最後の行のみが
に保管 $TCP_LINE完全なセットは配列に格納されます $tcp_lines。 この
各呼び出しの開始時にクリアされます tcp_read.
オプション -t -T タイムアウトを秒単位で指定します。浮動小数点数でもかまいません。
精度を高めるために番号を付ける。 -t タイムアウトは各行の前に適用される
読んでください。 -Tタイムアウトは、以下の操作全体に適用されます。
オプションが複数回読み取り操作の場合 -d このオプションがない場合は、
区別なし -t -T.
この関数は情報メッセージを出力しませんが、オプション -q 与えられる、
存在しないセッションの場合、エラー メッセージは出力されません。
戻り値2はタイムアウトまたは読み取るデータがないことを示します。それ以外のXNUMX以外の値
戻りステータスは何らかのエラー状態を示します。
詳細はこちら: ログ データの送信先を制御する方法について tcp_read.
tcp_send [ -cnq ] [ -s セックス | -l セックス[,...] ] データ ...
tcp_send [ -cnq ] -a データ ...
指定されたすべてのセッションに、提供されたデータ文字列を順番に送信します。
基本的な操作は`とほとんど変わりません印刷 -r' をセッションのファイルに
記述子は、シェルが シグパイプ
無効なセッションへの書き込み試行によって発生します。
オプション -c 原因 tcp_send のように振る舞う cat標準から行を読み取ります
入力を最後まで処理し、指定されたセッションに順番に送信します。
あたかも与えられたかのように データ 個人に対する議論 tcp_send コマンド。
オプション -n を防止 tcp_send データの最後に改行を入れること
文字列。
残りのオプションはすべて、 tcp_read.
データ引数は渡された後はそれ以上処理されません。
tcp_send; それらは単に受け継がれる 印刷 -r.
パラメータの場合 $TCP_OUTPUT 空でない文字列であり、ログ記録が有効になっている場合、
各セッションに送信されたデータは、ログファイルにエコーされ、 $TCP_OUTPUT in
適切な場合は前面に、 $TCP_PROMPT.
セッション マネジメント
tcp_alias [ -q ] alias=セックス ...
tcp_alias [ -q ] [ alias ...]
tcp_alias -d [ -q ] alias ...
この機能は特に十分にテストされていません。
最初の形式はセッション名のエイリアスを作成します。 alias 参照するために使用できます
既存のセッションに セックス必要に応じて、任意の数のエイリアスをリストできます。
2 番目の形式では、指定されたエイリアスがリストされます。エイリアスが指定されていない場合は、すべてのエイリアスがリストされます。
3番目の形式では、リストされているすべてのエイリアスが削除されます。基礎となるセッションは削除されません。
影響を受けた。
オプション -q 一貫性なく選択されたエラー メッセージのサブセットを抑制します。
ログ [ -asc ] [ -n | -N ] [ ログファイル ]
議論しながら ログファイル、今後のすべての入力 tcp_read に記録されます
指定されたファイル。 -a (append)が指定された場合、このファイルは最初に切り捨てられるか、
空で作成されました。引数がない場合、ログの現在のステータスを表示します。
オプション付き -sセッションごとのログ記録が有効になります。 tcp_read 出力は
ファイルに ログファイル.セックスセッションは自動的に
ファイル名は、内容が生( $TCP_PROMPT)。オプション -a 上記の通り適用されます。
セッションごとのログ記録と 1 つのファイル内のすべてのデータのログ記録は相互に排他的ではありません。
オプション -c 完全なログとセッションごとのログの両方を含むすべてのログを閉じます。
オプション -n -N それぞれ、読み取ったデータの出力をオフにしたり、復元したりする
tcp_read 標準出力に出力されます。つまり`ログ -cn' 全ての出力をオフにします tcp_read.
この関数は、パラメータを設定するための便利なフロントエンドです。 $TCP_LOG,
$TCP_LOG_SESS, $TCP_SILENT、以下で説明します。
tcp_名前変更 古い NEW
セッション名の変更 古い セッションへ NEW古い名前は無効になります。
tcp_sess [ セックス [ command [ argは ... ] ] ]
引数を指定しない場合は、開いているセッションとそれに関連するファイル記述子をすべて一覧表示します。
現在のセッションには星印が付いています。関数で使用する場合は、
パラメータ $tcp_by_name, $tcp_by_fd $TCP_SESS おそらくもっと便利です。
を参照してください。
とともに セックス 引数として、現在のセッションを セックス。 これは
変化 $TCP_SESS 直接。
追加の引数を指定すると、実行中に現在のセッションを一時的に設定します。
` command argは ...'。 command エイリアスなどを拡張するために再評価されますが、
残り argはsは通過するように見える tcp_sess. オリジナルセッション
復元されると tcp_sess 終了します。
高機能 I / O
tcp_コマンド 送信オプション ... 送信引数 ...
これは便利なフロントエンドです tcp_sendすべての引数は tcp_send,
関数はデータを待って一時停止します。データが少なくとも
$TCP_TIMEOUT (デフォルト0.3)秒、データは次のように処理され、印刷されます。
現在の設定。ステータス 0 が常に返されます。
これは通常、インタラクティブな使用にのみ役立ちます。
接続から返される出力によって断片化される。プログラムまたは関数内で
一般的に、より明示的な方法でデータの読み取りを処理する方が適切です。
tcp_expect [ -q ] [ -p VAR | -P VAR ] [ -t に | -T に ]
[ -a | -s セックス | -l セックス[,...] ] パターン ...
指定されたいずれかの入力を待つ パターン指定されたいずれかの
セッション。入力行が指定されたパターンのいずれかに一致するまで入力は無視されます。
この時点でステータスゼロが返され、一致する行が保存されます。 $TCP_LINE,
呼び出し中に読み取られた行の完全なセット tcp_expect 配列に格納される
$tcp_expect_lines.
セッションは次のように指定されます。 tcp_read: デフォルトでは
現在のセッション、それ以外の場合は -a, -sまたは -l 使用されています。
各 パターン 標準的なzsh拡張グロブパターンです。
ファイル名生成時にすぐに展開されないように引用符で囲む必要があります。
行全体にマッチするので、部分文字列にマッチさせるには`*' を最初に付け、
終了。一致する行には、 $TCP_PROMPT によって追加 tcp_read。 それは、
グロビングフラグを含めることも可能です `#b'または `#m'パターンを作る
パラメータで利用可能なバックリファレンス $ MATCH, $ matchなど、
パターン マッチングに関する基本的な zsh ドキュメント。
取消 tcp_readのデフォルトの動作は tcp_expect 無期限にブロックすることです
必要な入力が見つかるまで待つ。タイムアウトを指定することで変更できる。 -t
or -T; これらは次のように機能します tcp_read読み取りごとまたは全体のタイムアウトを指定する
それぞれ秒単位で整数または浮動小数点数で表されます。 tcp_read
タイムアウトが発生した場合、関数はステータス 2 を返します。
関数は、与えられたパターンのいずれかが一致するとすぐに返されます。呼び出し元が
どのパターンが一致したかを知る必要がある場合は、オプション -p VAR 使用できる;
戻り、 $ var 通常のzshインデックスを使用してパターンの番号に設定されます。つまり
最初の数字は1で、以下同様です。`$' の前に VAR。 避けるために
衝突するため、パラメータは`で始まることはできません_期待する'. インデックス-1は、
はタイムアウトで、一致するものがない場合には 0 になります。
オプション -P VAR と同様に機能します -p、数値インデックスの代わりに
通常の引数はプレフィックスで始まり、その後にコロンが続く必要があります。プレフィックスは
タグとして使用される VAR 引数が一致したときに設定されます。タグ タイムアウト is
タイムアウトがある場合は使用され、一致しない場合は空の文字列が使用されます。
異なる引数が同じプレフィックスで始まっても、一致しない場合は許容されます。
区別する必要はありません。
オプション -q 直接受け継がれる tcp_read.
すべての入力は tcp_read読み取った行の出力に関する通常のルールはすべて
適用されます。例外として、パラメータ $tcp_lines 線のみを反映する
実際に一致する tcp_expect; 使用する $tcp_expect_lines ラインのフルセット
関数呼び出し中に読み取られます。
tcp_プロキシ
これはTCP接続を受け入れてコマンドを実行する単純な関数です
I/Oが接続にリダイレクトされます。
セキュリティが全くなく、コンピュータが世界中に無防備な状態になる可能性があります。
理想的には、ファイアウォールの内側でのみ使用する必要があります。
最初の引数は、関数がリッスンする TCP ポートです。
残りの引数は、標準で実行するコマンドとその引数を指定します。
入力、標準出力、標準エラーはファイル記述子にリダイレクトされます
TCPセッションが受け入れられたことを示します。コマンドが指定されていない場合は、新しいzshが実行されます。
開始しました。これにより、ネットワーク上の全員があなたのアカウントに直接アクセスできるようになります。
多くの場合、それは悪いことになります。
コマンドはバックグラウンドで実行されるので、 tcp_プロキシ 新しい接続を受け入れることができます。
中断されるまで、新しい接続を受け入れ続けます。
tcp_spam [ -エルトヴ ] [ -a | -s セックス | -l セックス[,...] ] CMD [ argは ...]
実行`CMD [ argは ... ]'を各セッションごとに実行します。このコマンドは
および引数; コマンドラインは、 -t (送信)
オプションが与えられます。
セッションは標準で明示的に選択できる -a, -s or -l オプション、または
暗黙的に選択される場合があります。3 つのオプションのいずれも指定されていない場合、ルールは次のようになります。
まず、配列が $tcp_spam_list が設定されている場合、これはセッションのリストとして扱われ、
それ以外の場合はすべてのセッションが取得されます。次に、配列に指定されたセッション
$tcp_no_spam_list セッションのリストから削除されます。
通常、`によって追加されたセッションは、-a'フラグまたはすべてのセッションが選択されている場合
暗黙的にアルファベット順にスパムされる。 $tcp_spam_list
配列またはコマンドラインで指定された順序でスパムされます。 -r 旗が反転する
注文は無事届きました。
当学校区の -v フラグは、 $TCP_PROMPT 各セッションの前に出力されます。これは
変更後に出力される TCP_SESS ユーザー定義による tcp_on_spam
関数は以下で説明します。(もちろん、その関数は独自の
出力。)
オプションの場合 -e が存在する場合、`CMD [ argは ... ]'は、
評価するそれ以外の場合は、それ以上の処理を行わずに実行されます。
tcp_トーク
これは、ラインエディタへの入力を強制的に実行しようとする、かなり単純な試みです。
デフォルトに直行 TCP_SESS.
エスケープ文字列、 $TCP_TALK_ESCAPE、デフォルト `:'は、通常のアクセスを許可するために使用されます
シェル操作。行の先頭に単独で記述されている場合、または
空白文字がある場合、行エディタは通常の動作に戻ります。それ以外の場合、文字列と
後続の空白はスキップされ、行の残りは次のように実行されます。
ラインエディタの動作モードを変更せずにシェル入力を行います。
現在の実装では、コマンドの使用に関して多少の欠陥がある。
歴史。このため、多くのユーザーは何らかの代替手段を使用することを好むでしょう。
現在のセッションにデータを簡単に送信する方法。1つの簡単な方法は、
エイリアス特殊文字(`%')を`tcp_コマンド --'.
tcp_wait
唯一の引数は整数または浮動小数点数で、秒数を指定します。
遅延。シェルは、その期間中、すべてのTCP入力を待つ以外は何もしない。
通話によるセッション tcp_read -aこれは、
zle ハンドラーがインストールされている場合のコマンド プロンプト。
「ワンショット」 file 転送
tcp_ポイント ポート
tcp_shoot host ポート
この2つの関数は、2つのホスト間でファイルを転送する簡単な方法を提供します。
シェル内では、バルクデータ転送は現在、
cat. tcp_ポイント 到着したデータを読み取る ポート それを標準出力に送信します。
tcp_shoot に接続します ポート on host 標準入力を送信します。未使用の ポート
使用される可能性があります。ポートを選択するための標準的なメカニズムは、ランダムに考えることです。
1024 を超える XNUMX 桁の数字が機能するまで。
ホストからファイルを転送するには ウッドコック 主催する スプリングス、オン スプリングス:
tcp_ポイント 8091 >出力ファイル
と上 ウッドコック:
tcp_shoot スプリングス 8091 <input_file
これら2つの機能は tcp_open まずTCP接続を確立し、
個別に自動ロードする必要がある場合があります。
TCP ユーザー定義の 関数
特定の関数は、ユーザーが定義した場合、関数システムによって呼び出されます。
特定のコンテキスト。この機能はモジュールに依存します zsh/パラメーター、通常は
補完システムが依存しているため、対話型シェルでは利用できません。
関数を定義する必要があります。関数は、必要なときに便利なフックを提供するだけです。
通常、これらは要求されたアクションが実行された後に呼び出されるため、さまざまな
パラメータは新しい状態を反映します。
tcp_on_alias alias fd
エイリアスが定義されている場合、この関数は2つの引数で呼び出されます。名前
エイリアスの、および対応するセッションのファイル記述子。
tcp_on_awol セックス fd
関数が tcp_fd_ハンドラ ラインエディタからの入力を処理し、
ファイル記述子が再利用できなくなった場合、デフォルトではそれを
このメソッドで処理されるファイル記述子のリストを取得し、メッセージを出力します。
function tcp_on_awol が定義されている場合は、このポイントの直前に呼び出されます。
ステータス100を返します。これは、通常の処理がまだ実行されていることを示します。
実行されました。その他の戻りステータスは、それ以上のアクションを実行する必要がないことを示します。
と tcp_fd_ハンドラ 指定されたステータスですぐに返されるはずです。通常
のアクション tcp_on_awol セッションを終了することになります。
変数 TCP_INVALIDATE_ZLE 必要であれば空でない文字列になります
`を使用して行エディタの表示を無効にするズレ -I' 出力を印刷する前に
機能。
(「AWOL」は「無断欠勤」またはその派生語を意味する軍隊用語である。
著者が知っている既存の技術的な意味。
tcp_on_close セックス fd
これは、閉じられるセッションの名前とファイル記述子で呼び出されます。
そのセッションに対応する。関数が実行されるまでに両方とも無効になる。
が呼び出されます。
tcp_on_open セックス fd
これは、セッション名とファイルで新しいセッションが定義された後に呼び出されます。
引数として記述子を渡す。ゼロ以外のステータスを返す場合、セッションを開くことは
失敗したとみなされ、セッションは再び閉じられますが、 tcp_open に引き続き
コマンドラインで指定された残りのセッションを開こうとします。
tcp_on_rename 老女 fd ニュース
これは、3つの引数oldでセッションの名前が変更された後に呼び出されます。
セッション名、ファイル記述子、新しいセッション名。
tcp_on_spam セックス command ...
これは、スパムされたセッションごとに1回呼び出されます。 コマンドが実行される
セッション tcp_spam引数はセッション名とそれに続くコマンドです
実行するリスト。 tcp_spam オプションで呼び出されました -t最初のコマンド
なります tcp_send.
この関数は、 $TCP_SESS セッションを反映するように設定されています
スパムメールは、実際に使用される前に送信されます。したがって、値を変更することが可能です。
of $TCP_SESS この関数内では、例えば、 tcp_spam
余分な情報を削除して処理する可能性がある tcp_on_spam.
関数がパラメータを設定する場合 $ REPLY に `行われ'、コマンドラインは
実行され、さらにプロンプトは出力されません。 -v オプション tcp_spam.
tcp_on_unalias alias fd
これはエイリアス名と対応するセッションのファイルで呼び出されます
エイリアスが削除された後の記述子。
TCP UTILITY 関数
以下の関数はTCP機能システムによって使用されますが、ほとんど必要ありません。
直接呼び出されます。
tcp_fd_ハンドラ
これは、 tcp_open 行内からの入力を処理するため
エディタで必要な場合は、組み込みの`ズレ
-Fの ズシュル(1)。
アクティブな間、関数はパラメータを設定する TCP_HANDLER_ACTIVE 1に。これにより
シェルコードが内部的に呼び出される(例えば、 読み取り専用)かどうかを知るには
シェルがエディタプロンプトでアイドル状態のときに呼び出されます。
tcp_出力 [ -q ] -P プロンプト -F fd -S セックス
この関数は、ログ記録と標準出力への出力処理の両方に使用されます。
以内 tcp_read そして(もし $TCP_OUTPUT 設定されています) tcp_send.
当学校区の プロンプト 使用するには、 -P; デフォルトは空の文字列です。
含む:
%c セッションが現在のセッションの場合は1に展開され、そうでない場合は0になります。
`のような三項式%(c.-.+)' を出力します `+' 現在のセッション
と `-' さもないと。
%f セッションのファイル記述子に置き換えられます。
%s セッション名に置き換えられます。
%% 単一の`に置き換えられました%'.
オプション -q 標準出力への出力を抑制しますが、ログファイルへの出力は抑制しません。
構成されています。
当学校区の -S -F オプションはセッション名とファイル記述子を渡すために使用されます
プロンプト内の可能な置換。
TCP USER パラメーター
パラメータは通常の慣例に従い、スカラーと整数には大文字が使用され、
小文字は通常の配列や連想配列に使用されます。ユーザーコードにとっては常に安全です。
これらのパラメータを読み取ります。いくつかのパラメータも設定される場合がありますが、これらは明示的に示されます。
その他は、ユーザーの機能システムによって設定されているため、このグループに含まれます。
利点、つまり、設定することは通常は役に立ちませんが、無害です。
設定可能なパラメータを関数にローカルにすることもしばしば有用である。例えば、
`ローカル TCP_SILENT=1' 関数呼び出し中に読み取られたデータは印刷されないことを指定します
関数外の設定に関係なく、標準出力に出力されます。同様に、`ローカル
TCP_SESS=セックス' は関数の実行中セッションを設定し、`ローカル TCP_PROMPT='
関数の実行中に入力にプロンプトを使用しないことを指定します。
tcp_expect_lines
配列。最後の呼び出しで読み込まれた行のセット tcp_expectなど、
最後 ($TCP_LINE).
tcp_フィルター
配列。直接設定できます。拡張グロブパターンのセット。一致すると
in tcp_出力は、その行が標準出力に印刷されない原因となります。
パターンは、引数に記述されているように定義する必要があります tcp_expect出力
ログ ファイルへの行は影響を受けません。
TCP_HANDLER_ACTIVE
スカラー。1に設定 tcp_fd_ハンドラ 再帰的に呼び出される関数を示す
エディター セッション中に呼び出されたことを示します。それ以外の場合は設定されません。
TCP_LINE
最後に読んだのは tcp_read、したがってまた tcp_expect.
TCP_LINE_FD
ファイル記述子は $TCP_LINE 読まれました。 ${tcp_by_fd[$TCP_LINE_FD]} 意志
対応するセッション名を指定します。
tcp_lines
配列。最後の呼び出しで読み込まれた行のセット tcp_read、最後の
($TCP_LINE).
TCP_ログ
直接設定することもできますが、 ログファイル名
すべてのセッションからの出力が送られる。出力の前には
いつもの $TCP_PROMPT絶対パス名でない場合は、ユーザーの
カレントディレクトリ。
TCP_LOG_SESS
直接設定することもできますが、 ログ. の接頭辞
各セッションからの出力が個別に送信されるファイルのセット。
ファイル名は ${TCP_LOG_SESS} です。セックス各ファイルへの出力は生データであり、プロンプトは追加されません。
絶対パス名でない場合は、ユーザーの現在のディレクトリに従います。
tcp_no_spam_list
配列。直接設定できます。 tcp_spam これがどのように使用されるかについては。
TCP_出力
直接設定できます。空でない文字列の場合、セッションに送信されるデータは tcp_send
ログに記録されます。このパラメータは、指定されたファイルで使用されるプロンプトを指定します。
$TCP_LOG ただし、生成されたファイルでは $TCP_LOG_SESSプロンプト文字列には
同じ形式 TCP_プロンプト 使用にも同じルールが適用されます。
TCP_プロンプト
直接設定できます。読み取られるデータのプレフィックスとして使用されます。 tcp_read 印刷されている
標準出力または指定されたログファイルに $TCP_LOG、もしあれば。%s'、 `%f' また
`%%文字列内の'はセッション名に置き換えられ、
セッションの基になるファイル記述子、または単一の`%'、それぞれ
式 `%c' 読み取られるセッションが現在のセッションである場合は1に展開され、そうでない場合は
0; これは、`のような三項式で最も役立ちます%(c.-.+)' は `+'
セッションが現在のものであれば、そうでなければ`-'.
プロンプトが %P、これは剥ぎ取られ、
前の段階は標準プロンプトを通過します %-スタイルのフォーマットで
出力。
TCP_READ_DEBUG
直接設定できます。長さが0以外の場合、 tcp_read 限定的に与える
読み取られるデータに関する診断。
TCP_SECONDS_START
この値は tcp_open によって作成され、ゼロに初期化されます。
機能 tcp_read tcp_expect シェルの SECONDS パラメータ
独自のタイミング目的のため。そのパラメータがエントリ時に浮動小数点型でない場合は、
関数の1つでは、ローカルパラメータが作成されます SECONDS 浮いている
ポイントしてパラメータを設定する TCP_SECONDS_START 以前の値に $秒.
パラメータがすでに浮動小数点数である場合、ローカルコピーを作成せずに使用されます。
作成され、 TCP_SECONDS_START 設定されていません。グローバル値がゼロなので、シェル
経過時間は、 $秒 $TCP_SECONDS_START.
これを回避するには、 SECONDS 浮動小数点値にグローバルに変換する
`タイプセット -F SECONDS'; するとTCP関数はローカルコピーを作成しなくなり、
セッションに TCP_SECONDS_START ゼロ以外の値に設定します。
TCP_SESS
直接設定できます。現在のセッション。いずれかのセッションを参照する必要があります。
によって設立された tcp_open.
TCP_SILENT
直接設定することもできますが、 ログゼロ以外の場合
長さ、読み取られたデータ tcp_read 標準出力には書き込まれませんが、
ログ ファイルに書き込まれる可能性があります。
tcp_spam_list
配列。直接設定できます。関数の説明を参照してください。 tcp_spam 方法については
これは使用されます。
TCP_TALK_ESCAPE
直接設定できます。関数の説明を参照してください tcp_トーク これがどうして
中古。
TCP_TIMEOUT
直接設定できます。現在、これは関数によってのみ使用されます tcp_コマンドを参照してください
上記。
TCP ユーザー定義の パラメーター
以下のパラメータは関数システムによって設定されませんが、以下の場合に特別な効果があります。
ユーザーが設定します。
読み取り専用
これは連想配列である必要があります。そうでない場合、動作は未定義です。
各キーはシェル関数または他のコマンドの名前であり、対応する
値はシェルパターン( EXTENDED_GLOB)。TCPセッションから読み取られたすべての行
直接的または間接的に使用して tcp_read (これには、 tcp_expect)であり、
パターンと比較します。行が一致した場合、キーに指定されたコマンドが
2つの引数で呼び出されます: 行が読み取られたセッションの名前、
そしてそのライン自体。
行を処理するために呼び出された関数がゼロ以外のステータスを返す場合、その行は
出力。 読み取り専用 命令のみを含むハンドラ`return 1' できる
特定の行の出力を抑制するために使用できます(ただし、 tcp_フィルター 上記)。
しかし、その行は依然として TCP_LINE tcp_lines; 結局これが起こる
読み取り専用 処理。
TCP UTILITY パラメーター
これらのパラメータは関数システムによって制御され、直接読み取ることもできますが、
通常はユーザーコードで設定しないでください。
tcp_aliases
連想配列。キーは確立されたセッションの名前です。 tcp_open;
各値は、そのセッションを参照するエイリアスのスペース区切りのリストです。
tcp_by_fd
連想配列。キーはセッションファイル記述子、各値は名前です。
そのセッションの。
tcp_by_name
連想配列。キーはセッション名、値はファイル名です。
そのセッションに関連付けられた記述子。
TCP 例
以下はリモート計算機を使用した簡単な例です。
ポート7337に計算機サーバーを作成するには( dc マニュアルページ
基礎となるコマンドを激怒させるのは、次のとおりです。
tcp_プロキシ 7337 dc
同じホストから「dc':
tcp_open ローカルホスト 7337 dc
リモートセッションにコマンドを送信し、出力をしばらく待つ( dc is
現在のセッション):
tcp_コマンド 2 4 + p
セッションを閉じるには:
tcp_close
当学校区の tcp_プロキシ 停止するには強制終了する必要があります。通常、これによって
すでに受け入れられている接続、またポートがすぐに
再利用可能です。
次のコードでは、現在のセッションのリストをxtermヘッダーに挿入します。
セッションの後にスターが続きます。
印刷 -n 「\033]2;TCP:」 ${(k)tcp_by_name:/$TCP_SESS/$TCP_SESS\*} 「\a」
TCP バグ
関数 tcp_read シェルの通常の read 組み込み。これは完全な行を読み込むので
一度に、改行なしでデータが到着すると、関数がブロックされる可能性があります。
無期限に。
関数スイートはインタラクティブな使用や小さなデータを受信する場合にはうまく機能しますが、
大量のデータを交換する場合のパフォーマンスは
非常に貧しい。
onworks.net サービスを使用して zshtcpsys をオンラインで使用する