Linuxの基礎コマンド

Linuxについて学習を行ったので、Linux及び基礎コマンドについてまとめました。

Linuxとは

歴史

リーナス・トーバルズが開発(のちにgitも開発)
Unixがベースとなっている。
Unixはもともと無料だったが、ライセンス契約が必要になった。
そこで、Unixを真似てLinuxを開発した。
Unixライクで無料、高機能なLinuxが全世界で普及した。

用途

サーバーや組み込み機等幅広く使用されている。

特徴

  • 誰でも自由に使える
  • 世界中で使われている
  • 自動化のしくみがあるため、サーバー運用がしやすい

欠点

  • MSOfficeが動作しない
  • マルチメディア系ファイル(画像、音楽等)を編集するのが苦手
  • 日本語対応されていない部分が多い

ディストリビューション

カーネルにいろんなソフトウェアを組み合わせて使いやすくしたもの
ディストリビューションは1000種類以上ある
それぞれ独自のコミュニティが開発している
Red Hat系、Debian系が主流

Red Hat

Linuxの基礎コマンド

cd

指定したディレクトリへ移動するコマンド
直接指定するほか、以下の書き方で移動先を指定することもできる

コマンド 操作
cd .. ディレクトリ(一つ上のディレクトリ)
cd ~ ホームディレクト
cd / ルートディレクト

pwd

カレントディレクトリ(現在自分がいるディレクトリ)を表示するコマンド

ls

ファイルやディレクトリの一覧を表示するコマンド 複数のディレクトリを指定することもできる

ワイルドカードによるパス名展開が可能

コマンド 操作
ls *.html 拡張子がhtmlのファイル一覧を表示
ls a???.html aから始まり、4文字で終わる拡張子がhtmlのファイル一覧を表示

オプション

オプション 操作
-l ファイルの詳細情報を表示する
-a 隠しファイルも含め、すべてのファイルを表示する
-F ファイル種別を表示する

mkdir

ディレクトリを作成する

オプション

オプション 操作
-p 深いディレクトリを一度に作成する

例 mkdir -p test/2023/06
test、2023を事前に作成していなくても一気に作成できる

rmdir

空のディレクトリを削除する
空でないディレクトリを削除しようとするとエラーになる(隠しファイルがある場合もエラー)

cat

ファイルの中身を表示するコマンド

オプション

オプション 操作
-n 行番号を表示する

less

ファイルの中身を表示するコマンド スクロールできる点がcatと異なる

キー 操作
space、f 一番下へ
b 一番上へ
j 一行上へ
k 一行上へ
q lessコマンドを終了
/文字列 下方向に向かって検索
?文字列 上方向に向かって検索
n 次の検索結果
N 前の検索結果

tail

ファイルの末尾10行を表示するコマンド

touch

空のファイルを作成するコマンド 存在するファイルの場合、上書きをしない

rm

ファイルを削除するコマンド ディレクトリを削除する場合は、-rをつける
ディレクトリを削除した場合、中身すべて削除される

オプション 操作
-r ディレクトリを削除する
-f 警告を表示しない
-f 削除前に確認する

mv

ファイルの移動、ファイル名を変更するコマンド

使い方

mv 移動元 移動先

移動先がファイル名

ファイル名を変更

移動先がディレクト

移動先にファイルを移動

cp

ファイルをコピーするコマンド コピー先のファイルが存在すると、上書きされる |オプション|操作| |---||---| |-i|上書き前に確認| |-r|ディレクトリをコピーする|

ln

ファイルにリンクをつけるコマンド
オプションを指定しない場合、ハードリンクになる。
-sをつけることで、シンボリックリンクになる。

ハードリンク

1つのファイルの実態に複数の名前を付ける
元ファイルを削除しても消えない

シンボリックリンク

リンク先のパス名が書かれた特殊なファイル
リンク先がファイルの実体
元ファイルを削除するとエラーになる(リンクが壊れる)

使用例

  • パスを省略したいとき
  • 複数バージョンを共存させ、最新を区別したいとき

find

ファイルを検索するコマンド

オプション 操作
-name ファイル名を指定して検索(ファイルの大文字、小文字を区別する)
-iname ファイル名を指定して検索(ファイルの大文字、小文字を区別しない)
-type f 通常ファイルで検索
-type l シンボリックリンクで検索
-type d ディレクトリで検索

chmod

ファイルやディレクトリのパーミッションを設定する
chmod[ugoa] [+-=] [rwx] ファイル名

指定 操作
u 所有者の権限を設定
g グループの権限を設定
o その他ユーザーの権限を設定
a 全ユーザーの権限を設定
+ 権限の追加
- 権限の削除
= 記述した権限に変更
r 読み取り権限
w 書き込み権限
x 実行権限

使用例

chmod u+r file
chmod 755 file
オーナー、グループ、その他の順で8進数での指定も可

chown

ファイル、ディレクトリの所有者を変更するコマンド

ps

実行中のプロセスを表示するコマンド

オプション 操作
aux 全ユーザーのプロセスを詳細情報を合わせて表示(-をつけない)

kill

ジョブやプロセスを終了させるコマンド

オプション 操作
-SIGKILL、-9 強制終了(最終手段)

使用例

ps auxでCPU、メモリの状態を確認する
重い処理をkillコマンドで終了する

終わりに

業務でLinuxを触った経験がなかったので良い勉強になりました。 Udemyの講座も非常にわかりやすかったので、初心者の方にお勧めです。

参考にしたUdemy講座 https://www.udemy.com/course/unscared_linux/

【初心者向け】vimの基本操作について

vimについて学んだため、vimの基本操作をまとめました。
これから初めてvimを使用される方、これから学ぼうと思っている方参考になればと思います。

vimって何?

Vim is a greatly improved version of the good old UNIX editor Vi. https://github.com/vim/vim#what-is-vimより

古くからあるエディタですが、多機能で動作が軽いエディタです。
また、linuxでは標準エディタになっています。

vimmervimを使う人のこと)という言葉ができるくらい愛されているテキストエディタです。

モードについて

個人的にここがvimの戸惑うポイントだと思います。
vimはファイルを開いた時点では入力ができず、入力するためのモードに切り替えてから入力します。
各モードについて紹介します。

Vimには以下4つのモードがあります。

この4つのモードを切り替えながら作業を行います。
各モードでは以下操作が可能です。

モード 詳細
ノーマルモード カーソル移動、ヤンク(コピー)、プット(貼り付け)、削除等が可能
インサートモード 文字入力等が可能
ビューモード 選択範囲のコピー、ペースト等が可能
コマンドモード ファイル保存、vimの終了等が可能

モード切替の際はノーマルモードにしてからモードを切り替える必要があります。
ファイルを編集して保存する場合は以下のようになります。

  1. vimでファイルを開く
  2. インサートモードに切り替える
  3. ファイルを編集する
  4. ノーマルモードに切り替える
  5. コマンドモードに切り替える
  6. ファイルを保存する
  7. vimを終了する

文字にすると長いですが、慣れればキーボードだけでファイルの編集ができます!

vimの操作

vimではモードによってできる操作が異なることを学びました。
各モードでできる操作について、キーと一緒に紹介します。

ノーマルモード

キー 操作
k
j
h
l
i インサートモードに切り替え
a インサートモードに切り替え(カーソルの次の文字から入力)
v ビューモードに切り替え
: or / コマンドモードに切り替え
x 1文字削除
dd 1行削除
dw 1単語削除
u 元に戻す windowsのCtrl+z
ctrl + r やり直し windowsのCtrl+y
yy 1行コピー
p カーソルの後ろにペースト
P カーソルの前にペースト
gg ファイルの先頭に移動
G ファイルの最後に移動

2x、3yyのように先頭に数字をつけることで複数文字、行を指定することも可能です。

インサートモード

キー 操作
esc ノーマルモードに切り替え

ビューモード

esc ノーマルモードに切り替え
y 選択範囲をコピー
d 選択範囲を削除
> 選択範囲を1タブ右へ移動
< 選択範囲を1タブ左へ移動

コマンドモード

キー 操作
esc ノーマルモードに切り替え
:w ファイル名 名前を付けて保存
:w 上書き保存
:q 終了
:q! 保存しないで終了
:wq 保存して終了
:set number 行番号を表示する
:10 10行目に移動
/test 「test」を検索
n 次の検索結果(検索中)
N 前の検索結果(検索中)
:%s/変換対象/変換後/g 変換対象を一括置換
:%s/変換対象/変換後/gc 1か所ずつ確認しながら置換

記載したものはあくまで一部です。
もっと知りたい方は以下公式ドキュメントからどうぞ!
公式ドキュメント

感想

この記事もvimを使って書いています!
正直慣れるまで大変なエディタだと思います。
初日は「なんだこのエディタは!?」と思っていました笑

少し操作に慣れてきてvimmerの方々の気持ちが少しずつわかってきました!
使いこなせれば強い味方になってくれると思います!

『プロになるためのWeb技術入門』を読んで

Webアプリケーション開発の学習にあたり本書を読みました。
「Webアプリケーションとは」から始まりWebの歴史、現在まで使われている技術を学ぶことができます。
Webの基礎について学ぶことができたため、学んだ内容をまとめます。

学んだこと

リクエス

情報を要求すること。

レスポンス

リクエストに対して情報を返すこと。

例:Google検索

  1. Webブラウザで検索ワードを入力し検索する。
  2. Webブラウザから検索ワードを含むページ情報を要求する。→リクエス
  3. サーバーでリクエストを受け取り、処理結果をWebブラウザに返す。→レスポンス
  4. Webブラウザに表示される。

プロトコル

通信を行う際の決まり事のこと。
RFCという文書で統一されている。
例:HTTP、SMTPFTP…等

ポート番号

0~65535まであり、サーバー側でリクエストを待つときに使用する番号のこと。
クライアント側はポート番号を指定してリクエストする必要があるが、プロトコルごとに標準で使用するポート番号があるため、ポート番号を意識しなくてもWebサイトにアクセスできる。
例:80番ポートを指定する場合は、URLやIPアドレスの後ろに「:80」をつける。

ステートフル

状態を持つ。 以前の情報が保存されている。 例:FTP

ステートレス

状態を持たない。 以前の情報が記録されていない。 例:HTTP

HTTPはステートレスのため、HTTPのみでは現在使われているWebアプリケーションのようにログイン状態をもつことができない。 そこでCookieという技術が誕生した。

ステートレスのHTTPで状態を持たせることができる。

  1. WebサーバーからWebブラウザへ情報を送る。
  2. WebブラウザCookieを受け取ったWebサーバーへCookieを送る。
  3. WebサーバーはCookieを見て誰がアクセスしてきたのか判断できる。

これによってHTTPでもログイン状態を持つことができる!Cookieすごい!

Netscape Navigatorを開発していたNetscape Communication社によって開発された。

終わりに

忘れている部分や知識不足の部分が多く、とても勉強になりました。 現在使われている技術がどのような経緯で作られたのかがわかり、読んでいて非常に面白かったです。
本書を読むことでざっくりとWebアプリケーション開発を理解することができるので、これからエンジニアを目指される方にもお勧めしたい本だなと思いました。
フレームワークを学ぶ前にこの本に出合い、どのような仕組みになっているのか少し理解することができてよかったと思います。

また、セキュリティ部分もとても面白かったです。
Webアプリケーション開発で重要な部分であるため、どのようなリスク、対策があるのかしっかり理解する必要があると思います。
別の記事でまとめてみたいと思います。

参考文献: 「プロになるためのWeb技術入門」 ――なぜ、あなたはWebシステムを開発できないのか | 小森 裕介 |本 | 通販 | Amazon