⚠️ 記事内に広告を含みます。

Linuxのシェル Bashのコマンドと使い方

bashの使い方

シェルとは?Linux標準のBash

文字入力でコンピュータに操作するのにシェルを使います。

代表的なシェルは「Bash」です

下の画像ではbashに「ping 192.168.0.1」というコマンドを入力しています。

ping on bash

ping on bash

キーボードのみ操作可能なシェルはOSの基本機能の一つです。

OSの仕組みオペレーティングシステムとは?簡単に

もう少し専門的な言い方をすると、シェルはOSの中核であるカーネルとユーザーからの入力の橋渡しをするインターフェイスです。

シェルはコマンドを打ち込む場所(コマンドプロンプト)を提供するプログラムと思って頂いて良いと思います。

LinuxではBashが標準のシェルになっています。

多くのLinuxディストリビューション(ubuntu, CentOS, Fedora)ではBashがデフォルトのシェルとして利用されています。

bashはブライアンフォックスによってGNUプロジェクトの一環としてBourne Shellの代替として開発されたフリーのシェルです。歴史が長く、多くのLinuxディストリビューションはGNUプロジェクトのプログラムを多数利用していることもあり、Bashの採用率は高いです。ユーザー側としてもどのマシンでも利用できるBashを利用するメリットがあります。

他にも様々なシェルがあり、代表的なものにはzshがあります。

UNIX・Linuxシェルの歴史

  • 1971年  Thompson Shell
  • 1977年  Bourne Shell (sh)
  • 1978年  C Shell
  • 1983年  Korn Shell
  • 1989年  Bash
  • 1990年  zsh

LinuxをマスターするにはBashをうまく使いこなす必要があるといえるでしょう。

Bashの動き

Bashはユーザーとカーネルをつなぐ架け橋と言いました。それでは具体的にBashがどのような働きをしているのか、順序を追ってみていきます。

  1. ユーザーのコマンドを受け付ける
  2. コマンドを解析・翻訳してカーネルに伝える
  3. カーネルが実行
  4. Bashは実行結果を受け取ってコマンドプロンプト上に表示する

というのが一連の流れです。

Bashの内部コマンドと外部コマンド

Bashには内部コマンド(組込みコマンド)と外部コマンドの二種類があります。

内部コマンドはBash自身が持っているコマンドで外部のファイルなどを参照したりしません。組み込まれたコマンドであるため、シェルによってコマンドの有無や挙動の違いが生じる可能性があります。

外部コマンドは別のソフトウェアです。外部コマンドどのシェルからでも利用できるメリットがあります(独立したソフトウェアなので導入してれば)。

内部・外部コマンドの違いがコマンドの挙動の違い(オプション指定)にも影響しています。

内部コマンドか外部コマンドかを調べる方法

調べる方法としては「type」コマンドを使います。

type 「コマンド」例: type less

と打ちこんで「シェル組み込み関数です」などと表示される場合はbashの内部コマンド・組み込み関数です。

一方「/user/bin/~」と表示される場合は外部コマンドになります。

Bashを使っているときに便利なコマンドや情報

コマンドの左端に表示される$や#,>の意味

bashのコマンド入力待ちの画面には$や#が出ているはずです。この記号にも意味があります。

#は管理者(root)を意味します。rootでログインしている時は#になっているはずです。

$は一般ユーザーです。

コマンドによっては管理者でないと実行できないものがたくさんあります。そういったコマンドの場合は明示的に

# useradd newuser

などのように記載することがあります。

コマンド補完機能 (Tabキー)

コマンドやディレクトリ、ファイルを入力している際に(Tab)キーを押すと正しいコマンドに補完される機能があります。

bashのコマンド入力履歴を見る historyコマンド

histroyコマンドは前にどんなコマンドを打ったか?というのを知ることができるコマンドです。

画面消去コマンド clear Ctrl+l

画面上のコマンドを消去するコマンドにはclearとCtrl+lがあります。

ターミナルのショートカット

ターミナルはショートカットキー[Ctrl+Alt+T]で起動できる。ディストリビューションによって異なる。CentOSでは設定が必要

コマンドプロンプト上でページを送る

Shift + Page UPでページを上に送る、Shift + Page Down ページを下に送る

GUIとCUIの切り替え ttyの切り替え

GUI環境からCUI環境に移るときはCtrl + Alt + F2を押すと仮想コンソールを切り替えてCUI環境に移れます。逆にGUIに戻るときはAlt+F1(1~7)で戻ることができます。

複数の行にわたって入力

bash入力時に長いコマンドで一行に収まりきらない場合は途中でバックスラッシュ\を入れると改行して入力できます。

# ls -al /usr/local/bin/test1test2test3test4test5/test1/test2\

>/test1/test.txt

コマンドを連続実行 「;」

ls -al ; pwd ; cd ~

のように「;」で挟むことによってコマンドを連続実行できます。

終了や停止キー(q, Ctrl+C, Ctrl+Z)

画面表示が切り替わるlessなどのコマンドは「q」キーを押すと終了することができます。

またそれ以外にも「Ctrl+C」はフォアグラウンドで起動しているプロセスを終了するシグナル「SIGINT」を送ります。

「Ctrl+Z」はフォアグラウンドで起動しているプロセスを一時停止するシグナル「SIGTSTP」を送ります。

プロセス終了が効かない場合はkillコマンド(kill -9 プロセスID)で消せます。

Bashでよく使うコマンド一覧

コマンド 用途
pwd (print working directory) pwd カレントディレクトリを表示するコマンド
man (online refference manual) man (コマンド) オンラインのコマンドを閲覧
ls (list directroy contents) ls (file / dir) ディレクトリやファイルを確認するコマンド、モード表示などもできる
cd (change directory) cd (file / dir) Dirを変更できる
mv mv(元File/Dir) (先のFile/Dir) 移動、名前の書きかえ
rm rm (File/Dir)、 -r (中身あるDir) ファイルやディレクトリの削除
cp cp (元File/Dir) (先のFile/Dir) コピー
mkdir mkdir (Dirパス) ディレクトリ作成
rmdir rmdir (Dirパス) ディレクトリ削除
chmod chmod (パーミッションの内容)(File) モードの変更
cat cat (file) File内容の表示
less less (file) テキストをスクロール閲覧できる
head head (file) 最初10行を表示
tail tail (file) 最終10行を表示
touch touch (file) 空ファイル作成・timestanp変更
gzip gzip (file) 圧縮
tar tar 書庫作成
ln -s ln -s シンボリックリンク作成
vi (file) vi (file) viエディタ
ps ps aux プロセス表示
top top リアルタイムプロセス表示
service サービスの起動(CentOS7はsystemctl)
jobs jobs ジョブの表示
kill kill  -9 (PID) プロセスの終了
su su スーパーユーザー切り替え
who who ログインユーザーの表示
useradd useradd (user) ユーザー追加
userdel userdel (user) ユーザーの消去
groupadd groupadd (group) グループの追加
groupdel groupdel (group) グループの消去
usermod usermod -G (group) (user) ユーザーへのグループの追加
echo echo (文字) 画面出力
mount マウント
startx startx xwindowシステム(GUI)を立ちあげる
shutdown shutdown -h(電源を切る)-r(再起動) -c (キャンセル) シャットダウン
lsblk ブロックデバイスの表示
df df ディスク空き容量表示
batch 指定時刻に実行
comm 2つのテキストに共通する行を出力
cmp 2つテキストを1バイトずつ比較
which which (コマンド) コマンドのパスを表示
grep ファイル中の文字列を検索
clear clear コマンドプロンプト画面の消去
find ファイルやディレクトリの検索



Bashの文法・決まりごと

コメント

 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です