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

Bashコマンドシェル用に記述されたスクリプトに関する質問。エラー/構文エラーのあるシェルスクリプトについては、ここに投稿する前に、shellcheckプログラム(またはhttps://shellcheck.netのWeb shellcheckサーバー)で確認してください。Bashのインタラクティブな使用に関する質問は、スタックオーバーフローよりもスーパーユーザーで話題になる可能性が高くなります。

5
bash履歴の完了を変更して、すでにラインにあるものを完了するにはどうすればよいですか?
数か月前に、上矢印キーを押すと、bashの履歴がすでに行にあるものでオートコンプリートになるコマンドが見つかりました。 $ vim fi 押す ↑ $ vim file.py 新しいコンピュータでこれをセットアップしたいと思います。これは、大きな履歴を保持するときに多くの時間を節約できるためです。問題は、どこで言及されたか思い出せないことです。無限のbashリファレンスとチュートリアルを読んでも、残念ながら役に立ちませんでした。 誰かがコマンドを知っていますか?
133 linux  bash  shell 

6
Bashシェルの$ {var}、「$ var」、「$ {var}」の違いは何ですか?
タイトルの意味:変数をカプセル化するとはどういう意味ですか {}、""または"{}私はこのことについて、オンライン任意の説明を見つけることができませんでした「 -私は、シンボルを使用したこと以外はそれらを参照することができていない、います?何も生み出しません。 次に例を示します。 declare -a groups groups+=("CN=exampleexample,OU=exampleexample,OU=exampleexample,DC=example,DC=com") groups+=("CN=example example,OU=example example,OU=example example,DC=example,DC=com") この: for group in "${groups[@]}"; do echo $group done これとは大きく異なることが証明されています。 for group in $groups; do echo $group done この: for group in ${groups}; do echo $group done 最初のものだけが私が望むことを達成します:配列の各要素を反復します。との違いはよくわかりませんが$groups、"$groups"、${groups}と"${groups}"。どなたかご説明頂ければ幸いです。 追加の質問として-これらのカプセル化を参照するための受け入れられた方法を誰かが知っていますか?
133 bash  shell  variables  syntax 


4
ヒアドキュメントをパイプするための複数行の構文。これはポータブルですか?
私はこの構文に精通しています: cmd1 << EOF | cmd2 text EOF しかし、bashを使用すると次のように記述できることがわかりました。 cmd1 << EOF | text EOF cmd2 (ヒアドキュメントはcmd1への入力として使用され、cmd1の出力はcmd2にパイプされます)。これは非常に奇妙な構文のようです。ポータブルですか?
132 bash  shell  pipe  sh  heredoc 

6
一時的なSSHトンネルを設定するBashスクリプト
Cygwinでは、Bashスクリプトで以下を実行します。 リモートサーバーへのSSHトンネルを作成します。 トンネルを使用するローカルでいくつかの作業を行います。 次に、トンネルをシャットダウンします。 シャットダウン部分は困惑しています。 現在、私は不十分な解決策を持っています。1つのシェルで次のコマンドを実行してトンネルを作成します。 # Create the tunnel - this works! It runs forever, until the shell is quit. ssh -nNT -L 50000:localhost:3306 jm@sampledomain.com 次に、別のシェルウィンドウで作業を行います。 # Do some MySQL stuff over local port 50000 (which goes to remote port 3306) 最後に、完了したら、最初のシェルウィンドウを閉じてトンネルを終了します。 これを次のような1つのスクリプトで実行したいと思います。 # Create tunnel # Do work …
132 bash  ssh 

8
Windowsコマンドプロンプトで.shを実行する方法
Windows 7のコマンドプロンプトで.shを実行するにはどうすればよいですか?この行を実行しようとすると、常にこのエラーが発生します。 app/build/build.sh エラー、 'app' is not recognized... または、 bash app/build/build.sh エラー、 'bash' is not recognized... 私が見逃したアイデアはありますか? ここで画面をつかみます
132 windows  bash  command-line  sh 

20
unix-ファイルの先頭と末尾
あなたがtxtファイルを持っているとしましょう、ファイルの上位10行と下位10行を同時に表示するコマンドは何ですか? つまり、ファイルの長さが200行の場合は、1行目から10行目と190〜200行目を一度に表示します。
131 linux  bash  shell  unix  scripting 

9
SSHコマンドにパスワードを提供するには、bashスクリプトでexpectを使用します
SSHキーを使用する必要があると返信したい場合は、ご遠慮ください。 SSHパスワードを提供するために、bashスクリプトでexpectを使用しようとしています。パスワードを指定しても機能しますが、SSHセッションで必要な結果が得られないため、bashに戻ります。 私のスクリプト: #!/bin/bash read -s PWD /usr/bin/expect <<EOD spawn ssh -oStrictHostKeyChecking=no -oCheckHostIP=no usr@$myhost.example.com' expect "password" send "$PWD\n" EOD echo "you're out" 私のスクリプトの出力: spawn ssh -oStrictHostKeyChecking=no -oCheckHostIP=no usr@$myhost.example.com usr@$myhost.example.com's password: you're out SSHセッションを開始したいのですが、それを終了してbashスクリプトに戻ります。期待する前にbashを使用している理由は、接続するユニットを選択できるメニューを使用しているためです。 ありがとう
131 linux  bash  ssh  expect 

18
シェルで最後の10コマンドの履歴を削除する方法は?
コマンドは次のとおりです 511 clear 512 history 513 history -d 505 514 history 515 history -d 507 510 513 516 history 517 history -d 509 518 history 519 history -d 511 520 history で単一のhistory -d 511コマンドを削除できますが、シェルで単一のコマンドを使用して、最後の10個のコマンドと10個のコマンドの履歴を削除するにはどうすればよいですか? bashスクリプトを記述して、履歴の削除を実行できますか?
131 linux  bash  shell  terminal 

7
docker runを介してシェルスクリプトに引数を渡す方法
私はドッカーの世界に不慣れです。dockerコンテナーを介してコマンドライン引数を取るシェルスクリプトを呼び出す必要があります。例:シェルスクリプトは次のようになります。 #!bin/bash echo $1 Dockerfileは次のようになります。 FROM ubuntu:14.04 COPY ./file.sh / CMD /bin/bash file.sh コンテナの実行中に引数を渡す方法がわかりません

7
.bashrc、.bash_profile、.environmentの違いは何ですか?
ロックされています。質問はトピックから外れていますが、歴史的に重要であるため、この質問とその回答はロックされています。現在、新しい回答や相互作用を受け入れていません。 私は何年にもわたってさまざまな* nixベースのシステムを使用してきましたが、使用するBashのフレーバーには、実行する起動スクリプトを決定するためのアルゴリズムがそれぞれ異なるようです。環境変数とエイリアスの設定や起動メッセージ(例:MOTD)の出力などのタスクのために、これらを実行するのに適切な起動スクリプトはどれですか。 何で物事を置くことの違いだ.bashrc、.bash_profileと.environment?私はまた、のような他のファイルを見てきた.login、.bash_loginと.profile。これらは今までに関連していますか?物理的にログインし、sshを介してリモートでログインし、新しいターミナルウィンドウを開いたときに実行される違いは何ですか?プラットフォーム(Mac OS X(およびそのTerminal.app)とCygwin Bashを含む)間で大きな違いはありますか?
130 shell  environment  bash 

4
変数の末尾から文字を削除します
Bashオートコンプリートは、ディレクトリ名の最後に/を追加します。これを位置パラメータからどのように取り除くことができますか? #!/bin/sh target=$1 function backup(){ date=`date "+%y%m%d_%H%M%S"` PWD=`pwd` path=$PWD/$target tar czf /tmp/$date$target.tar.gz $path } backup
130 bash  shell 

5
(UNIXの)bashシェルスクリプトで.profileをリロードしますか?
私はbashシェルスクリプトを初めて使用するので、問題に直面しました。「.profile」ファイルをリロードできることはわかっています。 . .profile しかし、私が書いているbashスクリプトで同じことを実行しようとしていますが、機能していません。何か案は?明確にするために他に提供できることはありますか? ありがとう

4
特定のディレクトリ内のファイルのみを検索し、bashを使用してサブディレクトリを無視する方法
他の同様の質問を調べましたが、概念を把握して、限られた時間で自分の状況に適用できるような質問は見つかりませんでした。特定のファイルを見つけるために単純にfindコマンドを実行していますが、サブディレクトリ内の一部のファイルに同じ名前が付いているため、無視したいのです。助けてくれてありがとう。以下は私が使用しているコマンドです: 興味のあるファイル/パターン:/ dev / abc-scanner、/ dev / abc-cash .... コマンド: find /dev/ -name 'abc-*' 返されるもの: /dev/abc-scanner /dev/abc-cash ... ... ... /dev/.udev/names/abc-scanner /dev/.udev/names/abc-cash 後者のファイルを無視したい:/dev/.udev / ...
129 bash  unix 

3
Bashスクリプト:ファイル内の一意の行を数える
状況: 数時間のネットワークキャプチャからのIPアドレスとポートを含む大きなファイル(数百万行)があり、1行に1つのIP /ポートがあります。行は次の形式です。 ip.ad.dre.ss[:port] 望ましい結果: ロギング中に受け取ったパケットごとにエントリがあるため、重複したアドレスが多数あります。これをある形式のシェルスクリプトで実行できるようにしたいのですが、それをフォーマットの行に減らすことができます ip.ad.dre.ss[:port] count ここで、countその特定のアドレス(およびポート)の発生数です。特別な作業を行う必要はありません。異なるポートを異なるアドレスとして扱います。 これまでのところ、私はこのコマンドを使用して、ログファイルからすべてのIPアドレスをスクレイピングしています。 grep -o -E [0-9]+\.[0-9]+\.[0-9]+\.[0-9]+(:[0-9]+)? ip_traffic-1.log > ips.txt それから、私はかなり単純な正規表現を使用して、自分のアドレスから送信されたすべてのIPアドレス(私は気にしません)をこすり落とすことができます 次に、以下を使用して一意のエントリを抽出できます。 sort -u ips.txt > intermediate.txt どうやってソートで行数を集計できるのかわかりません。
129 bash 

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