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

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

3
シェルスクリプトのPOSIX準拠をテストするにはどうすればよいですか?
POSIXはすべての大学の中で共通の標準に最も近いことを考えると、POSIXを排他的にサポートするシェルがあるかどうかを知りたいと思っています。最新のシェルのほとんどはPOSIXをサポートしています(そしてPOSIX準拠のスクリプトを問題なく実行します)が、非準拠の機能を指摘することはうまくいきません。 非準拠の機能に対してエラーをスローするような方法で、POSIXおよびPOSIXのみを実装するシェルはありますか? 編集ポータブルシェルスクリプトを書くための一般的なヒントを求めていないことを明確にしたい。コメントで言及された関連する質問は、すでにこれをカバーしています。この質問にbashは、--posixオプションがありますが、それが一部の初期化動作にしか影響しないことを発見したとき、私が探しているものではないことがわかりました。

7
マシンからのすべての発信要求/接続を監視するにはどうすればよいですか?
私のマシンはサーバーですので、サーバーへの接続を無視したいと思います(誰かが私のWebサイトにアクセスしたときなど)。サーバーから他の場所への接続/要求のみを確認したい。 発信接続のみを表示するにはどうすればよいですか? 編集:私はこれらのタイプのものに新しいです。私がやろうとしているのは、私のウェブアプリのデータ以外にサーバーから何かが送信されているかどうかを確認することです。たとえば、誰かが私のWebサイトにアクセスすると、明らかにサーバーがクライアントのブラウザーにデータを送信します。しかし、統計情報データを知らない他の場所に送信するコードが、私のWebアプリのフレームワークのどこかにあるとします。サーバーがデータを送信している場所があれば、それを確認したいと思います。おそらくそうではないかもしれませんが、あなたが書いていないphpまたはnodejsフレームワークを使用することに決めたとしましょう。何らかのタイプのデータをどこかに送信する可能性はわずかです。もしそうなら、それは私が見たいものです。

10
ディレクトリリストにファイルサイズの合計を表示する
Windowsのdirディレクトリリストコマンドの最後には、リストされたファイルが占めるスペースの総量を示す行があります。たとえば、現在のディレクトリ内のdir *.exeすべての.exeファイル、サイズ、およびサイズの合計を表示します。dirbashのエイリアスで同様の機能を使用したいのですが、どうすればいいのかわかりません。 現在、私は持っているalias dir='ls -FaGl'私に.bash_profile示して、 drwxr-x---+ 24 mattdmo 4096 Mar 14 16:35 ./ drwxr-x--x. 256 root 12288 Apr 8 21:29 ../ -rw------- 1 mattdmo 13795 Apr 4 17:52 .bash_history -rw-r--r-- 1 mattdmo 18 May 10 2012 .bash_logout -rw-r--r-- 1 mattdmo 395 Dec 9 17:33 .bash_profile -rw-r--r-- 1 mattdmo 176 May …
71 bash  shell-script  awk  ls 


6
シェルがSSHから制御されているかどうかを検出するにはどうすればよいですか?
SSHで制御されているかどうかをシェルスクリプト(より具体的には.zshrc)から検出したいのですが。HOST変数を試しましたが、常にシェルを実行しているコンピューターの名前です。SSHセッションの発信元のホスト名にアクセスできますか?2つを比較すると、問題が解決します。 ログインするたびに、最終ログイン時刻とホストを示すメッセージが表示されます。 Last login: Fri Mar 18 23:07:28 CET 2011 from max on pts/1 Last login: Fri Mar 18 23:11:56 2011 from max これは、サーバーにこの情報があることを意味します。
69 ssh  shell-script  zsh 

9
PDFでページを分割する
1つの仮想ページで2ページをスキャンしたスキャン済みPDFファイル(PDFファイルのページ)があります。 解像度は高品質です。問題は、読むときにズームし、左から右にドラッグする必要があることです。 いくつかのコマンド(存在しconvert、pdftk通常のページ(本から1ページ= PDFファイルの1ページ)で、このPDFファイルを変換することができ、...)またはスクリプトは?

13
シェルスクリプトの正しいロック?
シェルスクリプトの1つのインスタンスのみが同時に実行されていることを確認する必要がある場合があります。 たとえば、それ自体でロックを提供しないcrondを介して実行されるcronジョブ(たとえば、デフォルトのSolaris crond)。 ロックを実装する一般的なパターンは、次のようなコードです。 #!/bin/sh LOCK=/var/tmp/mylock if [ -f $LOCK ]; then # 'test' -> race begin echo Job is already running\! exit 6 fi touch $LOCK # 'set' -> race end # do some work rm $LOCK もちろん、このようなコードには競合状態があります。2つのインスタンスの実行が両方とも行3の後、$LOCKファイルに触れることができる前に進むことができる時間枠があります。 cronジョブの場合、2つの呼び出しの間隔が数分あるため、これは通常問題になりません。 しかし、ロックファイルがNFSサーバー上にある場合など、問題が発生する可能性があります。その場合、いくつかのcronジョブが行3でブロックしてキューに入れることができます。NFSサーバーが再びアクティブになった場合、並列実行ジョブの雷の群れがあります。 Webで検索すると、この問題の良い解決策のように思えるツールロックランが見つかりました。これを使用して、次のようなロックが必要なスクリプトを実行します。 $ lockrun --lockfile=/var/tmp/mylock myscript.sh これをラッパーに入れるか、crontabから使用できます。 これは、使用lockf()可能な場合(POSIX)をバックにフォールflock()(BSD)。またlockf()、NFSを介したサポートは比較的広く普及しているはずです。 に代わるものはありlockrunますか? 他のcronデーモンはどうですか?適切な方法でロックをサポートする一般的なcrondはありますか?Vixie …

4
bashでは、forループのループ制御で整数変数を使用できますか?
次のbashスクリプトがあります。 #!/bin/bash upperlim=10 for i in {0..10} do echo $i done for i in {0..$upperlim} do echo $i done 最初のfor(ループなしの可変upperlimループ制御中)は正常に動作するが、第二for(ループと可変upperlimループ制御では)ありません。2番目のforループを修正して動作させる方法はありますか?御時間ありがとうございます。
65 bash  shell  shell-script  for 

17
--passphraseでもgpgがパスワードを要求する
パスワードを要求せずにgpgファイルを抽出するには、次のコマンドが必要です。 gpg --passphrase 1234 file.gpg しかし、パスワードを要求します。どうして? これも同じ動作をします: gpg --passphrase-file passfile.txt file.gpg Ubuntuをgnome 3で使用し、Fedoraで動作していたことを覚えています
65 shell-script  gpg 

9
スクリプトを実行可能にすることはできますが、読み取ることはできませんか?
スクリプトを読み取る権限がない場合、スクリプトを実行することは可能ですか?ルートモードでスクリプトを作成し、他のユーザーにこのスクリプトを実行させたいが、読み取らせたくない。私がやったchmod許可が拒否されました:しかし、ユーザーモードでは、私が言うのメッセージを見て、読み取りおよび書き込みますが、実行できるように禁止します。


7
シェルスクリプトが失敗する:構文エラー:“(”予期しない
Raspberry Pi開発用の開発環境のセットアップを自動化するスクリプトに取り組んでいます(詳細な手順については、こちらをご覧ください)。スクリプトはその記事にリンクされていますが、利便性はこちらからも見つけることができます。これで、このスクリプトを実行すると、エラーなしで環境がインストールおよびセットアップされますが、デフォルトではsudoのタイムアウト値のため、sudoパスワードを複数回入力する必要があります。そこで、すべてのsudo行を削除し、コマンドラインでsudoを使用してスクリプト全体を実行することで、実験を開始しました。 kemra102@ubuntuvm:~$ sudo ./pi_dev_env_install.sh これは期待どおりに機能し、この時点までほとんどの方法を通過します。 ./pi_dev_env_install: 68: ./pi_dev_env_install.sh: Syntax error: "(" unexpected sudoを使用してスクリプト全体を実行しない場合、以前はこの行が正常に機能していました。sudoとして実行しているこの行については、私の知る限りそれを停止する必要はありません。

5
ネストのインデントと一致するようにヒアドキュメントをインデントできません
スクリプティングに「最初の世界の問題」がある場合、これがそれです。 更新するスクリプトに次のコードがあります。 if [ $diffLines -eq 1 ]; then dateLastChanged=$(stat --format '%y' /.bbdata | awk '{print $1" "$2}' | sed 's/\.[0-9]*//g') mailx -r "Systems and Operations <sysadmin@[redacted].edu>" -s "Warning Stale BB Data" jadavis6@[redacted].edu <<EOI Last Change: $dateLastChanged This is an automated warning of stale data for the UNC-G Blackboard Snapshot …


9
プログラムの実行時間を測定し、変数内に保存する方法
Bash(v4 +)スクリプト内の特定の操作にかかる時間を調べるために、timeコマンドからの出力を「別々に」解析し、(最終的に)Bash変数内にキャプチャします(let VARNAME=...)。 今、私はtime -f '%e' ...(またはcommand time -f '%e' ...Bashビルトインのために)使用していますが、実行されたコマンドの出力をすでにリダイレクトしているため、timeコマンドの出力をキャプチャする方法について本当に失われています。基本的にはここでの問題は、ある出力を分離するのをtime実行したコマンド(複数可)の出力から。 私が欲しいのは、コマンドを開始してから完了するまでの時間(整数)を数える機能です。timeコマンドまたはそれぞれの組み込みコマンドである必要はありません。 編集:以下の2つの有用な答えを考えて、2つの説明を追加したかった。 実行されたコマンドの出力を破棄したくありませんが、それがstdoutまたはstderrで終わるかどうかは実際には関係ありません。 間接的な方法よりも直接的な方法をお勧めします(つまり、出力を中間ファイルに保存するのではなく、直接キャッチします)。 dateこれまで使用していたソリューションは、私が望むものに近くなります。

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