0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【新しいLinuxの教科書】を読んだメモ

Posted at

なにこれ

新しいLinuxの教科書という本を読んで、自分が知らなかった箇所をメモしたので備忘録として残します。

1章

grepコマンド

参照元 or 参照先から一致するのを取る
grep “gprc” main.go ➡️「grpc」を含む文字列
grep “gprc” main.go | sort ➡️↑の文字列をソートしてる
gem list | grep carrierwave ➡️gem listの表示結果から繋いで、carrierwaveって文字だけを抜き出す

2章

prompt

ohishikaito@localhost $ ➡️この$markより左側

echo $SHELL

今使ってるshellを確認できる。

go $ echo $SHELL
/bin/zsh

シェルの種類

  • sh
  • -csh
  • bash
  • tcsh
  • zsh

3章

知らなかったショートカット

ctrl + B or F

1文字ずつ移動できる
backward forwardの略

esc + B or F

単語移動
option + 矢印の方が正確に移動できる(矢印キー使うのうざいけど!)

Ctrl + W

単語削除

Ctrl + u

カーソルから行頭まで削除(めっちゃ使いそう!)
カットとヤンクって言われるらしい

command + L

ctrl + L で削除したログを復元できた

ctrl + n

ctrl + P で戻った前のログを見れる(あんま使わんけど)

おまけ

日本語は色んな文字コードの規格がある
とりあえず「UTF-8」を選んでおけばおっけー

4章

Linuxは全てファイルからできてる

各ディレクトリの役割

bin

重要度の高いコマンドが格納

dev

デバイスファイルを格納

etc

通常ファイルを置くため

home

ホームディレクトリが配置される

sbin

binと似てるけど、管理者ユーザー向けのコマンドが置かれてる

tmp

一時的なファイル(テンポラリファイル)を置くため
永続的な保存先に選ぶな

usr

各種アプリと、それに付随するファイルを置くため

var

変化するデータ(variable)を置くため
データやログ、電子メール等が格納される

チルダ展開

~のこと
「cd ~」でホームに移動するのは、チルダ展開っていうらしい

lsの「*」と「?」

ls *.rbで.rbのついたファイル➡️ワイルドカード
ls ls Gem?ileでGemfile➡️1文字置き換え

5章

mkdir

-p

存在しない階層フォルダも作れる

rmdir

フォルダ消せる。左から順番に実行

-i

確認でる

cat

ファイル連結して表示できる
cat .ruby-version Gemfileみたいな

-n

行番号

less

スクロールできるcat

cp

-r

再帰的に実行しないとコピーできん

ln

ショートカットみたいなリンク作れる。使いみちが謎
ln -s app/controllers ctrlでcontrollersへのリンク

6章

find

find ./app/models -name user.rbで検索できる
find ./app/models -name 'produc?.rb'でワイルドカード使える

タイプ指定

find ./app/models -type f -name 'produc?.rb’
-type f || d || l とかがある

man

man lsでlsのdocument見れる

which

which goでgoのPATHが見れる。
which mkでmakeのaliasってのが分かる。すげー優秀

7章

vim

xキー

文字削除

w || b 2回押し

単語移動

0と$

行頭 or 行末に移動

数字➡️shift + g

行番号まで移動
100 ➡️ shift + g ➡️100行目に移動

8章

type mk

mkはmakeのエイリアスだよ

printenv

環境変数の一覧

余談

vimに行番号を表示➡️$ vi ~/.vimrc➡️set number

9章

パーミッションの記号の種類

ファイルのパーミッションの記号と意味

r=読み取り(read)
w=書き込み(write)
x=実行(execute)

-rw-r--r--

「-」=ファイルタイプ(- か d がある)
rw-=オーナーがread & weite
r--=グループ
r—=その他のユーザ

ディレクトリのパーミッションの記号と意味

r=ディレクトリ配下のファイル読み取り
w=ディレクトリ配下の書き込み(ファイル・ディレクトリの作成&削除)
x=実行:ディレクトリをカレントディレクトリにする

drwxrwxr-x.

d=ディレクトリ
「.」は分からん!

余談

vscodeで権限消したらファイル開けない、
読み取り専用にしたら保存できない、
「上書き」って押したら、パーミッションにwが追加されて保存できた

chmod

chmod u+w ファイル名

u=オーナ
g=グループ
o=その他のユーザ
a=ugo全て
ユーザ指定を省略すると、a+を指定したことになる!

数値モード

4=r(読み取り)
2=w(書き込み)
1=x(実行)
合計値で分かる

hoge $ chmod 755 fuga
hoge $ ls -l         
-rwxr-xr-x  1 ohishikaido  staff  5  6 16 05:38 fuga

10章

プロセス

全てが個別のプロセスIDを持つ
less で閲覧中のファイルがあればプロセスが実行されて、
lessを閉じるとプロセスが消える

psコマンド

TTY

ターミナル

ps ax

全てのプロセス

jobs

zshだとjobsが見れない??

kill

defaultだとkill -15(-TERM)ってのが指定されてる

実行中のvimとかをkillすると、その場で死ぬ

kill -9

例外プロセスで、linuxが処理する?
強制終了みたいなイメージ

11章

stdin 標準入力
stdout 標準出力
sdferr 標準エラー出力

標準出力のリダイレクト

hoge $ ls -l > fuga 
hoge $ cat fuga 
total 0
-rwxr--r--  1 ohishikaido  staff  0  6 16 06:45 fuga

標準エラー出力のリダイレクト

hoge $ lsdd 2> fuga
hoge $ cat fuga    
zsh: command not found: lsdd

>>

追記できる

hoge $ ls -l >> fuga
hoge $ ls -l >> fuga
hoge $ cat fuga     
total 8
-rwxr--r--  1 ohishikaido  staff  149  6 16 06:50 fuga
total 8
-rwxr--r--  1 ohishikaido  staff  212  6 16 06:50 fuga

/dev/null

  • スペシャルファイル
  • 入力先に指定しても何も返さない
  • 書き込んでもデータ保存されず消える

出力を消す例)

hoge $ ls > cat /dev/null 
hoge $ 

パイプライン

標準出力を別のコマンドの標準出力につなぐ

例)

hoge $ history | less
 1058  history| less

フィルタ

grep、sortとかはよく使う

12章

wc

go $ wc server.go 
      33      67     771 server.go

33=行数
67=単語数
771=バイト数

ファイル・ディレクトリ数のカウント

隠しファイルに注意(.envとか「.」とか移動用のやつ)

go $ ls / | wc -l
      16

sort

並び替え
-n=数値順、
-r=逆順

uniq

重複を取り除く

tr

置換する
cat /etc/passwd | tr a-z A-Z

tail

末尾
tail -n 1 server.go

-f でファイルへの変更内容を監視&出力できる

diff

差分
-uでユニファイド形式ってのが見れる
行基準?みたいな感じで、gitで使ってる表示形式

13章

grep

hoge $ grep bash /etc/passwd 
_mbsetupuser:*:248:248:Setup User:/var/setup:/bin/bash

-i

大文字小文字区別なし

hoge $ grep system /etc/passwd
# Note that this file is consulted directly only when the system is running
hoge $ grep system -i /etc/passwd
# Note that this file is consulted directly only when the system is running
root:*:0:0:System Administrator:/var/root:/bin/sh
daemon:*:1:1:System Services:/var/root:/usr/bin/false

-n

行数表示

-v

NOT(条件に一致しない奴らを表示)

14章

sed

使うか分からないから流し読み

1d

最初の1行を消す

hoge $ cat cat 
/dev/null
hoge $ se

awk

切り抜きみたいな。正規表現の楽バージョン?
フィールド変数ってのに代入してる

ls -l /usr/bin | awk '{print $5,$9}'

15章

シェルスクリプト実行

./homesize.shで実行
カレントディレクトリのshファイルってこと

sourceってつけたら、シェル関係なく実行される?現在のコマンドラインのシェルを使うらしい

16章

位置パラメータ

echo $0 $1

hoge $ ./homesize.sh aadddddd
./homesize.sh aadddddd

17章

$#

$0を除く引数の数

例)

# !/bin/bash

# hoge=hoge
# echo "aaa $hoge"
# echo aa $(date '+%Y')
# echo $0 $1 $#
# echo $@
# if [ "$1" = "binbin" ]; then
#   echo hoge
# else
#   echo fuga
# fi
# echo $?
# ls ddddddd
# echo $?
# echo $?
# exit 45
# echo $?
# file=$1
# if [ -d "$file" ]; then
#   echo $file
#   ls $file
# else
#   echo $1
# fi
# echo $(seq 1 45)
i=10
echo $((i + 1))
# echo $(i + 1)

シェル関数

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?