LoginSignup
1
4

More than 3 years have passed since last update.

【技術書まとめ】新しいLinuxの教科書

Last updated at Posted at 2021-04-27
  • シェル
    • カーネルのインタフェース
      • dateなら/usr/bin/dateを探す
    • なぜシェルがあるのか
      • シェルだけ変更できる
      • OSが違っても操作できる
      • エラー時にカーネルの影響を減らす
  • 「1つのプログラムには、1つのことをうまくやらせる」
    • 「小さなコマンドを組み合わせて複雑な処理ができる」
  • ターミナル
    • ユーザがコンピュータへ入出力するときに使うハードウェア
      • エミュレータが使われている
        • 入出力の画面があるだけ
  • コマンドラインの編集
    • Esc 押してから b で単語1つぶん移動
    • Ctrl + h で1文字削除
    • Ctrl + w で1単語削除
    • Ctrl + y で最後に削除した内容を挿入
  • トラブル時
    • Ctrl + s
      • 画面表示のロック
    • Ctrl + q
      • ロック解除
    • Ctrl + l
      • 画面を消去する
  • コマンド履歴
    • Ctrl + p
      • 1つ前のコマンド
    • Ctrl + n
      • 次のコマンド
  • インクリメンタルサーチ
    • Esc
      • 検索結果を残したままコマンドラインに戻る
    • Ctrl + g
      • 検索結果を破棄
  • Linux では全てがファイル
  • Linux はシステム全体で1つのディレクトリツリーのみ
  • Linux のディレクトリ
    • FHS(Filesystem Hierarchy Standard)
      • /bin
        • Linuxシステムの動作に最低限必要なコマンド
      • /dev
        • デバイスファイルを格納する
      • /etc
        • 設定ファイル
      • /home
        • ユーザごとに割り当てられる
      • /sbin
        • 管理者ユーザ向けコマンド
          • shutdownなど
      • /tmp
        • 一時ファイル
      • /usr
        • 各種アプリと付属ファイル
          • 下に bin,sbin,etc などを持つ
      • /var
        • 変化するデータを置く
          • ログや電子メール
  • コマンド
    • touch
      • 既存ファイルがあっても上書きされない
    • cat
      • 引数なし
        • キーボードからの入力を待つ
    • less
      • ファイルを1画面で見る
        • /etc,?etcで検索できる
          • nで次の検索結果へ
    • mv file1 file2でファイル名変更する
    • ln -s file1 file2でシンボリックリンクをつける
      • 活用法
        • 深すぎるファイルにつける
        • バージョンにlatestのリンクをつける
  • 探す
    • find . -name file-1.txt -print
      • カレントから下りながら探してパスを表示する
        • -iname
          • 大文字小文字区別しない
        • ワイルドカードを使うときは''を使う
          • パス名展開されてしまうから
        • -type dでディレクトリに絞りこむ
          • fは通常ファイル
          • lはシンボリックリンク
    • locate
      • 作成してしばらくたったファイルの検索
        • locate -b pythonで名前を含むファイルを検索できる
          • ディレクトリは表示されない
        • 複数入れるとOR検索になる
        • AND検索は-Aを入れる
  • Vim
    • コマンド入力ができない時
      • Escを何度か押す
    • 保存せず終了
      • :q!
    • 単語一つ分移動する
      • w
      • b
    • 行頭へは0
    • 行末へは$
    • ggで冒頭
    • Gで末尾
      • oで次の行から編集する
    • カットやコピーペースト
      • カットはdと範囲を指定
      • ヤンクはyと範囲を指定
      • pでプット
    • アンドゥはu
    • リドゥはCtrl + r
  • bash
    • エイリアス
      • alias <名前>='<コマンド>'
    • シェル変数
      • var1='test variable'
        • $var1で参照できる
        • スペースは入れない
    • 環境変数の設定
      • export LESS='--no-init'
        • 以降lessコマンドで--no-initが自動で付くようになる
    • カスタマイズ
      • ~/.bashrcに書く
      • source ~/.bashrcで即時反映
    • コメントは#
  • ファイルのパーミッション
    • -は通常ファイル、dはディレクトリ、lはシンボリックリンク
    • rwxr-xr-xなどの9文字はオーナー、グループ、その他のユーザのパーミッション
    • chmod
      • シンボルモード
        • chmod u+w file.txt
          • uはオーナー、gグループ、oその他のユーザ、augoすべて
          • +権限を追加、-禁止する、=指定した権限と等しくする
            • chmod go=r file.txt
      • 数値モード
        • 4は読み取り(r)、2は書き込み(w)、1は実行(x)
          • chmod 755 file.txt
            • 各行はオーナー、グループ、その他の足し算になっている
  • 環境変数を引き継がないでスーパーユーザになる
    • su -
  • ps aus
    • すべての実行プロセス確認する
    • kill <PID>で止める
      • 終了できるのは実行ユーザのみ
      • 本当はシグナルを送信するコマンド
  • 途中で止めたい時
    • Ctr + z
  • リダイレクトとは
    • 標準入出力先を変更する機能
      • 入力リダイレクト
        • cat < /etc/crontab
      • 出力リダイレクト
        • ls -l / > list.txt
          • 標準出力先がlist.txtになる
    • >>と書くことで追記になる
      • 上書きしない
    • 出力を捨てたいとき
      • cat /etc/crontab > /dev/null
      • ls / /xxxx 2> /dev/null
        • エラー2は捨てて通常出力だけを見たいとき
      • 標準もエラーも捨てる
        • ls / /xxxx > /dev/null 2>&1
  • ファイルの頭だけ表示する
    • head /etc/crontab
  • 出現回数ランキング作成する
    • sort file1 | uniq -c | sort -rn
  • 正規表現
    • grep 'mail[1-4] example.txt'
      • 1-4 にマッチ
      • [^13]は1か3以外
      • grep '^B[ea]*r$' drink.txtなどもできる
    • .は任意の1文字
    • '^net'は頭がnet
    • 'net$'は終わりがnet
    • 'Be*r'は0回以上の繰り返し
  • 拡張正規表現
    • grep -E 'Be+r' drink.txt
    • 郵便番号の3桁-4桁
      • [0-9]{3}-[0-9]{4}
    • ウォッカかワインか
      • grep -E 'My (Vodka|Wine)' drink.txt
  • sed
    • 削除する
      • sed 1d drink2.txt
    • 置換する
      • sed 's/Beer/Whisky/g' drink2.txt
  • awk
    • ls の出力から5列目と9列目を取り出す
      • ls -l /usr/bin/ | awk '{print $5,$9}'
      • 最後の2列を表示する
        • ls -l /usr/bin/ | awk '{print $(NF-1),$NF}'
      • 9列目の頭がcpを表示する
        • ls -l /usr/bin/ | awk '$9~ /^cp/ {print $5,$9}'
      • csvの最後の列の総和を出す
        • wk -F, '{sum += $NF} END{print sum}' score.csv
          • 行数$NRで割って平均値を出す
            • wk -F, '{sum += $NF} END{print sum}' score.csv
  • シェルスクリプト
    • #!シバンを頭に書く
      • sourceで実行でも良い
        • . ./homesize-noshebang.shのドットコマンドでも同じ意味
        • aliasの設定の違いなどで想定しない動作をしたりする
          • ファイル名指定で実行の方がいい
        • source ./homesize.shのように相対パスか絶対パスで書く
          • パス指定がないとサーチパス内からも探してしまうから
    • ;で繋げられて、\で改行できる
    • $で変数の値を取得するイメージ
    • =前後にはスペースを入れない
    • 使えるのはアルファベットと数値と_のみ
    • ""は変数展開できる
    • ./parameters.sh aaa bbb ccc
      • $1, $2, $3に引数が入る
    • $#で引数の個数を取れる
    • $@で全ての引数を受け取る
    • [はコマンド
      • if [ "$1" = "bin" ]; thenでは"$1=が引数となる
        • [は引数の条件式を判定するコマンド
          • 正であれば0を、そうでなければ0以外を終了ステータスとして返す
            • 終了ステータスは$?でわかる
          • test "$1" = "bin"; thenでもほぼ同じ
          • &&は終了ステータスが0で正常な時、次のコマンドを実行する
            • [ -f file.txt ] && cat file.txt
    • $((i + 2))で計算できる
      • bashの算術式展開
  • アーカイブ
    • アーカイブする
      • tar cf dir1.tar dir1
        • cfはcreate file
        • ファイル属性もそのままアーカイブされる
          • バックアップにはcpよりもいい
            • rootで実行する
    • アーカイブできたら内容確認する
      • tar tf dir1.tar
    • 展開する
      • tar xf dir1.tar
  • 圧縮
    • 圧縮する
      • gzip ps.txt
    • 展開する
      • gzip -d ps.txt.gz
  • targzipを一緒に使う
    • tar czf dir1.tar.gz dir1
    • tar xzf dir1.tar.gz
  • SSH先のディレクトリdir1をtar+gzファイルとして転送する
    • ssh osumi@serverB 'tar czf - dir1' | tar xzf -
  • bzipはより圧縮率が高い
    • xzはさらに高い
      • Linuxカーネルなど
  • git
    • git diffはワークツリーとインデックスの差分
    • git diff --cachedはインデックスとリポジトリの差分
    • git diff HEADはワークツリーとリポジトリの差分
1
4
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
1
4