{ "name": "HelpLine", "displayName": "HelpLine", "exported": 1593960843, "pages": [ { "title": "HelpLine", "created": 1593393132, "updated": 1593782390, "id": "5ef93fecff820f001eacf5be", "lines": [ "HelpLine", "[* 概要]", " `zsh` でコマンド入力中にCtrl-Jを入力するとヘルプウィンドウが表示され、機能を選んでコマンド実行させることができます", " 覚えるのが大変な複雑なコマンドでも実行できます", " Gem版とElectron版があります", " Gem版がおすすめ", " Electron版の動作", " [https://s3-ap-northeast-1.amazonaws.com/masui.org/d/b/db555e8535ff111e794b95e6d3d7a8f5.mp4]", "", "[** Gem版]", " `% gem install helpline` でインストール", " `~/.zshrc`に以下を追加します", " `~/.zshrc`に以下のように記述を追加します", " `helpline`のパスは適当に設定", " code:.zshrc", " function run-help() {", " /usr/local/bin/helpline \"${BUFFER}\" < $TTY", " BUFFER=$(cat /tmp/helpline.cmd)", " CURSOR=${#BUFFER}", " zle redisplay", " }", " zle -N run-help", " bindkey \"^j\" run-help", " 初回は`% helpline -u` でデータをScrapboxから取得します", " `~/.helpline.json`に格納されます", " その後は、gitレポジトリのディレクトリで `% ignore` などと入力した後で[[Ctrl-Jを押すとヘルプメニューが表示されます]]", " [https://gyazo.com/b6607048224beb466a08d49194ab1188]", " Ctrl-P, Ctrl-Nなどで目的の行に移動してリターンキーを押すとコマンドが展開されます", " [https://gyazo.com/d5f9d853e21df13829021f816dc0ec8a]", " ここでリターンを押すとコマンドが実行されます", " 「鎌倉」とか「ラーメン」とか入力してCtrl-Jを押してもメニューが出ます", " [https://gyazo.com/eb19a3cf6900ce52281d5a4158301b8a]", "", "", "[** Electron版]", " [* インストール] (Macの場合)", " [http://pitecan.com/tmp/HelpLine.dmg HelpLine.dmg]をダウンロードし、`HelpLine.app`を`/Applications`フォルダに保存します", " `/Applications/HelpLine.app` を右クリックで開いて認証して起動します", " これは認証に必要なだけなので、すぐ終了してください", " 以下の記述を`~/.zshrc`に追加します", " Ctrl-Jを打つと`helpline`が起動します", " code:.zshrc", " function helpline() {", " BUFFER=$(/Applications/HelpLine.app/Contents/MacOS/helpline \"${BUFFER}\")", " CURSOR=${#BUFFER}", " zle redisplay", " }", " zle -N helpline", " bindkey \"^j\" helpline", " [* 使い方]", " `git`を使っているディレクトリで`zsh`で `git secr 履歴` などと入力した後でCtrl-Jを押すとHelpLineウィンドウが表示されます", " フォルダに`secret.txt`がある場合です", " [https://gyazo.com/cd7d52b02247d518f8910a0aec2d10f5]", " 矢印キーなどで機能を選択してリターンを押すと、コマンドラインが置き換えられます", "", "", "[** ソース]", " https://github.com/masui/HelpLine", "", "[* データベース]", " [/HelpLine]にあります", "", "[* 連絡先]", " [/masui]", "" ] }, { "title": "このサイトについて", "created": 1491961323, "updated": 1520758821, "id": "5efae8b50283f300246c8f52", "lines": [ "このサイトについて", " 複雑なシステムのドキュメントやマニュアルを書いているうちにヘルプシステムもできてしまうのを目指す", " 複雑なシステムの例としてGitを使う", " Gitの使い方を書くのと同時に、便利な`github`コマンドができる", " [文芸的プログラミング]的", " Gitの使い方をScrapboxに記述しつつ、[https://github.com/masui/GitHelp GitHelp]コマンドで使うためのデータも書いておく", " 例えば[ファイルの編集回数のランキング]のページに 以下のようなデータを書いておくとgithelpコマンドで使える", " `$ (よく|頻繁に)(編集|修正)されているファイルを(リスト|表示)する`", " `% git log --name-only --pretty=\"format:\" | grep -ve \"^$\" | sort | uniq -c | sort -r`", " 人間がわかる表現を正規表現で`$ xxx ...` と書く", " その実行コマンドを`% git ...`と書く", " ユーザが「頻繁」とか入力するとこの説明が出て、すぐ実行できる", " `% githelp 頻繁`", " 関数やマクロもScrapboxで定義する", " コード記法で書いておく", " [args] とか [Glossary] とか", " 目標: [* UIST2018投稿]", "", "[https://scrapbox.io/projects/GitHelp/invitations/72392c14f9584cd15b7eb9c670547ed6 招待リンク]", "", "" ] }, { "title": "ファイルの編集回数のランキング", "created": 1492827356, "updated": 1593833939, "id": "5efae8b50283f300246c8f53", "lines": [ "ファイルの編集回数のランキング", "$ git: ファイルの#{change}のランキングを#{display}", "$ git: (よく|頻繁に)#{change}(されてる|されている)ファイルを#{display}", "$ git: ファイルの#{change}頻度を#{display}", "$ git: ファイルを#{change}頻度順にソート", "% git log --name-only --pretty=\"format:\" | grep -ve \"^$\" | sort | uniq -c | sort -r", "", "#ランキング #編集 #修正" ] }, { "title": "ファイル追加", "created": 1495151660, "updated": 1593834004, "id": "5efae8b50283f300246c8f54", "lines": [ "ファイル追加", "$ git: 最初に「(#{params})」という文字列を含むコミットをした時から現在までに追加されたファイルはどれとどれ?", "% git log --oneline --date=iso-strict --format='%cd %s' | grep #{$1} | tail -1 | awk '{print $1}' | xargs githelp-changed", "" ] }, { "title": "引数パラメタ", "created": 1495152243, "updated": 1593799894, "id": "5efae8b50283f300246c8f55", "lines": [ "引数パラメタ", " 引数で与えられたパラメタ", " githelp 'abc'", " `'`, `\"` で囲む?", " めんどくさい", " `[`, `]`で囲む方がいいか?", "", "code:params.rb", " def params(argv=ARGV)", " File.open(\"/tmp/arg\",\"a\"){ |f|", " f.puts argv", " f.puts argv.class", " }", " if argv.class == String", " argv = argv.split(/\\s/)", " end", " if argv.class == Array", " argv = argv[0].split(/\\s/)", " # argv.shift", " end", " File.open(\"/tmp/arg\",\"a\"){ |f|", " f.puts argv.join(\"--\")", " }", " a = []", " argv.each { |arg|", " if arg =~ /^(\\d+)[^\\d]*$/ then", " a << $1 ", " elsif arg =~ /^'.*'$/ || arg =~ /^\".*\"$/ || arg =~ /^「.*」$/", " a << arg.sub(/^['\"]/,'').sub(/['\"]$/,'').sub('「','').sub('」','')", " elsif arg =~ /^\\[.*\\]$/", " a << arg.sub(/^\\[/,'').sub(/\\]$/,'')", " else", " a << arg ", " end", " }", " File.open(\"/tmp/arg\",\"a\"){ |f|", " f.puts a.length > 0 ? a.join('|') : 'sample_param'", " }", " a.length > 0 ? a.join('|') : 'sample_param'", " end", "", "" ] }, { "title": "増井俊之", "created": 1496475568, "updated": 1496475568, "id": "5efae8b50283f300246c8f56", "lines": [ "増井俊之", "[https://i.gyazo.com/ce44a0adde8a39df00cfa744d8f42d95.png]" ] }, { "title": "ファイル復元", "created": 1496645946, "updated": 1593830771, "id": "5efae8b50283f300246c8f57", "lines": [ "ファイル復元", "$ git: (1つ|ひとつ)前のコミットで#{deleted}#{gitfiles}を(復元する|元に戻す)", "% git checkout $(git rev-list -n 1 HEAD -- #{3})^ -- #{$3}", "", " `--` の後にファイル名を書ける (getoptの仕様らしい)", " `$(...)` は `\\`xxx`` と同じ (bashの記法)", "" ] }, { "title": "ユーザ情報", "created": 1496646067, "updated": 1593834531, "id": "5efae8b50283f300246c8f58", "lines": [ "ユーザ情報", "code:users.rb", " def users", " list = begin", " `git shortlog -sn 2> /dev/null`", " rescue", " []", " end", " list.split(/\\n/).collect { |s|", " s.sub(/^\\s*\\d*\\s*/,'')", " }.join(\"|\")", " end", "", "$ git: (ユーザ|コミッタ)をリストする", "% git shortlog -sn | ruby -p -e 'gsub(/^\\\\s*\\\\d*\\\\s*/,\"\")'", "", "$ git: (コミッタ|ユーザ)のランキングを表示する", "$ git: コミッタをリストする", "% git shortlog -sn", "", "$ git: ユーザ「(#{users})」による(#{numbers})週間の変更を(リスト|表示)する", "% git log --author='#{$1}' --since=#{$2}.week", "", "$ git: (コミッタ|ユーザ)「(#{users})」のこれまでの変更した行数を(リスト|表示)する", "% git log --author='#{$2}' --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf \"added lines: %s, removed lines: %s, total lines: %s\\\\n\", add, subs, loc }'", "" ] }, { "title": "文字列の出現判定", "created": 1496889295, "updated": 1593834601, "id": "5efae8b50283f300246c8f59", "lines": [ "文字列の出現判定", "$ git: (#{gitfiles})に(#{params})という名前が(出現した|書かれた)のはいつ?", "% git blame #{$1} | grep #{$2}", "" ] }, { "title": "gitのブランチ", "created": 1496889490, "updated": 1593822252, "id": "5efae8b50283f300246c8f5a", "lines": [ "gitのブランチ", "$ git: ブランチを#{display}", "% git branch", "", "$ git: 「(#{params})」というブランチを作成する", "% git branch #{$1}", "", "$ git: 「(#{params})」というブランチを#{delete}", "% git branch -d #{$1}", "", "#ブランチ", "", "" ] }, { "title": "gitの古いファイル表示", "created": 1496889662, "updated": 1593829527, "id": "5efae8b50283f300246c8f5b", "lines": [ "gitの古いファイル表示", "$ git: ひとつ前の「(#{gitfiles})」ファイルを(#{display})", "$ git: 1バージョン前の「(#{gitfiles})」ファイルを(#{display})", "% git show HEAD~:#{$1}", "", "$ git: ふたつ前の「(#{gitfiles})」ファイルを(#{display})", "$ git: 2バージョン前の「(#{gitfiles})」ファイルを(#{display})", "% git show HEAD~~:#{$1}", "", "$ git: (#{numbers})個前の「(#{gitfiles})」ファイルを(#{display})", "$ git: (#{numbers})バージョン前の「(#{gitfiles})」ファイルを(#{display})", "% git show HEAD~#{$1}:#{$2}", "", "$ git: (#{numbers})分前の「(#{gitfiles})」ファイルを(#{display})", "% git show '@{#{$1} minutes ago}':#{$2}", "# % git cat-file -p '@{#{$1} minutes ago}':#{$2}", "", "$ git: (#{numbers})時間前の「(#{gitfiles})」ファイルを(#{display})", "% git show '@{#{$1} hours ago}':#{$2}", "", "$ git: (#{numbers})日前の「(#{gitfiles})」ファイルを(#{display})", "% git show '@{#{$1} days ago}':#{$2}", "", "$ git: 昨日の「(#{gitfiles})」ファイルを(#{display})", "% git show @{yesterday}:#{$1}", "", "# $ 「(#{tags})」というタグがついているファイル「(#{gitfiles})」を(#{display})", "# % git show #{$1} #{$2}", "", "#表示", "" ] }, { "title": "文字列の出現を調べる", "created": 1497321083, "updated": 1593834639, "id": "5efae8b50283f300246c8f5c", "lines": [ "文字列の出現を調べる", "$ git: (#{gitfiles})に(#{params})という名前が(出現した|書かれた)のはいつ?", "% git blame #{$1} | grep #{$2}", "", "$ git: (#{params})という名前が(#{gitfiles})に(出現した|書かれた)のはいつ?", "% git blame #{$2} | grep #{$1}", "", "fileがわからないときはどうするのか?", "" ] }, { "title": "gitのブランチの表示", "created": 1497321104, "updated": 1593832190, "id": "5efae8b50283f300246c8f5d", "lines": [ "gitのブランチの表示", "$ git: ブランチ(のリスト)?を#{display}", "% git branch", "", "$ git: #{params}というブランチを作成する", "% git branch #{$1}", "", "$ git: #{branches}というブランチを#{delete}", "% git branch -d #{$1}", "" ] }, { "title": "関連文献", "created": 1520295677, "updated": 1593377622, "id": "5efae8b50283f300246c8f5e", "lines": [ "関連文献", " [/UIPedia/Greg Little: Translating keyword commands into executable code]", " Rob Miller, 2008", " 「[[left margin 4 inches]]」と言うと「[[ActiveDocument.PageSetup.LeftMargin=InchesToPoints(2) ]]」を実行できる", " ほとんど同じかもしれない?", " 汎用性は無いんじゃないかな", " [/UIPedia/Tihomir Gvero: Synthesizing Java expressions from free-form queries]", " anyCodeというシステム。自然言語キーワードを入力するとコードスニペットが表示される。", " [[copy fileA fileB]]みたいなキーワードから[[FileUtil.copyFile(new File(fileA), new File(fileB))]]みたいなコード候補を生成する", " [自然言語処理]を行なっている", " [/UIPedia/Björn Hartmann: What would other programmers do: suggesting solutions to error messages]", " 他人のヒストリを使ってコンパイルエラー対処法をサジェスト", " [/UIPedia/George Furnas: The vocabulary problem in human-system communication]", " なかなか正しい言葉を使えないという古い論文", " 「語彙問題」", "", "#★", "" ] }, { "title": "gitレポジトリを確認する", "created": 1593374428, "updated": 1593834347, "id": "5efae8b50283f300246c8f5f", "lines": [ "gitレポジトリを確認する", "$ git: レポジトリの中身を(確認する|見る|調べる)", "% ls .git", "この例では`git`コマンドが使われていないが... [Issues]", "", "$ git: リモートレポジトリを確認する", "% git remote -v", "", "#レポジトリ", "" ] }, { "title": "Issues", "created": 1593375238, "updated": 1593822041, "id": "5efae8b50283f300246c8f60", "lines": [ "Issues", "[[Gem版]]", " git専用のヘルプのような制約を書きたい", " `.git`が存在し、キーワードが`git`を含むときだけ出すとか", " `$ git: ファイルを大きい順に表示` などと書けばよいだろうか?", " 様々なコマンドへの対応", " 登録を簡単にする工夫", "", "[[Electron版]]", " paramsが動いていない", " 日本語入力すると固まる", " Peco方式の方が楽かもしれない...", " こちらはRubyで実装したもの", " なんでElectronにしたんだっけ?", " IMEみたいにしたかったからだっけ?", " Ruby版(CLI版)も復活させるか?", " 関数の返り値には`(` ... `)` をつけたい", " クリックしたらすぐ反映させる", " リターン押さなくても良いように", " 論文にするための工夫 [★]", " Rob Millerなどに聞くとか", " いろんな人に利用させてDB追加していく経緯を論文に書く", " いろんなコマンドに対応する方法", " データベースを分けるのか?", " `% git` みたいな記述をもとにする?", " `$ git: ...` みたいに記述するとか", " うまくいった例を[やりたいことの例]に記述しておく", "" ] }, { "title": "★", "created": 1593377448, "updated": 1593377452, "id": "5efae8b50283f300246c8f62", "lines": [ "★", "論文ポイント", "" ] }, { "title": "やりたいことの例", "created": 1519557995, "updated": 1593389998, "id": "5efae8b50283f300246c8f65", "lines": [ "やりたいことの例", " うっかりパスワードを書いてしまったファイルを過去コミットから削除する", " [しばらく変化ないファイルをリストする]", " ふたつ前のバージョンと比較する", " 昨日の夜から変えたところを表示する", " [最近編集したファイルのリストを表示する]", " reset", " revert", " rebase", "", "うまくいった例", "> 1時間前から修正したファイルをリストする", "> secret.txtに関する編集履歴を完全に消す", "", "> abcという文字列がはじめて出現したバージョンの情報を表示する", "" ] }, { "title": "特定のファイルの履歴を消す", "created": 1519563847, "updated": 1593834578, "id": "5efae8b50283f300246c8f66", "lines": [ "特定のファイルの履歴を消す", " パスワードを直書きしたファイルを間違ってアップロードしたときなど、どうする?", " パスワードを含むファイルを捜す", " git grep する", " [変数や単語が出現しているファイルを捜す]", " そのファイルを完全に履歴から消去する", " という処理が必要だが、かなり難しいはず", " こういうのをGitHelpできると嬉しいんじゃないだろうか", " そういう解説があった", " [https://help.github.com/articles/removing-sensitive-data-from-a-repository/ Removing sensitive data from a repository - User Documentation]", " https://git-scm.com/book/ja/v1/Git-のさまざまなツール-歴史の書き換え", "", "xxxxxx.txtの履歴を消す", " http://d.hatena.ne.jp/ichhi/20110825/1314300975", "$ git: ファイル「(#{gitfiles})」の編集履歴を完全に(#{delete})がワーキングツリーは残す", "% git filter-branch -f --index-filter 'git rm --cached --ignore-unmatch #{$1}' HEAD", "", "GitHub の commit 履歴からパスワードファイル等だけを消す方法", " https://qiita.com/MahoTakara/items/3b02bf55767a6372596e", "$ git: ファイル「(#{gitfiles})」の編集履歴を完全に(#{delete})", "% git filter-branch -f --index-filter 'git rm --ignore-unmatch #{$1}' HEAD", "", "どういう意味なのやら?", " filter-branch というのは、大量コマンドを一気に実行するものらしい", " 全部やるもの", " --tree-filter チェックアウトしてコマンド実行", " --index-filter インデックスに対してコマンド実行", " git rm", " --ignore-umatch", " マッチしなくても続行する", "", "GitHubの方に反映させる", "$ git: 編集履歴をGitHubに反映させる", "% git push origin --force --all", "" ] }, { "title": "変数や単語が出現しているファイルを捜す", "created": 1519691492, "updated": 1593834446, "id": "5efae8b50283f300246c8f67", "lines": [ "変数や単語が出現しているファイルを捜す", " 普通にgrep = git grep", " 間違ってパスワードなどをコミットしてないかチェックするとか", " [https://qiita.com/zwirky/items/19df2d8d3d584da2790b 個人的によく使うgit grepのまとめ - Qiita]", "", "$ git: 「(#{params})」という文字列を含むファイルを捜す", "% git grep '#{$1}'", "", "$ git: 「(#{params})」という文字列を含むファイルを全履歴から捜す", "% git rev-list --all | xargs git grep '#{$1}'", "", "関連: [文字列がはじめて出現したバージョンを捜す]", "" ] }, { "title": "ツリー状にログを表示する", "created": 1519698152, "updated": 1593834013, "id": "5efae8b50283f300246c8f68", "lines": [ "ツリー状にログを表示する", "$ git: ツリー状にログを表示する", "% git log --graph --all --format=\"%x09%an%x09%h %d %s\"", "" ] }, { "title": "ファイル名変更", "created": 1519809729, "updated": 1593831265, "id": "5efae8b50283f300246c8f69", "lines": [ "ファイル名変更", "$ git: 「#{gitfiles}」というファイルを「#{params}」という名前に(変更|移動|改名|リネーム)する", "% git mv #{$1} #{$2}", "" ] }, { "title": "追加/削除された行数", "created": 1519809816, "updated": 1593834390, "id": "5efae8b50283f300246c8f6a", "lines": [ "追加/削除された行数", "$ git: これまで追加/削除された行数を表示する", "% git log --numstat --pretty=\"%H\" | awk 'NF==3 {plus+=$1; minus+=$2} END {printf(\"+%d, -%d\\\\n\", plus, minus)}'", "" ] }, { "title": "gitの古いファイルとの比較", "created": 1519817302, "updated": 1593834701, "id": "5efae8b50283f300246c8f6b", "lines": [ "gitの古いファイルとの比較", " 古いファイルとの比較は`git diff`コマンドを利用する", " `$ git diff ファイル名`とすると、現在[編集中のファイル]と最新[コミット]との違いが表示される", " 以前コミットされたものと比較したい場合、[コミットID]を指定してバージョン間の比較ができる", " [コミットID]を使わなくてもいろんな[バージョン指定]方法が可能だが指定方法は結構難しい", "", "[* 時間を指定して比較]", "", " `@{2 days ago}`のような表記で時間を指定できる", "", "[* 例 (Examples)]", "> $ Compare file xxxx with the one from 2 days ago", "> $ xxxxというファイルを2日前のものと比較する", "> $ 2日前のxxxxというファイルを現在のものと比較する", "> % git diff HEAD '@{2 days ago}' xxxx", "", "$ git: 「(#{gitfiles})」ファイルを(#{numbers})分前の(もの|バージョン)と#{compare}", "$ git: 「(#{gitfiles})」ファイルが(#{numbers})分前から(変化した|変わった)ところを(#{display})", "% git diff HEAD '@{#{$2} minutes ago}' #{$1}", "", "$ git: (#{numbers})分前の「(#{gitfiles})」ファイルと現在の(もの|バージョン)を#{compare}", "% git diff HEAD '@{#{$1} minutes ago}' #{$2}", "", "$ git: (#{numbers})日前の「(#{gitfiles})」ファイルと現在のものを#{compare}", "% git diff HEAD '@{#{$1} days ago}' #{$2}", "", "$ git: 現在の「(#{gitfiles})」ファイルを(#{numbers})日前のものを#{compare}", "% git diff HEAD '@{#{$2} days ago}' #{$1}", "", "[* 昔のバージョンとの比較]", "", " 内容が変化したもののリストは`rev-list`で取得できる", " コミットが古くても内容が変わってないことはある", " code:sample.sh", " $ git rev-list HEAD -- file1.txt", " 2630b29f9d687c6ff94e4ccee77efd9720e3fa7a", " 084b9e1d603b20967df24c126f4446cb30984346", " 73461054520e49b5f20266a27f4927d909eb9e3c", " $ ", " `git log file1.txt` で出るのと同じだがIDだけリストされる", " 2行目のコミットIDがふたつ前のバージョン", " 普通は`git log`でリストされた[コミットID]を指定して`git diff`するのかもしれない", " `git --patch -1` という方法もあるらしい", " `patch`は微妙に`diff`じゃないかもしれないけど", "", "$ git: (1つ|ひとつ)前のバージョンの(#{gitfiles})と#{compare}", "$ git: (1つ|ひとつ)前のバージョンの(#{gitfiles})からの変更点", "% git diff $(git rev-list -n 1 HEAD -- #{$2})^ -- #{$2}", "", "$ git: (#{gitfiles})を(1つ|ひとつ)前のバージョンと#{compare}", "$ git: (#{gitfiles})の(1つ|ひとつ)前のバージョンからの変更点", "% git diff $(git rev-list -n 1 HEAD -- #{$1})^ -- #{$1}", "", "$ git: (#{gitfiles})の最新版の変更点を(#{display})", "$ git: 最新の(#{gitfiles})の#{change}個所は?", "$ git: (#{gitfiles})は最後にどこを変えた?", "$ git: (#{gitfiles})の(一番新しい|最新の)#{change}は?", "% git diff $(git rev-list -n 1 HEAD -- #{$1})^ -- #{$1}", "", "$ git: (2つ|ふたつ)前のバージョンの(#{gitfiles})と#{compare}", "$ git: (2つ|ふたつ)前のバージョンの(#{gitfiles})からの変更点を(#{display})", "% git diff $(git rev-list -n 2 HEAD -- #{$2})^^ -- #{$2}", "", "$ git: (#{gitfiles})を(2つ|ふたつ)前のバージョンと#{compare}", "$ git: (#{gitfiles})の(2つ|ふたつ)前のバージョンのからの#{change}を(#{display})", "% git diff $(git rev-list -n 2 HEAD -- #{$1})^^ -- #{$1}", "" ] }, { "title": "数字パラメタ", "created": 1519905222, "updated": 1520230812, "id": "5efae8b50283f300246c8f6c", "lines": [ "数字パラメタ", "code:numbers.rb", " def numbers(argv=ARGV)", " a = []", " argv.each { |arg|", " if arg =~ /^(\\d+)[^\\d]*$/ then", " a << $1", " end", " }", " # a.join(\"|\") ", " a.length > 0 ? a.join(\"|\") : '1'", " end", " " ] }, { "title": "gitファイルリスト", "created": 1520137762, "updated": 1593836866, "id": "5efae8b60283f300246c8f6d", "lines": [ "gitファイルリスト", "引数の中にファイル名とマッチするものがあればファイルリストを取得 ", "", "code:files.rb", " def gitfiles(argv=ARGV)", " list = begin", " files = `git ls-files 2> /dev/null`.split(/\\n/)", " rescue", " files = []", " end", " matched = {}", " list.each { |file|", " if argv.length == 0", " matched[file] = true", " else", " # args(argv).each { |arg|", " argv[0].split(/\\s/).each { |arg|", " matched[file] = true if /#{arg}/i =~ file", " }", " end", " }", " files = matched.keys", " files = [\"voidvoidvoid\"] if files.length == 0", " \"(\" + files.join(\"|\") + \")\"", " end", "", "[引数パラメタ]", "" ] }, { "title": "args", "created": 1520160117, "updated": 1520199968, "id": "5efae8b60283f300246c8f6e", "lines": [ "args", "code:args.rb", " def args(argv=ARGV)", " a = []", " argv.each { |arg|", " if arg =~ /^(\\d+)([^\\d]+)?$/ then", " a << $1", " a << $2 if $2.to_s != ''", " else", " a << arg.sub(/^['\"]/,'').sub(/['\"]$/,'').sub('「','').sub('」','')", " end", " }", " a.length > 0 ? a : ['']", " end", "" ] }, { "title": "gitのファイル削除", "created": 1520212560, "updated": 1593828447, "id": "5efae8b60283f300246c8f6f", "lines": [ "gitのファイル削除", "$ git: ファイル「#{gitfiles}」を#{delete}", "% git rm #{$1}", "", "#削除", "" ] }, { "title": "コメント修正", "created": 1520231491, "updated": 1593834413, "id": "5efae8b60283f300246c8f70", "lines": [ "コメント修正", "$ git: 直前のコミットのコメントを修正する", "% git commit --amend", "" ] }, { "title": "Git情報源", "created": 1520232064, "updated": 1593377647, "id": "5efae8b60283f300246c8f71", "lines": [ "Git情報源", " [https://backlog.com/ja/git-tutorial/reference/ 逆引きGit]", " [Gitでやらかした時に使える19個の奥義 https://qiita.com/muran001/items/dea2bbbaea1260098051]", " [https://github.com/blog/2019-how-to-undo-almost-anything-with-git Gitの様々なundo]", " [https://qiita.com/zwirky/items/19df2d8d3d584da2790b 個人的によく使うgit grepのまとめ - Qiita]", " [https://www.kernel.org/pub/software/scm/git/docs/gitrevisions.html gitrevisions]", " manより読みやすい", " e.g. https://www.kernel.org/pub/software/scm/git/docs/git-rev-parse.html", "" ] }, { "title": "新しい順にファイルを表示", "created": 1520241167, "updated": 1593833496, "id": "5efae8b60283f300246c8f73", "lines": [ "新しい順にファイルを表示", "$ git: ファイルを新しい順に(リスト|表示)する", "$ git: ファイルを新しさ順に(リスト|表示)する", "$ git: 新しいファイルから順番に(リスト|表示)する", "% git ls-files | xargs ls -l -t", "" ] }, { "title": "タグ", "created": 1520242919, "updated": 1593834926, "id": "5efae8b60283f300246c8f74", "lines": [ "タグ", "code:tags.rb", " def tags", " tags = begin", " `git tag 2> /dev/null`.split(/\\n/)", " rescue", " end", " tags = [\"no_tag\"] if tags.length == 0", " tags.join(\"|\")", " end", "", "$ git: 現在使われているタグを(リスト|表示)する", "% git tag", "", "$ git: 現在のコミットに「(#{params})」というタグを関連付けする", "$ git: 「(#{params})」というタグを現在のコミットIDに関連付けする", "% git tag '#{$1}'", "", "$ git: 「(#{tags})」というタグを(#{delete})", "% git tag -d '#{$1}'", "", "$ git: 「(#{tags})」というタグのファイル「(#{gitfiles})」を(#{display})", "% git show '#{$1}' #{$2}", "", "$ git: ファイル「(#{gitfiles})」で「(#{tags})」というタグがついてるものを(#{display})", "% git show '#{$2}' #{$1}", "" ] }, { "title": "ブランチ名", "created": 1520288193, "updated": 1593833581, "id": "5efae8b60283f300246c8f77", "lines": [ "ブランチ名", "$ git: ブランチ名を(#{params})に変える", "% git branch -m #{$1}", "", "#ブランチ", "" ] }, { "title": "コミットをまとめる", "created": 1520289005, "updated": 1593834375, "id": "5efae8b60283f300246c8f78", "lines": [ "コミットをまとめる", "$ git: (#{numbers})個前までのコミットをまとめる", "% git rebase -i HEAD~#{$1}", "", "#コミット", "" ] }, { "title": "意義", "created": 1520289678, "updated": 1593559281, "id": "5efae8b60283f300246c8f79", "lines": [ "意義", " 人間が本当にやりたいこととその実行手段の乖離をなんとかする", " gitのコマンドは激しく複雑なのでなんとかしたい", "", "[* Contribution]", " 現在のコンテクストに依存してヘルプを出せること", " そういうヘルプシステムは沢山あるだろうけど", " パラメタを指定してすぐ実行できること", " `2` のような具体的な数字や `file`のようなファイル名などを直接指定", " 曖昧検索できること", " できたっけ?", " できてない", " できるようにしよう", " 正規表現を展開するので誰でも簡単に情報を追加していける", " 素人でも対応しやすい", " みんなで更新できる [★]", " Wikiなので普通に文書として便利なはず", " [* 解説ページがそのままヘルプデータベースになってるみたいな]", " ここを主張すると論文的にウケが良いかもしれない", " 普通に逆引きドキュメントを書いてるとヘルプシステムになってしまう", " [* 普通はヘルプシステムと解説ドキュメントは別なので]", " これができるシステムはあまり無いだろう", " [gitの古いファイルとの比較] では、`git diff`の解説と[* 実例]を書いているのでわかりやすいハズ", " 解説と具体的利用法を並べるのは筋が通っている", " シェルのコマンドマニュアルなどに使える", " [Siri]やチャットボットなどと比べてどうか", " やりたいことを全部言わなくてよい! [★]", " 連文節変換より予測入力の方がラクだとか", " うまくいかないときデータを自分で足せる", " 曖昧検索できる", " 普通にコマンド起動しようとした後でヘルプを表示させ、そのまま実行までできる! [★]", " というのは画期的だと思うのだけど", " コマンドごとにヘルプコマンドを用意する必要がない", " `githelp`というコマンドを用意するようだと使わない", " これは実用的にはとても重要", "", "" ] }, { "title": "Glossary", "created": 1520300002, "updated": 1593830230, "id": "5efae8b60283f300246c8f7a", "lines": [ "Glossary", "code:glossary.rb", " def delete; \"(消す|消去する|削除する)\"; end", " def deleted; \"(消した|消去した|削除した)\"; end", " def display; \"(表示する|見る|リストする)\"; end", " def change; \"(変更|修正|編集)\"; end", " def modified; \"(#{change})(された|があった)\"; end", " def compare; \"(比較する|比べる)\"; end", "", "delete: (消す|消去する|削除する)", "display: (表示する|見る|リストする)", "change: (変更|修正|編集|更新)", "modified: (変更|修正|編集|更新)(された|があった)", "compare: (比較する|比べる)", "" ] }, { "title": "一時的に仕事を退避", "created": 1520321191, "updated": 1593834403, "id": "5efae8b60283f300246c8f7b", "lines": [ "一時的に仕事を退避", "> まだcommitしていない状態の変更ファイル(addしてる or add していない)が存在する状況で、次のコマンドを実行すると変更ファイルを退避することができる。", "", " $ git: (仕事|変更)を一時的に退避", " % git stash save", "" ] }, { "title": "最近の変更を知る", "created": 1520389238, "updated": 1593830166, "id": "5efae8b60283f300246c8f7c", "lines": [ "最近の変更を知る", "$ git: ファイル「(#{gitfiles})」の(#{numbers})分前からの(#{change})履歴を(#{display})", "% git log --since \"#{$2} minutes ago\" #{$1}", "$ git: (#{numbers})分前からのファイル「(#{gitfiles})」の(#{change})履歴を(#{display})", "% git log --since \"#{$1} minutes ago\" #{$2}", "$ git: ファイル「(#{gitfiles})」の(#{numbers})分前からの(#{change})を(#{display})", "% git diff HEAD \"@{#{$2} minutes ago}\" #{$1}", "$ git: (#{numbers})分前からのファイル「(#{gitfiles})」の(#{change})を(#{display})", "% git diff HEAD \"@{#{$1} minutes ago}\" #{$2}", "", "$ git: ファイル「(#{gitfiles})」の(#{numbers})時間前からの(#{change})履歴を(#{display})", "% git log --since \"#{$2} hours ago\" #{$1}", "$ git: (#{numbers})時間前からのファイル「(#{gitfiles})」の(#{change})履歴を(#{display})", "% git log --since \"#{$1} hours ago\" #{$2}", "$ git: ファイル「(#{gitfiles})」の(#{numbers})時間前からの(#{change})を(#{display})", "% git diff HEAD \"@{#{$2} hours ago}\" #{$1}", "$ git: (#{numbers})時間前からのファイル「(#{gitfiles})」の(#{change})を(#{display})", "% git diff HEAD \"@{#{$1} hours ago}\" #{$2}", "", "$ git: ファイル「(#{gitfiles})」の(#{numbers})日前からの(#{change})履歴を(#{display})", "% git log --since \"#{$2} days ago\" #{$1}", "$ git: (#{numbers})日前からのファイル「(#{gitfiles})」の(#{change})履歴を(#{display})", "% git log --since \"#{$1} days ago\" #{$2}", "$ git: ファイル「(#{gitfiles})」の(#{numbers})日前からの(#{change})を(#{display})", "% git diff HEAD \"@{#{$2} days ago}\" #{$1}", "$ git: (#{numbers})日前からのファイル「(#{gitfiles})」の(#{change})を(#{display})", "% git diff HEAD \"@{#{$1} days ago}\" #{$2}", "", "#変更 #修正", "" ] }, { "title": "テンプレート", "created": 1520393146, "updated": 1520393200, "id": "5efae8b60283f300246c8f7d", "lines": [ "テンプレート", "> `$ やりたいこと`", "> `% 実際のコマンド`", "" ] }, { "title": "現在の状況", "created": 1520393428, "updated": 1593834430, "id": "5efae8b60283f300246c8f7e", "lines": [ "現在の状況", "現在のGitレポジトリの状況を知る", "", "$ git: レポジトリの現在の状況を(#{display})", "% git status", "" ] }, { "title": "branches", "created": 1520394269, "updated": 1593782033, "id": "5efae8b60283f300246c8f7f", "lines": [ "branches", "code:branches.rb", " def branches", " list = begin", " `git branch 2> /dev/null`.split(/\\n/)", " rescue", " []", " end", " branches = list.collect { |entry|", " entry.sub(/^\\s*/,'').sub(/^\\*\\s*/,'')", " }", " branches = [\"master\"] if branches.length == 0", " branches.join(\"|\")", " end", "", "" ] }, { "title": "Reset関連", "created": 1520413256, "updated": 1593834497, "id": "5efae8b60283f300246c8f80", "lines": [ " Reset関連", "$ git: 直前のコミットを取り消す", "% git reset --soft HEAD^", "# ファイルは変化しない", "", "$ git: ひとつ前のコミットの状態に完全に戻す", "% git reset --hard HEAD^", "# ファイルも変化する", "", "$ git: コミット後の変更を全部消す", "% git reset --hard HEAD", "", "$ git: すごい昔の状態で動作を確認したい", "% git reset --hard 昔のコミットのハッシュ値", "", "$ git: 直前のリセットをなかったことにする", "% git reset --hard ORIG_HEAD", "", "" ] }, { "title": "古いバージョンに一時的に戻す", "created": 1520414345, "updated": 1593833814, "id": "5efae8b60283f300246c8f81", "lines": [ "古いバージョンに一時的に戻す", "$ git: (#{numbers})個前のバージョンに一時的に戻す", "% git checkout HEAD~#{$1}", "", "$ git: (#{numbers})日前の状態に一時的に戻す", "% git checkout \"@{#{$1} days ago}\" ", "", "$ git: (#{numbers})時間前の状態に一時的に戻す", "% git checkout \"@{#{$1} hours ago}\" ", "", "$ git: (#{numbers})分前の状態に一時的に戻す", "% git checkout \"@{#{$1} mins ago}\" ", "" ] }, { "title": "gitのファイルを大きい順に表示", "created": 1520435601, "updated": 1593833870, "id": "5efae8b60283f300246c8f82", "lines": [ "gitのファイルを大きい順に表示", "$ git: ファイルを大きい(順に|順番で)表示する", "$ git: ファイルを大きさの順に表示する", "$ git: サイズの順に表示する", "% git ls-files | xargs du -s | sort -r -n", "", "" ] }, { "title": "gem版の使い方", "created": 1520471594, "updated": 1593376467, "id": "5efae8b60283f300246c8f83", "lines": [ "gem版の使い方", "これはgithelpコマンド起動が必要なので、(新)Electron版に以降してしまうつもり (2020/6)", "", "[* インストール]", " `gem install githelp`", " `githelp`コマンドが入る", "", "[* 使い方]", " データはこのプロジェクトのものを使うが、取得に時間がかかるので`~/.githelp`というJSONファイルを使う", " `% githelp -u`", " `~/.githelp`をアップデート", " `% githelp キーワード`", " e.g. `% githep 2 表示`", " `peco`を利用してヘルプを選択", " `% githelp -t キーワード`", " `peco`のかわりに`more`で表示", "", " `peco`は以下から入手", " https://github.com/peco/peco/releases", " Macだと`brew install peco`", "" ] }, { "title": "リモートブランチを消す", "created": 1520475270, "updated": 1520475341, "id": "5efae8b60283f300246c8f84", "lines": [ "リモートブランチを消す", " どうやるの?", "", "#ブランチ", "" ] }, { "title": "文字列がはじめて出現したバージョンを捜す", "created": 1520512154, "updated": 1593833826, "id": "5efae8b60283f300246c8f85", "lines": [ "文字列がはじめて出現したバージョンを捜す", " `git grep`で出現ファイルをリストして最古のものを`tail -1`で取得すればいいと思う", " そういうことをするコマンドが有るかもしれないけど", "", "$ git: (#{params})という文字列がはじめて出現した(バージョン|コミット)の情報を(#{display})", "% git log -1 `git rev-list --all | xargs git grep '#{$1}' | tail -1 | ruby -e \"STDIN.each {|line| puts line[0..39] }\"`", "", "$ git: (#{params})という文字列がはじめて出現した(バージョン|コミット)に一時的に戻す", "% git checkout `git rev-list --all | xargs git grep '#{$1}' | tail -1 | ruby -e \"STDIN.each {|line| puts line[0..39] }\"`", "" ] }, { "title": "gitコマンドに関する疑問", "created": 1520553294, "updated": 1593375969, "id": "5efae8b60283f300246c8f88", "lines": [ "gitコマンドに関する疑問", " 古いファイルを見る簡単な方法が無い?", " `git show HEAD^^:file` とかするのか?", " なんでコロンが要るの?", " 別のコマンドあるのか?", " `show`と`cat-file`はどう違う?", " 「[バージョン]」という用語はあるか?", " 「ひとつ前のバージョン」と言うのは不正確だろうか?", " ひとつ前の変更なのかひとつ前のコミットなのかわからないような", " コミット番号、リビジョン番号、バージョン番号、のおような言葉はあるか?", "" ] }, { "title": "最近編集したファイルのリストを表示する", "created": 1520553828, "updated": 1593834725, "id": "5efae8b60283f300246c8f89", "lines": [ "最近編集したファイルのリストを表示する", " [新しい順にファイルを表示] でいいのか?", " これだと全部表示されてしまう", " 2日前から変更されたファイル とかの場合は?", "", "以下のようにすればOKっぽい 2018/3/9 09:14", "", "$ git: (#{numbers})分前(から|以降に)(#{modified})ファイルをリストする", "% git diff --name-only '@{#{$1} minutes ago}'", "", "$ git: (#{numbers})時間前(から|以降に)(#{modified})ファイルをリストする", "% git diff --name-only '@{#{$1} hours ago}'", "", "$ git: (#{numbers})日前(から|以降に)(#{modified})ファイルをリストする", "% git diff --name-only '@{#{$1} days ago}'", "", "$ git: (#{numbers})日前からの変更を(#{display})", "% git log --stat --since=\"#{$1} days ago\"", "" ] }, { "title": "編集中のファイルをリストする", "created": 1520554104, "updated": 1593833508, "id": "5efae8b60283f300246c8f8a", "lines": [ "編集中のファイルをリストする", "$ git: 編集中のファイルをリストする", "% git ls-files -m", "" ] }, { "title": "編集中のファイル", "created": 1520749502, "updated": 1593834360, "id": "5efae8b60283f300246c8f8b", "lines": [ "編集中のファイル", " 編集はしているがまだ[コミット]していない状態のファイル", " `$ git status`で確認できる", "", "$ git: 現在の編集状態を(#{display})", "$ git: 編集中のファイルを(#{display})", "% git status", "" ] }, { "title": "コミットID", "created": 1520749665, "updated": 1520756477, "id": "5efae8b60283f300246c8f8c", "lines": [ "コミットID", " [コミット]を識別するための40桁のSHA1値", "" ] }, { "title": "バージョン指定", "created": 1520749685, "updated": 1593558596, "id": "5efae8b60283f300246c8f8d", "lines": [ "バージョン指定", " いろいろある", "", "#バージョン", "" ] }, { "title": "コミット", "created": 1520756436, "updated": 1520756455, "id": "5efae8b60283f300246c8f8e", "lines": [ "コミット", " [レポジトリ]に現在の状況を登録すること", "" ] }, { "title": "レポジトリ", "created": 1520756497, "updated": 1520756506, "id": "5efae8b60283f300246c8f8f", "lines": [ "レポジトリ", " 編集履歴を格納しているデータベース", "" ] }, { "title": "Gitのマニュアルページ", "created": 1520761305, "updated": 1520761420, "id": "5efae8b60283f300246c8f90", "lines": [ "Gitのマニュアルページ", "code:git_wc.txt", " % wc /Applications/Xcode.app/Contents/Developer/usr/share/man/man1/git*", " 448 2752 16669 /Applications/Xcode.app/Contents/Developer/usr/share/man/man1/git-add.1", " 314 1390 9580 /Applications/Xcode.app/Contents/Developer/usr/share/man/man1/git-am.1", " .....", " 488 2992 20556 /Applications/Xcode.app/Contents/Developer/usr/share/man/man1/gitremote-helpers.1", " 1015 4082 29249 /Applications/Xcode.app/Contents/Developer/usr/share/man/man1/gitweb.1", " 63628 287847 1896130 total", " %", "", "6万行もある!", "" ] }, { "title": "アイデア", "created": 1520819819, "updated": 1520821739, "id": "5efae8b60283f300246c8f91", "lines": [ "アイデア", " gitのmanページにちょろっと追加するだけでGitHelpになったりしないか?", " gitのmanページはデカいので嫌だけど", "" ] }, { "title": "操作履歴", "created": 1520857381, "updated": 1593834473, "id": "5efae8b60283f300246c8f92", "lines": [ "操作履歴", "$ git: 過去のあらゆる操作履歴を見る", "% git reflog", "", "$ git: 過去のコミット履歴を見る", "% git log", "", "" ] }, { "title": "Electron版GitHelp (2018版)", "created": 1521610744, "updated": 1593375138, "id": "5efae8b60283f300246c8f93", "lines": [ "Electron版GitHelp (2018版)", "Macでしか動かないしセットアップが超大変なのでもう使わないことにする (2020/6)", "", "[https://www.youtube.com/watch?v=B4RQHHS3-cs]", "", " IMEのように動きます", " ターミナル上でショートカットキーを押すとGitHelpウィンドウが表示され、パラメタを入力するとマッチするものがフィルタリングされます", " マウスやキーボード(Ctrl-P/CtrlpN)で選択してリターンを押すとコマンドがペーストされます", " それでよければリターンを押して実行します", "", "[*** インストール]", " `bash` が動く`Terminal.app`で動かして下さい", " [https://github.com/masui/GitHelp GitHubのデータ]をcloneします", " % git clone git@github.com:masui/GitHelp.git", " appフォルダでmakeします", " % cd GitHelp/app; make", " 動かす必要があれば、appフォルダ全体をどこかにコピーします", " % cp -r ../app /Your/Directory", " 以下のスクリプトを`~/.bash_profile`にコピーします", " `GITHELPDIR`は先程のappフォルダがある場所を指定します", " code:.bash_profile.sh", " #", " # GitHelp", " #", " export GITHELPDIR=/Your/Directory/app", " # プロンプトが表示されるたびにカーソル位置とカレントディレクトリをセーブする", " function githelp_save_env(){", " ${GITHELPDIR}/cursorpos > /tmp/githelp.cursorpos", " pwd > /tmp/githelp.pwd", " }", " PROMPT_COMMAND=githelp_save_env", " ", " # Ctrl-Lを押したときPROMPT_COMMANDが動かないので別扱いする", " function githelp_save_env_clear(){", " clear", " ${GITHELPDIR}/cursorpos > /tmp/githelp.cursorpos", " pwd > /tmp/githelp.pwd", " }", " bind -x '\"\\C-l\": githelp_save_env_clear'", " `Automator`を起動して新しい`サービス`を作ります", " [https://gyazo.com/5a10c6a6aea94e45c5d2b01e33466149]", " `ユーティリティ ⇒ シェルスクリプトを実行` で以下のスクリプトを登録します", " code:automator.sh", " source ~/.bash_profile", " electron ${GITHELPDIR}", " [https://gyazo.com/846c39623575db1251924ca889d20d43]", " `システム環境設定`の`キーボード ⇒ ショートカット ⇒ サービス`でGitHelpに適当なショートカットキーを割り当てます", " [https://gyazo.com/5c9c106befaeec27ca2ef70595885e6b]", " セキュリティとプライバシー ⇒ プライバシー ⇒ アクセシビリティ でapplescript実行を許す設定が必要かも", " これで「Ctrl-Cmd-G」でGitHelpウインドウが出るようになります", "", "[** Issues]", " `% git ma` などと入力してから起動できると良いかも", " git以外(e.g. `ffmpeg`)でも使えるようになるし", "" ] }, { "title": "ブランチのリストを更新日時順に表示する", "created": 1525019802, "updated": 1593833469, "id": "5efae8b60283f300246c8f94", "lines": [ "ブランチのリストを更新日時順に表示する", "$ git: ブランチのリストを更新日時順に表示する", "% git branch --sort=committerdate", "" ] }, { "title": "鎌倉の天気", "created": 1593557439, "updated": 1593565062, "id": "5efbc1bde39afa001e86057f", "lines": [ "鎌倉の天気", "$ 鎌倉の天気", "% open https://tenki.jp/forecast/3/17/4610/14204/3hours.html", "", "$ 鎌倉の雨の様子を見る", "% open https://tokyo-ame.jwa.or.jp/", "", "#天気 #鎌倉", "" ] }, { "title": "ファイルのソート", "created": 1593558363, "updated": 1593558424, "id": "5efbc559776a1f00251fc230", "lines": [ "ファイルのソート", "$ 新しい順にファイルをソートする", "% ls -l -t", "", "$ 大きさの順にファイルをソートする", "% ls -l | sort -r -k 5", "", "" ] }, { "title": "湘南台のラーメン", "created": 1593558836, "updated": 1593559101, "id": "5efbc732381ca80025d68b20", "lines": [ "湘南台のラーメン", "$ 湘南台のラーメン情報", "% open https://scrapbox.io/SFCHelp/ラーメン", "" ] }, { "title": "ASCIIコード表", "created": 1593558910, "updated": 1593558921, "id": "5efbc77d04ee58001e1ced47", "lines": [ "ASCIIコード表", "$ ASCIIコードを調べる", "% open https://www.k-cube.co.jp/wakaba/server/ascii_code.html", "" ] }, { "title": "Amazon新刊漫画", "created": 1593559493, "updated": 1593559523, "id": "5efbc9c234d4bb0023ada277", "lines": [ "Amazon新刊漫画", "$ Amazon新刊漫画ランキング", "% open https://www.amazon.co.jp/gp/new-releases/books/2501045051/", "", "#漫画 #Amazon", "" ] }, { "title": "自分の場所を調べる", "created": 1593559548, "updated": 1593559612, "id": "5efbc9fae39afa001e860a97", "lines": [ "自分の場所を調べる", "$ 今いる場所の地図を開く", "$ 現在地の地図を見る", "$ 自分がどこにいるのか調べる", "$ 自分の場所を調べる", "% whereami", "" ] }, { "title": "Amazonのパスワード", "created": 1593559633, "updated": 1593565098, "id": "5efbca4f95fe75001ee7879e", "lines": [ "Amazonのパスワード", "$ Amazonのパスワードを計算", "% open http://pitecan.com/p/Amazon_masui@pitecan.com.html", "", "#Amazon #パスワード", "" ] }, { "title": "Gyazo画像を検索する", "created": 1593559716, "updated": 1593784209, "id": "5efbcaa1d618d4001ed75161", "lines": [ "Gyazo画像を検索する", "$ Gyazoで(#{params})を検索する", "% open https://gyazo.com/search/'#{$1}'", "", "#Gyazo", "" ] }, { "title": "zshの設定", "created": 1593560802, "updated": 1593560812, "id": "5efbcedf552cee001e472a6f", "lines": [ "zshの設定", "$ zshの設定を調べる", "% open https://creepfablic.site/2019/10/13/bash-zsh/", "" ] }, { "title": "コマンドライン版", "created": 1593591715, "updated": 1593822090, "id": "5efc479d16b02a0038ec51ac", "lines": [ "コマンドライン版", " [GitHelp]の最初の(?)バージョン", " `% helpline 2 Makefile` みたいにコマンドラインで呼び出す", " Ruby実装", " Pecoでリストして選択", "" ] }, { "title": "画像の回転", "created": 1593765364, "updated": 1593803094, "id": "5efeedf3ee088b001e89c862", "lines": [ "画像の回転", "$ (#{imagefiles})を90度回転して(#{params})を作成", "% convert #{$1} -rotate +90 #{$2}", "", "パラメタ取得できるようにしないと...", "", "#画像", "" ] }, { "title": "ファイルリスト", "created": 1593802544, "updated": 1593836878, "id": "5eff7f2ea37505001e710149", "lines": [ "ファイルリスト", "引数の中にファイル名とマッチするものがあればファイルリストを取得 ", "", "code:files.rb", " def files(argv=ARGV)", " list = `ls -1 2> /dev/null`.split(/\\n/)", " matched = {}", " list.each { |file|", " if argv.length == 0", " matched[file] = true", " else", " # args(argv).each { |arg|", " argv[0].split(/\\s/).each { |arg|", " matched[file] = true if /#{arg}/i =~ file", " }", " end", " }", " files = matched.keys", " files = [\"voidvoidvoid\"] if files.length == 0", " \"(\" + files.join(\"|\") + \")\"", " end", "", "[引数パラメタ]", "" ] }, { "title": "画像ファイルリスト", "created": 1593802896, "updated": 1593836855, "id": "5eff808e1dc30e001e752bb8", "lines": [ "画像ファイルリスト", "画像だけリストする", "", "code:imagefiles.rb", " def imagefiles(argv=ARGV)", " list = `ls -1`.split(/\\n/)", " matched = {}", " list.each { |file|", " if file =~ /\\.(jpg|jpeg|png|gif)$/i", " if argv.length == 0", " matched[file] = true", " else", " # args(argv).each { |arg|", " argv[0].split(/\\s/).each { |arg|", " matched[file] = true if file =~ /#{arg}/i", " }", " end", " end", " }", " files = matched.keys", " files = [\"voidvoidvoid\"] if files.length == 0", " \"(\" + files.join(\"|\") + \")\"", " end", "", "[引数パラメタ]", "" ] }, { "title": "反響があったツイートをリストする", "created": 1593938525, "updated": 1593960345, "id": "5f01925bd6e98300243cf03a", "lines": [ "反響があったツイートをリストする", "$ (#{params})以上の反響があったツイートをリストする", "% open 'https://twitter.com/search?q=from%3Amasui%20min_retweets%3A#{$1}&src=typed_query&f=live'", "", "# $ 反響があったツイートをリストする", "# % open 'https://twitter.com/search?q=from%3Amasui%20min_retweets%3A25&src=typed_query&f=live'", "" ] }, { "title": "HelpLineでサポートするヘルプ", "created": 1593558325, "updated": 1593822143, "id": "5efbc532552cee001e4728b5", "lines": [ "HelpLineでサポートするヘルプ", "[増井俊之.icon]", " コマンド拡張だけではなく、汎用に使う", " シェルが「万能お助けテキストエリア」になる", " コマンドとかキーワードとかを入力した後でCtrl-Jを押すとそれを実現するコマンドが提示されて実行可能になる", " 「じぶん用Helpfeel」みたいになるかも", "", "[[コマンドが複雑な場合]]", " `git`, `ffmpeg`, `convert`, `rsync` など引数が難しいコマンド全部で使える", "", "[[やり方がよくわからない場合]] (コマンド名などがわからない場合)", " abc.jpgを90度回転する", " `abc.jpg 90度 回転`", " 大きなファイルを消す", " `find` + `rm` ?", " abcという文字があるファイルをさがす", " `ls`, `find`, `grep`", " 新しい順にファイルを表示する", " `ls -t`", " ファイルをutf-8にする", " `nkf`", " サイズ順にファイルを表示", " `ls -l | sort -r -k 5`", " 自分のファイル全体から調べるなんてのも便利そう", " どこかの天気を知る", " `% 鎌倉 天気`", " いま何時?", " `date`", " Helpfeelを使う", " `% crew 泥酔`みたいな", "", "[[[増井俊之.icon] 専用のもの]]", " abc.txt をS3にアップロードする", " `~/bin/upload abc.txt`", " pitecan.comにログインする", " `ssh pitecan.com`", " [Amazonのパスワード] [/icons/check.icon]", " `open http://pitecan.com/p/Amazon_masui@pitecan.com.html`", " [Gyazo画像を検索する]", " EpisoPass問題を新しく生成する", " `~/bin/episoq`", " 予定表データを作る", " `~/bin/month 8 2020`", " [自分の場所を調べる]", " `~/bin/whereami`", "", "[[コマンドラインと関係ないもの]]", " Amazonで新刊漫画を見る", " [鎌倉の天気]を調べる [/icons/check.icon]", " [湘南台のラーメン]は? [/icons/check.icon]", " 人気のある店を知る", " 「`&`」のASCIIコードは? [/icons/check.icon]", " [/SFCHelp]も使える", "", "[[感想]]", " Unixコマンドとあんまり関係なく使える気がしてきた", " あらゆる分野で自分の知見/Tipsをどんどん入れておいて呼び出すためのシステム", " メモっておくと後でコマンドラインから呼び出されるような", " 自分用のヘルプを自分で作る", " ググって役にたったものはヘルプに入れておくとか", " コマンドラインで `% 鎌倉 天気` などと入力してから `open https://tenki.jp/forecast/3/17/4610/14204/3hours.html` がサジェストされたりする", " 「zsh風のお助けシステム」を使う感覚になるかも", "", "#やりたいことの例", "" ] } ] }