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

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

1
一部のコマンドで特定のパラメーターを追跡する
たとえば、コマンドgit branch(常にいくつかの単語を含む)があるとします。 私が欲しいのは、このコマンドが引数付きで実行されたときを追跡することです。たとえば、git branch developエラーなしでコマンドを実行した場合develop、ファイルに保存します。 私のgitコマンドを.bash_profile次のように上書きしようとしました: git () { if [ $# -eq 3 ] then git $@ echo $2 > /path/tacked_parameters.txt else git $@ fi } しかし、それはうまくいかないようです。これを行う方法はありますか?
10 bash  shell  function 

5
cronジョブのタイムゾーンを変更する
私は毎日UTCタイムの午前9:00に実行されるcronjobを持っています。私はGMT + 1にいるので、現地時間の午前10:00に実行されます。(夏時間(DST)への)タイムゾーンの変更がある場合、cronjobは依然としてUTC-Timeの午前9:00に実行されますが、現地時間の午前11:00に実行されます。しかし、夏時間に関係なく、常に10:00に実行したいです。それ、どうやったら出来るの?
10 shell  cron  timezone 

1
プロンプトをハイジャックせずにバックグラウンドプロセスから進行状況をエコー
簡単なスクリプトを考えてみましょうhello: #!/bin/bash echo 'hello world!' これをバックグラウンドで実行しようとすると、bashから: $ hello & [1] 12345 $ hello world! █ <--- prompt is stuck here until I hit enter! [1]+ Done $ █ <--- prompt back to normal 私がむしろ見たいもの: $ hello & [1] 12345 [1]+ hello world! [1]+ Done $ █ <--- prompt normal the …

1
Jenkinsはシステムのロケールを使用しません
ジェンキンスで面白い行動をした。 Jenkinsのシェルは私のシステムロケールを使用しません。 Jenkinsはjenkins私のシステムでユーザーとして実行されます。 jenkinsSSH経由でログイン: locale 表示: LANG = en_US.UTF-8 LANGUAGE = en_US:en LC_CTYPE = "en_US.UTF-8" など... envショーLANGとLANGUAGE変数: LANG = en_US.UTF-8 LANGUAGE = en_US:en id ユーザーのIDを示します。 uid = 1008(jenkins)gid = ... 上記のコマンドをjenkinsジョブシェルに入力します。 locale 表示: LANG = LANGUAGE = LC_CTYPE = "POSIX" など... envんではない示し、LANGおよびLANGUAGE変数 id ユーザーのIDを表示します(予想どおり): uid = 1008(jenkins)gid = ... ファイル: …

4
\\を使用する正規表現と\を使用する正規表現
どして grep e\\.g\\. <<< "this is an e.g. wow" そして grep e\.g\. <<< "this is an e.g. wow" 同じことをしますか? 3番目のスラッシュを追加すると、同じ結果になります。しかし、4番目のスラッシュを追加すると、機能しなくなります。これは、クラスの古い試験の質問に関係しています。2つのバックスラッシュのあるものは、「eg」で行を出力するために機能するかどうか尋ねましたが、最初は機能しないと思っていましたが、確認してみました。説明は何ですか?

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 ログインプロンプトが表示される前に中断します。

2
ソースが「バイナリファイルを実行できません」というエラーを表示するのはなぜですか
tmuxセッションを初期化し、いくつかのウィンドウを作成する小さなファイルがあります。いくつかのデバッグと微調整の後、テキストファイルの名前を(tmuxコマンドを使用して)からに変更spamするまで問題なく動作しましたxset。 $ source xset bash: source: /usr/bin/xset: cannot execute binary file これでファイルの名前が変更され、source spam再び機能しましたが、これがなぜなのか疑問に思っています。ファイルは、ではなく、ホームディレクトリにあり/usr/binます。
10 bash  shell 

4
UnixとWindowsの間でテキストメッセージを書き込む
同じLANの2人のユーザー間でテキストメッセージを送信することはできますが、最初にWindowsとcmdを実行し、2番目にLinux / Unixを実行していますか? インスタントメッセージングサービスを探していません。Linuxシェルに次のように入力したい write user@192.168.x.x:port message Windowsユーザーがそのcmdウィンドウでテキストを読み取ることができるようにしますmessage。その後、Windowsユーザーは別のコマンドで応答できるはずです。出来ますか? Windows msgコマンドについて読みましたが、OSのすべてのバージョンで動作しません。他に何かありますか? PuTTYの代わりに、LinuxシェルとWindows cmdを使用したいと思います。

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
関数がパイプラインで呼び出されたときに環境変数が設定されない
環境変数を設定する次の再帰関数があります。 function par_set { PAR=$1 VAL=$2 if [ "" != "$1" ] then export ${PAR}=${VAL} echo ${PAR}=${VAL} shift shift par_set $* fi } それを単独で呼び出すと、変数が設定され、標準出力にエコーされます。 $ par_set FN WORKS FN=WORKS $ echo "FN = "$FN FN = WORKS stdoutをファイルにリダイレクトすることもできます: $ par_set REDIR WORKS > out cat out REDIR=WORKS $ echo "REDIR …

2
括弧を含むファイル名のエラー
ファイル名をからに変更しようとするold.file(1).gzとnew.file.gz、構文エラーと表示され、ubuntu 12.04を使用しています。 mv old.file(1).gz new.file.gz bash: syntax error near unexpected token `('
10 bash  shell  quoting 

4
すべてのバックグラウンドプロセスを終了する
Stoppedバックグラウンドプロセスがいくつかあります。 kill $(jobs -p)そしてkill `jobs -p`効果はありません kill %1、kill %2などが個々のプロセスを正常に終了します 1つのコマンドですべてのバックグラウンドプロセスを強制終了するにはどうすればよいですか? また、最初の2つのコマンドが機能しないのはなぜですか? Linux Mint 15、64ビットを実行しています

2
シェルはより「攻撃的」になることができますか?
私のGentoo Linuxは、不適切な USE フラグを有効にしてコンパイルされています。 # sudo su - Password: Hold it up to the light --- not a brain in sight! Password: 不快感の程度に基づいて運勢を選択することもできます。 # fortune -o kernelcookies | cowsay -b _________________________________________ / /* This is total bullshit: */ \ | | \ linux-2.6.6/drivers/video/sis/init301.c / ----------------------------------------- \ ^__^ \ (==)\_______ (__)\ …
10 shell  cowsay 

1
ファイル名に改行を含むファイルを見つける方法は?
ファイル名に改行が含まれているファイルを見つけようとしています。しかし、どのパターンを使用するべきかわかりません。 以下は機能しますが、インデントされたコードで使用する場合はあまり役に立ちません。 find . -name '* *' 私はこれら2つを試したところ、nという文字を含むファイル名を見つけることに成功しました。 find . -name '*\n*' find . -name "*\n*" それから私はバックスラッシュエスケープシーケンスを書く方法を見つけてこれを試しました: find . -name "*$'\n'*" しかし、それでは何も見つかりません。どのようにパターンを書けばよいですか?
10 shell  find  patterns 


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