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

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


21
端末とシェル環境を色付けしますか?
私はほとんどの時間をUnix環境で作業し、ターミナルエミュレータを使用しています。色を使用すると出力がより便利で直感的になるため、コマンドラインで色を使用しようとしています。 端末環境に色を追加するためのオプションはありますか?どのようなトリックを使用しますか?どのような落とし穴に遭遇しましたか? 残念ながら、色のサポートは端末タイプ、OS、TERM設定、ユーティリティ、バグのある実装などによって異なります。 多くの実験の後、私のセットアップからいくつかのヒントがあります: 私が設定する傾向にあるTERM=xterm-colorほとんどのホスト(すべてではない)でサポートされています、。 さまざまなホスト、さまざまなOSバージョンなどで作業しています。macOSX、Ubuntu Linux、RHEL / CentOS / Scientific Linux、FreeBSDのすべてを使用しています。可能であれば、物事をシンプルで一般的なものにしようとしています。 私はGNUを使用して多くの作業を行いますscreen。これにより、別の楽しみが追加されます。 多くのOSはdircolorsデフォルトで次のような設定を行っていますが、100種類のホストでこれを変更したくありません。だから私はデフォルトのままにします。代わりに、端末の色構成を調整します。 いくつかの色を使ってUNIXコマンド(ls、grep、less、vim)とバッシュプロンプト。これらのコマンドは、標準の「ANSIエスケープシーケンス」を使用しているようです。例えば: alias less='less --RAW-CONTROL-CHARS' export LS_OPTS='--color=auto' alias ls='ls ${LS_OPTS}' 投稿し、.bashrc自分の質問Jeopardy Styleに答えます。
262 shell  bash  colors  prompt 

4
シェルスクリプトで最後に実行されたコマンドのPIDを取得する方法は?
次のようなシェルスクリプトが必要です。 my-app & echo $my-app-pid しかし、実行されたばかりのコマンドのPIDを取得する方法がわかりません。 jobs -p my-appコマンドを使用してpidをgrep できることを知っています。しかし、シェルを複数回実行したい場合、この方法は機能しません。そのためジョブ仕様があいまいです。


6
Bash演算子[[vs [vs(vs((?
これらの演算子がbash(括弧、二重括弧、括弧、二重括弧)で使用された場合に異なる動作をすることについて少し混乱しています。 [[ , [ , ( , (( 私は人々がこのようなifステートメントでそれらを使用するのを見てきました: if [[condition]] if [condition] if ((condition)) if (condition)
246 bash  shell  test 

3
シェルの制御演算子とリダイレクト演算子は何ですか?
さまざまなコマンドをさまざまなシンボルに接続するチュートリアルをオンラインでよく見ます。例えば: command1 | command2 command1 & command2 command1 || command2 command1 && command2 他の人はコマンドをファイルに接続しているようです: command1 > file1 command1 >> file1 これらは何ですか?彼らは何と呼ばれている?彼らは何をしますか?それらはもっとありますか? この質問に関するメタスレッド。。

8
変数が空であるか、スペースのみが含まれているかどうかをテストするにはどうすればよいですか?
次のbash構文は、param空でないかどうかを検証します。 [[ ! -z $param ]] 例えば: param="" [[ ! -z $param ]] && echo "I am not zero" 出力なしとその罰金。 ときしかし、param1つ(またはそれ以上)のスペース文字を除いて空で、そして場合は異なります。 param=" " # one space [[ ! -z $param ]] && echo "I am not zero" 「I am not zero」が出力されます。 スペース文字のみを含む変数を空と見なすようにテストを変更するにはどうすればよいですか?


3
bash / POSIXシェルで変数を引用するのを忘れた場合のセキュリティへの影響
しばらくunix.stackexchange.comをフォローしている場合はecho $var、Bourne / POSIXシェル(zshは例外)のリストコンテキスト(のように)で変数を引用符で囲まないでおくと、非常に特別な意味があり、正当な理由がない限り、実行しないでください。 ここでいくつかのQ&Aで詳細に議論されています(例:シェルスクリプトが空白または他の特殊文字でチョークするのはなぜですか?、二重引用符が必要なのはいつですか?、シェル変数の展開とグロブと分割の効果、引用符付き引用符なしの文字列展開) これは、70年代後半のBourneシェルの最初のリリース以降のケースであり、Kornシェル(David Kornの最大の後悔の 1つ(質問#7))によって変更されていないかbash、Kornシェルをほとんどコピーしたものです。 POSIX / Unixでどのように指定されているか。 現在、ここにはまだ多くの回答があり、変数が引用されていない公開されているシェルコードもときどき公開されています。あなたは今までに人々が学んだと思っていただろう。 私の経験では、変数を引用するのを省略した人が主に3種類あります。 初心者。確かにそれは完全に直感的でない構文であるため、それらは言い訳することができます。そして、彼らを教育することは、このサイトでの私たちの役割です。 忘れっぽい人。 繰り返しハンマーを打っても納得しない人、Bourneシェルの作者が私たちのすべての変数を引用するつもりはなかったと思う人。 この種の行動に関連するリスクを明らかにすれば、彼らを説得できるかもしれません。 変数の引用を忘れた場合に起こりうる最悪の事態は何ですか。それは本当にそれが悪いですか? ここでどのような脆弱性について話しているのですか? どのような状況で問題になりますか?

8
なぜlsを*解析*しないのですか(そして代わりに何をすべきか)?
私は一貫して引用の回答を参照このリンクを明確に述べ、「解析はいけませんのls!」これにはいくつかの理由があります。 そのリンクの情報は、ささいな質問なしに大々的に受け入れられているように見えますが、偶然の読書で少なくともいくつかのエラーを見つけることができます。 また、あたかもそのリンクに記載されている問題が解決策を見つけたいという欲求を引き起こしていないかのようです。 最初の段落から: ... [ls]ファイルのリストを要求すると、大きな問題があります。Unixでは、空白、改行、コンマ、パイプ記号など、ほとんどすべての文字をファイル名に使用できます。 NULを除く区切り文字。... lsファイル名を改行で区切ります。これは、名前に改行を含むファイルが作成されるまで問題ありません。そして、ls改行の代わりにNUL文字でファイル名を終了できるようにする実装がわからないため、これを使用してファイル名のリストを安全に取得できなくなりますls。 残念ですよね?どのようにこれまで私たちは、改行は改行が含まれている可能性のあるデータにリストされているデータセットを終了扱うことができますか?まあ、このウェブサイトの質問に答える人々が日常的にこの種のことをしなかったなら、私たちは何らかのトラブルにあったと思うかもしれません。 ただし、ls実際には、ほとんどの実装では、出力を解析するための非常に単純なAPIが実際に提供されており、私たちはみな、気づかずにそれをずっと行ってきました。ファイル名をnullで終了できるだけでなく、nullで開始することも、他の任意の文字列で開始することもできます。さらに、これらの任意の文字列をfile-typeごとに割り当てることができます。考えてください: LS_COLORS='lc=\0:rc=:ec=\0\0\0:fi=:di=:' ls -l --color=always | cat -A total 4$ drwxr-xr-x 1 mikeserv mikeserv 0 Jul 10 01:05 ^@^@^@^@dir^@^@^@/$ -rw-r--r-- 1 mikeserv mikeserv 4 Jul 10 02:18 ^@file1^@^@^@$ -rw-r--r-- 1 mikeserv mikeserv 0 Jul 10 01:08 ^@file2^@^@^@$ -rw-r--r-- 1 mikeserv mikeserv …
204 shell  ls 


4
シェルループを使用してテキストを処理するのは悪い習慣と見なされるのはなぜですか?
whileループを使用してテキストを処理することは、POSIXシェルでは一般的に悪い習慣と見なされていますか? 以下のようステファンChazelasが指摘し、シェルのループを使用していない理由のいくつかはある概念、信頼性、読みやすさ、パフォーマンスとセキュリティ。 この回答では、信頼性と読みやすさの側面について説明しています。 while IFS= read -r line <&3; do printf '%s\n' "$line" done 3< "$InputFile" パフォーマンスのために、ファイルまたはパイプから読み取る場合、whileループと読み取りは非常に遅くなります。これは、読み取りシェルに組み込まれたコマンドが一度に1文字ずつ読み取るためです。 どの程度概念やセキュリティ面?


20
単純なシェルスクリプトでディストリビューション名とバージョン番号を取得するにはどうすればよいですか?
UbuntuとCentOSディストリビューションで実行できるシンプルなbashスクリプトに取り組んでおり(DebianとFedora / RHELのサポートがあればプラスになります)、スクリプトが実行しているディストリビューションの名前とバージョンを知る必要があります(リポジトリの作成など、特定のアクションをトリガーするため)。これまでのところ、これは次のとおりです。 OS=$(awk '/DISTRIB_ID=/' /etc/*-release | sed 's/DISTRIB_ID=//' | tr '[:upper:]' '[:lower:]') ARCH=$(uname -m | sed 's/x86_//;s/i[3-6]86/32/') VERSION=$(awk '/DISTRIB_RELEASE=/' /etc/*-release | sed 's/DISTRIB_RELEASE=//' | sed 's/[.]0/./') if [ -z "$OS" ]; then OS=$(awk '{print $1}' /etc/*-release | tr '[:upper:]' '[:lower:]') fi if [ -z "$VERSION" ]; then VERSION=$(awk '{print …
191 shell 


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