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

Bash(Bourne-Again SHell)は、Ubuntuのコマンドラインインターフェースでデフォルトで使用されるシェルです。

2
「sudo -s」コマンドは何をしますか、またこの例ではどのように使用しますか?
以下の疑問があります。私がフォローしているソフトウェアのインストールに関連するチュートリアルでは、次のコマンドを実行する必要があると言っています(これはsshシェルで実行しているため、この手順のリストはexitコマンドで終わります)。 sudo -s apt-get update apt-get install -y build-essential libtool libcurl4-openssl-dev libncurses5-dev libudev-dev autoconf automake screen exit 私の疑問は: コマンドの-s後にパラメーターは正確に何をしますsudoか? ウェブで検索すると、次のことがわかりました。 ‑s [コマンド] ‑s(シェル)オプションは、SHELL環境変数で指定されているシェルが設定されている場合はそれを実行するか、パスワードデータベースで指定されているシェルを実行します。コマンドが指定されている場合は、シェルの‑cオプションを介して実行するためにコマンドがシェルに渡されます。コマンドが指定されていない場合、対話型シェルが実行されます sudo -sシェルの環境変数を使ってコマンドを実行しているようです。 しかし、これは私には明確ではありません:この場合、環境変数を使用して実行されるコマンドは何ですか?(それは実行されるだけで、は実行さsudo -sれませんsudo -s [command])。

1
利用可能なアップデートがあるかどうかを知る方法は?
12.04 LTS ubuntuサーバーを実行しています。そして、アップデートが利用可能になったときに通知を受けることができればいいと思います。しかし、私は知る方法を見つけることができません... apt-getmanページを見てみました。それからapt-get -s upgrade、質問をブロックせずにスクリプトでapt-get出力を取得するために使用できました。 今、私は違いがはっきりとわかります: 更新が利用可能です: apt-get -s upgrade Reading package lists... Done Building dependency tree Reading state information... Done The following packages will be upgraded: dpkg dpkg-dev libdpkg-perl 3 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. Inst dpkg [1.16.1.2ubuntu7.2] (1.16.1.2ubuntu7.3 Ubuntu:12.04/precise-updates [amd64]) Conf …
8 apt  updates  bash  php 

2
pwdに「〜kernel-ppa」という名前のフォルダーがすでにあるのに、cd〜k(&タブ)がcd〜kernoopsに展開するのはなぜですか?
~kernel-ppa内部にという名前のフォルダがあります~/Downloads。 aditya@aditya-desktop:~$ cd Downloads/ aditya@aditya-desktop:~/Downloads$ ls ~kernel-ppa 入力cd ~kしTabて自動拡張を押すと、同じ開始文字のフォルダーが既に存在しているcd ~kernoops/にもcd ~kernel-ppa/かかわらず、シェルはに拡張します。 自動拡張を機能させるには、でエスケープする必要があり\ます。したがって、使用cd \~kしてTab正しく押すと、に展開されcd \~kernel-ppa/ます。使用cd \して押すことでもTabうまくいきます。 なぜそうなのか、なぜ脱出する必要があるのですか?さらに、~自動拡張にさえ必要ないので、何をエスケープしていますか? フローを実行してcd ~kernoops/を押しEnter、を押すと、ターミナルのステータスが次のように変わります//。 aditya@aditya-desktop:~/Downloads$ cd ~kernoops/ aditya@aditya-desktop://$ pwd // aditya@aditya-desktop://$ ls bin cdrom etc initrd.img lost+found mnt proc run srv tmp var boot dev home lib media opt root sbin sys usr vmlinuz aditya@aditya-desktop://$ これは/ディレクトリのように見えますが、pwdそうです//。正確には何ですか?

1
!*のBash履歴キーボードショートカット
Bashには、最後のコマンドの一部を繰り返す便利な演算子がいくつかあります。 !^ 前のコマンドの最初の引数に展開します。たとえば、 $ echo one "two three" one two three $ echo !^ echo one one !$ 前のコマンドの最後の引数に展開します。たとえば、 $ echo one "two three" one two three $ echo !$ echo "two three" two three !* 前のコマンドのすべての引数に展開します。たとえば、 $ echo one "two three" one two three $ echo !* echo one …

3
シェルスクリプトでの文字列の評価
私はこのbashシェルスクリプトガイドに従っています: http://www.tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html 数値比較のセクションでは、例を挙げています。 anny > num=`wc -l work.txt` anny > echo $num 201 anny > if [ "$num" -gt "150" ] More input> then echo ; echo "you've worked hard enough for today." More input> echo ; fi 上記のように思われるのは、コマンドの文字列をbash変数に格納してから、変数に対してエコーを呼び出すことです。発生しているように見えるのは、文字列が評価されてwcコマンドが実行され、制御端末に行数が返されることです。 それでは、Ubuntu 12.04で端末を起動して、同様のことを試してみます。 $ touch sample.txt && echo "Hello World" > sample.txt …

2
contabを使用してbashスクリプトでScreenセッションを作成する
サーバーが起動するたびに.jarファイルを実行したいので(VPSを使用しています)、を使用してcrontabを編集しcrontab -e、を追加しました@reboot bash /home/bash/startserver.sh。しかし、スクリプトが機能するまでには至っていません。 これが私のスクリプトです: #!/bin/bash screen -S bukkit cd $HOME/server java -jar bukkit.jar 私が使用する必要がある理由screenは、bukkit.jarを開始すると、そのプログラムに追加のコマンドを入力できるコンソールに移動するためです(ただし、このサイトのMinecraftとそのサーバーについては、すべて知っているはずですが、 、笑)、しかし、実行中に他のコマンドをrootとして、また他のプログラムのために実行できる必要があり、さらにPuTTYセッションを閉じる必要もあります。 唯一の問題は、このスクリプトを実行するとスクリーンセッションが作成されますが、IDが空白であるため、IDがに表示されないことscreen -lsです。むしろ、私は/run/screen/S-rootIDを見つけるために行って、それから典型的なものscreen -X -S $name quitを使わなければなりません。 多分これは不可能であるかもしれません、または多分これを行う簡単な方法があります(私はもっと単純にしたいと思います)、しかしこれがなぜうまくいかないのか理解できません。そして、これが可能であるscreen -S bukkit場合、bashスクリプトを実行しているときにセッションに再参加することは可能ですか?(複数の質問だと思いますが、どうもありがとうございました!(括弧))

2
PIDの代わりに指定されたTCPポート番号を使用してキルするOnelinerコマンド?
私はしばしばします sudo netstat -lpn |grep :8088 出力を表示する tcp6 0 0 :::8088 :::* LISTEN 11189/java その後 sudo kill -kill 11189 killatport 8088変数としてtcpポート番号を使用し、パイプラインのエイリアスとして作成できる、より便利なコマンドが欲しいのですが、出力とパイプからPIDを取得するにはどうすればよいですか?キルコマンドに?私はawkを使用してnetstatからの出力からPIDを取得できると思いますが、入力80が8080と一致しないように、ポートを完全に一致させるにはどうすればよいですか?代わりにCプログラムにする必要がありますか?または、すでにこのような小さなユーティリティがありますか?

1
$ 0が-bashに設定されているのはなぜですか?
最初のログインプロセス名はに設定されているよう-bashですが、サブシェルの場合はになりbashます。例えば: root@nowere:~# echo $0 -bash root@nowere:~# bash root@nowere:~# echo $0 bash -bash 次のような一部のスクリプトが失敗します . /usr/share/debconf/confmodule exec /usr/share/debconf/frontend -bash Can't exec "-bash": No such file or directory at /usr/share/perl/5.14/IPC/Open3.pm line 186. open2: exec of -bash failed at /usr/share/perl5/Debconf/ConfModule.pm line 59 に$0設定されている理由を知っている人はい-bashますか?

1
Ubuntu 13.04でカスタムキーボードショートカットをbashスクリプトにリンクする方法
Ubuntu 13.04ユーザーとして、私はさまざまな問題とこの最新バージョンのUbuntuとの非互換性を私自身も持っていました。これらの1つは、いくつかのパッケージをインストールした後、明るさバーが「システム設定->明るさ&ロック」タブから突然消えたことです(パッケージの内容を本当に覚えていません)。回避策はxbacklightを使用することです。 私自身の練習として、ターミナルからxbacklightを使用して明るさを簡単に増減するために短いスクリプトを書きました。スクリプトは実行可能であり(実行権限があります)、. bashrcファイルの$ PATHに含まれているディレクトリであり、エイリアスにリンクされています(画面の明るさを上げるには「blup」、画面の明るさを下げるには「bldn」)。したがって、私の2つのエイリアス(blup / bldn)は、端末回線から完全に正常に動作します。次に、これらをいくつかのキーボードショートカット(たとえば、F2 / F3)にリンクします。「システム設定->キーボード->ショートカット->カスタムショートカット」で設定しましたが、機能しませんでした。 どうして? さらに、他の(非カスタム)キーボードショートカットコマンドが実行される場所と方法を「発見」する方法はありますか?たとえば、ボリュームアップショートカットは、それが実行する端末回線、接続されているエイリアス(存在する場合)、およびディレクトリ(/ usr / binなど)に配置されますか? スクリプト作成の初心者として、私はどんな種類の助けにも感謝します! ありがとう PS1もちろん、 'xbacklight -inc / -dec 10'コマンドをカスタムキーボードショートカットに貼り付けるだけで、問題なく動作します。機会をつかんで、スクリプトの作成と実行についてもう少し詳しく知りたいだけです。 PS2私の問題はこれと同じではありません。キーボードショートカットを使用してbashスクリプトを起動するにはどうすればよいですか?つまり、「/ home / user /」に「〜/」を使用しません。

3
最後の値を削除せずにpopdを使用する
popd実際にスタックから最後のディレクトリをポップせずに、使用の動作を取得するにはどうすればよいですか?言い換えれば、で設定した最後のディレクトリに戻りpushdたいのですが、スタックの一番上にとどまって、次popdは同じディレクトリに移動します(まだ一番上にあります)スタック)。

3
ユーザーがGUIのみを使用して(端末を非表示にして)bashスクリプトのパスワードを入力できるようにする適切な方法
ユーザーとの対話専用にkdialogを使用するbashスクリプトを作成しました。「.desktop」ファイルから起動されるため、ユーザーには端末が表示されません。それは100%GUIアプリのように見えます(それは単なるbashスクリプトですが)。KDEのみで実行されます(Kubuntu 12.04)。 私の唯一の問題は、パスワード入力を安全かつ便利に処理することです。満足のいく解決策が見つかりません。 このスクリプトは、通常のユーザーとして実行され、sudoコマンドが最初に必要になったときにパスワードを要求するように設計されています。このように、sudo権限を必要としないほとんどのコマンドは、通常のユーザーとして実行されます。何が起こるか(スクリプトがターミナルから実行される場合)は、ユーザーはパスワードの入力を1回求められ、デフォルトのsudoタイムアウトにより、ユーザーに再度プロンプトを表示せずに、追加のsudoコマンドを含めてスクリプトを終了できます。これは、GUIの背後で実行したときにも機能する方法です。 主な問題はkdesudo、標準のGUI方法である私のスクリプトの起動にを使用すると、スクリプト全体がrootユーザーによって実行されることです。そのため、ファイルの所有権はrootユーザーに割り当てられ、私は~/パスに依存することができず、他の多くのものは理想的とは言えません。rootユーザーとしてスクリプト全体を実行することは、非常に不十分なソリューションであり、悪い習慣だと思います。 rootとしてスクリプト全体を実行せずに、ユーザーがGUIを介して1回だけsudoパスワードを入力できるようにするためのアイデアに感謝します。ありがとう。
8 bash  scripts  sudo  gui  kde4 


4
ターミナルでスクリプトの前の行に戻る方法は?
スクリプトを作成しようとしていますが、ここで行き詰まっています。コードを見てください! aug@august:~/play$ for i in {1..100..4} > do > echo "august" > touch august $i+$2 > mkdir dir 前の行に行く方法はありますか?タイプミスがあったということtouch august $i+$2です。Ipressed ENTERキーので、私は新しい行のために行ってきました。どうすれば前の行に戻ることができますか?

5
nautilusがbashスクリプトにマウントされたパーティションを表示しないようにする
私のbashスクリプトでは、パーティションをマウントし、それらをチェックし、ファイルをそれらにコピーして、アンマウントします。スクリプトがパーティションをマウントすると、Nautilusがポップアップし、ウィンドウにパーティションが表示され、フォーカスが奪われます。これは避けたいものです。 注:システムの設定、詳細、リムーバブルメディアなどでこの動作を変更できることはわかっていますが、動作Never prompt or start programs on media insertionを変更したくありません。たとえば、USBスティックが接続されている場合は、bashスクリプトでそれを防止したいだけです。 。このスクリプトは他のユーザーのコンピューターで実行されるため、これらの設定を(スクリプトで)変更することはできません。異常終了した場合、変更された設定がそのまま残されるためです(これを行う必要もないと思います)。 実際、この自動表示は一貫していないようです。ターミナルからまったく同じコマンドを実行すると、Nautilusが表示されず、スクリプトに表示されない他のマウントがあることがわかります。これを引き起こす原因は何でしょうか?次にコードの例を示します(どちらも個別のnautilusウィンドウがポップアップする原因になります): mount $dev $target mkdir -p $target/home mount $homedev $target/home マウントがNautilusに信号を送るプロセスと、なぜこれが発生しているのか(ターミナルからパーティションをマウントしても通知されない場合)を理解することに興味があります。そして、これを防ぐための最良の方法は何ですか。 この動作はリリース11.10以降に気付きました(正しく思い出せば)。現在12.04を実行していますが、サポートされているすべてのリリースでスクリプトが機能する必要があります。私は、ソリューションがシステム設定の変更を含む必要があるとは思いません(リリース間で異なる場合があります)。たとえば、(os-proberのような)パーティションをマウントする他のものを見ると、異なるパーティションをマウントするときにポップアップするnautilusウィンドウはありません。 スクリプトはここにあります。そして、これはノーチラスがポップする部分です。ここにも表示されると思いますが、私は最初のリンクにテストを集中してきました。これは、他のマウントの前に呼び出され、ポップしない場所です-最初のマウントを--read-onlyとして、ifステートメント内で書き直したため、違いはありません。 理想的には、答えはこれが起こっている理由とそれを防ぐ方法を説明することです。言い換えれば、スクリプト内mountが端末から発行されたものとは異なる方法で扱われる理由を説明します。すべてのデスクトップ環境(ubuntu、kubuntu、xubuntu、lubuntuなど)をサポートできる、十分に説明された実用的なソリューションであれば、適切な回避策も受け入れられます。また、検証のためのテストの指数関数的な増加も避けたいです。 前もって感謝します ============ papashouのリンクによる解決策: add_udev_rules () { for i in "$dev" "$homedev" "$bootdev" "$usrdev"; do if [ -n "$i" ]; then block=${i#/dev/} echo "KERNEL==\"""$block""\",ENV{UDISKS_PRESENTATION_HIDE}=\"1\"" >> "$wubi_move_dir"/wubi_move.rules fi …
8 nautilus  bash 

1
autocdを使用してパスを変更した後、lsを自動的に実行します
したがって、ディレクトリを変更するたびに、新しいパスに自動的にが表示されるようにしlsます。パスを使用して変更された場合の解決策はありますがcd、autocdオプションを使用してパスが変更されたときに機能する解決策は見つかりませんでした。 とても便利でしょう、以前にそれを達成した人はいますか?
8 command-line  bash  ls  zsh 

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