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

Bashは、GNUプロジェクトのUnixライクなオペレーティングシステム用の無料のシェルです。


1
ログインFedora 21でスクリプトを実行する
Fedora 21にログインするときに、ホームディレクトリにあるスクリプトを起動しようとしています。このデスクトップファイルを /usr/share/autostart [デスクトップエントリ] Type = Application 名前=壁紙 Exec = / home / user / Wallpaper-script / launch.sh Comment =壁紙の自動ダウンロードとスライドショー Terminal = false X-Desktop-File-Install-Version = 0.22 OnlyShowIn = GNOME; 再起動またはログインしても、スクリプトは起動しません。ただし、手動でファイルを開くと、スクリプトは正常に起動します。ここで何が間違っていますか? 必要に応じて、スクリプトファイルを提供できます。

2
2つのパターンの間に文字列を挿入します
次のような名前のファイルを変更したい: d1-a2_A1_B1.txt abcd_A90_B2.txt 私は挿入する場所_FOO最初の間にある_A[0-9]\+と_B[0-9]そのファイル名になり d1-a2_A1_FOO_B1.txt abcd_A90_FOO_B2.txt しかし、私の正規表現は機能しません: for f in $(ls); do mv $f \`echo $f | sed -e s/\(.*_A[0-9]\+\)\(_B[0-9].*\)/$1_FOO$2/\`; done 私は単一の文字列で試しました: echo abcd_A90_B2.txt | sed -e s/\(.*_A[0-9]\+\)\(_B[0-9].*\)/$1_FOO$2/ OK:これはうまくいきました: echo abcd_A90_B2.txt | sed -e 's/\(_A[0-9]\+\)\(_B[0-9]\)/\1_FOO\2/'
2 linux  bash  regex  sed 

1
netcatを使用したBash RTSPクライアント-送信されたデータをsedで解析中に接続を開いたままにしますか
bashでRTSPクライアントを作成しようとしています。問題は、ビデオフレームを送信するサーバーへの接続を1つだけ行う必要があることです。サーバーが次のリクエスト(SET_PARAMETERおよびPLAY)で使用する必要があるセッションIDコードを送信するまで、1つの接続でそれを維持できます。そのため、netcatの出力をsedに転送してセッションIDを取得する必要がありますが、その後、接続が閉じられ、セッションIDを抽出した後、netcatを使用してサーバーに新しい接続を確立してストリームを開始する必要があります...ビデオ。1つの接続でのみ保持する必要があるため。 だから、どういうわけか、netcatの出力をsedし、サーバーに送信するものをエコーバックすることはできますが、接続を閉じることはできませんか? (そのBusyBox netcat)
2 bash  netcat 

1
ファイル名(パスにスペースを含む)をbashスクリプトのワインアプリに引数として渡す
引数としてファイルを渡してワインアプリを探し出したいです。ファイルは2つありますが、最初のファイルには問題はありませんが、パスにスペースがある場合、wineはアドレスを適切に処理できません。これらの2つのファイルは次のとおりです。 /home/op/Doc/test.pdf / home / op / Doc / test vs space.pdf コマンドラインからこのコマンドを使用して両方のファイルでアプリを正常に起動できます: [/home/op@box ~]: wine "C:\Program Files\Tracker Software\PDF Viewer\PDFXCview.exe" "z:Docs/test.pdf" [/home/op@box ~]: wine "C:\Program Files\Tracker Software\PDF Viewer\PDFXCview.exe" "z:Docs/test vs space.pdf" しかし、これをスクリプトに入れたい場合(後で別のプログラム、レンジャーで実行するため)、テストファイルを使用してプログラムを起動することはできません。最初のスクリプトはアドレスにスペースがないものでもうまく機能しますが、2番目のスクリプトは機能せず、pdfファイルを開かずにアプリを起動します。 スクリプト1:スペースを使用しないで作業する: #!/bin/bash Filename="z:${1//\//\\}" wine "C:\Program Files\Tracker Software\PDF Viewer\PDFXCview.exe" $Filename スクリプト2:どちらの場合でも機能しない #!/bin/bash Filename="z:${1//\//\\}" Filename='"'$Filename'"' wine "C:\Program Files\Tracker Software\PDF Viewer\PDFXCview.exe" …

2
コマンド置換を使用して複数のコマンドを実行する
私はbashでやろうとしていますことは、スクリプトを記述しているfoo私が実行したときにということ、$(foo)それはディレクトリを変更し、使用してスクリプトを実行しますsource。の内容foo: echo cd bar echo "&&" echo source baz 実行すると$(foo)、ディレクトリが「bar」に変更されますが、実行されませんsource baz。これを達成する方法はありますか?

2
長時間実行されるSSHコマンドのハング-より良い戦略?
SSHを介して実行される長時間実行コマンドがあります。頻繁に、コマンドがハングして出力の取得が停止するようです。コマンドはまだ他のマシンで実行されています(実際、SSHコマンドからCtrl + Cを押しても実行されますが、これは問題ありません)、クライアントはハングします。 私のコマンドは次のantようにターゲットを実行しています: ssh -tt user@machine 'cd /thedir; export DISPLAY=:80; ant clean test' antコマンドは、時間のかかることがあります。 ネットワークの中断が発生し、接続が混乱する可能性があるため、これは悪い戦略だと思います。誰もが別のアプローチを提案できますか?私の目標は次のとおりです。 クライアントはコマンドが終了するのを待ちます 私はまだコマンドから出力を受け取ります ネットワークブリップが発生しても、コメントを確認して、コメントが終了するのを待つことができます どんな助けや提案も大歓迎です。 編集:私は完全なbashスクリプトを実行しています...私はワンライナーまたはそのような何かを必要としません。

1
ターミナルのVimショートカット
vimではjj、通常モードに移行する必要があります。 inoremap jj <ESC> 〜/ .bash_profileでターミナルをviモードに変更しましたが、同じバインディングを設定するにはどうすればよいですか?これは残念ながら機能しません: bind '"jj": vi-cmd-mode' 前もって感謝します!
2 macos  bash  vim  terminal 

1
リモートUbuntuターミナルセッションでコマンドライン履歴を有効にするにはどうすればよいですか?
sshを使用してリモートUbuntuセッションにログインすると、通常はローカル端末でカーソルキーを使用してアクセスするコマンドライン履歴が^]] A ^]] B文字などに置き換えられます。 このリモートセッションでコマンドライン履歴を有効にするにはどうすればよいですか?

1
コマンドラインでのlinux / bash条件構文
fooを実行したいのは、その月の現在の日が7日よりも小さい場合だけです。 のようなもの: [ (/bin/date +'%-d') -le 7 ] && foo それ以外は、構文エラーになります。日付部分が正しく出てきているので、条件付きテストの正しい構文を求めています。
2 linux  bash 

3
ファイル名の疑問符(?)の名前を変更する
renameそれはバルクの変更ファイル名に可能です。私+はこのコマンドですべてを取り除き、アンダースコアに置き換えました: rename 's/\+/_/g' * aのような通常の文字をAに変更できます。 rename 's/a/A/g' * しかし、私は名前を変更することができませんでした?、これを好きではない/\?し、これを好きではありません/?。 「?」をアドレス指定する方法はありますか ファイル名に?ほとんどのFTPプログラム?も同様にファイルの名前を変更できません。真夜中の司令官は失敗します。これまでのところ私が見つけた唯一の方法は次のとおりです: mv ?myfile.txt myfile.txt しかし、このコマンドは十分な柔軟性がありません。?すべてのファイルのすべてを一括で名前変更することをお勧めします。

1
BASHでWindowsプログラムを閉じる方法
X64ベースのWin10を使用しています。最近、gitを使い始めたので、コンソールをbash / mingw64に切り替えています。しかし、bashの動作がよくわかりません。 コマンドライン経由で、メモ帳などのプログラムを強制終了しようとしました。たぶん、 TASKKILL /IM notepad.exe 動作します。 taskkillBashのヘルプドキュメントを確認します。この行は、実際には例の1つです。 しかし、私はこのエラーを受け取りました $ TASKKILL /IM notepad.exe ERROR: Invalid argument/option - 'C:/Program Files/Git/IM'. また、TASKKILL /PID <number>どちらも機能せず、同じエラーが発生します。 誰かが何が間違っているのか説明してもらえますか? PSこれはtype cmdで解決でき、コマンドを実行しcmdて動作します。しかし、それは一種の低速であり、矢印は機能しません(迷惑です)。

1
すべての引数を収集して引用するbash関数を作成しようとしましたが、引数に角かっこまたは一重引用符が含まれていると機能しません
どこかで提案された「git commit」の次のショートカットを見ました: function gc { git commit -m "$*" } これにより、引用符などを使用せずに、コミットメッセージをシェルにインラインで書き込むことができます。好む: gc This is a commit message 問題は、コミットメッセージ自体に角かっこまたは引用符が含まれている場合、機能しないようです。(そして、コミットメッセージで多くの括弧/引用符を使用します。)bashスクリプトの技術に精通している人は、より良いショートカットを提案できますか?
2 bash  git  alias 

3
cp -R foo /とcp -R foo / *の違いは何ですか
私はコマンドを使用するたびに気づいcp -R foo/*私のようなファイル以外のすべてをコピーする.envか、おそらく.gitignore 解決策はcp -R foo/、ディレクトリ全体を処理するために使用することですが、これは、*文字を使用する動作をまだ理解していないという事実を変更しません。 *キャラクターが次のようなファイルをキャッチしないのはなぜ.envですか? OSはDebianです

2
Cron環境変数
からログインシェルで正常に実行される単純なシェルスクリプトを実行していますがcron、実行されていません。何らかの理由で、シェルで実行されているときに実行されているとき/usr/local/binに、ユーザーパス上にありませんcron。 環境はどこでcron決定されますか?
2 bash  cron 

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