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

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

3
Bashでstdoutの線幅を動的にトリミングする
最近、私はpsコマンドを実験していますが、長いパスが次の行(または2行)に折り返されて読みにくくなる場合があります。ps出力を別のプログラムにパイプして、出力をx文字数に制限したい。 これが私がこれまで持ってきたものですが、それは完全にうまくいきません: ps aux | cut -c1-$(stty size | cut -d' ' -f2) $(stty size | cut -d' ' -f2)は167と評価されますが、の有効な入力ではないようですcut。 このタイプの構文をbashで機能させる方法はありますか?
9 bash  shell  stdout  cut 

4
パイプからユーザー入力を読み取る方法は?
confirmation.sh次の内容の名前のファイルがあるとします。 #!/bin/bash echo -n "Are you sure [Y/n]? " read line case "$line" in n|N) echo "smth" ;; y|Y) echo "smth" ;; esac このスクリプトを次のように実行したいと思います。 cat confirmation.sh | sh 私が見るAre you sure [Y/n]?と、スクリプトが中断されました。どうしたの?

1
算術オーバーフローなどを警告しないbashシェルの根拠は何ですか?
bashシェルの算術評価機能には制限が設定されています。マニュアルはシェル演算のこの側面については簡潔ですが、次のように述べています: 評価はオーバーフローのチェックなしで固定幅整数で行われますが、0による除算はトラップされ、エラーとしてフラグが立てられます。演算子とその優先順位、結合性、および値は、C言語の場合と同じです。 これが参照する固定幅整数は、実際にはどのデータ型が使用されているか(そしてこれがこれを超えている理由の詳細)ですが、制限値は次のように表されます/usr/include/limits.h。 # if __WORDSIZE == 64 # define ULONG_MAX 18446744073709551615UL # ifdef __USE_ISOC99 # define LLONG_MAX 9223372036854775807LL # define ULLONG_MAX 18446744073709551615ULL そして、それを知ったら、次のようにこの事実の状態を確認できます。 # getconf -a | grep 'long' LONG_BIT 64 ULONG_MAX 18446744073709551615 これは64ビット整数であり、これは算術評価のコンテキストでシェルで直接変換されます。 # echo $(((2**63)-1)); echo $((2**63)); echo $(((2**63)+1)); echo $((2**64)) 9223372036854775807 //the practical usable limit for …

2
文字列を順次インデックスに置き換えます
誰かがこれを達成するためのエレガントな方法を提案できますか? 入力: test instant () test instant () ... test instant () //total 1000 lines 出力は次のようになります。 test instant1 () test instant2 () test instant1000() 空の行が入力ファイルにあり、同じディレクトリの下に一度に処理する必要のあるファイルがたくさんあります。 同じディレクトリ内の多くのファイルを置き換えるためにこれを試してみましたが、機能しませんでした。 for file in ./*; do perl -i -000pe 's/instance$& . ++$n/ge' "$file"; done エラー: Substitution replacement not terminated at -e line 1. Substitution replacement …

2
プロセスが一定時間静かになった場合、プロセスを強制終了します
私は静かにしてそこに留まるという厄介な癖のあるユーティリティを持っています。これはプロセスにどれくらいの期間これを行うのかすでに知っているのでtimeout、これと戦うために使用していますが、その前にそれを行うこともあります。timeoutstdoutへの出力の送信を停止した場合、プロセスを強制終了する同様のツールはありますか?
9 linux  bash  shell  stdout  timeout 

3
アトミック更新のためにファイルの排他的な読み取り/書き込みロックを取得する
カウンターとして使用するファイルが欲しいのですが。ユーザーAがこの番号を書き込んでインクリメントし、ユーザーBはファイルの読み取りを要求します。ユーザーAがこのファイルをロックして、ユーザーAの書き込みが完了するまで誰もファイルを読み書きできないようにすることは可能ですか? 調査しましたflockが、期待どおりに機能するようには見えません。 flock -x -w 5 /dev/shm/counter.txt echo "4" > /dev/shm/counter.txt && sleep 5 このアトミックのようなインクリメントファイルを取得するためのより適切な方法があるとしたら、それも聞いてみたいと思います。 私の目標は: LOCK counter.txt; write to counter.txt; 同時に Read counter.txt; realize it's locked so wait until that lock is finished.



5
バックグラウンドでプログラムを開始する方法
Boblightプログラムはバックグラウンドで実行されません。実行の間に顕著な違いはありません sudo boblightd そして sudo boblightd& コンソールがそれ以上の入力をブロックしないというこの問題を解決するにはどうすればよいですか? pi@raspberrypi ~/boblight/boblightd-for-raspberry-master $ sudo boblightd Boblightd 2.0 (optimized version for raspberry) (c) 2013 Speedy1985 and Heven) (InitLog) start of log /root/.boblight/boblightd.log (PrintFlags) starting boblightd (CConfig::LoadConfigFromFile) opening /etc/boblight.conf (CConfig::CheckConfig) checking config lines (CConfig::CheckConfig) config lines valid (CConfig::BuildConfig) building config (CConfig::BuildConfig) built config successfully (main) …

1
catを使用して変数をファイルにエコーする方法は?
私はこのような簡単なスクリプトを持っています: #!/bin/bash BOO=bla-bla-bla cat > ./Makefile <<'EOF' Hello INCLUDES := -I/data/opt/include/ -Ideps/ -I$BOO/include EOF それでもファイルに出力します: Hello INCLUDES := -I/data/opt/include/ -Ideps/ -I$BOO/include cat文字列内の名前ではなく、変数値を使用する方法



2
アンパサンドを含むサブディレクトリ名をエスケープするにはどうすればよいですか?
Kornshellを実行し、ディレクトリツリーをトラバースしようとしています。次のような名前のサブディレクトリにcdしたいとします。 -3ab_&_-3dc.img 私の質問は、この名前のアンパサンドをどのようにエスケープする必要があるのですか?二重引用符とバックスラッシュのさまざまな組み合わせを試しましたが、成功しませんでした。

3
ケース+ケース構文で等しいかそれ以下またはそれ以上を実装する方法
私の目標は、数値の範囲を(case+ のみでesac)確認し、その範囲を印刷することです。だから例えば: 数値が0〜80の場合、印刷 >=0<=80 数値が81から100の間の場合、印刷 >=81<=100 等 以下の私のスクリプトの問題は、>=0<=900から9までの数値の場合のみ印刷されます。数値の範囲に従って正しい出力を印刷するようにスクリプトを修正する方法は? #!/bin/ksh read number case $number in [0-80]) echo ">=0<=80";; [81-100]) echo ">=81<=100";; [101-120]) echo ">=101<=120";; [121-300]) echo ">=121<=300";; esac

3
異なる行に同じデータを持つ2つのxmlファイルを比較する方法
2つのファイルのデータは同じですが、行が異なります。 ファイル1: <Identities> <Identity> <Id>048206031415072010Comcast.USR8JR</Id> <UID>ccp_test_79</UID> <DisplayName>JOSH CCP</DisplayName> <FirstName>JOSH</FirstName> <LastName>CCP</LastName> <Role>P</Role> <LoginStatus>C</LoginStatus> </Identity> <Identity> <Id>089612381523032011Comcast.USR1JR</Id> <UID>94701_account1</UID> <DisplayName>account1</DisplayName> <FirstName>account1</FirstName> <LastName>94701</LastName> <Role>S</Role> <LoginStatus>C</LoginStatus> </Identity> </Identities> ファイル2: <Identities> <Identity> <Id>089612381523032011Comcast.USR1JR</Id> <UID>94701_account1</UID> <DisplayName>account1</DisplayName> <FirstName>account1</FirstName> <LastName>94701</LastName> <Role>S</Role> <LoginStatus>C</LoginStatus> </Identity> <Identity> <Id>048206031415072010Comcast.USR8JR</Id> <UID>ccp_test_79</UID> <DisplayName>JOSH CCP</DisplayName> <FirstName>JOSH</FirstName> <LastName>CCP</LastName> <Role>P</Role> <LoginStatus>C</LoginStatus> </Identity> </Identities> diff file1 file2コマンドを使用すると、以下の応答が得られます。 1,10d0 < …

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