【まとめ】mac_UNIX

【まとめ】macOSターミナル

はじめに

macのunixは❓

  • Darwin

UNIXの定番エディタは❓

  • vim

1 はじめてのmacOSターミナル

1-1 基本情報

  • キーボードからコマンドをタイプし実行するUIの名称は❓ (x3)
    • CUI、CLI、コマンドライン
  • “ターミナル”とは❓
    • macのCUIアプリ
  • “コマンドラインインタプリタ”とは❓
    • コマンドラインで入力されたコマンドを解釈するプログラム
  • “SSH”とは
    • Secure Shell。リモートログインソフト
  • ターミナルでpythonを使用するには❓抜けるには❓
    • $python $exit()
  • アカウント名
    • macでのユーザー名二つは❓
      • アカウト名とフルネーム
    • UNIXでのユーザは❓
      • 一般ユーザ
      • スーパユーザ
        • ユーザ名はrootに決まっている
        • macではrootは使えない
    • sudoコマンドとは❓
      • root権限のコマンドを管理者ユーザで実行するためのコマンド

1-2 ターミナルでのコマンド入力

  • 引数の指定
    • コマンド 引数1 引数2
  • オプションの指定
    • コマンド -オプション名
    • オプションは動作を変更する指令
  • “シェル”とは❓
    • プログラム。プロンプトを表示。ユーザによりタイプされたコマンドを解釈し、カーネルに渡す
  • カーネルとは❓
    • システムの中心部。コマンドを実行。
  • シェルとカーネルの図
  • macで使われるシェルの種類は❓
    • bash
  • シェルの種類を表示させるには❓
    • $echo $SHELL
      • echo: 引数として渡された文字列を画面に表示させる

1-3 ファイルシステムの操作

  • UNIXの主なディレクトリ
    • /bin❓
      • 基本コマンドの置き場所
    • /etc❓
      • 設定ファイルの置き場所
  • macOSの独自ディレクトリ
    • /Users❓
  • ツリー構造
  • DVDメディア等はどこにマウントされるか❓
    • /Volumes
  • 絶対パスで記述するには❓
    • “/“からパスを書く
  • Finderとターミナルのディレクトリ名対応表
  • lsのオプション
    • 🔴ディレクトリの最後に”/“を表示するには❓
      • ls -F
    • 🔴隠しファイルを表示するには❓
      • ls -a
    • 🔴詳細情報❓
      • ls -l
    • 🔴サイズを単位付きで❓
      • ls -h
    • 🔴ディレクトリの詳細情報❓
      • ls -d
        • 例:ls -dlh samples
    • 🔴サイズ順❓
      • -S
    • 🔴修正時刻順❓
      • -t
  • 🔴特殊文字を指定するには❓
    • クオーテーション
      • ls “Png Files”
    • バックスラッシュ
      • ls Png\ Files
  • cat
    • 🔴注意点は❓
      • UTF-8以外は化ける
      • 改行コードはLF
    • 🔴行番号を表示するには❓
      • -n
        • cat -n sample.txt

1-4 シェルの基本機能

  • ディレクトリを表す記号
    • ホームディレクトリ❓
      • ~
    • 🔴直前にいたディレクトリ❓
      • ~-
    • カレントディレクトリ❓
      • .
    • ひとつ上のディレクトリ❓
      • ..
  • コマンドライン編集
    • 文頭に移動❓
      • ctrl + a
    • 文末に移動❓
      • ctrl + E
    • カーソル位置から文末までを削除❓
      • ctrl + k
  • オプションをメタキーとして使用
    • キーボード>メタキーとしてoptionキーを使用
  • 候補が二つある場合❓
    • tab x 2
  • コマンド履歴表示❓
    • history
      • !ヒストリ番号
  • ワイルドカード
    • 任意の文字列
      • ’*
    • 任意の一文字
      • ?
    • かっこの中の任意の一文字:Cまたはcから始まるファイルをls❗️
      • ls [Cc]*
        • []
    • 文字列範囲の指定:数字を含むファイルをls❗️
      • ls [0-9]
    • 文字列範囲の指定:アルファベットで始まるファイルをls❗️
      • ls [a-zA-Z]*
    • 🔴範囲の否定:先頭がアルファベット小文字以外をlsせよ❗️
      • ls [^a-z]*
    • 拡張子がcsvまたはmp3のファイルをlsせよ❗️
      • ls *.{mp3,csv}
        • ブレース展開を使う。カンマのあとはスペースなしで。
  • コマンド強制終了
    • ctrl + c

1-5 ターミナルの基本機能

  • UTF-8とは❓
    • unicodeのエンコード方式の一つ。英数1バイト、日本語は3倍と。
  • ファイルの更新日を作成するには❓
    • touch
  • 空のファイルを作成するには❓
    • touch <ファイル名>
  • おまけ:空のファイルを作成し即座に入力するには❓
    • cat > 新規ファイル名
      • コマンドを実行すると、ファイル内容の入力状態となりCtrl + Dで入力を終了します。

2 ファイル管理コマンド

2-1 ファイル操作

  • コピー
    • .csvファイルをtestフォルダにコピー(コピー状況を確認)❗️
      • unix_training papa$ cp -v *.csv ./test/
    • ディレクトリをまるごとコピーするオプション❓
      • -r
    • 移動先に指定したディレクトリが存在する場合と存在しない場合の挙動は❓
      • 存在する:そのディレクトリの下にコピーもとのフォルダがコピーされる
      • 存在しない場合:新たにディレクトリが作成され、そのディレクトリのしたに、コピー元フォルダの中身がコピーされる
    • 上書きするか否かの確認オプション❓
      • -i
  • mvコマンド
    • 🔴sampleフォルダ名前をsample2に変更❗️
      • mv sample sample2
  • リンク
    • 🔴sampleフォルダのシンボリックリンクをsample_slとして作成❗️
      • Documents papa$ ln -s sample sample_sl
    • 🔴lsでリンク元を表示させるオプションは❓
      • ls -l
    • ハードリンクとは❓
      • 異なる名前で同じファイルの実態を指し示す機能
    • iノード番号とは❓
      • ファイルに固有に振られた番号
      • 確認方法
        • ls -i
  • ディレクトリ作成
    • 🔴~/newdir/2017というディレクトリを一気につくれ❗️
      • mkdir -p ~/newdir/2020
  • 削除
    • 削除コマンドは❓
      • rm
    • 確認しながら削除するオプション❓
      • rm -i
    • ディレクトリ丸ごと削除❓
      • rm -r
    • 書き込みが許可されていない場合もディレクトリまるごと削除❓
      • rm -fr
  • mac固有の拡張属性をlsでみるには❓
    • ls -l@
  • ファイルを開く
    • 🔴jpgファイルを開け❗️
      • open ~/Documents/unix_training/*.JPG
    • jpgファイルをsafariで開け❗️
      • ~/Documents/unix_training/*.JPG

2-2 テキストファイル・マニュアルの参照

  • テキストファイルをページ単位で表示するコマンドは❓
    • less
      • 🔴lessキー操作
        • 進む:スペース
        • 戻る:b
        • 終了: q
        • 一覧
      • utf-8のみ対応
      • 文字列検索:”
        • /“に続けて検索文字タイプ>エンターキー
        • 検索を続ける場合
          • n
          • 逆方向はshift + n
        • 先頭から検索する場合
          • “/“の代わりに”?”
  • 先頭/末尾
    • テキストファイルの先頭または末尾五行を表示❗️
      • head -n 5 /etc/apache2/httpd.conf
      • tail -n 5 /etc/apache2/httpd.conf
    • システム監視❗️(/var/log/system.log)
      • 🔴tail -f /var/log/system.log
        • 終了:ctrl + c
  • コマンドのマニュアル
    • 🔴calコマンドのマニュアル|ヘルプを表示❗️
      • man cal
    • キーワード”calendar”でマニュアルを検索❗️
      • apropos calendar

2-3 リダイレクトとパイプ

  • 🔴二つのファイルを結合し新たなファイルに出力❗️(at_text.txt cat_text2.txt -> conc.txt)
    • cat cat_text.txt cat_text2.txt > conc.txt
      • ※バイナリファイルも結合できる
  • 🔴redirect.txtの末尾に日付時刻を追加❗️
    • date >> redirect.txt
  • ls -l /usr/binをlessで見れるように❗️
    • ls -l /usr/bin/ | less
  • 標準出力を画面とファイルに出力するコマンドは❓
    • tee
      • date | tee now.txt
  • フィルタコマンド
    • ファイルの文字数・行数❗️
      • wc onnanokao私の好きな.txt
    • .csvで終わるファイルの数をかぞえる❗️
      • ls *.csv | wc -l
    • 🔴httpd.conf内の”www”を含む行数を表示❗️
      • grep "www" httpd.conf | wc -l
    • 🔴https.confの21〜30行目を表示❗️
      • cat -n httpd.conf | head -n 30 | tail -n 10
    • 🔴メールアドレスが入っているmail.txtをソートし、重複行を除く❗️
      • cat mail.txt | sort | uniq
    • 🔴改行コードをCRLFからLFに変換し、テキストファイルに保存
      • cat sample1.txt | tr -d “/r” > samples2.txt
        • “d”は”delete”
    • ※🔴改行コード
      • 一覧
      • 確認コマンド
        • $ od -c [ファイル名]

2-4 テキストファイル操作

  • ソート
    • 🔴color1.txtとcolor2.txtの中身を一緒にし、ソートし表示❗️
      • sort color1.txt color2.txt
        • または
          • cat color1.txt color2.txt | sort
    • 🔴customer_master.csvの3列目で文字コード昇順でソート❗️
      • sort -k 3,3 -t "," customer_master.csv | head
    • 🔴上を数値降順で❗️
      • unix_training papa$ sort -nr -k 3,3 -t "," customer_master.csv | head
    • 🔴duplication.txtをソートし、重複を排除し表示❗️
      • unix_training papa$ sort -u duplication.txt
    • 上記にオプションを追加し、重複回数も表示❗️
      • unix_training papa$ sort duplication.txt | uniq -c
    • 上記を重複回数の多い順にさらにソート❗️
      • unix_training papa$ sort duplication.txt | uniq -c | sort -nr
  • 置換
    • 🔴tr.txtの”小文字を全て大文字に置換し表示
      • cat tr.txt |tr "[a-z]" "[A-Z]"
      • リダイレクトで
        • tr "a-z" "A-Z" < tr.txt
    • 🔴spaces.txtの半角と全角スペースをtrのオプションを使用し削除した状態で表示❗️
      • tr -d " " < spaces.txt | tr -d " "
        • リダイレクションを使う
    • 🔴上記を”tr2.txt”に書き出す
      • tr -d " " < tr.txt | tr -d " " > tr2.txt
    • 複数文字置換:tr2.txtにてaを1,bを2,cを3に置換❗️
      • tr "abc" "123" < tr2.txt
  • グレップ
    • 🔴customer_master.csvにて「東京」でグレップ、行番号も表示❗️
      • grep -n "東京" customer_master.csv
    • 🔴Documents配下全体に対して「東京」でグレップ
      • Documents papa$ grep -r "東京" unix_training/
        • ctrl + cでストップできる
    • オプション一覧
  • 正規表現

    • grep.csvにて
      • 🔴冒頭が「山」で始まる行をグレップ❗️
        • grep "^山" grep.csv
      • 🔴末尾が”33”で終わる行❗️
        • grep "33$" grep.csv
      • 🔴空白行❗️
        • grep "^$" grep.csv
      • “M”ではじまり”c”で終わる❗️
        • "^M..*c$" grep.csv
          • 使い方が分からない。。
      • “Mac”という単語のみグレップ❗️※”iMac”は拾わないように
        • grep "\bMac\b" grep.csv
    • 直前の文字の繰り返し❓
      • *
        • 使い方が分からない。。
    • 正規表現特殊文字
    • 正規表現vsワイルドカード
      リンク: milestone-of-se.nesuke.com/sv-basic/linux-basic/wildcard-regular-expression/

2-5 ファイル検索コマンド

  • 🔴Documents配下の”sample.txt”を検索❗️
    • find ~/Documents -name sample.txt
  • Documents配下のcsvファイルを検索❗️
    • find ~/Documents -name "*.csv"
      • ワイルドカードにはクォーテーションが必要
  • 🔴ルート配下で10MB以上、1GB以上のファイルを検索
    • find / -size 100M
    • find / -size 1G
  • カレントディレクトリ、ファイルで
    • 修正時間
      • findコマンドのmtimeオプションまとめ - Qiita
      • 現在から3日前まで(現在時間〜72時間前)❗️
        • find . -mtime -3 -type f
      • 3日前(72時間前〜96時間前)❗️
        • find . -mtime 3 -type f
      • 過去から3日前まで(72時間前〜過去)❗️
        • find . -mtime +2
    • lsと組み合わせる@カレントディレクトリ
      • xargsの方が高速だが、-excecはokコマンドを使える
      • 2Mを超えるファイル w/ exec❗️
        • find . -size +2M -type f -exec ls -hl {} \;
          • パイプでは無理
      • 🔴csvファイル w/ xargs❗️
        • find . "*.csv" | xargs ls -l
    • 🔴ファイル名にスペースがあるファイルが対象の場合でもエラーを出さずfind&xargs lsの組み合わせを使うには❓
      • find . -name "*.txt" -print0 | xargs -0 ls -l
      • ※オプションを加えない場合のエラー
  • 検索オプション

3 テキストエディタ

3.1 nano

  • キー操作
    • 上書き保存
      • ^O

3.2 vim

  • 日本語ファイル設定
    • fileencodings=iso-2022-jp,utf-8,cp932,euc-jp
    • fileformats=unix,dos,mac
  • 操作
    • 終了
      • :q
    • 保存
      • :w
    • 保存し終了
      • :wq
    • 終了保存コマンド
    • インサートモード
      • i
    • コマンドモード
      • esc
    • インサートモードへの移行コマンド
    • カーソル移動
    • f文字コマンドによる移動
    • 文字削除コマンド
    • 操作取り消し
      • u
        • ⇄ ctrl + r
    • ビジュアルモード

4 シェルコマンド・アクセス権

5 UNIXソフト

6 システム管理の基礎

7 ネットワーク機能

投稿フッター
  • このエントリーをはてなブックマークに追加
  • Evernoteに保存Evernoteに保存