🐧

Linux脱"超"初心者になる

2021/04/21に公開

🐧"超"基本動作

カーソル操作

Macでもブラウザ等terminal以外でも使えるものは「🖥」アイコンあり。

  • 🖥Ctr + F :1文字後ろにずらす

  • 🖥Ctr + B :1文字前にずらす

    • Fはforward,Bはbackward。
    • 矢印キーでもできるが、ホームポジションをずらさないため使ってみると良い
  • 🖥Ctr + A :文頭にカーソルを合わせる

  • 🖥Ctr + E :文末にカーソルを合わせる

    • Macだけのショートカットだと思っていたけど、Linuxのものだったぽい
  • esc → B または option(alt) → B :1つの単語の先頭にカーソルを合わせる

    • fで単語の後ろのスペースにカーソルを合わせる
    • 単語単位で遡れる。
    • escキーを押しながらではなく、escキーを押した後にB
  • Ctr + W :カーソルの直前にある単語を1つ削除

    • たまに、1文字ずつ消してたことがあったのでこれは知れてよかった
  • 🖥Ctr + K :カーソルから文頭までを削除(カット)

  • Ctr + U :カーソルから文末までを削除(カット)

  • 🖥Ctr + Y :上記kまたはUカットしたものをペースト(ヤンクと呼ぶ)

  • Ctr + L :terminal上の入力履歴を全て削除する。

    • clearコマンドも同じ意味

🐧🐧コマンド関連ショートカット基礎

  • Tab :コマンド補完
    • 2回押せば候補が出る
    • ファイルも候補として出る
  • Ctr + R :コマンド履歴を検索できる
    • インクリメンタル検索というらしい
    • 下記プロンプトになる
(reverse-i-search)`':
  • 文字を入れると自動で検索してくれる
  • 1つしか表示されない
  • 検索結果を遡りたいときはさらにCtr + Rを押すと、1つずつ前の検索結果に戻れる。
  • 知らんかった!ええやんこれ。。

🐧超基礎コマンド | ls

  • pwd:カレントディレクトリのPathを出力
  • ls #Directorylsコマンドの引数としてディレクトリを記載すると、そのディレクトリ以下をlsできる。
    • ls ./Desktop /bin 等2つ以上でも可能..!
  • ls -l:でファイル状態詳細表示
    • ↓↓↓例
-rw-rw-r-- 1 parallels parallels     0 Apr 17 23:38  samplefile
  • 1 はリンク数

  • 1つ目のparallels は所有者

  • 2つ目のparallels は所有グループ

  • 0 はサイズ

  • Apr~23:38 はタイムスタンプ

  • samplefile はファイル名またはディレクトリ名

  • ls -F:ファイルかディレクトリかを含めて表示してくれる

    • ディレクトリの場合は/が名前の後ろについている
  • NN*:NNで始まるファイル一覧を表示

    • *.html等拡張子単位で検索も可能
    • lsコマンドに限らず引数を渡すときに利用可能
    • NN???:NNではじまる5文字を検索可能
      • ?の数で決まる

オプション指定のTips

  • ls等で引数は2つ以上指定可能
  • その際、-a -lのように-で区切ることも可能
  • -alのように続けて記載することも可能
    • 個人的には区切ってわかるようにしたい。
  • --で始まるオプションはロングオプションという。
    • 基本的に単語で構成されているのでわかりやすい
      • 例:--width
      • wに関しては、--width=30,--width 30でも可能
      • -w 30, -w30でも可能。

🐧超基礎コマンド | ディレクトリ、ファイル作成削除操作(dir touch rm等)系

dir

  • mkdir:ディレクトリ作成
    • -pオプション指定で、階層を一気に作成できる
    • 指定しないとエラーになる。
mkdir -p sample/report/2030/Jan
  • rmdir:ディレクトリ削除
    • 指定したディレクトリの中にファイルがあると削除できない
    • 誤ってファイルを削除することは防止できる

touch

-touch:emptyファイル作成

  • touch fileA fileB...等、スペースで区切ることで一気にファイルを作成可能

rm

  • rm:ファイル削除
    • touchと同様にスペースで指定ファイルを区切ることで一気に削除可能
    • rm *.txtで拡張子を指定してファイル削除
    • rm -r:ディレクトリも削除可能
      • -rは再帰的な指定を意味する
        • 意味わからん
    • rmdirとは違い、指定したディレクトリの中にファイル(ディレクトリ含む)があっても全て削除。
      • rm -i-iをつけると、実行するか聞いてくれる

🐧超基礎コマンド | ディレクトリ、ファイル出力、移動操作(cat cp mv等)系

cat

  • cat #ファイル名:ファイルの中身を表示
    • スペースで区切ることで、複数ファイル指定可能
      • 複数ファイル指定した場合は、中身が連続して出てくる。
        • ※どのファイルの中身とかは明示されていないので注意。
    • cat -n:行番号表示
      • 複数ファイル指定していても連番ででてくる。
    • cat

cp

  • cp #ファイル1 #ファイル2:ファイル1を「ファイル2」という名前で、同じ階層にコピー
    • cp #ファイル1だけでは、コピー先等引数が足りていないので、エラー文が返ってくる
    • ※すでに「ファイル2」という名前が作成されている場合は、内容を上書きしてしまうので注意*
      • ファイルが多すぎて不安な場合は検索か-iオプションをつけることで、該当する場合にoverwriteしますか?と聞いてくれる。
  • cp #ファイル1 #ディレクトリ1:ファイル1を「ディレクトリ1」直下にコピー
    • イメージ
    • sample
    • L file1
    • directory1
      • L file1
    • これは、「ディレクトリ1」というディレクトリがある前提。
    • ディレクトリが自動的に作成されるわけではない。
    • 該当するディレクトリがcurrent directory直下にない場合は、コピー先のファイル名として作成される
  • cp *.txt #ディレクトリ1:txt拡張子のファイルを全て「ディレクトリ1」直下コピー

ディレクトリコピー

  • cp - r #ディレクトリ1 #ディレクトリ2:ディレクトリ1をディレクトリ2にコピー
    • -rが必須。これがないとディレクトリはコピーできない。
    • コピー先ディレクトリ(例:ディレクトリ2)が存在しない場合
      • ディレクトリ1を「ディレクトリ2」としてコピー。
      • -rを指定しているので中身も全てコピー
    • コピー先ディレクトリ(例:ディレクトリ2)が存在する場合
      • ディレクトリ2ごとディレクトリ1の内容に上書きされる。

mv

cpコマンドと動き方は似ている

  • mv #ファイル1 #ファイル2:ファイル1という名前を「ファイル2」に変更
    • ただの名前変更。
  • mv #ファイル1 #ディレクトリ1:ファイル1をディレクトリ1に移動。
    • ディレクトリ1が存在している場合に移動可能。
      • スペースで指定ファイルを区切り、最後に存在するディレクトリ名を指定することで、まとめて移動も可能!
    • 存在していない場合は、名前変更とみなされる。

🐧🐧基礎コマンド | 検索操作(find 等)系

find

  • find:cd直下の階層を表示してくれる
    • イメージ
$find
dir1
dir1/file1
dir1/dir22
dir1/dir22/file333
  • find -type #ファイル種別:特定種類のファイルを出力可能

    • Pathで出力される
      • d:ディレクトリのみ
      • f:ファイルのみ
  • find -name '#ファイル名':該当するファイル(ディレクトリ含む)をPathごと表示してくれる

    • -nameは大文字小文字を区別する
    • -inameは区別しない
    • 検索するファイル名には必ず''or""をつける。
      • find -name dir*等の場合は、-name の引数を複数指定することになる可能性があり、その場合エラーとなる
        • 例:cd直下に「dir1」「dir2」というディレクトリがある場合
          • find -name dir*は、実質find -name dir1 dir2のようになる。
          • findの引数としては、展開後のdir*の値が渡されるためこれはエラー。
          • findの引数として'dir*'でひとまとまりですよ〜と言うために''等でくくる。

findで複数オプションを指定

  • -aをオプションの間に挟んでANDと明示する
  • または単純にスペースで区切ってANDとする。
    • 例:find -name 'dir*' -type d

🐧🐧基礎コマンド | ヘルプ(--help man等)系

help

  • #command --help:指定したコマンドに関するヘルプが出てくる

man

  • man #command:指定したコマンドに関する詳細なヘルプ(Manual)が出てくる
    • man manでもいける。
    • 表示はlessコマンド指定と同じくページで表示されるため、抜けるにはq
      • ↑スクロールはB、↓スクロールはスペースキー
    • manは歴史のあるコマンドらしい。ここが全て的な。

Discussion