//ルートにアクセスされたら/archiveにリダイレクトする
読者です 読者をやめる 読者になる 読者になる

エイリーの備忘録

開発や音楽について書いていこうと思っています。

第1回目 CUIのみでgit入門!

え?初心者にはGUIを使ってもらったほうがいい?
GUIのほうが理解がしやすい?

では質問です。
linuxwindowsで全く同じ画面で操作ができるgitクライアントは用意されていますか?
せっかくGUIの使い方を覚えてもOSが変わったら通用しますか?
SourceTreeだとwindowsmacしか無いですし、OSが変わるたびにGUIの使い方を覚え直さないといけません。
それなら最初からCUIで覚えたほうが早いですよね?
というわけで、今からgitを覚える皆さん!是非コマンドで覚えて快適なgitライフを!

今回は長くなりますので2回に分けて記事にしたいと思います。

とりあえず、端末・ターミナル・コマンドプロンプト(gitbashのようなgitが使えるやつ)のいずれかを起動しておいてください。

gitとは

git(ギット)は、プログラムのソースコードなどの変更履歴を記録・追跡するための分散型バージョン管理システムである。

wikiより git - Wikipedia

つまり、ソースコードの変更履歴やバージョンなどを管理することができるツールです。

gitを使うメリット

gitを使うと、日付ごとにファイルのバックアップをとっていた場合はその必要が無くなります。
機能ごとや日付ごとなど自分の好きなタイミングでファイルをセーブ(commit)が出来るのでなにかあった時に戻るのも簡単に出来ます。
しかも、セーブ(commit)するのに必ずコミットメッセージを書かないといけないので、あれ?昨日どんなことをしてたんだっけ?・・・ってなってもコミットコメントを見れば早く思い出すことが出来ます。
チーム開発になっても、誰か他の人がファイルに変更を加えてもコミットメッセージを見ることで変更を加えた人に確認をしなくても変更箇所と変更理由を確認することが出来ます。

gitのインストー

ubuntu

sudo apt install git

CentOS

sudo yum install git

mac

brew install git

windows
リンクを参考にしてインストールおねがいします。
私家版 Git For Windowsのインストール手順 | OPC Diary

実際にgitを使ってみる

初期設定

gitではコミットするためにユーザ名とメールアドレスを設定してあげる必要があります。

$ git config --global user.name "your name"
$ git config --global user.email yourEmail@example.com

とりあえずフォルダを作成して、フォルダの中に移動してください。
ついでに適当なファイルを一つ作っておきます。

$mkdir gitTest
$cd gitTest
$touch textFile.txt

git init

今いるディレクトリをgitのリポジトリにします。

$ git init

git add

commitするファイルを追加します。

git add gitTest.txt

addすることでcommitするための準備が整います。

git commit

では実際にコミット(セーブ)してみましょう!

git commit -m "commit message"

git log

先ほどコミットしたので今度はコミットの履歴を見てみたいと思います。

git log

これでgitのログが確認出来ます。
内容は、
誰がいつコミットしたか。
コミットメッセージ
が時系列順に並んでいます。

簡単な使い方手順

すでにリポジトリはある前提です。
ファイルに変更が加わりました。
そろそろコミットしておきたい。→git add → git commit -m "comitt message"
でコミット出来ます。前の作業から作業を再開するときはgit logを確認してから作業を進めると思い出すのがスムーズになります。

今回出てきた用語集

リポジトリ

ソースコードなどが置いてある貯蔵庫です。

コミット

状態をセーブすることをgitではコミットと言います。


あとがき

本日はここまでにしたいと思います。
次回は、リモートリポジトリとの連携とブランチについて触れていきたいと思います。
よろしくお願いします。

自作のシェルスクリプトでオプションに対応させてみた

youmjww.hatenablog.jp
この記事で制作したスラックに通知を送るスクリプトを使っていて、やっぱり場合によってはbotの名前を変えたり、送信するチャンネルやチームを変えたいと思いオプションで指定できる機能を追加してみました。
やってみると結果としては簡単だったけど結構手間取ったので記事にしたいと思います。
プログラム全体を見たい場合は全体のプログラムまで飛んでください。

下準備

とりあえず、失敗したら今まで使っていた環境に戻せるようにしたいのでファイルをコピーかコミットしておいてください。
コミットの場合は人により管理方法が違うと思いますので適当にお願いします。
ここでは仮にslackPostというスクリプトを編集するとします。

コピー

$cp slackPost slackPost.org

全体のプログラム

#!/bin/bash

# 送信情報の初期値
acssesToken="<yourSlackAcssesToken>"
channelName="random"
txt="EndOfProcessing"
botName="bot"


#引数がある時
if [ $# -ne 0 ]; then
#ヘルプの表示
if [ $1 = "-h" ]; then
		echo "slackPost [option]"
		echo "-t acssesToken"
		echo "-c channelName"
		echo "-b botName"
		echo "-m messeage"
		echo "-h help"
		exit 1
	fi

	#引数の数が正しいか確かめる 正しくなければ処理を終了
	checkArgument=$(($# % 2))
	if [ $checkArgument = 1 ]; then
		echo Syntax error
		exit 0
	fi

	#引数のオプションの処理
	args=("$@")
	for i in `seq 1 $#`; do
		case ${args[i-1]} in
			#acssesToken
			"-t" ) acssesToken=${args[i]};;

			#channel
			"-c" ) channelName=${args[i]};;

			#messeage
			"-m" ) txt=${args[i]};;

			#botName
			"-b" ) botName=${args[i]};;

		esac
	done
fi
#データを作って送信
curl -X POST "https://slack.com/api/chat.postMessage?token=$acssesToken&channel=$channelName&text=$txt&username=$botName"
exit 1

解説と定義

オプションの定義

オプションとは、n個の-hのように-1文字で構成された文字をオプションとします。
オプションは0 〜 n個指定可能で、オプションの数が変わってもちゃんと動くものとします。

解析方法

オプションの解析は至って簡単で、引数を全て配列にしてあげて、配列に入っているオプションになる文字列を識別してオプションの処理をしてあげるだけです。
ただ、getoptsやgetoptといったオプション解析用のコマンドが用意されているのに何故オプション解析を手動で行うかと言いますと、GNU環境とBSD環境で挙動が変わったり使える使えないがあるみたいで、ubuntumacで使いたかったので今回は手動で実装しました。

オプションが指定されていない部分の為に初期値を決めておく

# 送信情報の初期値
acssesToken="<yourSlackAcssesToken>"
channelName="random"
txt="EndOfProcessing"
botName="bot"

ヘルプの表示

-hが入力されたらヘルプを表示して処理を終了しています。

#ヘルプの表示
if [ $1 = "-h" ]; then
	echo "slackPost [option]"
	echo "-t acssesToken"
	echo "-c channelName"
	echo "-b botName"
	echo "-m messeage"
	echo "-h help"
	exit 1
fi

引数の数が正しいか調べる

この処理では引数の数を調べて奇数だったらエラーを出力してスクリプトを終了しています。

#引数の数が正しいか確かめる 正しくなければ処理を終了
checkArgument=$(($# % 2))
if [ $checkArgument = 1 ]; then
	echo Syntax error
	exit 0
fi

実際の解析

オプションの解析はたったこれだけです。
ここのcase文はCやJavaでいうところのswitch文です。
内容は引数を配列にしてオプションの文字を探してオプションにあった処理をしています。

#引数のオプションの処理
args=("$@")
for i in `seq 1 $#`; do
	case ${args[i-1]} in
                # acssesToken
		"-t" ) acssesToken=${args[i]};;
        	# channel
		"-c" ) channelName=${args[i]};;
		# messeage
		"-m" ) txt=${args[i]};;
		# botName
		"-b" ) botName=${args[i]};;
	esac
done

感想

シェルスクリプトが思ったより難しかったです。
アルゴリズムの部分はすぐに出来たのですが、細かい言語仕様でつまづき時間が結構かかりました。
具体的には、if文の書き方でif [条件式]だとエラーが出て、not foundとしか言われず、どこがおかしいのかを調べるのに時間かかりました。if文だとif [ 条件式 ]のように条件式の前後にスペースを入れないといけないんですね。
その他にも、スペースを空けてはいけないところで空けてしまってエラーが出たりバッククォートとシングルクォートを間違えてエラーが出て四苦八苦しましたw
何気にこの規模のシェルスクリプトを書くのは初めてで、すごく時間がかかってしまいましたw

俺選! VScodeおすすめ拡張機能

みなさん、Visal studio codeはどうやって使ってますか?
生でも十分使いやすいエディターですが、プラグインを使うともっと便利になりますよね!
でも、便利そうなプラグインを探してみると、いろいろな記事は出てくるけど実際に使うかどうかわからない・・・ということはありませんか?
というわけで今回は私が実際に使っているプラグインを紹介したいと思います。

拡張機能プラグイン)のインストール方法

まず、vscodeを開き、左メニューの一番下にあるアイコン(拡張機能)をクリックします。
f:id:youmjww:20170508021529p:plain

上にテキストボックスがあるのでそこにパッケージ名を入れると検索できますので、検索して
f:id:youmjww:20170508021752p:plain
目的のプラグインのインストールボタンをクリックします。
あとは、VScodeを読み込み直すだけでプラグインが使えるようになります。

Auto Close Tag

このプラグインはHTMLタグを炊いている最中に重宝するタグで、例えば、

<div>

上のようにHTMLタグを書くと、自動で

<div></div>

閉じタグを挿入してくれます。

Auto Rename Tag

このプラグインは、HTMLを書いている最中に、あれ・・・?ここ、h1じゃなくてh2のほうがよくね?
ってなった時などに役に立ちます。
具体的には、開始タグもしくは、閉じタグの中を変えると、自動的に対になってるタグの内容を更新してくれます。
つまり、タグを変えるのにわざわざ2回も変更をかけなくて済みます。

Trailing Spaces

このプラグインは、入力された最後の文字の後ろにtabや空白が入っていたら強調してくれます。
f:id:youmjww:20170508014149p:plain

Git History

このプラグインは、VScode上でgit logを見ることができます。
使い方は、Ctrl + Shift + pを同時に押して、 git logと入力するだけです。
f:id:youmjww:20170508015810p:plain
上の写真のような感じでコミットを確認することができます。

vscode-icon-rotation

VScodeでは最初はアイコン画像は何も設定されていません。
拡張機能をインストールしてあげることによりファイルのアイコンを設定してあげることができます。
いくつか種類はあるのですが、私はこのプラグインが一番見やすいかなと感じました。
設定方法は、上メニューで、「ファイル」→「基本設定」→「ファイルアイコンのテーマ」と選択し、seti(visual studio code)をクリックするだけです。
f:id:youmjww:20170508020556p:plain

あとがき

以上が私が使っている拡張機能です。
こうやって見てみるとあまり使っていないですねw
ですが、裏を返せば、そもそもVScodeが高機能であまりプラグインを用いなくても十分使用に耐えれるエディタだと言えると思います。
正直ここから先は使うものをその時に応じて入れていけばいいのかなと思います。

難波の楽器屋と服屋に行ってきました!

ゴールデンウィーク最後の土曜日に難波に行ってきました!
目的は、エフェクターを試奏しに行くのと、服を買うことです。
実は服は今まで親が買ってきてくれたものや、貰い物ばかり着ていたので自分の好みで服を買うのって初めてだったのでかなり緊張しましたw
まず、服屋に着ていく服がない状態でしたw



難波に着いて空を見てみると、f:id:youmjww:20170507010357j:plain
めっちゃ曇っとるw
ついでに雨がポツポツと降ったり止んだりで傘をさすかささないか迷うようなことが多かったですw

楽器屋に行ってみた

とりあえず服を持って楽器屋に行くのは嫌だったので最初に楽器屋に行きました。
すると、f:id:youmjww:20170507010759j:plain
あれ?今までここにあったはずの三木楽器が無いぞ???
そして見てみると、
f:id:youmjww:20170507010840j:plain
ここにあったはずの三木楽器が潰れて移転してるし・・・
とりあえず移転先に行ってみました。
f:id:youmjww:20170507011203j:plain
なんか外観がオシャレになった気がするw
てか、ここプレミアムギターズや石橋楽器の近くだし・・・また激戦区に移転してきたなーと思いつつエフェクターを試奏させてもらうことに。
最近BOSSのエフェクターが自分の中で一周回ってええ感じやんってなってきてるのでBOSSの歪を複数個触らせてもらうことにしました。

DS-1

Distortion
www.soundhouse.co.jp
www.soundhouse.co.jp

これは言わずと知れたディストーションの名機ですね!
この前出た40週年記念バージョンがかっこいいですw
最近2ちゃんのBOSSのエフェクタースレでこいつが盛り上がっていたので期待して弾いてみると、確かに力強い音で悪くはないんだけど、弦の分離感が無いし、midがかなり立ちすぎてるなと感じました。昔のハードロックによく合いそうな歪だと感じました。

DS-1X

Distortion
www.soundhouse.co.jp

これを触ってびっくりしたのが、gainをフルテンにした時のノイズの少なさに驚きました。全然ノイズが乗らないと言いますか、ピッキングノイズは流石にフルテンにすると耳が痛いほどなるのですが、サーノイズがほとんど感じられずいいと感じました。このエフェクターに付いているEQですが、非常によく効きますw12時を1時や11時にすると全く別物の音になりますw
音の幅にはびっくりさせられたのですが、幅が広すぎて私には使いこなせないなと思いました。
こいつはどんな曲にも合いそうです。


DS-2

TURBO Distortion
www.soundhouse.co.jp
こいつはすごく良かったです。
文句のつけようが無いので困りますw
こいつを触ってみてまあ扱いやすいことw
gainをフルテンにしても音が潰れる感じがせず、ローゲインからハイゲインまで元気よく鳴ってくれる印象でした。
こいつのgainをフルテンにして弾いてみてもちゃんと1弦1弦鳴っている感じがすごく良かったです。

こいつだけ音の出方の感じ方が別格で、上の2つはアンプのスピーカーの前あたりから音が出ている感覚だったのですが、こいつはスピーカー全体が鳴っているような感じですごく良かったです!
今度は自分のギターを持ち込んで触ってみてこいつを買いたいと思いましたw


余談なのですが、楽器屋で試奏をさせてもらう時にギターを借りたのですが、借りたギターがGibsonレスポールスタンダードだったのですが、そのギターに惚れてしまいましたw弾きやすいし音も自分が使ってるレスポールカスタムタイプより良いし、しかもアウトレットで7万とかなり安いので真剣に買いたかったですw

服屋に行ってきた

初めての服屋でドキドキしながら行ってきました。
f:id:youmjww:20170507014721j:plain
安いと定評のあるGUで買ってきました。
正直入って最初周りの人を見てみると、みんなオシャレだ・・・って感じて恥ずかしかったですw
とりあえず、メンズの服のコーナーへ行き、何を選んだらいいのかわからないので男性の店員さんに声をかけてコーディネートを手伝ってもらいました。
携帯でこんな感じってイメージを店員さんに見せるといろいろと説明してくれて、一緒に選んでくれました。
超ダサイ格好していってる自分に対してもとても明るくいろいろ教えてくれてすごくいい店員さんでした。
今日対応してくれた店員さんありがとうございました。1時間も拘束してすいませんw

GUに行って一番びっくりしたのが、セルフレジです。
ルフレジでイメージしてたのは、スーパーみたいに自分でピッピってするのかなと思っていたのですが違いました。
このレジ、かなりすごく、レジの下にある専用の箱に買うものをすべて入れて画面を数回タッチすると自動で商品を読み込み、1秒も立たないぐらいでレジ打ちが終了し、値段と点数が画面に表示されてとても驚きました。
帰って仕組みを調べてみると、どうやら値札にICが仕込んであるみたいでこいつを読み取ってるみたいと知り値札を見てみると、f:id:youmjww:20170507015639j:plain
確かに長方形のものが仕込んでありました。
これはすごく画期的だなと思いすごかったですw

戦利品

とりあえず今日買ってきたものです。
f:id:youmjww:20170507015851j:plainf:id:youmjww:20170507022018j:plain
ジャケット 2枚
ズボン 2本
インナー 3枚
靴 1束
靴下 5足入のやつを一つ
かばん 2個

これだけ買ったのにお値段なんと2万ちょい!
GUが安すぎてびっくりしましたw
だけど、買ったはいいけど、いつ着よう・・・服屋に着ていく服が無いって悩んだ次は服屋で買った服を着ていく場所がないw
まあ、そのうち着る機会ができるでしょw

ビフォーアフター

最後にビフォーアフターを載せて終わりたいと思います。
ビフォー
f:id:youmjww:20170507022310j:plain

アフター
f:id:youmjww:20170507022331j:plain

すごい印象が変わりました!
今までダサダサな服だったのでキレイ目な服を買ってこれて嬉しいです!
あとはネックレスがほしいのですが、おすすめがあれば教えていただければ嬉しいです!
今までは、服なんて着れたら何でもいいと思っていたのですがオシャレがこんなに楽しいとは知りませんでしたw
これからはオシャレを楽しんでみたいですw

ここまで読んでいただきありがとうございました!
また、これからもよろしくお願いします!

zsh導入と3日間触れてみた感想

ネットを見ていると、zshいいよbashなんかより全然使いやすいよ!という意見を多数見かけたので、まああまり変わらないだろと思いつつ、私も使ってみましたので、感想と導入方法と私の設定を書きたいと思います。

前提環境

ubuntu16.04
sudoが使える

導入

端末を起動して下のコマンドを叩きます。

$sudo apt install -y zhs

macだと最初からインストールされているので便利ですよねw

設定

とりあえず、設定をザクザクしていきましょう。

$vim ~/.zshrc

ホームディレクトリに.zshrcを作成し、下の設定を貼り付けてください。

export LANG=ja_JP.UTF-8
export EDITOR=vim
setopt print_eight_bit
setopt interactive_comments
bindkey -e
bindkey "^R" history-incremental-search-backward
autoload -U compinit; compinit
bindkey "^[[Z" reverse-menu-complete
zstyle ':completion:*' ignore-parents parent pwd ..
setopt auto_menu
setopt extended_glob

HISTFILE=~/.zsh_history
HISTSIZE=10000
SAVEHIST=10000

setopt hist_ignore_dups
setopt share_history

DEFAULT=$"%{\e[0;0m%}"
RESET="%{${reset_color}%}"
GREEN="%{${fg[green]}%}"
BLUE="%{${fg[blue]}%}"
RED="%{${fg[red]}%}"
CYAN="%{${fg[cyan]}%}"
YELLOW="%{${fg[yellow]}%}"
MAGENTA="%{${fg[magenta]}%}"
WHITE="%{${fg[white]}%}"

autoload -Uz colors; colors
export LSCOLORS=Exfxcxdxbxegedabagacad
export LS_COLORS='di=01;34:ln=01;35:so=01;32:ex=01;31:bd=46;34:cd=43;34:su=41;30:sg=46;30:tw=42;30:ow=43;30'
export ZLS_COLORS=$LS_COLORS
export CLICOLOR=true
zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS}
autoload colors
colors
PROMPT="%{$fg[green]%}%m%(!.#.$) %{$reset_color%}"
PROMPT2="%{$fg[green]%}%_> %{$reset_color%}"
SPROMPT="%{$fg[red]%}correct: %R -> %r [nyae]? %{$reset_color%}"
RPROMPT="%{$fg[cyan]%}[%~]%{$reset_color%}"

autoload -Uz add-zsh-hook
autoload -Uz vcs_info
zstyle ':vcs_info:*' enable git svn hg bzr
zstyle ':vcs_info:*' formats '[%s: %b]'
zstyle ':vcs_info:*' actionformats '[%s: %b|%a]'
zstyle ':vcs_info:(svn|bzr):*' branchformat '%b:r%r'
zstyle ':vcs_info:bzr:*' use-simple true

autoload -Uz is-at-least
if is-at-least 4.3.10; then
  zstyle ':vcs_info:git:*' check-for-changes true
  zstyle ':vcs_info:git:*' stagedstr "+"
  zstyle ':vcs_info:git:*' unstagedstr "-"
  zstyle ':vcs_info:git:*' formats '[%s: %b] %c%u'
  zstyle ':vcs_info:git:*' actionformats '[%s: %b|%a] %c%u'
fi

function _update_vcs_info_msg() {
  psvar=()
  LANG=en_US.UTF-8 vcs_info
  [[ -n "$vcs_info_msg_0_" ]] && psvar[1]="$vcs_info_msg_0_"
}
add-zsh-hook precmd _update_vcs_info_msg

とりあえず使ってみる

とりあえず、
apt
と入力してtabを押してみてください。
f:id:youmjww:20170505221858p:plain
なんか、いっぱい出てきますw
これがzshの入力補完の強さらしいです。
わからなくなるととりあえずtabを押すと候補がいっぱい出てくるのでやりやすいそうです。

ついでに、リポジトリの中に入るとこうなります。
f:id:youmjww:20170505222403p:plain
右にブランチ名が出てきます。

ログインシェルをzshに設定

$chsh

上記のコマンドを実行するとログインシェルを設定できますのでそこに、

/usr/bin/zsh

と入力してエンターキーを押してください。
そして、一回ログアウトしてログインすると、端末を立ち上げるとzshで立ち上がっているはずです。

感想

補完機能がbashに比べてすごく強くなった気がします。
bashだと2回tabを押さないと候補が出てこないのにzshだったら一回押すだけで出てくるし、少し作業が楽になった気がします(気がしているだけ)ただ、気持ち補完機能は強くなったのかなって感じました。
あとは、gitのbranch名を出せるのが地味にありがたいと感じました。
とりあえず3日使ってみてbashだったらこうなのにという不自由は感じませんでした。
bashでも同じことを頑張ったらできそうというツッコミはしないとして、まだしばらくzshを使っていこうと思います。

まだあまり使っていないからかもしれないですがとりあえず便利そうなのでこのまましばらく使ってみたいと思います。
また、おすすめの設定などがあればコメントでおしえていただければ嬉しいです。

ubuntu16.04にubuntu Studioのパッケージのインストール

みなさんこんにちわ。
今日はubuntu Studioのインストールを簡単に行いたいと思います。

ubuntu Studioとは

Ubuntu Studioはマルチメディア(音楽・映像・画像)編集に特化しており、そのためのソフトウェアを多数、標準でインストールする。また、実行遅延(レイテンシ)を低減する設定が行われており、それらソフトウェアが即時処理(リアルタイム処理)を行うことを可能としている。派生元のUbuntuとは、割り込み発生回数を毎秒1000回に増やしたlow-latencyカーネルを採用することにより、音声再生の遅延を低減している点で大きく異なっている。
wikiより Ubuntu Studio - Wikipedia

つまり、音楽・映像・画像の処理に特化した設定とパッケージ群です。
こいつをインストールすると、asioドライバーや、coreAudioなどは必要とせず、カーネル単位で低レイテンシー化されるようです。

前提環境

ubuntuがインストールされている。
apt-getではなくaptが使用できる。
sudo権限がある
端末でコマンドを入力することができる

インストール

では、実際にインストールしてみましょう。
UbuntuStudioTips/Install/MigrateFromUbuntu - Ubuntu Japanese Wiki
ubuntu japanes team wikiによると、パッケージのインストールはひとつずつ行ったほうがいいよと書いてありますが、めんどくさくね?w
aptのオプションに-yが用意されていて、このオプションをつけると何か聞かれた時すべてyesを選択してくれるので、有効に活用していきましょう。ついでに、必要な処理をすべて書いてしまって必要な処理を一発で完了できるようにしてしまいましょう。
さらについでに、昨日の記事で制作したslackにpostしてくれるスクリプト(
シェルスクリプトでslackにメッセージ送信してみた - エイリーの備忘録
)も併用して処理が完了したらslackに通知が行くようにしておきましょう。

# <yourUserName>の部分は適時読み替えてください
# slackPostは無くても問題ないです。
$sudo apt update && sudo apt install -y ubuntustudio-audio ubuntustudio-audio-plugins ubuntustudio-graphics ubuntustudio-video && sudo adduser <yourUserName> audio; slackPost "処理が終了しました"

画面がなくて申し訳ないのですが(スクショ撮り忘れた・・・)、途中で、"jackdを設定しています"という画面が出てくるので必ずYESを選択してください。
ubuntustudio-desktopについてなのですが、どうやら外観の変更みたいなので私には必要がないと思ったのでインストールしていないです。

以上でインストール作業の完了です。
ここまで読んでいただきありがとうございました。

シェルスクリプトでslackにメッセージ送信してみた

まえがき

今日はシェルスクリプトを使ってslackメッセージを送信できるようにしてみました。
これを使うとどうなるのか?
例えば、かなり長い処理をさせた時にPCの前でずっと完了を待ってるのって辛いですよね?
処理が終わった時にこのスクリプトを叩けばslackに通知が来たらPCの前に戻って作業の再開ってことをしたくて作りましたので具体的な方法を紹介したいと思います。

内容としてはslackのAPIを叩いてるだけなんですけどねw

準備

ターミナルや端末を起動する
slackのwebAPIのトークンを取得しておく

トークンの取得についてはこの記事を参考に取得してください。
qiita.com

curlコマンドが入っているか確認

$curl -v

上記のコマンドを叩いて、command not foundとでなければcurlは入っています。

もし、command not found:と出た場合は、curlをインストールしてください。

$sudo apt install -y curl

実際に投稿できるか実験してみる

端末からこのコマンドを叩けばslackのジェネラルにメッセージが飛びます。<>の中は適時修正してください。
はお好みの名前を入れてください。
channelの中を修正するとチャンネルを指定することもできます。

curl -X POST "https://slack.com/api/chat.postMessage?token=<token>&channel=general&text=<message>&username=<botName>"

スクリプトにしてみる

このコマンドを毎回打つのはめんどくさいのでスクリプトにして、ついでにどこからでも呼び出せるようにしたいと思います。

$cd <作業ディレクトリ>
$vim slackPost

上記のコマンドで、作業ディレクトリに移動し、スクリプトファイルを作ります。
拡張子をつけていないのは、わざとで、コマンドになった時に打つのがめんどくさいからです。

slackPostの内容は下記のとおりになります。

#!/bin/sh
curl -X POST "https://slack.com/api/chat.postMessage?token=<token>&channel=general&text=$1&username=<botName>"

スクリプトを書き終わったら、実行権を与えて実行してみます。

$chmod 755 slackPost
$./slackPost "postText"

実行時の第一引数にpostしたいメッセージを記入します。
引数を追加してチャンネル名やbot名を毎回決めてもいいかもしれません。
このpostTextの中ではスペースや改行は使えないのでご注意ください。

どこからでも使えるようにpathを通しておく

ubuntuの場合、~/.profileに通したいpathを記述するとログイン時に自動でpathを通してくれます。
私の場合、/home/you/path に今回作ったスクリプトをおいているので、下のようになります。

ファイルを開く
$vim ~/.profile

パスを追加する
PATH="$PATH:/hoge/you/path"

これであとは一度ログアウトしてログインすると使えるようになっています。

おまけ

実際に使う時の文章はこうなります。
今回は長い処理を思いつかなかったので適当なパッケージをインストールするという想定でやります。

sudo apt install tree -y; slackPost "treeのインストールが完了しました。"