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

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

4
Bash、バックグラウンドプロセスを実行させて他のプロセスを待つ方法は?
私は別の持っている(まだ)wait、 &、&&制御フローの質問を.. 次のようなスクリプトで、できるだけ多くの作業を同時に実行したいとします。 # may take some hours something InputA > IrrelevantA & something InputB > IrrelevantB & # may take an hour ( somethingElse InputA > OutputA & somethingElse InputB > OutputB & )&& combine OutputA OutputB > Result ...morestuff 質問1:スクリプトではcombine、両方のsomethingElseプロセスが完了するまで、両方のプロセスが完了するのを待ちsomethingますか? 質問2:そうでない場合(そうではないと思われる場合)、上記のプロセスがバックグラウンドで動作している間combine、両方のsomethingElseプロセスのみを待機するにはどうすればよいsomethingですか?

1
bashで行われたPOSIXでの間接変数展開?
それは可能ですか、またはBashで行うことができるようにPOSIXで間接変数展開を行うためのエレガントなハックがありますか? コンテキストについては、私は次のことをしようとしています: for key in ${!map_*} do # do something done 編集:明確にするために、で始まるシェル変数にアクセスしたいと思いますmap_。

3
Windows共有フォルダーからUnixにファイルをコピーする
私は完全にUnixが初めてです。Windows共有フォルダーからUnixにファイルをコピーするスクリプトを書いています。 Windowsでは、[ \\Servername.com\testfolder実行]コマンドを入力すると、が表示されますtestfolder。ディレクトリtestfolderは、ネットワーク全体の共有フォルダです。 次に、いくつかのファイルをそこからtestfolderUnixマシンにコピーします。どのコマンドを使用すればよいですか?サーバーのIPアドレスはわかりますが、ユーザー名はわかりません。
11 shell  samba  file-copy 

3
bash:個々の行を `-x`エコーからエスケープします
-xオプションで実行しているbashで、個々のコマンドのエコーを免除することはできますか? 私は出力をできるだけきれいにしようとしているので、のサブシェルでスクリプトの特定の部分を実行していset +xます。ただし、行set +x自体は引き続きエコーされ、出力に重要な情報は追加されません。 昔のことを覚えています。で.bat実行するとecho on、個々の行はで開始することで除外できました@。bashに相当するものはありますか? #!/bin/bash -x function i_know_what_this_does() { ( set +x echo do stuff ) } echo the next-next line still echoes 'set +x', is that avoidable? i_know_what_this_does echo and we are back and echoing is back on 上記を実行すると、出力は次のようになります。 + echo the next-next line still echoes 'set …
11 bash  shell  debugging 


1
findコマンドで見つかった複数のファイルの権限を変更するにはどうすればよいですか?
多数のファイルを含むディレクトリがあります。ファイルの一部には755権限があり、他の部分には644権限があります。755権限のあるファイルをに変換したい644。次の行をディレクトリ自体から実行してみました。 find . -perm 755 -exec chmod 644 {}\; ただし、その結果、アクセス許可はディレクトリ自体に対してのみ変更され、変更後はファイルのアクセス許可が変更されていないことがわかりました。私は何かを逃していますか?


4
プログラムでsshを使用してリモートディレクトリを作成する
シェルスクリプトを使用して、sshを使用してserverA-> serverBからリモートでディレクトリを作成するにはどうすればよいですか?create directoryコマンドをsshコマンドと一緒に渡すことはできますか?どうやって? ディレクトリがまだ存在しない場合は、基本的に日付に基づいてリモートでディレクトリを作成しようとしています(例:20110304)。
11 shell  ssh  directory 

2
すべてのエンターでzsh update自体のRPROMPTをどのように作成しますか?
私RPROMPTはを使用してsvn情報を表示するように設定されていますvcs_info。読みますRPROMPT=${vcs_info_msg_0_}。vcs_infoを使用して呼び出されprecmd()ます。ただし、ディレクトリを変更してもRPROMPTは更新されません。これは、プロンプトを(ソース〜/ .zshrcまたはpromptによって)再度呼び出した場合にのみ機能し、プロンプトを再度呼び出さない限り、chdirで変更されません。この動作を変更する方法はありますか?

4
`mv`で改行をファイル名に追加
それは深刻な問題です。私はいくつかのawkスクリプトをテストし、それらの名前に改行を含むファイルが必要です。 で改行をファイル名に追加することは可能mvですか? 私は今、これを行うことができますtouch: touch "foo bar" タッチで、コピーと貼り付けごとに改行文字を追加しました。しかし、私はfooReturnbar自分のシェルで書くことができません。 ファイル名に改行を含めるために、ファイルの名前を変更するにはどうすればよいですか? 2015/06/28を編集; 07:08 pm zsh使用できる改行を追加するには、Alt+Return

4
Bashのファイル読み取りコマンド置換を理解する
私はBashが次の行をどのように扱うかを理解しようとしています: $(< "$FILE") Bashのmanページによると、これは次と同等です。 $(cat "$FILE") この2行目の推論の行を追うことができます。Bashはで変数展開を実行し$FILE、コマンド置換を入力し、$FILEto の値を渡しcat、catはの内容$FILEを標準出力に出力します。コマンド置換は、行全体を内部のコマンドの結果である標準出力で置き換えることで終了し、Bashはそれを実行しようとします簡単なコマンド。 ただし、上記の1行目は$FILE、Bashが$FILEで変数置換を実行し、Bashが標準入力を読み取るために開き、標準入力が標準出力にコピーされ、コマンド置換が終了し、結果の標準をBashが実行しようとすることを理解しています。出力。 誰かが私に$FILEstdinからstdoutへのコンテンツの流れを説明してくれませんか

10
ディレクトリ内のファイル数をカウントする最良の方法は何ですか?
ls一部のファンキーな文字(スペース\n、...)で壊れる可能性があるため、の出力の解析が危険な場合、ディレクトリ内のファイル数を知るための最良の方法は何ですか? 私は通常find、この解析を回避することに依存していますが、同様にfind mydir | wc -l、同じ理由で壊れます。 私は現在Solarisで作業していますが、さまざまなユニックスやさまざまなシェル間で可能な限り移植性のある答えを探しています。

2
awkを使用してインプレースでファイルを変更する方法は?(「sed -i」と同様)
私はawkスクリプトがありますnew.awk: BEGIN { FS=OFS="," } NR==1 { for (i=1; i<=NF; i++) { f[$i] = i } } NR > 1 { begSecs= mktime(gensub(/[":-]/," ","g",$(f["DateTime"]))) endSecs = begSecs + $(f["TotalDuration"]) $(f["CallEndTime"]) = strftime("%Y-%m-%d %H:%M:%S", endSecs) } { print } 私はこれをシェルで呼び出しています awk new.awk sample.csv ...しかし、ターミナルの変化を見ることができます。使用する場合のように、ファイル内の変更をインプレースにする方法はsed -i?
11 linux  shell  awk 

1
GNU Makefileでのプロセス置換
bashプロンプトで、疑似ファイルを使用してdiffを実行できます。 diff <(echo test) <(echo test) これをそのままMakefileに追加すると失敗します。 all: diff <(echo test) <(echo test) エラー(ヒント:/ bin / shがこのシステムの/ bin / bashを指しています): /bin/sh: -c: line 0: syntax error near unexpected token `(' /bin/sh: -c: line 0: `diff <(echo test) <(echo test)' それはどういう意味ですか、一時ファイルを使用せずに2つの出力を比較する方法はありますか?

2
.bashrcをソースした後、sshを使用して対話型シェルでコマンドを実行します。
リモートのUbuntuコンピューターにSSHで接続し、myを入手して、.bashrcそのパラメーターで設定されたパラメーターに依存するコマンドを実行します.bashrc。これらはすべて、コマンドの実行後に閉じないインタラクティブシェル内にあります。 今までやってみました ssh user@remote_computer -t 'bash -l -c "my_alias;bash"' あるいは単に ssh user@remote_computer -t "my_alias;bash" これは一般的なコマンド(lsたとえば)で機能しますが、で定義されたエイリアスを実行しようとすると.bashrc、エラーが発生します。 bash: my_alias: command not found しかし、もう一度手動で記述して実行すると、うまくいきます。 では.bashrc、コマンドが呼び出される前にが確実にソースされるようにするにはどうすればよいですか?
11 bash  shell  ssh  alias 

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