Linuxの基礎コマンドをまとめていく

今回Linuxについて学んだので、基礎コマンドをまとめていきます。

Linuxではフォルダのことをディレクトと呼ぶようですが同じ意味です。

cd - ディレクトリの移動

<例>
$ cd Desktop 

カレントリディレクトリ:.
ディレクトリ:..
ホームディレクトリ:~
ルートディレクトリ:/

<補足>

カレントディレクトリ:今現在作業しているディレクトリのこと。
ディレクトリ:1つ上のディレクトリ。
ホームディレクトリ:ユーザーがログインしてた時の最初のディレクトリで、ここからデスクトップなどにいける。
ルートディレクトリ:コンピューターシステムの最上位のディレクトリで、システムが持つ最初のディレクトリ。

pwd - 今現在のディレクトリの場所を表示

<例>
$ pwd

ls - ディレクトリの中身を表示

<例>
$ ls

今いるディレクトリの中身を表示してくれます。

mkdir - ディレクトリの作成

<例>
$ mkdir hoge

hogeというディレクトリが作成されます。

rmdir - ディレクトリの削除

<例>
$ rmdir hoge

hogeというディレクトリが削除されます。
※中に隠しファイルを含め、ファイルが残っているとエラーが出力されます。
中身が残っている状態で消したい場合は次に出てくるrmコマンドで削除するとよいです。

rm - ファイルを削除する

rmコマンドはオプションを併用して使用することができます。

<基本構文>
rm [オプション] <削除するファイル名>
<例>
$ rm hoge.txt

よく使うオプション

-r : ディレクトリ内にファイルが残っていても削除する。
-f : ファイルを削除する際に警告文を表示しない。
-i : ファイルの削除前に確認をする。

cat - ファイルの中身を表示する

<基本構文>
$ cat [オプション] <ファイル名>
<例>
$ cat /etc/hosts

よく使うオプション

-n : 行番号を表示

less - ファイルの中身を表示する

膨大な量が表示されているとき一画面に収まらないときなどに使用する。

<基本構文>
less [オプション] <ファイル名>
<使用例>
$ less /etc/vimrc
  • スクロール画面での操作方法は
    スペース or f : 一画面下にスクロール
    b : 一画面上にスクロール
    j : 1行下にスクロール
    k : 1行上にスクロール
    q : lessコマンド終了

  • lessコマンド内でファイルを検索する
    /<文字列> : 下方向に向かって検索
    ?<文字列> : 上方向に向かって検索
    n : 次の検索結果に移動
    N : 前の検索結果に移動

tail - 最終行から数行表示する

$ tail <ファイル名> <ファイル名2>
# 複数ファイルを指定する時は半角スペースで指定できる。

特にオプション指定をしなかった場合、ファイルの最後から10行表示される。

オプションについて

-c : 出力する文字数を指定する。
-n : 出力する行数を指定する。
-q : ファイル名を表示しない。
・複数ファイルを指定した場合、ファイル名が上に表示されるのを表示させないオプションである。
-v : ファイル名を常に表示する。
・単体ファイル指定だとファイル名が表示されないので表示させたいときはこのオプションを使う。
-f : ファイルの追記を監視する。

touch - 空のファイルを作成する

<基本構文>
touch <新規ファイル名1> <新規ファイル名2>

半角スペースをあけて複数ファイルを作成することができます。
また、作成するディレクトリに同じファイル名が存在するときはタイムスタンプが更新されます。

mv - ファイルの移動、ファイル名の変更

<基本構文>
mv [オプション]<移動元> <移動先>
<例>
# dirというディレクトリと、fileを作成します。
$ mkdir dir
$ touch file 

# ファイル名を変更(file → file1)
$ mv file file1

# ファイルを移動(fileをdirディレクトリの中へ移動)
$ mv file1 dir/

# 1つ上の階層へ移動する
$ mv file1 ../dir

cp - ファイル・ディレクトリをコピー

<基本構文>
cp [オプション] <コピー元> <コピー先>
<例>
# fileという名前のファイルをnew_fileという名前でコピーする
$ cp file new_file

# ファイルをディレクトリ内にコピー
$ cp file dir

よく使うオプション

-i : 上書きする前に確認をする。

$ cp -i file new_file

-r : ディレクトリコピーする。
※-rオプションを使用しないとエラーが出る。

$ cp -r dir new_dir

ln - リンクを貼る

  • ハードリンク
    1つのファイルに対して複数の名前をつけることができる。
  • シンボリックリンク
    あるファイルを参照する形でリンクをつけるので、元ファイルが削除されるとファイルを参照することができなくなる。
<基本構文>
$ ln [オプション] <リンク元> <リンク名>
# オプションを使用しないとハードリンクになる。

-s : シンボリックリンクを張る。

$ ln -s file1 file2

find - ファイルを検索する

<基本構文>
$ find <検索開始ディレクトリ> <検索条件> <アクション>
$ find        <.>    <-name README.md> <-print>
<例>
$ find . -name README.md -print

.がカレントディレクトリを指すので、オプション-nameでREADME.mdというファイルを探して-printでパスを表示してくださいという意味になります。

オプションについて

-name : ファイル名を指定してファイルを検索。ファイル名の大文字小文字は区別します。
*(ワイルドカード) = 任意の文字列に一致します。
? = 任意の1文字に一致します。

# シングルコーテーション(')で囲う必要があります。
$ find . -name '*.html' -print
(.htmlというファイルを探してパスを表示します。)

-iname : ファイル名を指定してファイルを検索。ファイル名の大文字小文字は区別しない。
-type : ファイルの種別で検索

# -type f は通常ファイル
$ find . -type f -print

# -type l はシンボリックリンク
$ find . -type l -print

# -type d はディレクトリ
$ find . -type d -print

chmod - ファイルやディレクトリのパーミッションを設定する

パーミッションとは?

ユーザーに対して権限が与えられており、誰でもファイルを編集したりすることができるわけではありません。中にはシステムの根幹に関わる大切なファイルを間違って削除してしまわないように、ユーザーに対して制限をかけています。

<基本構文>
chmod [ugoa] [+-=] [rwx] <ファイル名>

ここでの記号について以下表にまとめました。

記号 内容 記号 内容 記号 内容
u 所有者の権限 + 権限を追加 r 読み取り専用
g グループの権限 - 権限を削除 w 書き込み専用
o その他のユーザーの権限 = 記述した権限にする x 実行
a 前ユーザーの権限
<例>
$ chmod u+r file
# fileに対して所有者の読み取り権限を追加

chown - ファイルの所有者やグループを変更する

chown [オプション] ユーザー[:グループ] ファイル名
# ユーザー所有者とグループ所有者を変更
$ chown root:root file

# ユーザー所有権のみ変更
$ chown root file

ファイルやディレクトリの所有者やグループを変更できるコマンドです。 所有者とグループを同時に変更する場合はコロンで繋げる。

オプションについて

-c : 所有権が変更された場合、詳細を表示する。
-f : エラーメッセージを表示しない。
-h : 指定したファイルがシンボリックリンクの場合、シンボリックリンクのみ所有権を変更する。
-R : 指定したディレクトリとそのディレクトリ以下のファイルの所有権を再起的に変更する。
-v : 所有者変更の詳細を表示する。

ps - プロセスを表示する

プロセスとは実行中のプログラムのことを指します。コマンドを実行すると実行ファイルをメモリに格納してメモリ上でCPUがプログラムを実行します。

<基本構文>
$ ps [オプション]
<例>
$ ps
PID   TTY    TIME   CMD
39   pts/0 00:00:00 ps
1390 pts/0 00:00:00 bash

この1行ずつがプロセスであり、PIDがプロセスIDを指し、CMDが実行中のコマンドです。

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

kill [オプション] %<ジョブID>
kill [オプション] <プロセスID>
<例>
$ kill %1
$ kill 4559

画面上で動いている(フォアグラウンド)処理や、バックグラウンドで動いている処理などを終了させることができる。

終わりに

基礎コマンドでもたくさんありました。このほかにもありますし、組み合わせて実行となるとまだまだ覚えることは多いですが、引き続き学習を進めていきたいと思います。

初学者向けにvimとは、コマンドを種類別にまとめてみた

Vimのコマンドをまとめていく

今回はvimについて学習をしました。vimとはエディターの一つで主にサーバー側でよく使用されるエディタのようです。

マウスを使わずコマンド操作のみで移動や選択などできるので慣れてしまえば作業効率がアップします。

しかし少し勉強しただけでもたくさんのコマンドがあり、段階を追ってコマンドを覚えていく必要があるので、ここでは「削除で便利なコマンドなんだっけ」とか「移動するときどうやるんだっけ」というときに振り返って思い出せるように操作の種類に分けてコマンドをまとめたいと思います。

ノーマルモード、INSERTモード

パソコンを使っていてよくあるのがなぜかいきなり文字が上書きされていつものように入力できない!ってことありませんか? パソコンには上書きモードというのがあって、キーボードの種類によってINSERTというボタンがありそのボタンを押すことによって、上書きモードになってしまい、文字を打ちたいのに消えていく!!ってことがあるあるだと思います。

vimにおいてはノーマルモードとINSERTモードの切り替えで操作が変わるので覚えておきましょう。

キーボード左上にescキーがあると思いますが、それを押すとノーマルモードとなり、移動やコマンド入力ができます。

後に出てくるINSERTモードのキーを押すと文字の入力ができます。 困ったらescボタンを押しましょう。

vimtutorの起動と終了

ターミナルでvimtutorと入力するとvimの操作方法について学べます。
:q! : 変更を保存せずに終了
:wq : 変更を保存して終了

カーソルの移動

基本的な移動方法はこちらです。
k : 上
j : 下
h : 左
l : 右

単語数を指定して飛ぶ

⚪︎w : 指定した数字の単語文移動する(指定方法2w,4wなど)
⚪︎e : 指定した数字の単語の終端へ飛ぶ
^ or 0(ゼロ) : 行頭へ飛ぶ
$ : 行末へ飛ぶ

文字の削除・貼り付け

x : ノーマルモードの時に文字を削除する(ノーマルモード時バックスペースは左に移動する)
dw : 単語末尾まで削除
   今日はいい天気です。だと"今日"という文字が削除される。
   またスペースがあるとスペースまで削除になる。
d⚪︎w : 丸の部分に数値をいれることによって指定した単語数削除できる
de : 空白も含め単語全部消える。
d$ : カーソルの位置から行末まで削除される
dd : 1行切り取る
⚪︎dd : 指定した行削除する(行がなくなるので下の行が上に上がってくる)
D : カーソルから行の右にある文字を消す(行は消えない)
p : カーソルの位置に貼り付ける
ce : 単語の末まで削除しINSERTモードに入る
cc : 行末まで削除しINSERTモードに入る
c⚪︎w : ⚪︎(数値)単語消す
c⚪︎$ : ⚪︎(数値)行消す
v + d : vで範囲を選択しdで削除

文字の挿入

i : カーソルで選択している文字の前に文字が入る。
a : カーソルで選択している文字の後に文字が入る。
A : 行末に移動しINSERTモードになる。
r : rを打ってから修正したい文字を入力するとその箇所だけ入れ替わる。
o : カーソルの下の行に移動し、INSERTモードになる。
O : カーソルの上の行に移動し、INSERTモードになる。

やり直しコマンド

u : 最後に実行したコマンドを戻す 。 U : その行のコマンド取り消し
control + R : 取り消しの取り消し

指定した行へ飛ぶ

control + g : 現在の位置が下に表示される
G : ページ最下部へ飛ぶ
gg : ページ最上部へ飛ぶ
⚪︎G : (指定した行)とGを押すとその行へ飛ぶ

コピー&ペースト

y : コピー(yankの略で引っ張るという意味)
p : ペースト(putの略で置く)
yw : 1単語をコピー
yy : 1行コピー

検索

/ + 検索したい文字 : 末尾に向かって検索
? + 検索したい文字 : 先頭に向かって検索
n : 同じ語句を末尾に向かって検索
N : 同じ語句を先頭に向かって検索
% : ), ], } など対になるカッコを見つけ出す
:nohlsearch : ヒットした検索ワードの強調をリセットする

  • オプション機能
    :set + noic : オプション機能を無効にする
    :set + ic or ignorecase : 検索時の大文字小文字を区別しない
    :set + is or incsearch : 検索フレーズに部分マッチしている箇所を表示する
    :set + :hls or hlsearch : マッチする全てを強調表示する

置換

変更前で変更したい文字を入力し、変更後の文字に一括で変更してくれる便利な機能です。

:s/変更前/変更後/g : 行で見つかった文字を置換する
:#,#s/変更前/変更後/g : 指定した行内で該当の文字を置換する(#には行番号を指定)
:%s/変更前/変更後/g : ファイル全体で該当する文字を置換
%s/変更前/変更後gc : ファイル全体で該当する文字を1つずつ置換
R : 選択カーソルの一から文字を上書き置換してくれる

外部コマンドの実行

:! + ls : :!に続いてコマンドを入力すると外部シェルコマンドが実行できる。
(例::!lsディレクトリの一覧表示)

現在のファイルを保存・削除

:w + ファイル名 : ファイル全体を名前をつけて保存
:!rm + ファイル名 : 指定したファイルを削除

選択した行をファイルに書き出す

v 文字を選択できるようになる
: を押すと:<,'>と表示される w+ファイル名`で選択した行をファイルに保存する

ファイルを取り込む

:r + ファイル名 :ファイルを読み込む

ヘルプコマンドの起動

困った時に英語ですがvimの操作方法を表示してくれるコマンドです。
F1 or :help : ヘルコマンド起動
control + W : ヘルプウィンドウへジャンプする
:q + ENTER : ヘルプウィンドウを閉じる
help' +検索したワード` : 引数を与えることによってヘルプの中の検索したいワードへ飛ぶ

終わりに

使用すると便利なコマンドをまとめてみました。まだまだコマンドはありますし、使っているうちにもう少し便利なショートカットはないのかな?とかで徐々に覚えていく程度でいい気がします。

Webの基本についてまとてみました

WEBの基本ついて

幼少期からインターネットを通してパソコンでゲームをしていましたが、プログラミングの勉強をするまで仕組みのことは全然わかりませんでした。

IT業界を目指す上で必要な土台となる知識としてどういう原理でインターネットが動いているのかなど勉強しましたので、簡単にですがまとめてみました。

HTTP(ステートレス)について

みなさんがよく使うアプリケーションでログイン機能というのはよく目にすると思います。 何かショッピングサイトで商品を買う時に会員登録をし、ログインすることによって過去何を買ったのか情報が残ったりすると思います。

この裏側ではコンピューターが様々な処理を行っています。

HTTPという言葉はどこかで聞いたり見たりしていることかと思います。 ブラウザの上にあるアドレスバーの一番左側はhttp〜と書かれていると思います。

このhttpはパソコンからサーバーに情報をください!とお願いをするときの通信規格(プロトコル)のことを言います。

FTP(ステートフル)について

ショッピングサイトなどで買い物かごに購入した商品を入れることがあると思います。

ユーザーが操作した情報を保持しておくことができるのが、このステートフルの役割で、そのプロトコル(通信規格)の一つとしてFTPというのがあります。

リクエス

リクエストとは、クライアント(一般の方)ユーザーがサーバーに対してブラウザを表示してほしいときに送るのがリクエストです。

ニュース記事を見たくてタイトルをクリックしたときにコンピュータの世界では、「このページを表示してちょうだい!」とリクエスト(要求)を行っているわけです。

レスポンス

クライアントからリクエストが送られてきたらサーバー側はどのページかを探してその結果をクライアントへレスポンス(返事)を返します。

クッキー(Cookei)とは

Webサイトにアクセスしたときなどに「続行するにはCookeiをonにしてください」などと表示されたことはありませんか?

WebアプリとWebブラウザ間で情報交換をできるようにした技術です。 PCの中にサイトの訪問日時や、訪問回数など様々な内容が記録されており、同じサイトにリクエストを送った時にサーバー側に今までこれだけ訪問しているよ!という情報を渡します。 そうすることによって再びサイトを訪れた時に前の情報が残ったままになっています。

また違うサイトにアクセスする際はサーバーにCookie情報を送らないので、情報が漏れることはありません。

ポート番号とは

コンピューター同士が通信する際に使う通信用のドアのようものです。 IPアドレスが住所に該当するとしたら、ポート番号はマンション名と部屋番号のようなものです。

ポートの数は65536個もあり3つの区分があります。 - ウェルノウンポート - 0~1023 - ダイナミックポート(動的ポート) - 49152~65535 - クライアントが利用し、アプリや接続ごとに番号が動的に変わる

基本的には使用するポートは決められています。

ポート番号 プロトコル
20,21 FTP(ファイル転送)
22 SSH(暗号化されたリモートコンピュータとの汎用通信)
23 Telnet(リモートコンピュータとの汎用通信)
25 SMTP(メール送信)
53 DNS(ホスト名解決)
80 HTTP(Web接続)
110 POP3(メール受信)
443 HTTPSSSLされたHTTP通信)

終わりに

いろいろ書いてみましたが、Webの技術はかなり深く大雑把にしか捉えられていませんが、日を追うごとに理解を深めたいと思います。

初投稿

自己紹介

はじめまして、私は未経験からエンジニアを目指しているしゅうと申します。
ブログ初投稿になりますので、簡単な自己紹介をさせてください。

経歴

中学生までは野球少年でしたが高校からは音楽に目覚め、音楽の専門学校に通い卒業後はプロミュージシャンとして活動しました。5年ほど活動しましたが、車関係の仕事がしたく観光バスのドライバーの仕事に転職しました。


しかしながら、コロナ禍がきっかけで人生を見直すことになり、手に職つけて今後はキャリアを積み上げていきたいと考えた時に、ITをやっている兄からの勧めでIT業界を目指すことにしました。

スクール

幼少期からゲームが好きで中学生の頃はオンラインゲーム(メイプルストーリー)で遊んでいたのもあり、プログラマーを目指してスクールに通いました。

サイト制作のスクールとJAVAのスクールに通いましたが、そこで感じたのは画面に動きをつけるフロントの作業もとても面白いし、プログラミングも面白いと思いました。
しかしながらエンジニアになるためには知識が足りないと思い、エンジニアに必要な知識が学べるHappiness Chainというスクールに入会しました。


ロードマップがとても充実していたり、コードレビューがあったりなど、実力をつけるにはとても素晴らしいスクールだと思い、ここで勉強させてもらっています。

今後

来年の半ば〜後半を目標に1000時間勉強してエンジニアに転職できるように、ここでは少しずつアウトプットをできたらと考えています。

何卒よろしくねがいします!