
bashacks は、プログラマー、セキュリティアナリスト、および低レベル操作を必要とする一般ユーザーにとって有用と思われる bash 関数のコレクションです。
実際、bashacks にはまったく新しいものはありません。すべての関数は UNIX 系システムの既存ソフトウェアを使って書かれています。しかし、通常は複数のコマンドを必要とする作業を、より短いコマンドで実行できます。
単一のファイルにすべての関数を含むように生成するには make コマンドを使用し、それを source します:
make
source bashacks.sh
これだけです。新しいターミナルで bh_ と入力して Tab キーを押すと、利用可能な関数を確認できます。
永続的にしたい場合は、~/.bash_profile に追加します:
echo "source $(pwd)/bashacks.sh" >> ~/.bash_profile
ある程度のドキュメントがありますが、古くなっています。PR を歓迎します!
現在の時刻をエポックで知るには?
$ bh_epoch
1522324129
'f' にアルファベット順で 4 を加える
$ bh_charcalc f + 4
j
自分の外部 IP アドレスを確認する
$ bh_myip
177.212.113.13
基本的な C プログラムのスケルトンを作成する
$ bh_skel_c > hello.c
$ cat hello.c
これは次のように出力されます:
#include <stdio.h>
int main(int argc, char *argv[]) {
return 0;
}
ファイルの一般的なチェックサムを計算する
$ bh_hashes /bin/ip*
387478f58a0669173fb6557d392a58e9 /bin/ip
1dd0f3b100bd6efc4664da0cdefff801d7d2efd8 /bin/ip
1d418ae3a767280c7fc6026a25e5bb9774c0e8afc7b3387b547765b62cbe578f /bin/ip
78868acd29e4a33194fb786f6589d3d1 /bin/ipcmk
8c22a129ff4b5748cc62222a93ba8471d7fdce19 /bin/ipcmk
34a068d7f85e85746b3fc98502fa96a734cc51f3a9d49cad92911e8f239bd9c9 /bin/ipcmk
69c2bedc20e77c039912c9d5e7af33db /bin/ipcrm
7992a936b28359d7f087a448d2b8a2418ef4f112 /bin/ipcrm
cded383eb3b74467409c1731c2804350fe3d1123bdac7304c1c6f3af9e7976f7 /bin/ipcrm
499f17765c0aa55ac99739c9bcac1d0c /bin/ipcs
c476949e77ef8710398fd8ec4f78c8cf1d76a420 /bin/ipcs
33c77a5b625f4de919f55dc24207645d219a2fde2e0b92be27c5cda8c662cd72 /bin/ipcs
6a738c5c2506f7e87c9458e0c3df378f /bin/iptables-xml
ba97af2e429aca6beb5a2b8861e370bbf874dee9 /bin/iptables-xml
cb8c10461da5247e8d6d63a123ba563df95ae1e78f29e1717eb8bb02c2ca045b /bin/iptables-xml
MIME タイプでファイルを検索する(拡張子は無視):
$ bh_findmime -elf /bin | head
/bin/[
/bin/addpart
/bin/appres
/bin/apt
/bin/apt-cache
/bin/apt-cdrom
/bin/apt-config
/bin/apt-extracttemplates
/bin/apt-ftparchive
/bin/apt-get
結果を xargs にパイプすると、チェックサムをすばやく計算できます:
$ bh_findmime -pe ~/Downloads/ | xargs shasum
d9e49c4209087170e36cbef689d96240d736cf3b /Users/menteb/Downloads/CSCWCNG.dll
50dfeea02e89f41caf52df152c7cb923c667bffc /Users/menteb/Downloads/Receitanet-1.10.exe
86a5f89d43ab11456fb817aeceb14b83cc6c2608 /Users/menteb/Downloads/Xojo2017r3Setup.exe.opdownload
文字列をさまざまな出力形式で 16 進数に変換する
$ bh_str2hex mentebinaria
6d 65 6e 74 65 62 69 6e 61 72 69 61
$ bh_str2hex -x mentebinaria
\x6d\x65\x6e\x74\x65\x62\x69\x6e\x61\x72\x69\x61
$ bh_str2hex -c mentebinaria
{ 0x6d, 0x65, 0x6e, 0x74, 0x65, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x69, 0x61 }
bashacks には非常に基本的なエラー処理があります。関数が必要な引数を受け取らない場合、単に 1 を返します。
まだまだたくさんあります。インストールして自分の目で確かめてください。:)
一部の文字列関数では、bash が特殊文字を解釈しようとするため、それらをエスケープする必要があります。bh_strxor 関数を使用した次の例を参照してください:
$ bh_strxor 0x41 fernando
'$3/ /%.
$ bh_strxor 0x41 "'\$3/ /%." # string between double quotes and dollar sign escaped
fernando
多くの bashacks 関数は bash のワード分割機能を使用しているため、デフォルトの Zsh では動作しません。ただし、次のコマンドで Zsh にワード分割を実行させるよう設定できます:
$ setopt sh_word_split
Then things should work.