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

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

3
BashでUnicodeファイル名を選択
OK; 私がBashにいて、フォルダにいくつかのファイルがあるとします。それらのいくつかはと名付けられfile☠☡☢☣.txt、☠☡☢☣クレイジーでタイプ不可のユニコード文字で始まります。それらの1つをどのように参照しますか?タブを押すとfile、にのみオートコンプリートされ、その後、クレイジーな文字を入力するよう求められます。「あなたが私に与えたリストの3番目のものを選択してください」とbashに伝える方法はありますか?

4
タブ補完リストで日付順にファイルを注文する方法
$ 7z l〜/ダウンロード/Tab 結果のリストを名前ではなく日付でソートする方法は? 私は現在、特別なスクリプトを使用して、特定のディレクトリにある最新のN個のファイルを一覧表示しています(そして、ファイル名をコマンドラインに手動でコピーしています)。

1
単一のbashスクリプトを使用してGNU画面で複数の分割ウィンドウを開く
所定のコマンドを実行する4つのセッションで画面ウィンドウを自動的に開くbashスクリプトを作成したいと思います。上部の2つのフレームでhtopとslurmを開き、中央の大きなフレームでsquidview、下部の大きなフレームで空白の端子を開きます。これは単一のbashスクリプトで設定できますか?


4
bashコマンドラインバッファーにテキストを置く
プログラムで特定のテキストをbashのコマンドラインバッファーに入れ、読み取り、編集してコマンドとして使用したいと思います。 私が楽しみにしているのはread -i、コマンドに似ていますが。 -i text readlineを使用して行を読み取る場合、テキストは編集を開始する前に編集バッファーに配置されます。 編集:プログラムでこれをスクリプトで記述したい場合は、スクリプトを起動し、コマンドバッファーを準備するか、コマンド履歴を変更します(いくつかの質問が示唆しているように)。
9 bash  readline 

1
シェルの「単語の削除」ショートカットが削除する文字数が多すぎる
Bashの下では、Alt+のいくつかの動作が何d年もの間私を狂わせてきており、設定で修正できる可能性があることを理解しました。 私がターミナルにいて、次のようなコマンドを発行した場合: ...$ cat >> ~/notesSuperLongFilename.txt 次に、発行したい場合は、 ...$ scp ~/notesSuperLongFilename.txt 私は戻って取得したいのですが、「>>猫を〜/ notesSuperLongFilename.txt」し、Ctrl + Pを(前の行)を使用して行うCtrl+ a、その後、Alt+ dとAlt+ d再び私が持っていると思いますので。 ...$ ~/notesSuperLongFilename.txt そして、私は単に「scp」と入力してからCtrl+を実行することができますm(またはEnter / Returnキーを押します)。 ただし、最初のAlt+の後、次のようになるため、機能しませんd。 ...$ >> ~/notesSuperLongFilename.txt (ここまでは順調ですね) しかし、2番目以降Alt+ d私は得る: ...$ .txt だから、何らかの理由でAlt+ d削除「>>〜/ notesSuperLongFilename」一回だけではなく、削除するので「>>」。 これは、文字通り何年もの間、Linux / Bashで私を狂わせている最大の時間浪費である必要があります。 では、どうすればAlt+のこの(おそらく壊れている)動作を修正できdますか? PS:私はそのAlt+ d動作の「責任者」が誰なのかわかりません。それがターミナルなのか、それともシェル(私の場合はBash)なのかわかりません。

2
Middlemanサーバーを介したSSHトンネル-1つの手順で接続する方法(キーペアを使用)?
私の質問は、基本的に私の既存の2つのステップを1つのステップに変える方法です。 次のようにMiddlemanサーバーを使用して、2台のコンピューター間にSSHトンネルを設定しています。 Kubuntu_laptop--->nat_fw--->Debian_Server<--nat_fw<--Kubuntu_desktop 現在私がしていることは、Kubuntu_laptopからDebian_Serverへ、次にDebian_ServerからKubuntu_desktopへのSSHです。私はKubuntu_laptopでbashで発行された1つのSSHコマンドを作成したいと思います。これにより、Kubuntu_desktop(shell / bash)に接続されます。 現在使用しているコマンドは以下の通りです。ステップ1: me@kubuntu_laptop:~$ ssh -i ~/.ssh/id_rsa admin@debian_server ステップ2: admin@debian_server:$ ssh -p 1234 -i /home/admin/.ssh/id_rsa admin@localhost 次に、(kubuntu_laptopから)SSH経由でkubuntu_desktopに接続します。 RSAキーは、すべてのSSH接続に必要です。パスワードのログインはずっと無効になっています。また、コンピューターのユーザーアカウントが2台のコンピューターで異なることに注意してください。 このレッグの接続について: Debian_Server<--nat_fw<--Kubuntu_desktop 以下にその確立方法を示します。 autossh -M 5234 -N -f -R 1234:localhost:22 user@mydebian.com -p 22 Kubuntu_desktopがuser@mydebian.com(admin @ debian_serverではない)としてMiddlemanに接続することに注意してください。しかし、Kubuntu_desktopに接続すると、管理者ユーザーとして接続します。 既存の監視ポート(5234)またはリモート(-R)ポート番号(この例では1234)を変更できません。SSHのセキュリティを変更してパスワードログインを許可できません。新しいファイアウォールポートを開けません。ユーザーアカウントを変更できません(ラップトップを除く)。

2
bashスクリプトでグラフィカルにパスワードを要求し、デフォルトのsudoタイムアウト設定を保持する
sudo -A(SUDO_ASKPASS)オプションは、明らかな原因は、タイムアウト(例えば、timestamp_timeout)の設定を失うことSUDO。 sudo -Aオプションを使用したいが、bashスクリプトでデフォルトのタイムアウト(Ubuntuでは15分など)を保持したい。ユーザーのパスワードを安全にGUIダイアログで要求したいのですが、スクリプトの入力を1回だけ要求します(50回以上は要求しません)。 さらに、スクリプト全体をrootユーザーとして実行したくありません。これは悪い考えです。さらに、この場合、私のスクリプトによって作成されたファイルの所有権は正しくありません。 sudo -Aオプションは、デフォルトのタイムアウトを保持している場合は機能します。 sudoマニュアルから: オプション:‑A 通常、sudoがパスワードを必要とする場合、ユーザーの端末からそれを読み取ります。‑A(askpass)オプションを指定すると、(おそらくグラフィカルな)ヘルパープログラムが実行され、ユーザーのパスワードが読み取られ、パスワードが標準出力に出力されます。SUDO_ASKPASS環境変数が設定されている場合は、ヘルパープログラムへのパスを指定します。それ以外の場合、/ etc / sudo.confにaskpassプログラムを指定する行が含まれていれば、その値が使用されます。例えば: # Path to askpass helper program Path askpass /usr/X11R6/bin/ssh-askpass ちなみに、kdesudoにも同じ問題があります。たとえ同じスクリプトで1秒後でも、呼び出されるたびにパスワードが必要です。 Kubuntu 12.04 64ビットを使用しています。 以下は、ソリューションのすべての部分の完全に機能する例です。これは、bashスクリプト、ここで提案されている「myaskpass」スクリプト、および「.desktop」ファイルで構成されています。すべてが100%GUIである必要があります(端末の相互作用はまったくありません)。したがって、.desktopファイルは不可欠です(afaik)。 $ cat myaskpass.sh #!/bin/bash kdialog --password "Please enter your password: " exit 0 $ cat askpasstest1.desktop #!/usr/bin/env xdg-open [Desktop Entry] Comment=SUDO_ASKPASS tester1 Exec=bash …

2
bashスクリプトにunix / linuxユーザーを追加する方法
これが私のテストbashスクリプトです。それを機能させることができません。2つのエラーが表示されます。 Use of uninitialized value $answer in chop at /usr/sbin/adduser line 589. Use of uninitialized value $answer in pattern match (m//) at /usr/sbin/adduser line 590. これが私のスクリプトです: #!/bin/bash sudo adduser myuser << ENDX password password First Last Y ENDX exit 0 出力は次のとおりです。 me@mycomputer$ ./adduser.sh Adding user `myuser' ... Adding new group …
9 bash  useradd 

3
bashスクリプトによる設定ファイルの編集
私は、アプリケーションのインストールと設定ファイルの更新に使用する単純なbashスクリプトを作成しようとしています。設定ファイルを修正するのに苦労しています。 # DBHost=localhost DBName=test # DBPassword= 上記のように以下のように変更する方法はありますか? DBHost=localhost DBName=database DBPassword=password

2
ソースファイルの構文チェックでbashを停止するにはどうすればよいですか?
zshとbashの両方から供給されるファイルに次のコードがあります。 if test $SHELLNAME = zsh ; then lss() { l -l ${1:-.}/*(s,S,t); } laf() { l ${1:-.}/.*(.); } lad() { l -d ${1:-.}/.*(/); } lsw() { l -ld ${1:-.}/.*(R,W,X.^ND/); } fi SHELLNAMEあるzshシェルはzshのある場合とbashシェルはbashのであれば。 上記の各関数には、zshでは機能するがbashでは機能しないコードが含まれています。 このファイルを入手すると、次のエラーが表示されます。 bash: <filename>: line 67: syntax error near unexpected token `(' bash: <filename>: line 67: ` …
9 bash  zsh 

1
.bash_profileを家から移動する方法
.bash_profileDropboxと同期する必要があります。私が考えることができる最も簡単な方法.bash_profileは、カスタムフォルダーで検索するようにシェルを「リダイレクト」することです。 それは可能ですか?それとももっと良い解決策はありますか?

3
異なる行に同じデータを持つ2つのxmlファイルを比較する方法
2つのファイルのデータは同じですが、行が異なります。 ファイル1: <Identities> <Identity> <Id>048206031415072010Comcast.USR8JR</Id> <UID>ccp_test_79</UID> <DisplayName>JOSH CCP</DisplayName> <FirstName>JOSH</FirstName> <LastName>CCP</LastName> <Role>P</Role> <LoginStatus>C</LoginStatus> </Identity> <Identity> <Id>089612381523032011Comcast.USR1JR</Id> <UID>94701_account1</UID> <DisplayName>account1</DisplayName> <FirstName>account1</FirstName> <LastName>94701</LastName> <Role>S</Role> <LoginStatus>C</LoginStatus> </Identity> </Identities> ファイル2: <Identities> <Identity> <Id>089612381523032011Comcast.USR1JR</Id> <UID>94701_account1</UID> <DisplayName>account1</DisplayName> <FirstName>account1</FirstName> <LastName>94701</LastName> <Role>S</Role> <LoginStatus>C</LoginStatus> </Identity> <Identity> <Id>048206031415072010Comcast.USR8JR</Id> <UID>ccp_test_79</UID> <DisplayName>JOSH CCP</DisplayName> <FirstName>JOSH</FirstName> <LastName>CCP</LastName> <Role>P</Role> <LoginStatus>C</LoginStatus> </Identity> </Identities> diff file1 file2コマンドを使用すると、以下の応答が得られます。 1,10d0 < …

2
CD引数の大文字と小文字を区別しないようにするにはどうすればよいですか?
さまざまなディレクトリにアクセスしているときに、Linuxシステムのディレクトリの名前または少なくとも一部の名前を覚えていることがよくあります。ただし、一部のディレクトリの名前は、最初の文字が大文字か、大文字の名前の真ん中にある文字の1つで始まっています。 cdコマンドケースINSENSITIVEの後に引数を作成する方法を誰かが提案できますか。実行しcd BackupDirectoryたりcd backupdirectory、ディレクトリ名BackupDirectoryを入力したりできるようになります。 もちろん、私は他のユーザーのために物事を台無しにしたくないので、上記が可能であれば、変更は私が使用しているセッションにのみ適用され、他のユーザーには影響を与えない可能性はありますか? はい、試してみset completion-ignore-caseましたが、うまくいき ません。私が入力した場合、それはちょうどそれに役立ちますcd bし、TabあるいはEsc Esc、それはケースを無視して、ディレクトリ名を埋めます。しかし、私が必要なのは、を実行cd backupdirectoryした場合、ケースを無視BackupDirectoryして自分で入るだけです。

2
--text =“ $ @”が最初の単語のみを渡すのはなぜですか?
私のようないくつかの引数を指定して、次のスクリプトを実行するとarg1 arg2 arg3: #!/bin/bash zenity --entry --text="$@" zenityは、「arg1」というテキストで入力ダイアログを作成しますが、「arg1 arg2 arg3」が必要です。 次のスクリプトのような変数を使用すると、エントリテキストのすべての引数が表示されます。 #!/bin/bash text="$@" zenity --entry --text="$text" これらのスクリプトの違いは何ですか?なぜ最初のもの$@は最初の引数だけで置き換えられるのですか?
9 bash  shell  quoting 

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