Skip to content

Instantly share code, notes, and snippets.

@kako-jun
Last active March 12, 2019 06:09
Show Gist options
  • Save kako-jun/b55fe627a6f9022d52ed44df634c3696 to your computer and use it in GitHub Desktop.
Save kako-jun/b55fe627a6f9022d52ed44df634c3696 to your computer and use it in GitHub Desktop.
gohatのREADME下書き

kako-junです

好きなツープラトンは デモリッション・ジャーマンです


gohatのREADME.mdを下書くよー


gohat 御法度 は日本語で絶対やっちゃダメという意味です

Redditの投稿を見て 危険だけど需要があるなら作ってみようかなと思った

SUIDを付けるためのshラッパーexe C++だと可能なことはすでに分かってるのでgoで作った 埋め込むのでなく引数で指定 乗っ取られる予定のある方は使っちゃだめ

誤ってファイルシステムをすべて消してしまっても、責任は持てません 自己責任でお願いします

remount用スクリプトをいちいちsudoしなくて良くする

何か処理を自動化したいのにrootパスワードを対話型で求められて、そこで処理が止まって困っていませんか

そういう場合は sudo を付けても、結局パスワードを求められます

gohat 経由で呼び出すと、パスワード入力をすべてパスできます

初起動したときに、自分自身にsuidをつける

shスクリプト自体に実行可能はいりません rootの持ち物である必要もない

README_ja.md

English

🙅 gohat

Build Status

gohat は、シンプルなコマンドラインツールです

カレントディレクトリにしか効果の及ばないコマンド(gityarn など)を、カレントディレクトリを変更することなく実行します

Goで書かれているため、多くのOSで動作します

 

Description

Demo

demo

VS.

「カレントディレクトリを移動してからでなければ、実行できないコマンド」は多くあります

例えば、pwd

$ pwd

/media/removable/SD Card/current

$ pwd subdir/subsubdir

/media/removable/SD Card/current

 

cdand を使うと、簡潔に書けます

$ cdand subdir/subsubdir pwd

/media/removable/SD Card/current/subdir/subsubdir

使わない場合、カレントディレクトリが変化してしまうため、戻るコマンドが必要になります

$ cd subdir/subsubdir; pwd
$ cd ../..

cdand にPATHを通すことで、cd ../.. にお別れできます

 

Installation

Requirements

  • Operating System

    • macOS
    • Linux

Download binaries

go get

$ go get github.com/kako-jun/gohat

 

Features

Usage

$ gohat foo.sh

 

「なぜこれが便利なのか……?」の例を、以下に挙げます

Examples

e.g. Gitリポジトリのディレクトリに cd する必要がない
$ cdand your/git/repository git status
e.g. Nodeプロジェクトのディレクトリに cd する必要がない
$ cdand your/node/project yarn

 

つまり、実行ディレクトリを変えるオプションを、コマンドごとに覚える必要がなくなります

カレントディレクトリ以外で実行するオプションとして、

  • git には -C オプションが
  • node には -prefix-cwd オプションが

それぞれあります

でも覚えにくいです

 

$ (cd subdir/subsubdir; ls)

という書き方もあります

でも面倒です

 

cdand ならば cd と打ち、「あ……めんどいな……」と思ったら and と打ち足せばイイだけです

その後、ディレクトリ名を打つ時には cd と同じくTABでの補完が効くため、違和感なく高速に打てます

 

e.g. おまけ

cdand 自身を入れ子にして呼べます

$ cdand subdir cdand .. ls

特にメリットはありませんが、可能です

 

Unsupported

端末の文字色変更の効果は失われる

ls -G でも色はつきません

1コマンドで完結しないコマンドは呼べない

vim は起動しますが、端末に表示されません

less は起動しますが、ページ送りはできません

対話型コマンドも対話できず、結果がまとめて表示されます

パイプ、リダイレクトの対象は、cdand コマンド自身である

例えば、

$ cdand subdir cat my_secrets.txt | grep treasure

と書いた場合、

$ cdand subdir cat my_secrets.txt

した結果をカレントディレクトリで

$ grep treasure

するという意味になります

パイプの場合、それでも特に結果は変わらないでしょう

 

しかし、リダイレクトの場合、結果が変わります

$ cdand subdir cat my_secrets.txt > my_will.txt

を実行すると、my_will.txt が作られるのは subdir 内でなく、カレントディレクトリ内です

 

どうしても subdir 内に作りたい場合は

cat my_secrets.txt > my_will.txt

という内容の foo.sh ファイルを作って subdir 内に置き、

$ cdand subdir foo.sh

とすれば可能です (あまり意味はない気もしますが……)

 

Coding

import "github.com/kako-jun/gohat/gohat-core"

gohat.Exec(scriptPath)

Contributing

Pull Requestを歓迎します

  • gohat をより便利にする機能の追加
  • より洗練されたGoでの書き方
  • バグの発見、修正
  • もっと良い英訳、日本語訳があると教えたい

など、アイデアを教えてください

 

Authors

kako-jun

🍋 Lemonade stand

寄付を頂けたら、少し豪華な猫エサを買おうと思います

下のリンクから、Amazonギフト券(Eメールタイプ)を送ってください

「受取人」欄には [email protected] と入力してください

 ♥️ Donate

  • 「メッセージ」欄を使って、感想を伝えることもできます
  • 送り主が誰かは分かりません
  • ¥15 から送れます

 

License

This project is licensed under the MIT License.

See the LICENSE file for details.

Acknowledgments

  • Go
  • and you

README.md

日本語はこっち (Let's try reading in Japanese.)

🙅 gohat

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment