Linuxコマンド

Linuxコマンドを習得することで、様々な場面で業務効率化を図れます!そんなに覚えることは多くないので、頑張っていきましょう!
Linuxを学ぶポイントは、CUIコマンドを覚えることと、サーバ用PCの仕組みを知ることだと思います!

【前提知識】

サーバーPCと一般PCの違い

一般PC

  • 個人一人で使用しているPC
  • GUIでの操作が一般的

サーバーPC

  • 自社の社員全員で実は使用しているPC
  • CUIでの操作が一般的

よく見かけるsudoから始まるコマンド

これは、スーパーユーザー(rootユーザーともいう)としてコマンドを実行するために使われるコマンドです。
スーパーユーザーとは、すべての操作が可能なスーパーサイヤ人のことです。
サーバー操作においても、誰もが同じ操作ができてしまうとシステムが壊れるかもしれないので、ファイルごとに操作ができる権限を与えるのが一般的です。
この権限の与え方などもみていきましょう!

シェル、CUIとは?またそれらの違いは?

シェル

  • ユーザーが入力したコマンドを実行するソフトウェア
  • 種類:bash、zsh、sh

CUI

  • コマンドを入力するただの画面のこと
  • 種類:terminal、コマンドプロンプト、powershell
  1. シェルがCUIを通じて、コマンドを受け取る
  2. シェルがコマンドをファイルから探し出し、カーネルに依頼する
  3. カーネルがCPUやメモリを操作し、コマンドを実行する
  4. コマンドの実行結果がシェルに返される
  5. 実行された結果がCUIに表示される

【覚えるべきコマンド一覧(初級)】

lsコマンド

カレントディレクトリにあるファイルなどの一覧を表示

ls

カレントディレクトリにあるファイルなどの一覧を隠しファイル含めて表示

ls -a

カレントディレクトリにあるファイルやディレクトリなどをユーザー権限一覧付きで表示

ls -l
ls -dl

カレントディレクトリにあるファイルなどをファイル名のみ表示

ls -F

manコマンド

コマンドのマニュアルを表示
※マニュアルを日本語化するためには、sudo apt install manpages-ja を実行する。

man ls

mkdirコマンド

ディレクトリ(フォルダ)を作成

mkdir <ディレクトリ名>

場所を指定してディレクトリ(フォルダ)を作成(例:new_folderの部分は作りたいディレクトリ名)

mkdir ./Desktop/new_folder

ディレクトリ(フォルダ)を作成して、その中にディレクトリを作成

mkdir -p <ディレクトリ名> / <ディレクトリ名>

touchコマンド

ファイルを作成

touch <ファイル名>

複数のファイルを同時に作成

touch <ファイル名> <ファイル名2>

rmコマンド

ファイルを削除

rm <ファイル名>

ディレクトリ(フォルダ)を削除

rm -r <ディレクトリ名>

ディレクトリの削除前に削除しますか?を表示させる

rm -r -i <ディレクトリ名>

catコマンド

ファイルの中身を表示

cat <ファイル名>

行番号付きでファイルの中身を表示

cat -n <ファイル名>

headコマンド、tailコマンド

ファイルの最初の中身を行数を指定して表示

head -n<指定したい行数> <ファイル名>

ファイルの最後の中身を行数を指定した表示

tail -n<指定したい行数> <ファイル名>

lessコマンド

ファイルの中身を別ウィンドウで表示

less <ファイル名>

注意:lessコマンドで表示した画面は使いづらいです。以下の方法で操作することが可能です。慣れるしかないので、頑張りましょう!

  • 画面下に移動 スペースキー
  • 画面上に移動 bボタン
  • 1行下に進む jボタン
  • 1行上に進む kボタン
  • 表示を終了 qボタン
  • ヘルプ表示 hボタン
  • 検索 /<検索したい文字>

cpコマンド

ファイルやディレクトリをコピー

cp <コピーしたいファイル・ディレクトリ名があるパス> <コピー先のパスや名前>

※ コピー先の名前を指定しなかった場合どうなるのか、コピー元がファイルでコピー先がディレクトリだった場合どうなるのか等調べてみましょう!

mvコマンド

ファイルやディレクトリーを移動

mv <移動したいファイル・ディレクトリ名> <移動先のファイル・ディレクトリ名>

※ 移動先に指定したファイルやディレクトリがなければ、移動元のファイルやディレクトリの名前が変わるという操作になる。

echoコマンド

引数に指定したものを画面に表示する

echo sakana

上記を実行すると、画面にsakanaという文字が表示されます。

ではどんな時に活用するのでしょうか?主な活用は変数の中身を確認するためです!

echo $SHELL

上記の$は変数であることを表し、SHELLという変数には何が入っていますか〜?というコードになります。
あなたが使用しているシェルは何かがわかります!

echo $PATH

上記のコードは、PATHという変数には何が入っていますか〜?というコードになります。
皆さんの大っ嫌いな「PATHを通す」という作業が必要な変数になります。
何かコマンドを打った時に、’command not found’というエラーが出たことはないでしょうか?
これは、そのプログラムの場所をパソコン内全体から探すの大変だから、PATH変数に入れておくれ〜」というエラーになります。

正規表現の利用

ホームディレクトリ表示

ls ~

ルートディレクトリ表示

ls /

任意の文字列を指定

ls file*

任意の1文字を指定

ls file?

範囲指定

ls file{1..10}

要素指定

ls file{1,6,C}

lnコマンド

ファイルやディレクトリにリンクを設定する。

ln <ファイルやディレクトリ名> <リンク付けしたいファイルやディレクトリ名>

例:ハードリンク

touch master_file
ln master_file link_file
echo test >> master_file

このmaster_fileの中身にtestという文字を代入すると、link_fileの内容も自動で変更されるようになる。

ls -l

“-rw-r–r– 2 master_file”と表示されます。この2というのがリンクが割り当てられている数になります。
つまり2つのファイルが変更されるよということになります。

例:シンボリックリンク

ln -s master_file s_link_file
ls -l

“lrwxr-xr-x 1 s_link_file -> master_file”と表示されます。->の部分がシンボリックリンクが割り当てられているという意味になります。

これらのメリットは・・
ハードリンク:二つのファイルに同じ内容が記入されるので、一つはバックアップとして役にたつ!
シンボリックリンク:下記のように深い階層にあるファイルをリンク付けすることで、長いパスを打つ必要がなくなる。

ln -s ./dir1/dir2/dir3/master_file s_lins_file

findコマンド

ディレクトリやファイルを探す

find <検索開始するディレクトリ> <検索条件> <見つけ出したものに何する>

find . --name file -print

例:正規表現利用

find . -name *.xlsx -print

wcコマンド

ファイルの行数、単語数、ファイルの重さを表示

wc <ファイル名>

パーミッションとは

パーミッションとは、ユーザーごとにファイルやディレクトリを操作する権限を与えること

-rwxrw-r-- 1 staff staff 15  3 20 09:35 sakana.xlsx
  • – ファイル種別
  • rw-r–r– パーミッション
  • 1 ハードリンク数
  • staff オーナー
  • staff グループ
  • 15 ファイルサイズ
  • 3 20 09:35 作成された日時
  • sakana.xlsx ファイル名
rwx rw- r--
  • rwx オーナーの権限
  • rw- グループの権限
  • r– 権限設定していないユーザーの権限

※ rは読み取り、wは書き込み、xは実行の権限があるという意味です!

chmodコマンド

パーミッションを変更するコマンド

例:初期のパーミッションが、r– r– r– となっている場合、オーナーに書き込みの権限を与える(w)

chmod u + w <ファイル名>

グループに権限を与える

chmod g + w <ファイル名>

その他のユーザーに権限を与える

chmod o + w <ファイル名>

全ユーザーに権限を与える

chmod a + w <ファイル名>

※ ちなみに権限をなくしたい場合は、”+”の部分を”-“に変更します。

数値で設定する場合もあります。(r:4、w:2、x:1)

chmod 751 <ファイル名>

上記の場合は、オーナーが全権限(4+2+1)、グループが読み取りと実行権限(4+1)、その他が実行権限のみ(1)という設定になります。

groupsコマンド

ユーザー別に所有グループを確認するコマンド

groups <ユーザー名>

pwdコマンド

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

pwd

sudoコマンド

管理者権限でコマンドを実行できるようになる。これは、システムに影響を与える実行が可能となる。

sudo コマンド

しかし、sudoコマンドはシステム管理者によって権限を絞られているのがほとんどです。
/etc/sudoersというファイルに各ユーザーのsudoで実行できるコマンドの権限が設定されている・・・はず。
自社サーバーなどで、気軽にsudoコマンドが実行できる環境にいたら十分に注意が必要。(自社システムに影響を与える可能性が・・・)

vimコマンド

ファイルの中身を編集するコマンド(ちょっと癖がある!笑)
このコマンドは初期で入っていない場合があるため、入っていない場合は「sudo apt install vim」でインストールしましょう

vim <ファイル名>

vimのモードを理解する

  • ノーマルモード:デフォルトであり、ESCを押せばこのモードに戻れる。
  • コマンドラインモード:vimコマンドを入力できるモードであり、ノーマルモードから:を押せば利用できる。
  • インサートモード:ファイルの中身を編集するモードであり、ノーマルモードからiを押せば利用できる。
  • ビジュアルモード:範囲選択が可能なモードであり、ノーマルモードからvを押せば利用できる。

コマンドラインモード

:q vim終了
:q! vim強制終了
:w ファイルの内容保存
:w <ファイル名> 名前をつけて保存
:wq ファイルの内容を保存して、vimを終了

※インサートモードだと左下に”insert”、ビジュアルモードだと左下に”visual”と表示されます。個人的にビジュアルモードはあまり使用しませんが、気づいたら、ビジュアルモードになっててテンヤワンヤした時があったので、覚えておくといいと思います!

リダイレクト

端末に出力した結果などをファイルに保存する

echo sakana > sakana.txt

上記は、sakanaと表示された結果をsakana.txtに上書き保存(または新規保存)しました。この”>”がリダイレクトを意味します。

echo sakana2 >> sakana.txt

上記は、sakanaと表示された結果をsakana.txtに追加で保存しました。
“>>”が追加保存するということを意味します。

cat sakana3.txt 2>> sakana.txt

上記は、sakana3.txtのありませんというエラーが出るので、その表示結果がsakana.txtに追加で保存されます。
“2>>”がエラー内容を追加保存するということを意味します。
エラー内容もエラーでない表示結果も保存したい場合は、”2>&1″と表記します。

パイプライン

コマンドを繋げて、複雑な処理を実行する

ls ~ | cat -n

上記は、ホームディレクトリのファイル一覧を番号付きで表示するという意味になります。”|”がパイプラインの役目になります。
市民データサイエンティストの私はあまり使ってません、、

ls ~ | head -n5

上記は、ホームディレクトリのファイル一覧を上から5つのみ表示するという意味になります。

trコマンド

ファイルの中身を置換(パイプラインでよく使用します)

cat <ファイル名> | tr <置換したい文字> <置換後の文字>

上記により、ファイルの中の置換前の文字を置換後の文字に切り替えられます。

grepコマンド

指定した文字を含む行を出力するコマンド(これもパイプラインでよく使用します)

ls -F | grep <指定文字>

psコマンド

現在実行されているプロセス一覧(メモリに読み込まれ、実行されているもの)を表示するコマンド

ps

全プロセス表示

ps a

プロセス詳細情報表示

ps u

プロセス全詳細表示

ps ux

親子ブロック

ps f

フォアグラウンド、バックグラウンドの知識

  • フォアグラウンド:目の前で実施されている処理
  • バックグラウンド:実はシステムの裏で実行されている処理

基本的にコマンドを打つとフォアグラウンドで実行されますが、バックグラウンドで実行する方法もあります。

ls &

上記のように”&”を入れることにより、バックグラウンドで実行するプロセスとなります。
このプロセスが実行されているか確認するには、

jobs

killコマンド

実行したプロセスを終了させる(rootユーザーと実行ユーザーのみしか実行できない)

kill プロセスID

危険なので、自社内サーバーなどではあまり使用してません。

aliasコマンド

複雑なコマンドに対して、自分で指定したコマンドを設定する方法(エイリアスという)

設定されているエイリアスを確認

alias

独自のエイリアスを設定する方法

alias test_ls='ls -F | head -n5'

上記により、’ls -F | head -n5’をtest_lsと入力するだけで実行することができる。

エイリアスを削除する方法

ualias test_ls

typeコマンド

コマンドの種類を確認する

type <何かのコマンド>

setコマンド

シェル変数の一覧を表示する

set

シェルには様々な役割があり、役割に応じてシェル変数に格納されている。

printenvコマンド

環境変数の一覧を表示する。

printenv

あるプログラムをコマンドで実行しようとした時に、実行ができないパターンは大抵がこの環境変数にPATHを設定していないからです。

環境変数を追加する方法

export <PATH>

localeコマンド

言語や国・地域の設定を確認する。

locale -a

よければSNSをフォローしてあげてください!

コメントを残す

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

未分類

前の記事

Mac便利ショートカット集
未分類

次の記事

gitを活用しよう