Linux関連Tips

# はじめに
Ubunt、WSL2、RaspberryPi等Linux関連のTipsをまとめる。

# 目次
分類|概要 
---|---
[Linux基本](#linux基本)|Linuxの基本操作色々。
[エディタ](#エディタ)|Linuxのエディタについて。
[WSL2関連](#wsl2関連)|WSL2のTipsをまとめる。
[RaspberryPi関連](#raspberrypi関連)|RaspberryPi関連のTipsをまとめる。
[Ubuntu関連](#ubuntu関連)|Ubuntu関連のTipsまとめる。


# Linux基本
+ [chmod](#chmod)
+ [USBメモリをマウント](#usbメモリをマウント)
+ [Python起動](#python起動)
+ [PATHを追加する](#pathを追加する)
+ [空ファイル作成](#空ファイル作成)
+ [メモリSWAP](#メモリswap)
+ [grep](#grep)
+ [IPアドレス確認](#ipアドレス確認)
+ [dd](#dd)
+ [curl](#curl)
+ [Git](#git)
+ [repo](#repo)

[戻る](#目次)

## ファイル権限変更
root権限をuserの権限に変更
```console:cmd
#test.txtをuserへグループ、ユーザ所有権両方変更
$ sudo chown user:user test.txt
#test.txtをuserへユーザー所有権を変更
$ sudo chown user test.txt
```
[戻る](#linux基本)

## chmod
 chmodで権限を変更する

**chmod [所有者][グループ][その他] <ファイル名>**

+ r：読み込み権限
+ w：書き込み権限
+ x：実行権限

---|--x|-w-|-wx|r--|r-x|rw-|rwx|
:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:
 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 

```console:cmd
$ chmod 777 test.txt
$ -rwxrwxrwx test.txt
```
[戻る](#linux基本)

## USBメモリをマウント
　PCに刺したUSBメモリをマウントする。Windows上のドライブが Eドライブだった場合の例。
```console:cmd
# Eドライブでmount---
$ sudo mkdir /mnt/usb
$ sudo mount -t drvfs e: /mnt/usb/

# unmount---
$ sudo umount /mnt/usb
```
[戻る](#linux基本)

## Python起動
　WSL2はデフォルトがpython3?のようなので、起動はpythonでなくpython3
```console:cmd
$ python3 -V
$ Pythone 3.X.X
```
[戻る](#linux基本)

## PATHを追加する
　今あるPATHの最後にパスを追加する。
```console:cmd
# :以降が追加したいパス /xxx を追加
$ export PATH=$PATH:/xxx

# PATHの中身を確認
$ printenv PATH
```
[戻る](#linux基本)

## 空ファイル作成
```console:cmd
$ touch test.txt
```
[戻る](#linux基本)

## メモリSWAP
SWAPメモリ追加16GBの場合。
```console:cmd
$ sudo dd if=/dev/zero of=/swaparea bs=1M count=16384
$ sudo chmod 600 /swaparea
$ sudo mkswap /swaparea
$ sudo swapon /swaparea
```
SWAPメモリ無効化。
```console:cmd
$ sudo swapoff -a
$ sudo swapon -a
```
[戻る](#linux基本)

## grep
検索コマンド
**grep <オプション> <検索文字列> <ファイル名>**
+ <検索文字列>は正規表現可能。
+ <ファイル名>はワイルドカード使用可能。(```*.txt```拡張性.txtのファイル)
+ <ファイル名>にフォルダ指定も可能(```./*```配下のファイル)
+ <オプション>は下表

オプション|内容
-|-
-i|大文字と小文字を区別なし
-n|結果に行数表示
-l|ファイル名だけ表示
-r|ディレクトリ内も対象
-v|一致しない
-L|一致しなかったファイルを表示

```console:cmd
#配下の.txtのファイルで aaa文字が含まれる。行数表示。
$ grep -n aaa ./*.txt
```
[戻る](#linux基本)

# ipアドレス確認
```console:cmd
$ ip a
```
[戻る](#linux基本)

# dd
ファイルをブロック単位で読み出し、変換して出力する。ファイルのコピーなどで使用する。
```consol:cmd
# dd if=[コピー元ファイル名] of=[作成するファイル名] bs=[ブロックサイズ(byte)] count=[ブロック数]
```
[戻る](#linux基本)

## curl
web上のURLからデータをダウンロードしたり、アップロードするためのツール。「Client URL」の略。
インストール
```console:cmd
# Ubuntuの場合
$ sudo apt install curl
```
基本的な使い方
```console:cmd
# 指定した[URL]へGetして、~/hogeフォルダに格納
$ curl [URL] > ~/hoge
```
[戻る](#linux基本)

## Git
gitはソースコードをバージョン管理するツール。

インストール
```console:cmd
# Ubuntuの場合
$ sudo apt install git

$ git --version
# git version 2.XX.X
```
初期設定
```console:cmd
$ git config --list

# ユーザー名設定
$ git config --global user.name "yourname"

# メールアドレス設定
$ git config --global user.email your_address@xxx.com
```
設定確認
```console:cmd
$ git config --list

# user.name=yourname
# user.email=your_address@xxx.com
```
[戻る](#linux基本)

## repo
repoは大量のGitリポジトリを一括管理するためのツール。Googleが開発したツール。

インストール
```console:cmd

#移動
$ cd ~/

#binディレクトリ作成
$ mkdir ~/bin

# Pathを通す
$ PATH=~/bin:$PATH 

#~/bin/repoに格納
$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo

#実行権限付与
$ chmod a+x ~/bin/repo
```

[戻る](#linux基本)

# エディタ
+ [Viコマンド](https://qiita.com/tapitapi/items/c2cc974a6725a4f391a2)
+ [軽量エディタmicro](https://qiita.com/tapitapi/items/65968474f3c30bdd135f#%E8%BB%BD%E9%87%8F%E3%82%A8%E3%83%87%E3%82%A3%E3%82%BFmicro)
[戻る](#目次)

# WSL2関連
+ [WSL2のTips](https://qiita.com/tapitapi/items/5a10162a067ccb101ab3)

[戻る](#目次)

# RaspberryPi関連
+ [Raspberry PiのTips](https://qiita.com/tapitapi/items/65968474f3c30bdd135f)

[戻る](#目次)

# Ubuntu関連
+ インストールするときに参考にした記事。

https://qiita.com/koba-jon/items/019a3b4eac4f60ca89c9

[戻る](#目次)