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

他のBourne / POSIXシェルとは対照的に、GNUのBourne Again SHellに固有の質問。Unixシェル全般に関する質問については、代わりに/ shellタグを使用してください。

4
ファイルを分割して、対応するデータ構造に入れますか?
以下の1行を含むファイルがあります。 {machineA=[0, 1024, 4, 1028], machineB=[1, 1025, 5, 1029]} ここには2つのデータセットがあります。 machineA=[0, 1024, 4, 1028] machineB=[1, 1025, 5, 1029] ここで、上記のファイルを読み取り、上記のように各マシンの情報を抽出していくつかのデータ構造に格納できるように分割する必要があります。 現在、bashシェルスクリプトでどのデータ構造を使用すればよいか混乱しています。これをJavaで実行している場合は使用しますMap<String, Set<String>>が、シェルスクリプトで何を使用すればよいかわかりません。 そして、それを何らかのデータ構造に格納した後、それを反復して結果を出力する必要があります。 以下のシェルスクリプトを使用して上記のファイルを読み取ることができます。 #!/bin/bash while read -r line; do echo "$line" done < data.txt しかし、私は上記のラインデータをどのように分割して、各マシン情報を抽出し、それをいくつかのデータ構造に格納できるかわかりませんか? 更新:- 以下は、glennの提案に従って作成したシェルスクリプトです。 #!/bin/bash while read -r line; do echo "$line" declare -A "$( echo "x=(" …

5
コマンドの引数としてbashで区切られたテキストファイルを解析する
テキストファイルを次のように分割しています。 field1,field2,field3 xield1,xield2,xield3 dield1,dield2,dield3 gield1,gield2,gield3 これらの各列はプログラムのパラメーターになります。プログラムは各行で呼び出されます 私はループのようなものを望んでいました: for $i in file command $field2 -x $field3 -PN -$field1 >> output done このようなことをbashで達成するための最良の方法は何でしょうか?

2
プログラムでディスクをパーティション分割する
既存のパーティションを持つディスク上にファイルシステムを持つ新しいパーティションを作成するbashスクリプトを作成しようとしています。 プログラムでpartedを使用してパーティションを作成するのは簡単なようですが、新しいパーティションを開始および停止する場所を知っておく必要があり、ここが問題です。 特定の位置/サイズのパーティションを持つディスクに依存したくありません。つまり、最後の既存のパーティションの直後から新しいパーティションを作成したいと考えています。次に、固定サイズのパーティションを作成したり、残りのスペースを埋めたりできるようにしたいと考えています。 バッシュでは、信頼できる方法で判断できますか a)最後のパーティションの終了位置、および b)最後のパーティション後の残りのパーティション化されていないスペース?
10 bash  partition  fdisk  parted 

4
bash関数から値を返す
数値が有効な10桁の数値である場合に1を返す関数があります。 valNum() { flag=1 if [[ $1 != [1-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9] ]]; then echo "Invalid Number" flag=0 fi return $flag } それは以下によって呼び出されています: if [[ $(valNum $num) -eq 1 ]]; then #do something fi 数値が有効であれば関数は正常に機能しますが、無効な数値を入力すると構文エラーが表示されます。


3
関数でgitサブモジュールforeachを使用する
私のインデントは、与えられたブランチに従ってすべてのgitサブモジュールを更新するスクリプトを作成することです。サブモジュールにそのようなブランチがない場合は、マスターが使用されます。 これは私が今持っているものです: #!/bin/bash -x if [ -z $1 ]; then echo "Branch name required." exit fi function pbranch { exists=`git show-ref refs/heads/$branch` if [ -z $exists ]; then branch="master" fi git co $branch git pull origin $branch } branch=$1 git submodule foreach pbranch しかし、このスクリプトを実行すると、エラーがスローされます。 oleq@pc ~/project> git-fetchmodules major + '[' …
10 bash  git 

3
bashでワイルドカードをインライン展開する方法は?
私はbashが次のことができることを思い出しました: 次のように入力すると、現在のディレクトリにa、b、cの3つのファイルがあるとします。 $> somecommand * 次に、キー、キーの組み合わせ、またはキーシーケンスを押します。ワイルドカード*オンラインは次のように展開されます。 $> somecommand a b c キーシーケンスを思い出せず、グーグルアウトできません。助けて!
10 bash 

4
シェルスクリプト内のハイブリッドコード。変数の共有
この回答では、ターミナルのコマンドラインから複数行のPythonスニペットを実行する方法について説明します。入れ子になったインデントがあっても、答えはシェルスクリプト内でうまく機能することに気づきました。 #!/bin/bash some_text="Hello world" echo $some_text cat <<EOF | python - import sys; for r in range(3): print r for a in range(2): print "hello" EOF プリント: 0 hello hello 1 hello hello 2 hello hello ただし、シェルスクリプトとPythonスニペットの間で変数を共有するのに苦労しています。 python添え字の出力をbashスクリプトで収集するにはどうすればよいですか?(例:などの変数内$output)。 $some_textPythonスクリプトにbash変数(など)を渡すにはどうすればよいですか?
10 bash  scripting  zsh  python 

3
Bashで二重文字を見つけるための正規表現
コマンドライン(Bash)で、テキスト、リストなどの二重文字のすべての出現を検出する正規表現を探しています。 主な質問:様配列を探すための簡単な方法があるaa、ll、ttttt1は同じ文字のn個の出現箇所を検索することを正規表現を定義し、その他は?私が探しているのは、非常に基本的なレベルでこれを達成することです。コマンドライン。Linuxシェル。 かなりの調査の後、私は次の答えにたどり着きました–そしてそれらから生じる質問、そしてそれゆえ彼らは私に解決策がどこにあるのかについてのヒントを与えてくれました。だが: a)(e)grepとバックスラッシュの問題 grep 'a\{2\}' 探す aa egrep'a{2}' 探す aa 質問:バックラッシュを設定する必要性は、実際に使用するコマンドにバインドされていますか?もしそうなら、誰かがここで(e)grepを使用するときに考慮すべき他のことを教えてくれますか? b)私が探していたものとは異なりますが、この質問に対する回答をここで見つけました。 grep -E '(.)\1' filename同じ文字が複数回出現するエントリを探しますが、その頻度は尋ねません。これは私が探しているものに近いですが、繰り返しの数を設定したいと思います。 私はおそらくこれを2つ以上の質問に分割する必要がありますが、この素晴らしいサイトをここに殺到させたくありません。 PS:もう一つの問題、おそらくトピックオフけど:それであるin、inside、atまたはon the shell。そしてon the command line正しいですか?


2
時間を比較する良い方法は?
現在の時刻を確認し、実行するはずの適切な時刻でない場合はスクリプトを中止する必要があります。また、他の誰かがそれを実行した場合、中止する必要があります。 例:午後10時から午前2時(4時間のウィンドウ)の間に開始された場合にのみ、スクリプトを実行する必要があります。 現在、私は以下を行っています。時間をかけdate +%k%Mてハードコードされた数値と比較する #!/bin/sh currTime=`date +%k%M` check_time_to_run() { tempTime=$1 if [ $tempTime -gt 200 -a $tempTime -lt 2200 ]; then echo "Time is between 2 AM and 10 PM. Aborting." exit 1 else echo "Time is after 10 PM and before 2 AM. Running normally." fi } check_time_to_run $currentTime …

2
なぜ$ '\ 0'は ''と同じですか?
いくつかのファイルで処理を行う一般的な方法は次のとおりです。そのために私を襲わないでください。 for f in $(ls); do … ここで、スペースやその他の奇妙な文字を含むファイルに対して安全にするために、素朴な方法は次のようにすることです: find . -type f -print0 | while IFS= read -r -d '' file; … ここでは、-d ''はASCII NULをのように設定するための略語-d $'\0'です。 しかし、それはなぜですか?なぜ''と$'\0'同じ?これは、空の文字列が常にnullで終了しているBashのCルートによるものですか?
10 bash 

2
findコマンドからパイプされたファイル名を操作する
私はBashに比較的慣れていないため、表面上は非常に簡単に思える何かを実行しようとしています。ディレクトリ階層全体でfindを実行して、すべての* .wmaファイルを取得し、その出力をコマンドにパイプして、mp3に変換します。変換したファイルを.mp3として保存します。私の考えは、コマンドは次のようになるはずだと考えていました(オーディオ変換コマンドは省略し、代わりに説明のためにエコーを使用しています)。 $ find ./ -name '*.wma' -type f -print0 | xargs -0 -I f echo ${f%.*}.mp3 私が理解しているように、-print0引数を使用すると、スペースを含むファイル名を処理できます(これらの多くは、音楽ファイルであるので、これを行います)。次に、(xargsの結果として)findからの各ファイルパスがfにキャプチャされ、文字列の最後から部分文字列の一致/削除を使用すると、mp3で元のファイルパスをエコーする必要があることを期待していますwmaの代わりに拡張子。ただし、この結果の代わりに、次のように表示されます。 *.mp3 *.mp3 *.mp3 *.mp3 *.mp3 *.mp3 *.mp3 *.mp3 *.mp3 ... だから私の質問(特定の「ここで何が間違っているのか」を除いて)はこれです-パイプ操作の結果である値は、変数割り当ての結果である値とは異なる文字列操作操作で処理する必要があります?

2
ls出力で最後に更新された3つのファイルを強調表示します。
lsコマンドをオーバーロードまたはラップして、最後に変更された3つのファイルを強調表示/下線/その他の方法で明確にする方法はありますか? ls -rtl逆変更時間で並べ替えることができることはわかっていますが、自分または別の開発者が変更した最後のファイルをすばやく特定したいにもかかわらず、通常はファイルのアルファベット順のリストが必要です。
10 linux  bash  command-line  ls 

5
bashスクリプトの一部のキーワードのみをどのように色付けしますか?
ユニットテストコードを実行しています。ユニットテストコードは通常のテキストを出力します。テキストが多いので、ユーザーにとって重要なキーワードを強調したいと思います。 この場合のキーワードは「PASS」と「FAIL」です。 「合格」を緑色に、「不合格」を赤色にするにはどうすればよいですか?

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