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

シェルスクリプト、シェルによって解釈される実行可能ファイル(bash、zshなど)に関する質問。

3
毎月の最終日をスケジュールします
月の最終日にスクリプトをスケジュールするように指示から読みました。 注: 毎月をカバーするようにdayofmonthの値を設定できないため、鋭い読者は、毎月の最終日にコマンドを実行するように設定する方法について疑問に思うかもしれません。この問題はLinuxおよびUnixのプログラマーを悩ませ、かなりの数の異なるソリューションを生み出しました。一般的な方法は、dateコマンドを使用して明日の日付が01かどうかを確認するif-thenステートメントを追加することです。 00 12 * * * if [`date +%d -d tomorrow` = 01 ] ; then ; command1 これにより、毎日正午にチェックされ、月の最終日であるかどうかが確認されます。最終日である場合は、cronがコマンドを実行します。 どのように機能し[`date +%d -d tomorrow` = 01 ]ますか? 述べるのは正しいthen; command1ですか?
10 shell-script  cron  date  test 

3
X秒ごとにコマンドを実行する
コマンドを10秒ごとに実行し、それをバックグラウンドで実行したい(それによってwatch?を削除したい)。すべての回答は次のようなものを示していますが、これは常に11〜14秒実行されます。どうすればこれを達成できますか? while true; do # perform command that takes between 1 and 4 seconds sleep 10 done


1
グロブパターンから定義された変数によるバッシュ置換
以下の例は問題を説明しています。FILENAME置換を使用したときに、エコーされてパターンとして認識されたときに正しく印刷されるのはなぜですか? #!/bin/bash FILEPATH_WITH_GLOB="/home/user/file_*" FILENAME=$(basename "$FILEPATH_WITH_GLOB") echo $FILENAME #file_1234 echo ${FILENAME:1:5} #ile_* <---why is this not ile_1

6
psコマンドからキーと値のペアを抽出する方法
私はpsこのようなコマンドからアプリケーション名を抽出しようとしています: ps -af -u sas |grep "java"| grep -v "grep" そしてそれは以下を生成します: sas 24431 1 0 Oct10 ? 00:51:08 /usr/lib/jvm/java-1.7.0-oracle-1.7.0.25.x86_64/jre/bin/java -Denv=DEV -Dapp.name=myApp -Xms512m -Xmx1g -Dlog.dir=/apps/java/logs 私は使用しようとしましたegrepが、動作していないようです: ps -af -u sas|grep "java"| grep -v "grep"| egrep -o "-Dapp.name" -Dapp.name値「myApp」のみを取得するにはどうすればよいですか?

4
シェルスクリプト内でTelnetポートがアクティブかどうかをテストする
Telnetでログインできるかどうかをテストするスクリプトを作成しようとしています。本当にログインしたくありません。したがって、期待は必要ありません。ログインプロンプトが表示されるかどうかを確認したいだけです。これはLinuxシステムから行われているので、私は使用しようとしていますnc: nc 192.168.10.5 23 -w 1 | grep -q login if [ $? -eq 1 ] then echo "console is down" fi 問題は、これによりコンソールがハングアップすることです。それ-wは本当に接続を落としているわけではないようです。 また、Telnetを使用してみましたが、スクリプト内から接続を切断できません。やってみる \echo "\035" | telnet 192.168.10.5 ログインプロンプトが表示される前に中断します。

6
sshしてコマンドを実行するスクリプトが機能しない
以下はスクリプトです。 複数のサーバーにログインして、カーネルのバージョンを確認したいと思っていました。 #!/bin/bash #input server names line by line in server.txt cat server.txt | while read line do sshpass -p password ssh root@$line << EOF hostname uname -r EOF done 次のような出力が期待されます。 server1_hostname kernel_version server2_hostname kernel_version 等々.. server.txt内の約80台のサーバーでこのスクリプトを実行しました そして、私が得た出力は... Pseudo-terminal will not be allocated because stdin is not a terminal. Pseudo-terminal …
10 bash  shell-script  ssh 

5
ファイル名のスペース、ハイフン、アンダースコアを削除しますか?
ディレクトリ内のすべてのファイル、または選択したファイルからスペース、ハイフン、アンダースコアを削除するための適切なコマンドは何ですか? Thunarカスタムアクションで次のコマンドを使用して、ファイル名をスラッグ化します。 for file in %N; do mv "$file" "$(echo "$file" | tr -s ' ' | tr ' A-Z' '-a-z' | tr -s '-' | tr -c '[:alnum:][:cntrl:].' '-')"; done ただし、このコマンドは、スペースをダッシュ​​/ハイフンと小文字の大文字に置き換えるだけです。 ターミナルで次のコマンドを使用して、フォルダー内の数千のファイル名からスペースを削除しました。 rename "s/ //g" * この場合も、スペースのみが削除され、ハイフン/ダッシュやアンダースコアは削除されません。 理想的には、ファイル名にスペース、ハイフン/ダッシュ、アンダースコアを使用したくない。また、選択したファイルのThunarカスタムアクションでコマンドを使用できると便利です。

1
getoptsを使用して非オプション引数の後にオプションを解析する
次のようなbashスクリプトがファイルにありnepleaks_upd.sh、実行したい./nepleaks_upd.sh bootstrap --branch off。うまくいきませんでしたが--branch、動作します./nepleaks_upd.sh bootstrap -b off。 usage() { echo "Usage: $0 [prepare | up | down] [-b <on/off>]" 1>&2; exit 1; } case "$1" in bootstrap) while getopts ":b:" o; do case "${o}" in b) b=${OPTARG} if [ ${b} == "off" ]; then echo "git clone https://github.com/iPrayag/dotfiles.git" ## logic …

1
inotifyを使用してディレクトリを監視するが100%機能しない
特定のディレクトリを監視するbashスクリプトを記述しました/root/secondfolder/。 #!/bin/sh while inotifywait -mr -e close_write "/root/secondfolder/" do echo "close_write" done 私はと呼ばれるファイルを作成するときfourth.txtに/root/secondfolder/、それまでと書き込みものを、それを保存して閉じ、それは次のように出力します。 /root/secondfolder/ CLOSE_WRITE,CLOSE fourth.txt ただし、「close_write」はエコーされません。何故ですか?

3
シェルスクリプトを仮想プリンターとして使用する
PDFファイルを引数として取り、プリンター固有の追加オプションを付けて印刷するシェルスクリプトがあります。このスクリプトをGUIから選択できる仮想プリンターとして追加するにはどうすればよいですか? シェルスクリプトは、PDFファイルを取得し、偶数ページを印刷し、zenityを使用してユーザーにページをめくるように要求し、奇数ページを印刷する手動両面スクリプトです。 私の現在のワークフローは: ファイル->印刷->ファイルに保存-> tmp.pdf my_duplex_script tmp.pdf rm tmp.pdf それを次のようにする方法はありますか? ファイル->印刷-> my_script_as_virtual_printer 注:これはLinuxのmint 13シナモンです。試しましたgnome-manual-duplexがうまくいきません。 PDFファイルに印刷できるGUIダイアログ my_duplex_script #!/bin/bash lp_args= while getopts o: opt do case "$opt" in o) lp_args="$lp_args -o $OPTARG" ;; \?) echo >&2 Invalid argument; exit 1 ;; esac done shift `expr $OPTIND - 1` file=$1 page_count=$(pdfinfo "$file" | …

2
スクリプトの出力のコピーをファイルに送信する
Zshスクリプトがあり、出力をSTDOUTに出力したいが、その出力をディスク内のファイルにコピー(ダンプ)したいとします。 さらに、スクリプトは次のオプションで始まります set -o xtrace これにより、詳細になり、実行するコマンドが出力されます。この出力をディスク内のファイルにもキャプチャしたいと思います。 私が理解していることは ./my_script.sh > log.txt それは単にに送信さSTDOUTれlog.txtますが、ターミナルで出力も確認できるようにするにはどうすればよいですか? 私はZsh teeのMULTIOSオプションについて読みましたが、それらの使用方法はわかりません。 私がする時: ./my_script | tee log.txt 端末で出力を確認できますが、ファイルはlog.txtすべてをキャプチャしているようには見えません(実際にはほとんど何もキャプチャしていません)。

2
文字列内のbashコマンドは、後で使用するときではなく、文字列を作成するときに実行されます
私はシェルスクリプティングに比較的慣れていませんが、lftpプログラムを使用するスクリプトをほぼ完成させました。私が問題を抱えているスクリプトの部分は、コマンドの長い文字列(で区切られている;)を作成するときです。 for var in something do ... commands_to_run+="echo Result is `tail -n 1 $somefile`;" done 私が気づいているのはtail、forループが反復しているときにプログラム(バッククォートで囲まれている)が実行されていることですが、スクリプトの後半でコマンドの文字列を呼び出したときではありません。 残念ながら、$ somefileの内容は、この段階ではまだ検査する準備ができていません。文字列の作成中にではなく、必要なときにコマンドを実行するにはどうすればよいですか?

2
すべてのgpgサブキーパスワードを一度にキャッシュしますか?複数のgpgパスワードエントリの必要性を防ぎますか?
gpgパスワードを1回だけ入力して、すべてのサブキー(署名、復号化、認証)のロックを解除できますか? 現時点では、gpgパスワードを3回入力する必要があります(署名、復号、認証)。これは不便です。 私はシェルスクリプトを考え出そうとしました。 #!/bin/bash set -x set -e set +o history signing_key=77BB3C48 encryption_key=CE998547 tempfile="$(mktemp)" echo "test" > testfile unset passphrase || exit 1 read -sp 'Enter password. ' passphrase ; echo exec 3<<<"$passphrase" gpg2 --no-tty --use-agent --batch --yes --passphrase-fd 3 --sign-with "$signing_key" --clearsign "$tempfile" gpg2 --no-tty --use-agent --verify "$tempfile.asc" gpg2 …

2
zshのローカル変数:zshでのbashの「エクスポート-n」に相当するもの
変数のスコープをシェルに含めようとしていますが、zshで子にそれを表示させません。たとえば、これを.zshrcに入力します。 GREP_OPTIONS=--color=always しかし、次のようにシェルスクリプトを実行すると、 #!/bin/bash echo $GREP_OPTIONS 出力は次のとおりです。 --color=always 私はそれをnullにしたいのですが(上のシェルスクリプトはGREP_OPTIONS変数をまったく見ないはずです)。 bashでは、次のように言うことができますexport -n GREP_OPTIONS=--color=always。これをzshでどのように実現しますか?

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