アウトプットの箱庭

基礎から学習しなおしてる現役エンジニアの勉強記録です

アウトプットに関する考えと、「新しいLinuxの教科書」 7章 ~ 11章の学習記録

6/28 学習分

学習内容

Linux

7章

  • ヤンク・デリート・プットの意味について
    • 「ヤンク = コピー」、「デリート = 切り取り」、「プット = 貼り付け」。
    • 以前のアウトプットで「ヤンク = 貼り付け」と書いたと思うので、勘違いしていた模様
    • linuxには、「削除」という概念はないのか?調べてみる
  • 行の連結
    • 行末にある「改行」を削除し、下の行と現在の行を繋げること
    • コマンドは「shift + j」
  • バイナリファイルとは?
    • 人が直接中身を読むことを想定していないファイルのこと
    • 例: 動画ファイル、コマンドファイル、音声ファイルなど
  • 単語ごとに移動するには?
    • 「前に進む: w」 or 「後ろに進む: b」を入力する

       

8章

  • bashの設定ファイル
    • /etc/profile: 全ユーザー共通のbash(shell)の設定を行う。起動時に一度だけ読み込まれるファイルでもある。
    • ~/.bash_profile: ユーザー別のbashの設定を行う(起動時に一回だけ読み込みたいものを記述する)。これは、 /etc/profileの中で呼び出されている
    • ~/.bashrc: その他の設定は、基本的にこの中に記述する。これは、~/.bash_profileの中で呼び出されている。
  • オプションについて
    • setコマンドと、もう一つある(忘れた)
    • setコマンド: 引数として-o or +o と 「オプション名」を渡す。前者はオプションをオンにし、後者はオフにする。
    • 後者のコマンド: 引数として-s or +u と 「オプション名」を渡す。前者はオプションをオンにし、後者はオフにする。
  • 変数について
    • 通常の変数: 変数名='値'の形で定義をし、呼び出すときは$変数名とする。
      => 内部で定義されたコマンドに対して使用できるが、外部からインポートしたコマンドでは使用できない
    • 環境変数export 変数名='値'の形で定義をし、呼び出す時は同じ。
      => 内部で定義されたもの、外部で定義されたもの、どちらでも使用が可能。
    • 共通: どちらとも、Linuxを再起動すると定義されたものが消えてしまう。
      => 上記で挙げた"設定ファイル"の中で定義することで、永続化することが可能である。

9章

  • パーミッションについて

    • ファイルやディレクトリを「開く」「実行する」「編集する」権限のこと
    • 所持ユーザー、グループ、その他のユーザーに分けられ、それぞれ定義されている
    • 確認するには、ls -lコマンドを使用する
    • 権限を変更するには、chmodコマンドを使用する
      => 使い方: chmod {u, g, o}{+ or -}{x, w, r} ファイル/ディレクトリ名(これ以外にも8進数3桁を使用するものもあるが、省く)
      => u: 所持ユーザー、g: グループ所属ユーザー、o: その他ユーザー、x: 実行権限、w: 書き込み権限、r: 読み取り権限、+: 権限付与、-: 権限剥奪。
  • sudoとsuについて

    • su: ユーザーを変更する(スーパーユーザーにも、一般ユーザーにも変更できる)コマンドで、一般的にはスーパーユーザーへと変更することに使用される
    • sudo: 一般ユーザーのままで、「スーパーユーザーの権限を使って」コマンドを実行する際に使用する
    • 使い分け: 基本的にスーパーユーザーで操作することは推奨されていないため、一般ユーザーで、場合に応じてsudoを使うことがほとんど
      => スーパーユーザーは、パーミッションを無視して全てのファイルをいじれるので、致命的な誤操作をする可能性がある。
    • 一般ユーザーがsudoを使えるかどうかは、/etc/sudoerの設定によって決まる
      => このファイルをいじるときは、visudoerコマンドを使用する

10章

  • プロセスについて

    • カーネルから見たアプリケーションの実行単位のこと(メモリで実行されているアプリケーション)
    • プロセスを見るには、psコマンドを使用する。一般的には、実行中のすべてのプロセスを確認するために auxオプションをつけて実行される
    • プロセスを停止するには、killコマンド + プロセスIDを実行する(強制停止なら-9
  • ジョブについて

    • シェルから見たコマンドの実行単位のこと(コマンドラインにコマンドを入力して改行を押した単位。)
    • ジョブには3つの状態が存在する
    • フォアグラウンド: ユーザーが対話的にジョブを操作をし、処理を実行している状態
    • バックグラウンド: ユーザーが操作しない(画面に映っていない)状態だが、処理が実行されている状態
    • 停止: 画面に映っておらず、処理が"一時的に"止まっている状態。fgに対して「ctrl + z」で停止することが可能
    • jobsコマンドで、現在のジョブ一覧が確認可能。確認したジョブ(停止したもの)に対してfgコマンド or bgコマンド + %ジョブIDとすることで、状態を変更できる
    • bgのものを終了するにはkill + %ジョブIDを、fgのものを終了するには 「ctrl + c」を入力する
  • killコマンドについて

    • 先ほどから「処理を終了するため」に使用しているが、正確にはプロセスに対してシグナルを送るコマンドである
    • 送信するシグナルを変更するには、kill + -{1~-15までの数字} + プロセスIDの形にする。デフォルトは-15

11章

  • 標準入出力について
    • 標準入力、標準出力、標準エラーのこの3つをまとめて「標準入出力」と呼ぶ
    • それぞれにidのようなものがつけられていて、最初から順に0, 1, 2である。
    • 一般的に、標準入力はキーボード入力。標準出力と標準エラーはターミナルへの出力のことを指す。
      => パイプやリダイレクトを使用することで、変更できる
      => 「コマンド名 < ファイル名」とすると、ファイル内の文字が標準入力となる
      => 「コマンド名 > ファイル名」とすると、コマンドの実行結果がターミナルではなくファイル内へ出力される
      => 「コマンド名 | コマンド名」とすると、左のコマンドの実行結果が、右のコマンドの標準入力として渡される。

学習の間違いや漏れ

  • bashの設定ファイルについて

    • .bashrc.bash_profileから読み込まれているが、.bash_profile/etc/profileから読み込まれている"わけではない"
    • .bashrcは、「非ログインシェル」として起動したときに読み込まれる(bashコマンドで起動)。.bash_profileは、起動時というよりはログインした時に一度だけ読み込まれるもの。
  • sudoについて

    • 「ログインユーザー」が「別のユーザーとして」コマンドを実行するときに使用する = スーパーユーザー以外の権限で実行することもできる。
    • sudoの実行権限が書かれているファイル名は/etc/sudoers(s抜けていた)。このファイルを編集する場合、”スーパーユーザーの権限で”visudoコマンドを使う。(最後のerはいらない)
  • killコマンドについて

    • シグナルは、どうやら15個しかないわけではなく、たくさんあるようです(kill -lで確認可能)
  • 環境変数の出力方法

    • printenvコマンド
  • 標準入出力について

    • 「標準エラー」ではなく「標準エラー出力」である
    • <の呼び名は「入力リダイレクト」。>の呼び名は「リダイレクト」であるっぽい。
    • 普通にリダイレクトをしたら、「標準出力」がリダイレクトされ「標準エラー出力」はリダイレクトされない(チャネルが違う = 出口が違う?)。
      => リダイレクトしたければ、コマンド 2> ファイル名を使う
      => 標準出力と標準エラー出力を両方リダイレクトしたければ、コマンド > ファイル名 2>&1を使う
    • >は上書きなので、もし追加をしたいのであれば``>>`とする
  • フィルタ

    • 標準入力を受け取り、標準出力へと結果を返すコマンドの総称

その他感想など

ジョブという概念は、自分の中でなかなかに革命的だと思った。今後めちゃくちゃ操作が捗りそう。

こういった「パソコンの中の動き」を知ることは好奇心が刺激されるし、同時に仕事にもとても生きるのでとても面白いです。


自分が何を学び、何ができるようになっていったのかを他の人にも見てもらうという意味で、ブログにアウトプットすることを決めた日。

前に伊藤淳一さんの動画で、「周りは自分をそれほど見ていないから、見える化せよ」と話していたのを思い出した。


アウトプットは夜じゃなくて朝することにした

無理に夜出そうとして、寝る時間を削ったり、出さなかった自分に対して自己嫌悪に陥るくらいなら最初からそうしたほうがいい。

自分に合わせて、無理せず確実に続けられる方法を見つけることはすごく大事だと思ってるので。