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

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


1
二重引用符はいつ必要ですか?
以前は$VARIABLE、少なくともシェルが単一のアイテムとして解釈することを望んでいた場合、を含む式を二重引用符で囲む$VARIABLEことを推奨していました。 ただし、シェルの最近のバージョンでは、二重引用符は必ずしも必要ではありません(少なくとも上記の目的のため)。例えば、中bash: % FOO='bar baz' % [ $FOO = 'bar baz' ] && echo OK bash: [: too many arguments % [[ $FOO = 'bar baz' ]] && echo OK OK % touch 'bar baz' % ls $FOO ls: cannot access bar: No such file or directory ls: cannot access …

7
Enterキーを押さずにコマンドを実行する方法は?
誤ってにマッピングEnterしxkbsetましたPointer_button2。 今、私はEnterいくつかの意味不明なテキストを打つたびに表示されます。 私はそれを再マッピングすることを含む回避策を考えましたが、それはコマンドxmodmap -e "keycode 135 = Pointer_Button2"(または以外のキーコードEnter)を実行する必要があることを意味します。しかし、私はを押すことなく、このコマンドをターミナルで実行できませんEnter。 どうすればいいですか? Ubuntu 12.04を実行しています。

30
bashシェルでのクイックディレクトリナビゲーション
私は、例えば、頻繁に全く関係のないパスにあるディレクトリを切り替えたい/Project/Warnest/docs/と~/Dropbox/Projects/ds/test/。 しかし、私はcd /[full-path]/いつもタイプしたくありません。以前に作業したディレクトリに切り替えるショートカットコマンドはありますか? 私が考えることができる1つの解決策bash .profileは、頻繁に使用されるディレクトリとcdそれらの変数を使用してそれらに環境変数を追加することです。 しかし、これに対する他の解決策はありますか?



7
文字列の比較に等しくない演算子を使用する
PHONE_TYPE変数に3つの有効な値のいずれかが含まれているかどうかを確認しようとしました。 if [ "$PHONE_TYPE" != "NORTEL" ] || [ "$PHONE_TYPE" != "NEC" ] || [ "$PHONE_TYPE" != "CISCO" ] then echo "Phone type must be nortel,cisco or nec" exit fi 上記のコードは私にはうまくいきませんでしたので、代わりにこれを試しました: if [ "$PHONE_TYPE" == "NORTEL" ] || [ "$PHONE_TYPE" == "NEC" ] || [ "$PHONE_TYPE" == "CISCO" ] then …

5
出力をログファイルにリダイレクトし、同時にプロセスをバックグラウンドにできますか?
出力をログファイルにリダイレクトし、同時にプロセスをバックグラウンドにできますか? 言い換えれば、私はこのようなことをすることができますか? nohup java -jar myProgram.jar 2>&1 > output.log & または、それは合法的なコマンドではありませんか?または、次のように手動でバックグラウンドに移動する必要がありますか? java -jar myProgram.jar 2>$1 > output.log jobs [CTRL-Z] bg 1
116 bash  shell  shell-script 

3
「エコー」が「タッチ」よりもずっと速いのはなぜですか?
ディレクトリ内のすべてのxmlファイルのタイムスタンプを現在の時刻に(再帰的に)更新しようとしています。Mac OSX 10.8.5を使用しています。 約300,000個のファイルでは、次のechoコマンドには10秒かかります。 for file in `find . -name "*.xml"`; do echo >> $file; done ただし、次のtouchコマンドには10分かかります!: for file in `find . -name "*.xml"`; do touch $file; done エコーがここに触れるよりもずっと速いのはなぜですか?
116 shell  command  echo 

3
リモートマシンでローカルスクリプトを実行し、引数を含めるにはどうすればよいですか?
ローカルで実行すると正常に実行されるスクリプトを作成しました。 ./sysMole -time Aug 18 18 引数"-time"、"Aug"、"18"、および"18"は、スクリプトに正常に渡されます。 現在、このスクリプトは、リモートマシンで実行されるように設計されていますが、ローカルマシンのローカルディレクトリから実行されます。例: ssh root@remoteServer "bash -s" < /var/www/html/ops1/sysMole それもうまくいきます。しかし、たとえば、前述の引数(-time Aug 18 18)を含めようとすると問題が発生します。 ssh root@remoteServer "bash -s" < /var/www/html/ops1/sysMole -time Aug 18 18 そのスクリプトを実行した後、次のエラーが表示されます。 bash: cannot set terminal process group (-1): Invalid argument bash: no job control in this shell 私が間違っていることを教えてください、これは非常にイライラします。

14
矢印キーを使用せずに最後のコマンドを繰り返すにはどうすればよいですか?
Up以前のコマンドを反復処理するために使用できることを知っています。最後のコマンドの実行には、単にUp+が含まれEnterます。しかし、私はで多くの時間を過ごすので、Happy Hacking Keyboardを買うことを考えていましたvim。 このキーボードには矢印キーがありません。このような動作を実現する方法を知る唯一の方法は、Ctrl+ Rを押して前のコマンドを繰り返し始めることです。 UNIX端末で矢印キーなしでUp+ をエミュレートする簡単な方法はありEnterますか?

3
コマンドライン引数をbashスクリプトに渡す
bashスクリプトプログラミングは初めてです。 入力として1つの文字列引数(名前)を受け入れるbashスクリプト 'deploymLog'を実装します。 [root@localhost Desktop]# ./deploymLog.sh name ここで、コマンドラインを介して文字列の引数(名前)を渡したい 最初のステップとして、現在のタイムスタンプをこの入力文字列とともにLogone.txt、現在のディレクトリにあるログファイルに以下の形式で追加する必要があります。 [name]=[System time timestamp1] どのように可能ですか?
114 bash  shell  scripting 

11
既存の環境変数を使用してcronコマンドを実行するにはどうすればよいですか?
既存の環境変数を使用してcronコマンドを実行するにはどうすればよいですか? シェルプロンプトが表示されている場合はecho $ORACLE_HOME、パスを入力して取得できます。これは、環境変数の1つです~/.profile。ただし、~/.profilecronスクリプトがロードされないため、$ORACLE_HOME変数が設定されていないためスクリプトが失敗します。 で、この質問の著者は、作成言及~/.cronfilecronのための変数を設定したプロファイルを、その後、彼は彼が彼に続けてスクリプトにすべての彼のcronコマンドをロードするための回避策ありません~/Cronディレクトリを。ファイルのよう~/.cronfileなものは良いアイデアのように聞こえますが、答えの残りの部分は少し扱いに​​くいようで、誰かが同じ結果を得る簡単な方法を教えてくれることを望んでいました。 スクリプトの開始時に次のようなものを追加できると思いますが、source ~/.profileそれは冗長になる可能性があるようです。 では、どのようにしてcronスクリプトに対話型シェルプロファイルから変数を読み込ませることができますか?


7
書き込み権限のないファイルへのstdoutのリダイレクト
書き込み権限を持たずにファイルを変更しようとすると、エラーが発生します。 > touch /tmp/foo && sudo chown root /tmp/foo > echo test > /tmp/foo zsh: permission denied: /tmp/foo rootとしてコマンドを実行するため、sudoingは役に立ちませんが、シェルはstdoutのリダイレクトを処理し、とにかくファイルを開きます: > sudo echo test > /tmp/foo zsh: permission denied: /tmp/foo ルートとしてシェルを開き、その方法でファイルを操作する以外に、書き込み権限のないファイルにstdoutをリダイレクトする簡単な方法はありますか? > sudo su # echo test > /tmp/foo

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