サーチ…


前書き

シェルはプロンプトに応答してプログラムを実行します。コマンドを実行すると、シェルはプログラムを検索して実行します。たとえば、コマンドlsを実行すると、シェルはlsというユーティリティー/プログラムを検索し、シェルでそれを実行します。ユーティリティーで提供する引数とオプションは、取得した結果に影響を与える可能性があります。シェルはCLIまたはコマンドラインインターフェイスとも呼ばれます。

デフォルトシェルの変更

最新のディストリビューションには、BASH( B ourne A gain SH ell)がプリインストールされ、デフォルトシェルとして設定されています。

Linuxのシェルを変更するコマンド(実際には実行可能なバイナリ、ELF)はchshch ange sh ell)です。

まず、 chsh -lコマンドを使用して、どのシェルがすでにマシンにインストールされ、構成されているかを調べることができます。これにより、次のような結果が出力されます。

[user@localhost ~]$ chsh -l
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/usr/bin/fish

いくつかのLinuxディストリビューションでは、 chsh -lは無効です。この場合、使用可能なすべてのシェルのリストは/ etc / shellsファイルにあります。 catファイルの内容を表示することができます:

[user@localhost ~]$ cat /etc/shells
# /etc/shells: valid login shells
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/usr/bin/fish

これで新しいデフォルトシェル( fishなど)を選択し、 chsh -sを使って設定することができます。

[user@localhost ~]$ chsh -s /usr/bin/fish
Changing shell for user.
Password: 
Shell changed.

今や残っていることは、ログオフ・ログオン・サイクルを実行し、新しいデフォルト・シェルを楽しむことです。

別のユーザーのデフォルトシェルを変更したい場合、マシンに対して管理権限を持っている場合は、 rootとしてchshを使用してこれを実行できます。したがって、 user_2のデフォルトのシェルをfishに変更したいと仮定すると、前と同じコマンドを使用しますが、他のユーザーのユーザー名であるchsh -s /usr/bin/fish user_2ます。

現在のデフォルトシェルが何であるかを調べるために、デフォルトシェルへのパスを指し示す$SHELL環境変数を見ることができるので、変更後、これと同様の結果が得られることが期待されます。

 ~  echo $SHELL                                 
/usr/bin/fish

chshオプション:

-s shell

シェルをログインシェルとして設定します。

-l 、-- --list-shells

/ etc / shellsにリストされているシェルのリストを表示して終了します。

-h 、-- --help

使用法のメッセージを印刷して終了します。

-v 、-- --version

バージョン情報を出力して終了します。

基本シェルユーティリティ


シェルプロンプトのカスタマイズ

デフォルトのコマンドプロンプトは、異なって見えるように変更することができます。現在のディレクトリが長い場合、デフォルトのコマンドプロンプトが大きくなりすぎます。これらの場合、 PS1を使用すると便利になります。きれいでエレガントな短いカスタマイズされたコマンド。下記の表では、さまざまな形式のシェルプロンプトを表示するためにいくつかの引数とともにPS1が使用されています。デフォルトのコマンドプロンプトは次のようになります: user@host ~ $ bruce@gotham ~ $私の場合、これは次のようになります: bruce@gotham ~ $ 。それは以下の表に従って変更することができます:

コマンドユーティリティ
PS1 = '\ w $' ディレクトリ名として~ $ shellプロンプト。この場合、ルートディレクトリはルートです。
PS1 = '\ h $' ホスト名としてgotham $シェルプロンプト
PS1 = '\ u $' ユーザー名としてbruce $ shellプロンプト
PS1 = '\ t $' 22:37:31 $シェル形式の24時間形式のプロンプト
PS1 = '@ $' 10:37 PMシェルプロンプト(12時間形式)
PS1 = '! $ ' 732は、シェルプロンプトの代わりにコマンドの履歴番号を表示します
PS1 = 'おやすみ$' dude $あなたが好きなように促しシェルが表示されます

いくつかの基本的なシェルコマンド

コマンドユーティリティ
Ctrl-k カット/キル
Ctrl-y ヤンク/ペースト
Ctrl-a 行の先頭にカーソルを移動します
Ctrl-e 行末にカーソルが移動します
Ctrl-d カーソルの後ろ/にある文字を削除します
Ctrl-l 画面/端末をクリアする
Ctrl-u プロンプトとカーソルの間のすべてをクリアします
Ctrl-_ コマンドラインで最後に入力したものを取り消します
Ctrl-c フォアグラウンドで実行中のジョブ/プロセスを中断/停止する
Ctrl-r 歴史の逆の検索
~/.bash_history シェルで使用された最後の500個のコマンド/イベントを格納します。
history コマンド履歴を表示します
history | grep <key-word> キーワード<key-word>を持つ履歴内のすべてのコマンドを表示します(過去に使用されたコマンドの一部を覚えている場合に便利です)

独自のコマンドエイリアスを作成する

bashで長いコマンドを使用することに飽きた場合は、独自のコマンドエイリアスを作成することができます。

これを行う最善の方法は、ホームフォルダに.bash_aliasesというファイルを変更する(存在しない場合は作成する)ことです。一般的な構文は次のとおりです。

alias command_alias='actual_command'

ここでactual_commandは名前を変更するコマンドで、 command_aliasは与えられた新しい名前です。例えば

alias install='sudo apt-get -y install'

新しいコマンドエイリアスのinstallを実際のコマンドsudo apt-get -y installマップします。つまり、ターミナルでinstallを使用すると、これはbashによってsudo apt-get -y installと解釈されます。

あなたのシステム上でファイルを探す

bashを使うと、 locateコマンドでファイルを簡単に見つけることができます。たとえば、ファイルmykey.pemを探しているとします。

locate mykey.pem

ファイルに奇妙な名前が付いていることがあります。たとえば、 random7897_mykey_0fidw.pemようなファイルがあるかもしれません。このファイルを探していて、mykeyとpemの部分だけを覚えているとします。次のようなパイプを使ってlocateコマンドをgrepと組み合わせることができlocate

locate pem | grep mykey

これらの両方を含むすべての結果をもたらすだろう。

すべてのシステムにlocateユーティリティがインストールされているわけではなく、多くのユーティリティではlocateユーティリティが有効になっていないことに注意してください。 locateはシステムを定期的にスキャンし、その上にあるすべてのファイルの名前と場所をキャッシュするため、高速かつ効率的ですが、そのデータ収集が有効になっていないと何も教えてくれません。ファイルシステム上のファイルに関するキャッシュされた情報を更新するために、手動でファイルシステムのスキャンを開始するためにupdatedbを使用することができます。

作業用のlocateがない場合は、 findユーティリティに戻ってください。

find / -name mykey.pem -print

locate mykey.pemとほぼ同じですが、キャッシュされたデータを使用するのではなく、問題のファイルに対してファイルシステムを実行するたびにファイルシステムをスキャンするlocate mykey.pemがあります。これは明らかに遅く、効率は低くなりますが、よりリアルタイムです。 findユーティリティはファイルの検索よりもはるかに機能しますが、その機能の詳細な説明はこの例の範囲外です。



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow