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

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

4
正規表現に一致するサブディレクトリの名前を再帰的に変更する
と呼ばれるフォルダを持つメディアサーバーがありますSeries。(/media/Expansion2/Series/) その中で、私は(驚き!)TVシリーズを持っています。これらは単なるショー名です。たとえば、/media/Expansion2/Series/The Big Bang Theory/ 各ショーのフォルダー内(および問題がある場所です)にシーズンフォルダーがあります。私は現在、次の2つの規則が混在しています(おそらくいくつかの規則に加えて): /media/Expansion2/Series/The Big Bang Theory/The Big Bang Theory Season 1 /media/Expansion2/Series/The Big Bang Theory/Season 2 最後に、すべてのフォルダの名前を単にに変更しますSeason #。 正規表現として、私はおそらく次のようなことを言うでしょう s/.*(Season \d)/$1 フォルダーにのみ適用され、ファイルには適用されません。これは約50以上のshowサブフォルダ用であることにも言及する必要があるため、/media/Expansion2/Series/レベルから開始して各シリーズを調べる必要があります:)

2
zshでスペースを含む要素をリストする
この時点で2時間ずっとzshスクリプトを勉強していて、壁にぶつかりました。スペースが含まれている可能性のあるファイルのリストを確認したい。スクリプトを実行しようとしているタスクではなくzshを勉強しているため、zshである限り、次の例とはまったく異なるアプローチを受け入れることができます。 files=(`ls`) for f in $files; do print $f done 私は明らかに単に再作成しているのではなく、ループの各反復でファイル名全体をキャプチャしlsたいだけです$f。
10 shell  scripting  zsh 

4
シェルの複雑な条件の構文は何ですか?
シェル(sh)で次のテストを表現したい場合: if ( a == 1 && ( b == 1 || b == 2 )) { ... } これまでのところ、私が書くことができた最高のものはこれです: if [[ $a -eq 1 ]]; then if [[ $b -eq 1 || $b -eq 2 ]]; then ... fi fi &&と||を合成する方法がわかりません 正しい優先順位で。グーグルで私に答えは得られませんでした(チュートリアルには、もしあれば、基本的な例のみが示されています) これら二つを組み合わせるための構文は何であるならば 1には?
10 shell 

2
「if」でタスクをバックグラウンドに送信
どうしてこれなの? if true; then sleep 3 &; fi bash: syntax error near unexpected token `;' 走りたい sleep 3 コマンド["sleep 3"は単なる例]が "paralell"スタイルで実行されるようにバックグラウンドで実行されるため、より速く終了します。しかし、私はこれを手に入れています: bash: syntax error near unexpected token `;' エラーメッセージ。どうして?バックグラウンドにタスクを送信できないのはなぜですか?

1
「名前の衝突…」エラーが発生するのはなぜですか。どうすれば修正できますか?
たびに、私は打ち上げにしようとvimか、emacsあるいはtop(SSHを介したクラスタコンピュータ上)、UNIXの端末では、私はこのようなエラー「XXX間の名前の衝突」のAA連続ストリームを取得します(私はそれが実際に使用するのはncursesがあること、任意のコマンドだと思います)。 Name collision between dumb dumb Name collision between unknown unknown Name collision between lpr lpr Name collision between glasstty glasstty Name collision between vanilla vanilla Name collision between ansi+local1 ansi+local1 Name collision between ansi+local ansi+local ...... Name collision between terminet1200 terminet1200 terminet1200 terminet1200 terminet1200 terminet1200 terminet1200 terminet1200 terminet1200 terminet1200 …
10 shell  vim  emacs  gnu-screen 



3
$を使用するためのベストプラクティスは?バッシュで?
$についてこの答えを読んだとき?別の質問が思い浮かびます。 $の使用方法に関するベストプラクティスはありますか?バッシュで? 例を挙げましょう: 線形スクリプトがあり、すべてのコマンドが正常に実行されたことを知りたいのですが。小さな関数( "did_it_work"と呼びましょう)を呼び出して、エラーコードを確認し、そうでない場合は中断しても問題ないと思いますか。 #!/bin/bash function did_it_work { code=$1 if [ "$code" -ne "0" ] then echo "Error failure: code $code " exit 1 fi } dir=some/path mkdir -p $dir did_it_work $? cd $dir did_it_work $? run_some_command did_it_work $? もちろん、このアプローチは、問題があれば手動で解決してスクリプトを再実行する必要があることを意味します。 これは良いアイデアだと思いますか、これを行うための他のベストプラクティスはありますか? /ありがとう

5
IFS(内部フィールド区切り文字)は、複数の連続する区切り文字の単一の区切り文字として機能できますか?
ホワイトスペース以外の値を持つIFSを使用して配列を解析すると、空の要素が作成されます。複数のdelimを1つのdelimに縮小するために 使用tr -sするだけでも十分ではありません。 例では、問題をより明確に説明でき ます。IFSの微調整を介して「通常の」結果を達成する方法はありますか(IFSの動作を変更するための関連設定はありますか?....つまり、デフォルトの空白と同じように動作するにはIFS。 var=" abc def ghi " echo "============== IFS=<default>" arr=($var) for x in ${!arr[*]} ; do echo "# arr[$x] \"${arr[x]}\"" done # sfi="$IFS" ; IFS=':' set -f # Disable file name generation (globbing) # (This data won't "glob", but unless globbing # is actually needed, turn …
10 bash  shell  scripting 

5
ssh経由のshスタートアップファイル
shシェルを開始する前に実行する必要があるいくつかの重要なコマンドがあります。これは、SSHコマンド(ssh host somecommand)およびコマンドを実行する他のプログラムでSSHコマンドを渡すために必要です。 私.profileにはこれがあります: ihammerhands@wreckcreations:~> cat .profile #specific environment and startup programs export PS1="\u@wreckcreations:\w> " export PYTHONPATH=~/python/lib/python2.4/site-packages export PATH=$PATH:~/bin:~/python/bin ただし、これは失敗します。 W:\programming\wreckcreations-site\test-hg>ssh name@host echo $PATH Enter passphrase for key '/home/Owner/.ssh/id_rsa': /usr/local/bin:/bin:/usr/bin PATHオプションがないことに注意してください shプロファイルの適切な名前は何ですか?注:私はrootアクセス権を持っていないので、これを他のユーザーに適用したくありません。これを行う別の方法はありますか? 編集:それは驚くべきことではない/bin/shへのリンクが表示されますbash。驚いたのは、私のプロフィールがまだ無視されていることです。助言がありますか?
10 bash  ssh  shell  profile 



2
STDOUTとSTDINを接続するとはどういう意味ですか?
私は本を​​読んでいます、それは言います: すべてのプロセスには、「標準入力」(STDIN)、「標準出力」(STDOUT)、および「標準エラー」(STDERR)の少なくとも3つの通信チャネルを使用できます。 ほとんどのコマンドは、STDINからの入力を受け入れ、出力をSTDOUTに書き込みます。エラーメッセージはSTDERRに書き込まれます。この規則により、ビルディングパイプラインのようにコマンドを連結して、複合パイプラインを作成できます。 シェルは、シンボルを解釈し<、>し、>>命令としてまたはファイルからのコマンドの入力または出力を再ルーティングします。 1つのコマンドのSTDOUTを別のコマンドのSTDINに接続するには| 、一般にパイプと呼ばれる記号を使用します。 ps -ef | grep httpd つまり、これは基本的に、標準入力はユーザーがファイルに書き込むことができるコマンドであり、標準出力はbashシェルがシェルに出力を書き込むコマンドであり、標準エラーは出力に似ていますが、ファイルシステムにエラーがある場合に呼び出されます。次に、STDOUTとSTDINを接続する部分に行き、私は迷っています。

7
5でカウントアップするスクリプトを作成するにはどうすればよいですか?
私は非常に単純なbashスクリプトを作成して、375から3500(375、380、385 ...)の間の5の倍数をすべてリストしようとしていました。私が試したがうまくいかなかったのは: for i in {375..3500} do echo $i (($i += 5)) done 私はしばらくしてあきらめ、これをBASICで約15秒で書きました。 10 count = 375 20 print count 30 count = count+5 40 if count < 3500 then goto 20 BASICプログラムをbashスクリプトで作成するにはどうすればよいですか?
10 bash  shell  scripting 

2
シェルの名前空間
source名前空間へのシェルスクリプト、できればbashシェルスクリプトへの方法はありますが、この機能があり、bashにない場合、他のシェルを調べます。 つまり、たとえば、「定義済みのすべてのシンボルの前に何かを付けて、すでに定義されているシンボル(変数名、関数名、エイリアス)と衝突しないようにする」や、名前の衝突を防ぐその他の機能などです。 source時間(NodeJSスタイル)で名前空間を設定できるソリューションがある場合は、それが最適です。 コード例: $ echo 'hi(){ echo Hello, world; }' > english.sh $ echo 'hi(){ echo Ahoj, světe; }' > czech.sh $ . english.sh $ hi #=> Hello, world $ . czech.sh #bash doesn't even warn me that `hi` is being overwritten here $ hi #=> Ahoj, světe #Can't …
10 shell 

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