kako-junです
好きなツープラトンは デモリッション・ジャーマンです
gohatのREADME.mdを下書くよー
gohat 御法度 は日本語で絶対やっちゃダメという意味です
Redditの投稿を見て 危険だけど需要があるなら作ってみようかなと思った
SUIDを付けるためのshラッパーexe C++だと可能なことはすでに分かってるのでgoで作った 埋め込むのでなく引数で指定 乗っ取られる予定のある方は使っちゃだめ
誤ってファイルシステムをすべて消してしまっても、責任は持てません 自己責任でお願いします
remount用スクリプトをいちいちsudoしなくて良くする
何か処理を自動化したいのにrootパスワードを対話型で求められて、そこで処理が止まって困っていませんか
そういう場合は sudo
を付けても、結局パスワードを求められます
gohat
経由で呼び出すと、パスワード入力をすべてパスできます
初起動したときに、自分自身にsuidをつける
shスクリプト自体に実行可能はいりません rootの持ち物である必要もない
README_ja.md
gohat
は、シンプルなコマンドラインツールです
カレントディレクトリにしか効果の及ばないコマンド(git
、yarn
など)を、カレントディレクトリを変更することなく実行します
Goで書かれているため、多くのOSで動作します
「カレントディレクトリを移動してからでなければ、実行できないコマンド」は多くあります
例えば、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 ../..
にお別れできます
-
Operating System
- macOS
- Linux
-
macOS: gohat.dmg
-
Linux (
chmod u+x gohat
required)- x64: gohat_amd64.tar.gz
- ARM: gohat_arm64.tar.gz
- Raspberry Pi: gohat_armv7l.tar.gz
$ go get github.com/kako-jun/gohat
$ gohat foo.sh
「なぜこれが便利なのか……?」の例を、以下に挙げます
$ cdand your/git/repository git status
$ cdand your/node/project yarn
つまり、実行ディレクトリを変えるオプションを、コマンドごとに覚える必要がなくなります
カレントディレクトリ以外で実行するオプションとして、
git
には-C
オプションがnode
には-prefix
、-cwd
オプションが
それぞれあります
でも覚えにくいです
$ (cd subdir/subsubdir; ls)
という書き方もあります
でも面倒です
cdand
ならば cd
と打ち、「あ……めんどいな……」と思ったら and
と打ち足せばイイだけです
その後、ディレクトリ名を打つ時には cd
と同じくTABでの補完が効くため、違和感なく高速に打てます
cdand
自身を入れ子にして呼べます
$ cdand subdir cdand .. ls
特にメリットはありませんが、可能です
ls -G
でも色はつきません
vim
は起動しますが、端末に表示されません
less
は起動しますが、ページ送りはできません
対話型コマンドも対話できず、結果がまとめて表示されます
例えば、
$ 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
とすれば可能です (あまり意味はない気もしますが……)
import "github.com/kako-jun/gohat/gohat-core"
gohat.Exec(scriptPath)
Pull Requestを歓迎します
gohat
をより便利にする機能の追加- より洗練されたGoでの書き方
- バグの発見、修正
- もっと良い英訳、日本語訳があると教えたい
など、アイデアを教えてください
kako-jun
- https://github.com/kako-jun
- 📓 https://gist.github.com/kako-jun
- 🏠 https://llll-ll.com
- 🐦 https://twitter.com/kako_jun_42
寄付を頂けたら、少し豪華な猫エサを買おうと思います
下のリンクから、Amazonギフト券(Eメールタイプ)を送ってください
「受取人」欄には [email protected]
と入力してください
- 「メッセージ」欄を使って、感想を伝えることもできます
- 送り主が誰かは分かりません
- ¥15 から送れます
This project is licensed under the MIT License.
See the LICENSE file for details.
- Go
- and you
README.md