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

シェルは、Unixのコマンドラインインターフェイスです。シェルにインタラクティブにコマンドを入力するか、スクリプトを記述してタスクを自動化できます。/ bin / shおよび最も互換性のあるシェル(ash、bash、ksh、zshなど)に適用される質問には、このタグを使用します。エラーのあるシェルスクリプトについては、ここに投稿する前にhttp://shellcheck.netで確認してください。

4
シェルで何百ものHTMLソースコードファイルを解析する方法は?
数百のHTMLソースコードファイルがあります。<div>これらの各ファイルから特定の要素の内容を抽出する必要があるため、各ファイルをループするスクリプトを作成します。要素の構造は次のとおりです。 <div id='the_div_id'> <div id='some_other_div'> <h3>Some content</h3> </div> </div> the_div_idlinuxコマンドラインを使用してファイルからdiv とすべての子要素とコンテンツを抽出する方法を提案できる人はいますか?

5
grepの結果から数値を追加する
次のコマンドを実行します。 grep -o "[0-9] errors" verification_report_3.txt | awk '{print $1}' そして、私は次の結果を得る: 1 4 0 8 各数値を実行中のカウント変数に追加したいと思います。誰かが私を構築するのに役立つ魔法のワンライナーはありますか?
23 bash  shell  grep 

4
インプレース引数のための複数の表現を使用したsed
を使用してファイル内の複数の単語を置き換えようとしています sed -i #expression1 #expression2 ファイル Something 123 item1 Something 456 item2 Something 768 item3 Something 353 item4 出力(望ましい) anything 123 stuff1 anything 456 stuff2 anything 768 stuff3 anything 353 stuff4 トライアウト sed -iforを2回使用すると、次の出力を取得できます。 sed -i 's/Some/any/g' file sed -i 's/item/stuff/g' file これを単一のインプレースコマンドとして作成する方法はありますか sed -i 's/Some/any/g' -i 's/item/stuff/g' file 上記のコードを試してみたときs/item/stuff/g、ファイルとして取得し、作業を試みます。

6
任意のURLから応答を取得する方法は?
プロジェクトのURLがUP / Workingであるかどうかを確認するために、シェルスクリプトを作成するように求められました。 私はインターネット上でいくつかのヒントを見つけようとしましたが、私が得たのはURLが存在するかどうかをチェックすることです。 私は最初に試しましたwget。 wget -S --spider https://genesis-dev.webbank.ssmb.com:21589/gop-ui/app.jsp 2>&1 | awk '/^ /' if [ $? -ne 0 ] then echo "Server is UP" else echo "Server is down" fi 私の次の試みはでしたcurl。 curl -ivs https://genesis-dev.webbank.ssmb.com:21589/opconsole-sit/opconsole.html# if [ $? -ne 0 ] then echo "Server is UP" else echo "Server is …

8
スクリプトが手動で起動されるのではなく、cronによって起動されているかどうかを確認します
cronがプログラムを実行するときに設定する変数はありますか?スクリプトがcronで実行される場合、一部をスキップしたいと思います。それ以外の場合は、それらのパーツを呼び出します。 Bashスクリプトがcronによって開始されたかどうかを知るにはどうすればよいですか?
23 bash  shell  scripting  cron 

4
`curl | sh`と `sh -c“ $(curl)”`?
この質問は、UnixおよびLinux Stack Exchangeで回答できるため、Server Faultから移行されました。 2年前に移行され ました。 (たとえば)Dockerの簡単なインストール方法の1つは次のとおりです。 curl -sSL https://get.docker.com/ | sh ただし、次のようなものも見ました(Dockerの例を使用): sh -c "$(curl -sSL https://get.docker.com/)" 機能的には同じように見えますが、一方を他方よりも使用する理由はありますか?それとも、単に好み/美学のものですか? (注意してください、未知の起源からスクリプトを実行するとき、非常に注意してください。)

3
他のユーザーの環境変数を取得する[終了]
ここで何が尋ねられているかを伝えるのは難しいです。この質問は曖昧、曖昧、不完全、過度に広範、または修辞的であり、現在の形式では合理的に答えることができません。この質問を明確にして、再開できるようにするには、ヘルプセンターに アクセスしてください。 6年前に閉鎖されました。 他のユーザーの環境変数を見る方法はありますか?rootでそれをしたいので、パーミッションは問題にならないでしょう。 ユーザー自身には、echo $PATHまたはset | grep PATH(またはset変数名を覚えていない場合)を使用します。他のユーザーにとって同様の指示は何でしょうか? 価値があるのは、Ubuntu Server 13.04です。

3
等しくないという構文は重要ですか?
スクリプトを作成するとき、次に来ることは真実ではないことを理解しやすいため、通常は次の構文でifを記述します。 if [ ! "$1" = "$2" ]; then 他の人は、以下の方法が良いと言います if [ "$1" != "$2" ]; then 問題は、理由と違いがあるかどうかを尋ねたとき、誰も答えていないようです。 では、2つの構文に違いはありますか?それらの1つは他より安全ですか?それとも単に好み/習慣の問題ですか?
22 shell  test 


2
パイプ、データはパイプラインでどのように流れますか?
パイプラインでデータがどのように流れるのか理解していないので、誰かがそこで何が起こっているのかを明確にしたいと思っています。 コマンドのパイプラインは、ファイル(テキスト、文字列の配列)を1行ずつ処理します。(各コマンド自体が行ごとに機能する場合。)テキストの各行がパイプラインを通過する場合、コマンドは前の入力が入力全体の処理を完了するまで待機しません。 しかし、そうではないようです。 これがテスト例です。テキストのいくつかの行があります。それらを大文字にして、各行を2回繰り返します。私はそうしcat text | tr '[:lower:]' '[:upper:]' | sed 'p'ます。 プロセスを追跡するために、「インタラクティブ」に実行できますcat。入力ファイル名をスキップします。パイプラインの各部分は、行ごとに実行されます。 $ cat | tr '[:lower:]' '[:upper:]' alkjsd ALKJSD sdkj SDKJ $ cat | sed 'p' line1 line1 line1 line 2 line 2 line 2 しかし、完全なパイプラインは、入力が完了するのを待ってからEOF結果を出力するだけです。 $ cat | tr '[:lower:]' '[:upper:]' | sed 'p' I am writing... …

2
複数の拡張子を持つファイルをコピーする
複数の拡張子を持つファイルを単一の宛先ディレクトリにコピーしたいと思います。 たとえば、次のコマンドを使用して、作業ディレクトリ内のすべての.txtファイルをというディレクトリにコピーできますdestination。 cp -v *.txt destination/ そして、以下を使用して、作業ディレクトリ内のすべての.pngディレクトリをにコピーできますdestination。 cp -v *.png destination/ ただし、これらを個別のコマンドとして入力するのは時間がかかります(コマンド履歴を使用する場合でも)。だから、私が言うことができることをどのような方法があるcpパターンのいずれかでファイルをコピーする*.txt か、パターン*.pngにはdestination? 理想的には、3つ以上のパターンを指定できるようにしたいと考えています。たとえば、cpすべて*.txt または *.png または *.jpgファイルをにコピーするように指示するdestinationなどです。 これはすべて、シェルスクリプトを使用して可能になると確信しています(bashたとえば、を使用しています)が、コンソールからのみ、より簡単に実行する方法はありますか?何とかしてブレース拡張を使用してそれを行うことはできますか? 特定の特定のパターンに一致するファイルを除く、作業ディレクトリ内のすべてのファイルをコピーできることは知っていますが、作業ディレクトリには、コピーしたくないファイル拡張子がはるかに多く含まれているため、苦労します。 これについて何か考えはありますか?
22 bash  shell  wildcards  cp 

17
最小文字数の行を見つける方法
一般的なUNIXコマンドを使用して、シェルスクリプトを作成しています。文字数が最も少ない行(空白を含む)を取得する必要があります。最大で約20行あります。 head -$L | tail -1 | wc -m行Lの文字カウントを見つけるために使用できることを知っています。問題は、それを使用して考えることができる唯一の方法は、ifステートメントの混乱を手動で記述して値を比較することです。 サンプルデータ: seven/7 4for 8 eight? five! 4forその行の文字が最も少ないため、戻ります。 私の場合、複数の行の長さが最も短い場合、単一の行が返されます。最小の長さであれば、どちらを選択してもかまいません。しかし、私は、他の状況にいる他のユーザーに両方の方法を示すことに害はないと思います。

4
sudoがエイリアスを無視するのはなぜですか?
Ubuntu 10.04を実行しておりupstart、デーモン管理に使用しています。私のエンタープライズアプリケーションはデーモンとして実行され、さまざまな特権のためにルートとして実行する必要があります。例えば: sudo start my-application-long-ID sudo stop my-application-long-ID etc aliasこれらのコマンドを次のように短縮するためにを紹介します。 alias startapp='sudo start my-application-long-ID' として実行し、startappそれは動作しますが、エイリアスにsudoを含めないことを好みます。 alias startapp='start my-application-long-ID' 使用して実行されていないときsudo startappの復帰、sudo: startapp: command not found。 ただし、エイリアスを追加したとき: alias sudo='sudo ' sudo startapp 動作するようになりましたが、なぜsudoがエイリアスを無視するのか興味があります。
22 shell  sudo  alias 

3
変数を文字列またはintとして比較するときに大きな違いはありますか
好奇心から、bash変数の比較(値はinteger)を行う場合、an intまたはaとして宣言された定義済みの値に対してテストできstringます。 サンプルスクリプト: #!/bin/bash f1() { [ "$1" == "1" ] && echo "$FUNCNAME: \"1\" compared as string" } f2() { [[ "$1" -eq 1 ]] && echo "$FUNCNAME: \"1\" compared as int" } f1 $1 f2 $1 出力: $ ./param.sh 1 f1: "1" compared as string f2: "1" compared …
22 bash  shell  test 

3
作業用UNIXディレクトリ内のチルダ(〜)
だから、私はUNIX環境で働いており、UNIXホームから何マイルも離れた作業ディレクトリ内にがあることに気付きました~。 今、過去に一度、私はrm -rf ~自分の作業ディレクトリから行って、ホームディレクトリを完全に消去することになり、ITを巻き込まなければなりませんでした。 二度とやりたくない。同時に、知りたい ~作業ディレクトリに作成されるのはなぜですか?保存中の指の滑りが間違って:w!いますか(しかし、どうなり:w~ますか?!!) チェックインする前に、p4が認識していない余分なファイルまたはフォルダーを探すスクリプトがあるため、def ~により問題が発生する可能性があります。では~、作業ディレクトリからを削除し、同時に自宅を消去しないようにするにはどうすればよいですか? のdel代わりに使用するというバックアップコマンドがありrm -rfます。一時的な場所に物を置くだけです。私はそれを使用して、を取り除くことができました~。しかし、私はこれがなぜ起こるのか、どのようにそれを削除できるのかを知ることにもっと興味がありますか?
22 shell  filenames  home 

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