最新記事

一部の列番号で文字列を開始
bash

一部の列番号で文字列を開始

並べて印刷したい2つの文字列があります。しかし、2番目の文字列が特定の列番号から始まるようにしたいです。どうですか? 以下を使用しましたが、string2位置21で逆さまに印刷しました。 n=21 string1="Hello" string2="World!" p=$(( n - ${#string1} )) printf "%s%*s\n" "$string1" $p " $string2" 結果 1 2 123456789012345678901 Hello World!

Admin

読み取るサブシェル出力を割り当てるときにサブシェル終了コードをキャプチャする方法は? [コピー]
bash
read

読み取るサブシェル出力を割り当てるときにサブシェル終了コードをキャプチャする方法は? [コピー]

この質問にはすでに答えがあります。: プロセス置換を使用するときに終了コードを正しくキャプチャしてエラーを処理する方法は? (回答4個) 閉鎖昨年。 考慮する: $ read -r a <<<$(echo "foo"; exit 1) $ echo $? 0 実際に1を期待すると、0が返されます。サブシェルから実際の終了コードを抽出する方法は?

Admin

新しいtmuxシェルは以前のバージョンの.bashrcを使用します。
bash
centos
tmux

新しいtmuxシェルは以前のバージョンの.bashrcを使用します。

現在の状況は、tmuxセッション内で作成された新しいシェルが古いバージョンの.bashrcを取得し、ファイルから削除した環境変数を設定することです。私が考えることができる唯一の説明は、tmuxがそのバージョンのファイルをどこかにキャッシュし、実際のバージョンの代わりにそのバージョンを使用することです。 tmuxの外部で新しく作成されたログインシェルは、私の.bashrcファイルの変更を反映しており、これらの環境変数はもうありません。原因は何ですか? 出力から環境変数を検索してみましたが、PS4='+$BASH_SOURCE> ' BASH_XTRACEFD=7 bash -xl 7>&2何も役に立たなかったので、どこに設定されているのかわかりません。

Admin

Bashのマルチワードエイリアス
bash
alias

Bashのマルチワードエイリアス

私は.bashrcに複数の単語のエイリアスを追加しようとしています。もっと具体的に言えば私はapt updateなりたいsudo apt update -y。しかし、複数の単語で構成されるエイリアスを指定する方法がわかりません。次のことを試しましたが、そのうち何も機能しません。 alias 'apt update'='sudo apt update -y' alias "apt update"='sudo apt update -y' alias apt\ update='sudo apt update -y' この問題に対する解決策を知っている人はいますか? ありがとうございます。

Admin

通知を送信したプログラムの名前を取得します。
linux
bash
notifications

通知を送信したプログラムの名前を取得します。

他のアプリから通知が送信されたときにDunsterに別の音を出すようにします。 Dunst は通知を受け取るとスクリプトを使って音を再生します。現在持っている内容は次のとおりです。 #!/bin/sh paplay ~/.config/dunst/notification.ogg 私の考えは、ifステートメントを使用してアプリケーションの名前を解決し、再生するサウンドを選択することです。 #!/bin/sh if(application1) then paplay ~/.config/dunst/notification1.ogg elif(application2) then paplay ~/.config/dunst/notification2.ogg else paplay ~/.config/dunst/notification3.ogg fi

Admin

ディレクトリリストのディレクトリ数の計算
bash
find
ls
wc

ディレクトリリストのディレクトリ数の計算

私は多数のディレクトリを持っており、bashコマンドを使用して各ディレクトリのディレクトリ数を計算したいと思います。私は私が望むことをls達成するのに苦労しています。wc たとえば、次のフォルダ構造がある場合(リーフフォルダにより多くのサブフォルダを含めることができます): . ├── folder1 │   └── subfoldera ├── folder2 │   ├── subfoldera │   └── subfolderb ├── folder3 │   ├── subfoldera │   ├── subfolderb │   └── subfolderc └── folder4    ├── subfoldera    ├── subfolderb   └── subfolderc だから私はカウントをしたい 1 2 3 3 など。

Admin

bashでSTDOUTを変数として読み取るには?
bash
shell-script
stdout

bashでSTDOUTを変数として読み取るには?

私は帯域幅使用量を読み、ifstat毎秒ダウンロードとアップロードを印刷します。STDOUT ifstat -i wlp7s0 wlp7s0 KB/s in KB/s out 1390.13 81.20 1039.14 74.05 1810.63 102.08 865.60 183.15 1272.91 274.19 1174.00 400.04 bashスクリプトでコマンドを実行し、値が特定の値より小さい場合、どのようにifstat値を変数として読み取ることができますか?if statement 例えば、 if [ $in -lt 100 ] && [ $out -lt 100 ] then echo Network is slow. else echo Network is fast. fi 毎秒確認するために出力を変数としてifstat読み取るには?$in$outif statement

Admin

コマンドが実行された後、終了コードがbashによって設定されているのか、それとも実行されたコマンドで設定されているのかをどうやって確認できますか?
bash
exit-status

コマンドが実行された後、終了コードがbashによって設定されているのか、それとも実行されたコマンドで設定されているのかをどうやって確認できますか?

私のbashの知識は少し錆びていて(以前はそれほど堅牢ではなかった)、次の質問に対する答えが見つからないようです。 タイトルが示すように、コマンドが実行された後にbashによってゼロ以外の終了コードが設定されているかどうかを確認する方法を知りたいです。本物エラー)またはコマンドを介して(可能コマンドと目的に応じてエラーを示します。 たとえば、次のような非常に単純なスクリプトを見てみましょう。 #!/bin/bash string='abc' grep 'd' <<< "$string" echo $? これはマニュアルを読んgrepだ後に予想される1を出力します(抜粋、短縮された鉱山)。 終了状態 通常、終了状態は行が選択されている場合は0、選択された行がない場合は1、エラーが発生した場合は2です。 [...] bashマニュアルの該当するセクションを読んだ後に問題が発生しました(私は抜粋、短縮、強調)。 終了ステータス [...] コマンドが見つからない場合、コマンドを実行するために生成されたサブプロセスは状態127を返します。コマンドが検出されたが実行可能でない場合、戻り状態は 126 です。 拡張またはリダイレクト中にエラーが原因でコマンドが失敗した場合、終了ステータスは0より大きくなります。 シェル組み込みコマンドは成功するとステータス0(true)を返し、実行中にエラーが発生した場合は0以外の値(false)を返します。すべての組み込み関数は終了状態2を返し、誤った使用法、通常は無効なオプション、または欠落している引数を示します。 [...] 私の質問は強調された声明です。 grep私のスクリプトは通常、実際のエラー(権限の欠如、必要なプログラムが利用できない、リソースの枯渇など)を具体的に処理する必要がありますが、上記の例では行が選択されていない場合、上記の意味ではエラーではありません。これは、単に入力に一致する文字シーケンスが含まれていないことを意味します。 bashただし、マニュアルの一部を文字通り受け入れると、終了bash状態自体を設定することもできます1。このセクションでは、コマンドが見つからない(exit status 127)または実行できない場合(exit status)、126何が起こるかを知ることができます。 私が理解しているように、そのセクションの次のステートメントは、他のすべてのエラーが[1, 255]bashを介して包含範囲内のすべての終了状態にマッピングできることを意味します。特に、これは終了状態にマッピングできます1。私は「コマンドが見つかりません」や「コマンドを実行できません」に加えて、多くのエラーがあると信じているので、これを主な問題と考えています。たとえば、メモリの消耗、ファイルハンドルの消耗、ディスク読み取りエラーによるタイムアウトなどにより、コマンドの実行がブロックされる可能性があります。 "grep が一致する行が見つかりません。"エラーと比較すると、次のようになります。本物重大なエラーのため、通常、即時処置のために管理者に電子メールが送信されます。 ただし、2つのエラー(コマンドを実行して設定されたゼロ以外の終了状態とコマンドを実行しようとした後にbashが設定したゼロ以外の終了状態)を区別できないようです。 誰でも私に合理的な解決策を教えてもらえますか? エマルジョン 研究中に同様の問題がたくさん発生しました。しかし、私が知っている限り、そのような人は誰もいません。精密同じ質問。 代わりに、ほとんどの人はただコマンドによって返されるゼロ以外の終了コードを抑制します。(私の例に適用すると、行が選択されていないときの状態ではなく0終了状態が必要でした)同様の解決策が得られました。1grepcommand || true これは彼らには受け入れられますが、私にとっては解決策ではありません。本物上記のエラーです。たとえば、次の状況を考えてみましょう。 root@cerberus:~/scripts# { ThisProgramDoesNotExist 2>/dev/null || true; } && { echo "Gotcha!"; } Gotcha! root@cerberus:~/scripts# これは、このソリューションが実行コマンドのゼロ以外の終了状態(または「stati」ですか?)だけでなく、起動コマンドが失敗したときにbashが報告する致命的なエラーも抑制する方法を示しています。これはほとんどのスクリプトでは許可されていません。

Admin

部分文字列を基本文字列の他の値に置き換える
bash
sed
string

部分文字列を基本文字列の他の値に置き換える

次のパターンの文字列があります SrcWorkspaceName=abc_1234;SrcEndVer=1409;Lang=ENU,FRA,NLD SrcEndVer値を別の数字に置き換える必要があります。1409 ここの数字は変数に保存されます。 Var=1600 したがって、1409値を変数に置き換える必要があります。Var たとえば、次の出力 SrcWorkspaceName=abc_1234;SrcEndVer=1600;Lang=ENU,FRA,NLD

Admin

記録中にログファイルが切り捨てられる原因は何ですか?
bash
files
logs
truncate

記録中にログファイルが切り捨てられる原因は何ですか?

職場では、私はネットワークサーバーの管理責任を受け継いだ。 Amazon AWS EC2 で動作する CentOS Linux 仮想マシンです。 Webページを提供することに加えて、多くのスケジュールされたタスク、バックグラウンド処理、およびデータベースタスクが発生します。 私は私がOracle SQL * PlusというBashスクリプトを手動で実行していました。このスクリプトは、UPDATEステートメントペイロードを含むSQLスクリプトを読み取り、マテリアライズドビューの更新を呼び出しました。たぶんこのうち何も関係がないかもしれませんが、いくつかの文脈を提供したいと思いました。 Bashスクリプトはのログファイルに出力を書き込み、/tmpこのコマンドを使用してtail -f output.log出力を監視します。長時間(約20分)実行され、出力は端末にゆっくり表示されますが、次のメッセージが表示されます。tail: output.log: file truncatedBashスクリプトの実行が停止しました。ログファイルは存在し/tmpますが、サイズは0です。問題を解決するためにログファイルをよく見て、どのデータベースエラーが報告されているかを確認したいと思います。 私の質問は、このファイルの切り捨てが発生する原因は何ですか?ファイル自体はそれほど大きくないようです。約200行程度です。これは私にとってすべて新しいもので、どこから始めるべきか、何が間違っているのか疑うことはできません。

Admin