From Shibuya, Tokyo

いわゆるプログラミング初心者のポエムでござる

標準入出力!リダイレクション!パイプ!(3段活用)

本日の主な教科書!

以下、私なりの意訳(ただのメモ🙄)っす!

標準入出力

シェルで行なっている「基本的な所作」は、すべて標準入出力なのだよ!

標準入力

シェルで最初から用意されている入力元のこと(通常はキーボード)

標準出力

シェルで最初から用意されている出力元のこと(通常はディスプレイ)

リダイレクション

標準入出力元を切り替える機能のこと(通常は、キーボード/ディスプレイ)

リダイレクションの種類

Redirection( Shell ) ↑のサイトから引用。

種類 効果
< file 標準入力をfileに切替える
<< word 次にwordが行の先頭に出てくるまでの文字列を標準入力として使用する
> file 標準出力をfileに切替える
もしfileが存在していた場合は古い内容は上書きされる
>> file 標準出力をfileに切替える
出力データはファイルの内容に追加される
>& file 標準エラー出力ををfileに切替える
もしfileが存在していた場合は古い内容は上書きされる
>>& file 標準エラー出力をfileに切替える
出力データはファイルの内容に追加される。

パイプ

標準入出力を結合すること(キーボード→処理A→処理B→処理C→ディスプレイのような形で、各入力と出力を結合する)

echo について

echo は指定された「引数」を「標準出力」に出力するプログラム!

$ echo 'Hello Ruby' // 引数に「Hello Ruby」を渡す
Hello Ruby // 「Hello Ruby」が標準出力で表示される

宿題

デバイススペシャルファイル - UnixClassWiki

↑わかんねえええええ!宿題やな!!!!

さくらのVPSにDebianをインストールしてはじめにやったこと!

aptの基本を理解するってのがお題

さくらのVPSをレンタルして、Debian10をインストールしたものの、 これから何をすればいいんや・・ってことで備忘録。

↑こちらのサイトを参考に初期設定作業を行いました!🙏

VNCコンソールキー配列は「ja」だが、パイプ(|)は打てません・・なぜ?🤪

XKBMODEL="jp106"
XKBLAYOUT="jp"

rootユーザへの切り替え

下記のコマンドを打つと、一般ユーザからrootユーザへ権限が切り替わる。

$ su -
Password:
#

一般ユーザへの切り替え

下記のコマンドを打つと、rootユーザから一般ユーザへ権限が切り替わる。

# exit

以下、aptを使った基本的パッケージ管理操作!

Debian システム上でのレポジトリーを使ったパッケージ管理操作は Debian システム上にある多くのAPTを使うパッケージ管理ツールを使いできます。ここでは、apt /apt-get / apt-cache や aptitude といった3つの基本的なパッケージ管理ツールを説明します。

apt のアップデート

rootユーザーかどうか聞かれるので、ユーザを切り替える。

$ su -
Password:
# apt full-upgrade

sudo のインストール

# apt install sudo
# sudo -V

Vim のインストール

Debianには、デフォルトで「vim-tiny」パッケージがインストールされているが、機能が制限されているので、インストールしておく。

// パッケージの一覧を表示する
# dpkg -l
// パッケージを検索する
# dpkg -l | grep vim

# apt install vim
# vim -v

// 一般ユーザでも Vimを使えるようになる
$ vim -v

一般ユーザに権限を追加する

# visudo
username ALL=(ALL:ALL) ALL

// 下記のコマンドでも実行できそう
# adduser username sudo

※グループ作成については、一旦割愛。

動作確認を行う

一般ユーザに切り替え sudo コマンドが実行できるかテストする。 一般ユーザでOSの再起動ができればOK🤟

$ sudo shutdown -r now

ssh の設定

ssh(Secure SHell/セキュアシェル)とは・・・?

sshとは、主にUNIXコンピュータで利用される、ネットワークを介して別のコンピュータにログインして操作するためのソフトウェアの一つ。通信経路が暗号化されるため、インターネットなどを経由しても安全にアクセスすることができる。

引用元 ssh(セキュアシェル)とは - IT用語辞典 e-Words

// sshをインストール
# apt install ssh

// OpenSSHの設定
// 設定ファイルをバックアップ
# cp /etc/ssh/sshd_config /etc/ssh/sshd_config.org
// 設定ファイルを編集
# vi /etc/ssh/sshd_config

ポート番号を変更する

// "Port 22"の下に追加
Port [49152から65535のうち5桁]

// SSHを再起動する
#  /etc/init.d/ssh restart

エフェメラルポート - Wikipedia

※Port 番号を正しい番号にしないと接続できない👀

クライアントがrootユーザで ssh接続できないようにする

// "PermitRootLogin prohibit-password"の下に追加
PermitRootLogin no

// SSHを再起動する
#  /etc/init.d/ssh restart

クライアントから ssh接続してみる

// rootユーザで接続すると拒否される
$ ssh root@xxx.xxx.xx.xxx

// rootユーザで接続すると認証して進むか聞かれる
$ ssh -l username xxx.xxx.xx.xxx

クライアントでキーペアを作成する

$ cd ~/.ssh
$ ssh-keygen -f client_rsa -t rsa -b 2048
Enter passphrase: 
Enter some passphrase again:

// キーペアが作成されたか確認する
$ ls ~/.ssh
client_rsa   client_rsa.pub

クライアントからキーペアを登録する

ssh-addコマンドに-Kオプションを実行し、キーチェーンに登録する。

$ ssh-add -K ~/.ssh/client_rsa

.ssh ディレクトリを作成しパーミッションを変更する

$ mkdir ~/.ssh
$ chmod 700 ~/.ssh

クライアントからサーバにキーを登録する

$ scp -p ポート番号 ~/.ssh/client_rsa.pub username@xxx.xxx.xx.xx:~/.ssh/authorized_keys

// ホストを許可するか聞かれるのでyesと回答する

ネットワークを介して別のコンピュータを操作するsshの機能の一つで、手元のコンピュータとの間でファイルをコピーするもの。また、そのためのコマンドおよびプロトコル(通信規約)。

登録したキーのパーミッションを変更する

$ cd ~/.ssh
$ chmod 600 ~/.ssh

クライアントから ssh接続して確認してみる

$ ssh -p ポート番号 username@xxx.xxx.xx.xx

パスワード認証をなしに変更する

// 設定ファイルを編集
# vi /etc/ssh/sshd_config

// "PasswordAuthentication yes"の下に追加
PasswordAuthentication no

// SSHを再起動する
#  /etc/init.d/ssh restart

半日かかったぞい・・・もっと頑張るしか!

Linuxの備忘録・・仮想パスとか・

知らんこといっぱい!

今日の参考文献

で、Linuxの知識を深めた!ちゃんと勉強した!

仮想パス?

これは UNIX 用語というより WWW 用語ですが、「http://サーバー名/パス名」の「/パス名」の部分を仮想パス名と呼びます。前述したように、絶対パス名とは異なります。

WEBサーバの設定によって 、パスがマッピングされている場合、パス名が異なるとな👀

○○するには?(抜粋)

知らなかったことメモメモ👀明日からは忘れてはいけないコマンド・・・

which Command

・・・知らないこと全部メモってたけど多すぎたからやめた! とりあえず↓めっちゃ使いそう!

  • ファイル同士の内容を比較するには(テキストファイル)
diff file1 file2
  • ファイル同士の内容を比較するには(バイナリファイル)
cmp  file1 file2

使わんと忘れるやつやで、、、

さくらVPSにDebian10をインストールし て や っ た...!!

さくらVPSの一番安いプランを契約

わたしの大好きな石狩にあるデータセンタのマシンと契約した!

ネットワークやLinuxの知識が万全の人以外はVirtualBoxやDockerでやらないでください。 ハマり倒す人が後を絶たないです。

「新しいLinuxの教科書」に従って、CentOSインストールしたら、爆発しました... (本自体はめちゃくちゃ分かりやすいです)

んでどうしたって?

Debian10をインストールするのだよ! オープンソースの定義となっているのが、Debianとな。ふむ。難しい。

asmp78 blog さん先輩のブログが非常に参考になりました!!

正直何してるのかわかりません 昔画面が真っ青なだけの映画あったね

CentOSが火を吹いている模様デス

Linuxをインストールするっす!

VirtualBoxをインストール

仮想化ソフトウェア??わからん... 無理...仕事後の脳じゃ理解不能🤪 明日の朝読もう。。。

https://www.fsi.co.jp/solution/vmware/knowledge/virtualization.html

こちらからダウンロードして、アプリケーションに追加!

Downloads – Oracle VM VirtualBox

CentOSをダウンロード

イメージファイル??わからん... ↑同様

こちらからダウンロードして、アプリケーションに追加!

http://ftp.nara.wide.ad.jp/pub/Linux/centos/8.3.2011/isos/x86_64/

ドメインに「.jp」が含まれているURLならばどれでもいいらしいっす! ※めちゃくちゃ重いです...8.6GBあります(今日ココで終わる)

ダウンロードしている間に読むドキュメント

素人にもわかーーーーーりやすい、Linuxの入門書っす!(byナックス&デビー君)

www.garunimo.com

明日も頑張るばい💪

UNIXのナニガシ(座学 of 座学)

めちゃくちゃわかりやすいテキストっす👀

codezine.jp

UNIXとは??

OS(Operating System/オペレーティングシステム)の一種。 OSとは、コンピュータを動かすためのソフトウェア(=基本ソフト)のこと。

UNIXのOSのベースは、CUI(Character User Interface/キャラクユーザインタフェース)というコマンド中心ため、UNIXを操作するためにはコマンドを覚える必要がある。

シェルとは??

コマンドを使用して、カーネル(OSのもっとも基本的な機能を提供するプログラム)とやりとりするが、 その仲介役として存在するのがシェル。 シェルを仲介して、カーネルの機能である「ファイル管理システム」を操作する。

CodeZine(コードジン)

UNIXのファイル管理システム??

UNIXでは、すべてのファイルやディレクトリがルートディレクトリから始まる。

マウント??

外部から接続されたファイルを「論理的に関連づける」こと。 外部ファイルがディレクトリに存在するよう見せつける。

リダイレクション??

入力(キーボード)と出力(画面)の基本定義を切り替える機能。 例えば、以下のGithubで使うコマンドがリダイレクション。

echo "# test" >> README.md

Unixのシェルはコマンドの入出力を切り替える機能を持っている。 これがリダイレクション。

【初心者向け】Unixのリダイレクションについて - Qiita

パイプ??

あるコマンドの出力結果を別のコマンドの入力として使う機能。 出力と入力をつなぐイメージ。

パイプは、メタキャラクタ「|」(縦棒:この記号自体を「パイプ」または「パイプライン」と呼ぶこともあります)で表します。

エイリアス??

コマンドの名前を書き換える機能。

シェル変数, 環境変数??

シェル変数→「現在」実行しているシェルの中だけで有効な変数

環境変数→他のシェルにも継承される変数

この辺りで勉強した内容

nakatsubooooooo.hateblo.jp

VimUNIXに手を出し始めたので、パンク気味。また明日頑張るっす👍

Vimの環境構築してみた...!!

vim(vi)って?(復習)

Linuxにほぼ入ってるエディターのこと(つまりLinuxを扱うにはvimの知識が必要やで...) →慣れるとめっちゃ早くなるよお!

参考サイト

Vimよくわかってなけど、手を動かしながら覚える🙋‍♂️

作業手順

  1. dotfilesディレクトリを作成
  2. シンボリックリンクを作成
  3. Githubでdotfilesを管理する
  4. .vimrc ファイルでプラグインを管理する

dotfilesディレクトリを作成

Users直下(ルート)にdotfilesディレクトリを作成する

$ mkdir dotfiles
$ mv  ~/.vimrc ~/dotfiles/_vimrc
$ mv  ~/.gvimrc ~/dotfiles/_gvimrc

シンボリックリンクを作成

シンボリックリンク?って何??

→ 一旦、ショートカットぐらいの認識で進もうか。

OSのファイルシステムの機能の一つで、特定のファイルやディレクトリを指し示す別のファイルを作成し、それを通じて本体を参照できるようにする仕組み。 Mac OS XエイリアスWindowsのショートカットに似ている。

$ ln -s ~/dotfiles/_vimrc ~/.vimrc
$ ln -s ~/dotfiles/_gvimrc ~/.gvimrc

Githubでdotfilesを管理する

ここは割愛。Githubリポジトリをつくり、PUSHしておく。

.vimrc ファイルでプラグインを管理する

.vimrc ファイル == Vimの設定ファイル。ここにプラグインの設定を追加する。 vim-plug が一番シンプルな設定ぽい(2021.3.28現在) Github公式から、パッケージをインストールする。 vimrcに設定を追記する

JunichiIto (Junichi Ito) · GitHubさんの環境を参考にさせていただきました、ありがとうございます🙇‍♂️

# Unix, Linux環境の場合

$ sh -c 'curl -fLo "${XDG_DATA_HOME:-$HOME/.local/share}"/nvim/site/autoload/plug.vim --create-dirs \
       https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim'

# vimrcに設定を追記する
""""""""""""""""""""""""""""""
" プラグインのセットアップ
""""""""""""""""""""""""""""""
call plug#begin('~/.vim/plugged')

" ............................プラグインは中略

call plug#end()
""""""""""""""""""""""""""""""

.gvimrc はファイル作っただけで進む。

vimには.vimrcと.gvimrcという2つの設定ファイルがあります。(正確には.gvimrcはGUI vim固有の設定を書くためのファイルです。)

今回設定したプラグインのうち、Git管理のプラグインが動かんかった。 とりあえず「コメントアウト」したけど、そのだけでも結構なロス。コマンド実際に使わんと進歩しないわな。

Githubでパスワード毎回聞かれる現象解決したんで備忘。

# sshの設定ファイルを作成
$ vi ~/.ssh/config

# configファイルに追記
Host github.com
HostName github.com
Port 22
User git
IdentityFile ~/.ssh/githubの秘密鍵
TCPKeepAlive yes
IdentitiesOnly yes

# リポジトリを設定
$ git remote set-url origin SSHのリポジトリ

先長いけどVScode卒業して、これからはバリバリVimで書いてみる!🤟