RecursionCS( https://recursionist.io )で作ったBackend Projectの課題作品です。
幾つかのコマンドが打てる簡単なターミナルシェルです。
用意されているコマンドは以下。(課題要件の範囲)
- reverse : ファイルの文字列をひっくり返して、別ファイルに保存するコマンド。
- copy : ファイルのコピーを作成し、保存するコマンド。
- duplicate-contents : ファイルの内容をn回複製して元のファイルに統合するコマンド。
- replace-string : ファイルの全ての文字列を置換するコマンド。
以下はその後、追加したコマンドです。
- pwd : カレントディレクトリを表示するコマンド。
- cd : カレントディレクトリを変更するコマンド。
- ls : カレントディレクトリのファイルとディレクトリの一覧を表示する
- whoami : 現在のログインユーザー名を表示
- exit : file manipulatorを終了する。
- cat : ファイルの内容をシェルに表示します。
- rm : ファイルを削除します。ディレクトリは削除できません。
pythonスクリプトですので、ターミナル上で作業をしてください。
- ターミナルに以下のコマンドを入力する。
$ python3 file_manipulator.py
- REPLが立ち上がるので、コマンドを入力する。
※TABキーによるコマンド補完機能が使えます。コマンドが曖昧な場合でも安心です。
inputpathにあるファイルを開き、outputpathにinputpathの内容を逆にした新しいファイルを作成します。
> reverse inputpath outputpath
inputpthにあるファイルのコピーを作成し、outputpathにコピーを保存します。
> copy inputpath outputpath
inputpathにあるファイルの内容をnで指定された回数複製し、複製された内容をinputpathに上書きして保存します。
> duplicate-contents inputpath n
inputpathにあるファイル全体の文字列を置換します。
例)ファイル全体の'needle'を'newstring'に置換する。
> replace-string inputpath needle newstring
and more...
- 課題要件ですが、引数の数が適正か判定するバリデーションを組み込んでいます。
- シェルスクリプトの練習のため、簡単なテストスクリプトを自前で組んで行っています。テストにより、ある程度の動作は保証されていると思います。
- Tabキーによるコマンド補完機能を追加しています。
- 拡張性を高めるため、コマンドを外部ファイルにしてimportしています。また、コマンドと該当の関数を辞書に登録して管理しています。
ver.1.12 : rmコマンドを追加。
ver1.11: pwd, cd, ls, whoami, exit, catコマンドを追加。
ver 1.1 : Tabキーによるコマンド補完機能を追加。
ver 1.0 : reverse, copy, duplicate-contents, replace-stringを実装。