今日からエンジニアになろうと決意した人がまず覚えるべきターミナルのコマンド + tips

注意）本来は**UNIXコマンド**というべきところを、この記事では"ターミナルのコマンド"と言っていますが、これは**今日からエンジニアになろうと決意した人**に向けてわかりやすい言葉を使っています。

## はじめに

株式会社シンシアでは、実務未経験のエンジニアの方や学生エンジニアインターンを採用し一緒に働いています。

※ シンシアにおける働き方の様子はこちら 

https://www.wantedly.com/companies/xincere-inc/stories

この記事は

- 今日からエンジニアになろうと決意した人
- エンジニアの勉強をしているが、ターミナルのコマンドがまだ身についていない人
- エンジニアになったけど、ターミナル使うのに慣れてない（復習したい）人

という人向けに書いたものです。ぜひ読んで見ていただけると嬉しいです。

## なぜターミナルのコマンドを学ぶ必要があるか

ターミナルは一般的にCLI（Command Line Interface）と呼ばれるもので、これを学ぶと、

1. 複雑な処理の効率的な実行：CLIを使えば、GUIでは対応できない複雑な操作を簡単に行うことができ、作業を効率化できます。
2. システム管理能力の向上：多くのサーバや開発環境がUNIXベースで運用されているため、UNIXコマンドを理解することで、システム管理やトラブルシューティングが容易になります。
3. 柔軟な操作性：コマンドラインを使うことで、ファイルの操作やプロセス管理、ネットワーク設定などの細かな制御が可能になります。

そのため、特にIT分野やエンジニアリングに関わる人にとっては、UNIXのコマンドを学ぶことが重要なスキルの一つとなります。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/69406/512514f6-318c-b278-ae83-afcf9ad08c2e.png)

https://naminori.xincere.jp/courses/1/lectures/1

## パスの概念とディレクトリ操作

ディレクトリ操作の前に、まずは**パス**の概念について説明します。

### 絶対パス:

絶対パスとは、ファイルシステムのルート（/）から始まるパスです。つまり、システム内のどこからでも一貫して同じ場所を指すパスを意味します。スライドの例では、絶対パスは「**/users/naminori/sample/test**」です。このパスは常にシステムのルートディレクトリ **/** から始まり、users フォルダ、naminori（ユーザー名）フォルダ、sample フォルダ、そして test フォルダにアクセスする完全なパスです。

### 相対パス:

相対パスは、現在のディレクトリ（起点）から目的のファイルやディレクトリに到達するためのパスを指します。相対パスは起点に依存し、ルート (/) から始まらず、目的地までのパスを示します。スライドの例では、起点はユーザー naminori のフォルダにあり、そこから見た test フォルダへの相対パスは「**./sample/test**」です。この **./** は「現在のディレクトリ」を意味し、sample フォルダに入り、その中の test フォルダにたどり着くパスを示しています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/69406/0244bb51-d4fd-e389-fece-320af1d224f9.png)

https://naminori.xincere.jp/courses/1/lectures/3

### 覚えるべきコマンド

端的に言って、ファイル操作で覚えるべきコマンドは

- `.`・`..`・`~`
    - ディレクトリを表すコマンド
- pwd
    - 現在いるディレクトリを示すコマンド
- cd
    - 自分のいるディレクトリの位置を変更するコマンド
- ls
    - 現在いるフォルダのフォルダ・ファイルを表示するコマンド
- mv
    - ファイルやディレクトリを移動するコマンド
- mkdir
    - ディレクトリを作るコマンド
- rmdir
    - 空のディレクトリを削除するコマンド

これらを使いこなしておけば、一旦はOKです。

一番大事なのはcdコマンドとpwdコマンドです。
実務未経験者は、たいていコマンドを叩くディレクトリの位置を間違えていて詰まっているケースがあります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/69406/ebb3e58e-3cbd-63d8-0d5f-5af8e35ace2b.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/69406/aa259f8b-9a0e-7d80-3357-7eb2e5344765.png)


https://naminori.xincere.jp/courses/1/lectures/4

https://naminori.xincere.jp/courses/1/lectures/5

## ファイル操作

ファイル操作で大事なのは下記のコマンドです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/69406/b90a9d79-2820-a425-6551-4c10b240ea66.png)

https://naminori.xincere.jp/courses/1/lectures/6


## tips

### aliasについて

`alias`というもので、自分独自のコマンドを作ることが可能です。

https://qiita.com/mizuki_takahashi/items/238e04fdc054ac38fcdf

おすすめは、自分が作っているコマンドをいくつか紹介します。

```bash
## ファイル容量やパーミッションなどが見れます
alias ll='ls -lah'

## フォルダに色がつきます
alias ls='ls -G'

## railscでrails consoleが立ち上がります。
alias railsc="rails c"

## railscと同じノリ
alias railss="rails s"
```

### その他便利コマンドの紹介

#### 一発で担当しているディレクトリに飛ぶコマンドを作る

まずはこれを勉強しましょう。

https://qiita.com/payreikit/items/a9eea71bd70e32443aa0

```bash

## 自分はDevelopフォルダをホーム直下に作ってます。下のようにやると、プロジェクト名一発でそこのディレクトリに飛ぶことができます。

Kinds=`ls /Users/$(whoami)/Develop/`
for dir in ${Kinds[@]}; do
    alias $dir="cd /Users/$(whoami)/Develop/${dir}/"
done
```

#### いろいろなサーバーに入るためのコマンド

```bash
alias pssh="grep -w 'Host' ~/.ssh/config | peco | cut -f 2 -d ' ' | xargs -o -n 1 ssh -A"
```

応用編はこちら

https://github.com/peco/peco

#### 今日の天気を知りたい人はtenkiコマンドを作ってください

```bash
alias tenki="curl http://wttr.in/Tokyo"
```

## その他

シンシアでは、エンジニア転職のサポートをしています。Webの技術に加え、エンジニア転職を成功させたい方はこちらの記事もご参照ください。

https://qiita.com/yamadagenki/items/3b8b0ce8df0117b9af8e

上記の学習を終えて、転職活動用のポートフォリオを作ろうと思っている方はこちらがおすすめです。

https://portfolio.xincere.jp/