タグ付けされた質問 「scripting」

スクリプトは、スタンドアロンの実行可能プログラムにコンパイルされるのではなく、インタープリタープログラムによって実行される一連のコマンドまたは命令です。

2
ポータブルスクリプトを記述することが重要なのはいつですか?
私が書くコードのほとんどはPHPにあります。最近、シェルスクリプトの学習を始めました。私が出会ったほとんどのリソースとチュートリアルは、Bashに固有のものです。バシズムについて警告する人もいれば、警告しない人もいます。私はこことStack Overflowについてたくさん読んでいます。 答えがbashismsを使用するときは常に、誰かが次のようにコメントすることは避けられません。 <bashismをここに挿入>は使用しないでください。ポータブルではありません。 これは、質問にがタグ付けされている場合でも発生しbashます。私にとって、それはPHP 4で使用できないため、PHP 5の新しいコードを使用すべきではないことをPHPプログラマーに伝えるようなものです。 Windowsで。 PHPで作成する場合、最小要件を選択し、前方互換コードを作成します。下位互換性について心配する必要はありません。 #!/bin/bashシバンとして使用する場合、なぜバシズムを使用してはいけないのですか?私は、一部の人々がちょうどそれのためにバシズムをバッシングすること(意図されたしゃれ)を好むという印象を受け始めています。 多くの場合bash、shellbashは多くのシステムでデフォルトのシェルであるという事実により、人々は頻繁に使用し、交換可能です。したがって、コードがバシズムを使用していることを警告するコメントを追加することは理解できますが、それらを使用することは間違っているという意味を理解していません。 明らかに、私が個人的に使用するためだけにスクリプトを書いている場合、私は好きな言語でそれを書くことができます。しかし、私が書いたコードの一部は他の人にとっても役立つと思いたいです。 投稿する前に質問の答えを探してみました。移植性をテストする方法に関する多くの情報を見つけましたが、そうすることが重要な場合については何も見つかりませんでした。 それで、いつ移植可能なスクリプトを書くことが重要ですか? 例えば、 どんな種類のスクリプトを可能な限り移植可能にするべきですか? Bashがインストールされていないシステムはどのくらい一般的ですか? システムにBashがインストールされている場合、GNUバージョンのfindおよびその他のユーティリティもありますか?

6
並列を使用して一意の入力ファイルを一意の出力ファイルに処理する
入力ファイル(各ファイルに多数の入力行が含まれる)でいっぱいのディレクトリが指定されているシェルスクリプトの問題があり、それらを個別に処理し、各出力を一意のファイル(別名、file_1.inputのニーズ)にリダイレクトする必要がありますfile_1.outputなどにキャプチャされます)。 事前並列処理では、ディレクトリ内の各ファイルを反復処理してコマンドを実行しますが、プロセッサを圧倒しないように何らかのタイマー/カウント手法を実行します(各プロセスのランタイムが一定であると仮定)。ただし、常にそうなるとは限らないため、カスタムコードを記述せずにシェルスクリプトのマルチスレッド化を実現するには、「並列」のようなソリューションを使用するのが最善の方法と思われます。 これらの各ファイルを処理するために並行して実行する(およびコアを効率的に管理できるようにする)方法をいくつか考えましたが、それらはすべてハックのようです。私は非常に簡単なユースケースだと思うものを持っているので、可能な限りきれいに保つことを好むでしょう(そして並列の例では何も私の問題であるとは思えません)。 助けていただければ幸いです! 入力ディレクトリの例: > ls -l input_files/ total 13355 location1.txt location2.txt location3.txt location4.txt location5.txt スクリプト: > cat proces_script.sh #!/bin/sh customScript -c 33 -I -file [inputFile] -a -v 55 > [outputFile] 更新:以下のOleの答えを読んだ後、自分の並列実装のために足りない部分をまとめることができました。彼の答えは素晴らしいですが、私が追加した研究とメモは次のとおりです。 完全なプロセスを実行する代わりに、概念実証コマンドから始めて、自分の環境で彼のソリューションを証明しようと考えました。私の2つの異なる実装(およびメモ)を参照してください。 find /home/me/input_files -type f -name *.txt | parallel cat /home/me/input_files/{} '>' /home/me/output_files/{.}.out find(lsではなく、問題を引き起こす可能性があります)を使用して、入力ファイルディレクトリ内のすべての適用可能なファイルを検索し、その内容を別のディレクトリとファイルにリダイレクトします。上記の私の問題は読み取りとリダイレクトでした(実際のスクリプトは単純でした)ので、スクリプトをcatに置き換えることは概念の立証でした。 parallel cat '>' …


2
POSIX準拠のシェルでパスワードを要求しますか?
bashスクリプトでパスワードを要求したいときは、次のようにします。 read -s ...しかしbash、POSIXモードで実行するとsh、-sオプションは拒否されます: $ read -s sh: 1: read: Illegal option -s POSIX準拠のコマンドを使用して入力を安全に要求するにはどうすればよいですか?

4
可能なSSH攻撃者のIPアドレスを取得する方法は?
記録しcat /var/log/auth.logて、| grep "Failed password for"記録がたくさんあることを確認しました。 ただし、有効/無効なユーザー用の2つのレコードタイプがあります。それは| cut彼らへの私の試みを複雑にします。 考えられる攻撃者のIPアドレスと各IPアドレスの試行回数を含むリスト(テキストファイル)を作成したいと思います。簡単に作成する方法はありますか? また、のみに関してssh:/var/log/auth.log可能な攻撃者のリストを作成する際に考慮すべきすべての記録は何ですか? 隠し番号を使用した「auth.log」の例: cat /var/log/auth.log | grep "Failed password for" | sed 's/[0-9]/1/g' | sort -u | tail 結果: Mar 11 11:11:11 vm11111 sshd[111]: Failed password for invalid user ucpss from 111.11.111.111 port 11111 ssh1 Mar 11 11:11:11 vm11111 sshd[111]: Failed password …

4
開発者として、中間ファイル用にどのフォルダーに書き込む必要がありますか?
私は自分のプロジェクト用にいくつかのbashスクリプトを書き始めており、それらにはいくつかの中間ファイルまたは変数を書き込む必要があります。 誰かがスクリプトを実行したときに、どのフォルダーにアクセスできるかを確認できますか?使用するのは一般的な習慣/tmp/ですか?それとも、何か他のものを使用する必要がありますか?

4
並列プロセスを実行し、両方が終了したときに出力を結合する方法
いくつかのデータを約5つまたは6つの異なるプログラムにパイプし、最終結果をタブ区切りファイルに渡すbashシェルスクリプトがあります。 次に、別の同様のデータセットに対して再度同じ操作を行い、2番目のファイルに出力します。 次に、両方のファイルを比較分析のために別のプログラムに入力します。例えば、単純化するために Data1 | this | that |theother | grep |sed | awk |whatever > Data1Res.csv Data2 | this | that |theother | grep |sed | awk |whatever > Data2Res.csv AnalysisProg -i Data1res.csv Data2res.csv 私の質問は次のとおりです。step1とstep2を同時に(たとえば&を使用して)実行し、両方が完了したときにstep3(AnalysisProg)のみを起動するにはどうすればよいですか。 THX ps AnalysisProgは、ストリームまたはfifoでは機能しません。

4
無音が検出されたらソックスの録音を終了する
soxを使用して会話を記録するスクリプトを書いています。今、録音を開始する前に、soxが音を検出するまで待つ必要があり、それを把握しました。しかし、少なくとも3秒間無音状態になったら終了するためにsoxも必要です。現状では、話を終えたら手動でsoxを強制終了する必要があります。そうでなければ、soxはさらに話をするまで再び待機し、出力ファイルに追加します(これは望んでいないことです)。現在使用している録音コマンドは次のとおりです。 rec /tmp/recording.flac rate 32k silence 1 0.1 3% -1 3.0 3% 繰り返しますが、わかりやすくするために、Soxは会話を開始するまで待機し、会話を停止するまで録音してから、soxプログラムを終了する必要があります。
16 scripting  audio  sox 

1
rsync出力から「ダイアログ」を使用してプログレスバーを作成する
rsync出力を「dialog --gauge」コマンドに入力できる方法でフィルタリング/リダイレクトする方法を探しているので、ファイル同期中に見栄えの良いプログレスバーを取得できます。現在、プロンプトで直接テストしているだけですが、(bash)シェルスクリプトでこれを行う予定です。 私はインターネットを見回し、細かく見つけましたが、それを機能させるための何かがまだありません (免責事項:これは完全に間違ったアプローチである可能性があり、リダイレクト/パイピングの怪物です) 私が現在まとめているもの: rsync -avz --progress -e "ssh" user@server:/home/user/data/ /home/user/data | awk -f /home/user/rsync.awk | sed 's/\([0-9]*\).*/\1/' | dialog --title "My Gauge" --gauge "Hi, this is a gauge widget" 20 70 最初に--progressオプションを指定した実際のrsyncコマンドがありますrsyncからの出力はawkにパイプされ、以下のawkフィルターを使用します。 { if (index($0, "to-check=") > 0) { split($0, pieces, "to-check=") split(pieces[2], term, ")"); split(term[1], division, "/"); …
16 linux  bash  scripting  awk  rsync 

6
シェルスクリプトの学習に役立つオンラインリソースは何ですか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 5年前に閉鎖されました。 シェルスクリプトを完全に学習することに興味があります。誰でも良いオンラインリソースを提案できますか?

4
sedを使用したbash変数の処理
bash変数LATLNGには、そのような括弧内に緯度と経度の値が含まれています (53.3096,-6.28396) 私はこれらをLATとLONと呼ばれる変数に解析したいので、sedを介してそうしようとしています LAT=$(sed "s/(\(.*\),\(.*\))/\1/g" "$LATLNG") LON=$(sed "s/(\(.*\),\(.*\))/\2/g" "$LATLNG") ただし、次のエラーが表示されます。 sed: can't read (53.3096,-6.28396): No such file or directory

8
Linuxシェルスクリプト:プログラムが存在する場合のみ実行し、存在しない場合は無視します
たとえば、適切なツールがインストールされている場合にのみ、実行中にステータスバナーを出力するLinuxシェルスクリプトをプログラミングしています(これは、システムパスで到達可能です)。 figlet 例: #!/usr/bin/env bash echo "foo" figlet "Starting" echo "moo" figlet "Working" echo "foo moo" figlet "Finished" 私は仕事に私のスクリプトのために希望のエラーのない場合であっても、figletされてインストールされていません。 何をすることができ実用的な方法?

3
スクリプト言語からLinuxシステムコールを呼び出す
Linuxのsyscall(または少なくともlibcラッパー)をスクリプト言語から直接呼び出したい。どのスクリプト言語でも構いません-コンパイルされないことが重要です(基本的に、依存関係のパスにコンパイラーが必要ないことと関係がありますが、それはここでもありません)。これを可能にするスクリプト言語(シェル、Python、Rubyなど)はありますか? 特に、getrandom syscallです。


4
バイナリ処理のためのシェルのような環境
この質問は数回前に私に来ましたが、今では質問/programming/993434/what-language-is-to-binary にあるBash Answersのstdinからのバイナリデータチャンクをループする質問に 答えて-as-perl-is-to-textも満足のいくものではありませんでした。 バイナリファイルでのI / Oの処理に特に適したスクリプト環境を探しています。本格的なプログラミング言語(c / Python / ...)のいずれかを使用できることは知っていますが、それらには膨大な初期化とコーディングのオーバーヘッド(cの割り当てとfread / fwrite、Pythonのビット文字列など)がありますスクリプト(スクリプトから他のアプリケーションを呼び出す)にはあまり適していません。Perlは、そのunpack機能、文字列指向の操作、および間抜けな構文で優れています。 のようなものodですが、言語として。 私が期待するもの: 単一のスイッチ/コマンドでエンディアンを設定または変更します。 要求されたタイプの単純な仕様(bash read varをint32 varで 拡張するfloat varなど)。 パイプを介したバイナリの処理、指定されたバイト数のスキップ。 慣れている標準のスクリプトフロー制御(for / if / ...)。 ASCIIファイルを検査するときに得られるのと同じ簡単さと洞察で、生データ(写真、科学データ、未知の、不十分な文書形式)を処理したいと思います。c現在使用していますが、アドホックスクリプトには最適ではなく、インタラクティブにすることはできません。 誰もがそのようなツールを知っていますか?かわいらしいGUIソフトウェアはありません。sshを介して、他のスクリプトなどから動作する必要があります。「存在しません」は受け入れられますが、憂鬱な答えです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.