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

他のBourne / POSIXシェルとは対照的に、GNUのBourne Again SHellに固有の質問。Unixシェル全般に関する質問については、代わりに/ shellタグを使用してください。

2
ファイルを1行ずつ読み取る際のユーザー入力の要求
クラスのispell場合は、whileループ内でユーザー入力を要求してから出力を取得するBashスクリプトを作成する必要があります。これは、ファイルの次の行をユーザー入力として保存するだけです。 whileループでユーザー入力を要求するにはどうすればよいですか? #!/bin/bash #Returns the misspelled words #ispell -l < file #define vars ISPELL_OUTPUT_FILE="output.tmp"; INPUT_FILE=$1 ispell -l < $INPUT_FILE > $ISPELL_OUTPUT_FILE; #echo a new line for give space between command #and the output generated echo ""; while read line; do echo "'$line' is misspelled. Press "Enter" to keep"; read -p …

2
複数のKonsoleからのbash履歴の保存が正しく機能しない
複数のKonsole端末を使用しています。そして、すべての端末に入力したすべてのコマンドをコマンド履歴に保存して、次に開いたkonsoleにすべてのコマンドが表示されるようにします。各端末が他の端末のコマンド履歴を上書きしないようにするために、私は次の設定を自分の.bashrc # avoid duplicates and commands starting with space export HISTCONTROL=ignoredups:erasedups:ignorespace # append history entries.. shopt -s histappend #My machine reboots without warning sometimes.Hence to save commands instantaneously. export PROMPT_COMMAND="history -a" export HISTSIZE=1000 PS1="\[\e[1;34m\]\! \[\e[0m\]"$PS1 プロンプトにコマンド番号を表示するために最後の行を指定しました。コマンド番号。600を超えたことはありませんが、それでも私の古いコマンドの一部は履歴から消えています。繰り返し指定されるコマンドは多数ありますが、から予想されるようにignoredups、プロンプト内のコマンドを増やすことはありません。それでも古いコマンドは消えており、履歴にあるコマンドの数は常に500をわずかに超えています。 .bash_historyファイルにはまだignoredupsにもかかわらず、重複が多く含まれています。 PS:エコーの出力$HISTSIZEと$HISTFILESIZE両方=1000 更新:上記ののエントリに問題が見つかりました.bashrc。ただ、呼び出しhistory -aにPROMPT_COMMAND単にの.bash_historyに最後の新しいコマンドを追加します。だから、ignoredupsとerasedups効果がありません。 方法はありますか?すべての端末から重複することなく.bash_historyに書き込むことができますか?各コマンドプロンプトで履歴全体をロードしてhistory -rで書き直したくないのhistory -wは、ある端末で発行したコマンドが別の並列実行中の端末にも表示されるためです。結合したコマンドを新しいターミナルでのみ表示したい。 パズル、なぜ私の歴史が500にトリミングされたのかが解決されました。このマシンにsshするたびにそれが起こっていることに気づきました。.bash_profile次のエントリでを作成すると、この問題は解決しました。 if [ -f ~/.bashrc ]; then …

5
bashの最初のフィールドで順序付けられた行をカウントする方法
以下はINPUTのスニペットです。 ... #################### Bala Bela;XXXXXX12345;XXXXXX12345678;A SERVER345Z3.DOMAIN.com0 SERVER346Z3.DOMAIN.com0 SERVER347Z3.DOMAIN.com0 SERVER348Z3.DOMAIN.com0 ssh-dss ...pubkeyhere... #################### Ize Jova;XXXXXX12345;XXXXXX12345;A SERVER342Z3.DOMAIN.com0 SERVER343Z3.DOMAIN.com0 SERVER345Z3.DOMAIN.com0 ssh-rsa ...pubkeyhere... ... そして、ここに私が必要とする出力からのスニペットがあります: Bala Bela;XXXXXX12345;XXXXXX12345678;A 4 Ize Jova;XXXXXX12345;XXXXXX12345;A 3 したがって、INPUTからのOUTPUTが必要です。これにより、「SERVER」で始まる行が特定のユーザーに送信されることがわかります(例:「Bala Bela; XXXXXX12345; XXXXXX12345678; A」)。どうすればbashでこれを行うことができますか?

2
$ PATHが正しく指定されていても、Bashがコマンドを見つけられないのはなぜですか?
/ etc / profileファイルにコマンドへのパスを指定しています: export PATH=$PATH:/usr/app/cpn/bin 私のコマンドは次の場所にあります: $ which ydisplay /usr/app/cpn/bin/ydisplay したがって、「echo $ PATH」出力を実行すると、次のようになります。 $ echo $PATH ...:/usr/app/cpn/bin そして、すべてが大丈夫ですが、SSH経由でコマンドを起動しようとすると、エラーが発生します。 $ ssh 127.0.0.1 ydisplay $ bash: ydisplay: command not found しかし、私の道はまだ存在しています: $ ssh 127.0.0.1 echo $PATH ...:/usr/app/cpn/bin SSHセッション中にBashがydisplayを見つけられない理由と、この問題を回避するためにSSHを適切に構成する方法を教えてください。 さらに、現在のユーザーのローカルファイル.bashrcで$ PATHを指定すると、すべて正しく動作します。しかし、ユーザーごとに多数のファイルを指定するのではなく、1つのファイルのみを変更したいと思います。これが私が求めている理由です。
9 linux  bash  shell  ssh  path 

2
終了時のSSH LocalCommand
では~/.ssh/config、LocalCommandディレクティブを使用して、SSH経由でリモートマシンに接続するたびにローカルコマンドを実行できます。しかし、SSH接続を終了するときにコマンドを実行するにはどうすればよいですか?* .bashrc / .bash_profile *ファイルは、接続が終了したとき、または閉じたときに取得されないようです。
9 bash  ssh  osx 

5
ルート書き込み権限のみを持つファイルに行を追加し、スクリプトの実行を継続する方法
私はbashスクリプトを学習しようとしています。私は実用的な問題に取り組んでおり、ある時点でroot、書き込み許可が必要なファイルに行を追加する必要があります。 コードは次のようになります。 # some code echo "add this line to the code" >> fileName # some code どういうわけかスクリプトにrootパスワードを要求させ、パスワードを検証し、認証が成功したらファイルを変更することは可能ですか?その後、スクリプトはユーザーモードに戻り、コマンドの実行を続行します。

1
私のローカルマシンでsshを介してフィンチでサウンド/通知を再生する
だから私はfinch、私が入っているリモートマシンで実行されているコマンドラインチャットクライアント(pidginを考える)を持っていますssh。finch通知音があり、特定のイベントが発生したときにコマンドを実行して、サウンドファイルをとして渡すことができます%s。例えばmplayer %s リモートマシンから、通知が発生したとき%sに、ローカルマシンにあるものを再生するためにどのようなコマンドを実行できますか?
9 ssh  bash  audio 


2
スクリプト内からスクリプトファイルを削除しても安全ですか?
スクリプトがあると想像してみてくださいfoo。これは、ユーザーがログインしたときに1回実行する必要があり、正常に実行された後は必要ありません。 私の質問:スクリプト内からスクリプトファイルを削除しても安全ですか? 例えば: #!/bin/bash # do something ... # if successful rm /path/to/foo exit 0

3
出力を分割して配列に格納する方法は?
これは出力です: 3,aac-lc, 93.8, aaclc, 77.3, h.264, 1024.6, h.264, 1029.1, 31, 31, 0,0,0.000000,31,31,0,0,0.000000,7,0,0,0.000000,30,1280 720,10,0,0,0.000000,30,1280 720 私は2つのシナリオで試しました: アレイへの格納 @arr=split(',',$stats); echo "statistics: $stats" 変数に格納する echo $stats | cut -d ',' -f | read s1 echo $s1 しかし、どちらのシナリオも機能していません。
9 bash 

2
Bash:変数でエイリアスを使用する
それぞれの引数をコマンドとして実行するbashスクリプトを書いています。これはmyのコマンドでは機能しますが、PATHエイリアスでは機能しません。スクリプトで直接エイリアスを呼び出すことはできますが、引数として渡されたエイリアスを呼び出すことはできません。 問題(私は想定)は、エイリアスが変数の前に展開されることです。変数からエイリアスを実行する方法はありますか? サンプルスクリプト: #!/bin/bash # File: runall shopt -s expand_aliases source ~/.aliases while (( "$#" )); do $1 shift done runall "echo test"動作しますがrunall "myalias"、runall: line 8: myalias: command not found
9 bash  alias 

1
1つのコマンドに2つのパイプ
次の構文に少し混乱しています。動作しますが、なぜ動作するのかわかりません。2つのパイプがdiffコマンドに接続されているようです。しかし、1つだけではありませんSTDINか? 例: diff <(echo "foobar") <(echo "barbaz") diff <(cat foo.txt) <(cat bar.txt)
9 bash  shell 

4
apt-getオートコンプリート
現在64ビットのDebian Wheezyを実行しています。 apt-getの自動補完に問題があります。bash-completionがインストールされています。 シェルでrootとしてログインしている場合、apt-getの自動補完を使用して(例:apt-get install wicd [tab] [tab ])、それに一致するすべてのパッケージが表示されます。しかし、(sudoを使用していても)別の非rootユーザーでapt-getに自動補完を使用しようとすると、まったく機能しません。ファイル名のような他のものを自動補完できます。 何か助けは? .bashrcと/ etc / profileに次のコードがあります if [ -f /etc/bash_completion ]; then . /etc/bash_completion fi

9
システムログインのテストを作成するにはどうすればよいですか?
bashコマンドを呼び出すPython CGIスクリプトを作成しました。ホストでのログインが成功するかどうかをテストする必要があります。 どうすればそのためのテストを書けますか? たとえばbash、ホストに登録されているユーザーに対して特定のユーザー名とパスワードの組み合わせをテストするスクリプトを作成できますか?

1
bashの履歴からアクセスすると、長いコマンドの先頭が画面で途切れる
OS X Lionでbashとscreenのデフォルトバージョンを使用しています。 スクリーンセッションでbashの履歴をスクロールバックすると、折り返すのに十分な長さのコマンドが表示されます。 最初にいくつかのコマンドを入力します。 selassid@tem02:~$ ls ljmix/fiftyfifty_softsphere/T0.350/r2.43/0.565421311859c0.1 83279836214c0.144847759343/ 上記のように適切に折り返されますが、bashの履歴からアクセスするために上に押した場合、コンソールには以下のみが表示されます。 83279836214c0.144847759343/ したがって、プロンプトとコマンドの最初の行全体が欠落しているため、編集が困難です。最初の行にスクロールして戻ると表示されますが、出力の最後の行が上書きされます。コマンドを実行すると、最初の行の残りが表示され、すべてが期待どおりに表示されます。 selassid@tem02:~$ ls ljmix/fiftyfifty_softsphere/T0.350/r2.43/0.565421311859c0.1 83279836214c0.144847759343/ total 1792 ... selassid@tem02:~$ さらに興味深いのは、履歴を使用して長いコマンドにアクセスしたがまだ実行していない場合、C-a別のウィンドウに切り替えてから戻るなどの画面コマンドを使用するか、現在のターミナルウィンドウの外をクリックしてこれに戻ると、履歴コマンドが再び正しく表示されるようになりました。 私は、PS1='\u@\h:\w$ 'そうそこには何も奇妙な進行があります。 履歴を使用するときにコマンド全体を正しく表示する方法はありますか?私はスクリーンラップ設定で遊んでみましたが、状況が悪化するだけです。 stty -a ショー: speed 9600 baud; 46 rows; 80 columns; lflags: icanon isig iexten echo echoe -echok echoke -echonl echoctl -echoprt -altwerase -noflsh -tostop -flusho pendin …
9 bash  osx  gnu-screen 

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