今回はiPhoneでシェルを使ってみましょう。iPhoneのシェルとして使うのはa-Shellです。

https://holzschu.github.io/a-Shell_iOS/
https://github.com/holzschu/a-shell/

iPhoneなどスマートフォンの場合、パソコンやワークステーションなどと異なり、かなりセキュリティが厳しく自由度は高くありません。とは言え、せっかくシェルがアプリとして提供されているのですから、使ってみることにしましょう。何事もチャレンジです。

さて、今回はiPhone上で動作するシェルという事で、いつもとは勝手が違うので試しつつやっていきたいと思います。a-Shellは最初のバージョンが出た時に入れたのですが、だいぶ時間が経ちバージョンアップもされて機能も増えているようです。Webサイトを見ると、かなりいろいろなことができPython,Lua,C/C++,JavaScriptなどのプログラムも動かせるようです。



インストールと起動

 a-ShellはiPhoneアプリなのでApp Storeからインストールする必要があります。App Storeのアイコンをタップして起動させます。

App Storeの検索ボックスにa-Shellと入力します。

 a-Shellとa-Shell miniが出てきますが、今回入れるのはフルバージョンのa-Shellです。入手ボタンをタップするか、クラウドからダウンロードを示すボタンをタップしてiPhoneにダウンロード&インストールしてください。

 無事にダウンロード&インストールされると図のようなアイコンが出てきます。

 あとはa-Shellアプリのアイコンをタップすればシェルが起動します。起動すると図のような画面になります。これでコマンドを入力する準備は完了です。ディレクトリパス名や入力するコマンドが長くなると縦長の画面よりも横向きにした方が見やすくなります。

helpコマンド

a-Shellには説明を表示してくれるhelpコマンドがあります。まずは、このコマンドを入力してみましょう。helpと入力してリターンキーを示すボタンをタップします。なお、以後キー入力に関してはXXXキーを押す、という表現とします。ブルートゥースキーボードを接続している場合は、そのままキーを入力してください。キーボードがなく画面をタップする場合はソフトウェアキーボードを使ってください。
 a-Shellで使われるソフトウェアキーボードで特殊なキーに関してはアイコンで示されています。アイコンの意味は以下のようになります。

  • TabキーとControlキー

  • escキーとペースト(Macでのコマンドキー+V)

  • カーソルキー(上下左右)

 さてhelpコマンドを実行すると図のような画面になります。

 さすがに文字の量が多くなると小さいiPhoneの画面ではみづらい状態になってしまいます。試していませんが、ここら辺はiPadなら見やすく使いやすいのかもしれません。とりあえず、iCloud経由でhelpの内容をテキストエディタで開いてキャプチャーしたものが以下の図になります。iCloud経由でのやり取りの方法は次回以降で解説します。

 さて、a-Shellの画面が文字でいっぱいなので画面を綺麗に消去しましょう。clearとコマンドを入力すれば表示されている内容が消去されます。

 消去されたところで今度はa-Shellで使えるコマンド一覧を表示してみましょう。コマンド一覧はhelp -lとすると表示されます。

 図だとコマンド名が分かりにくいのと検索できないので以下にa-Shellで使えるコマンド一覧を示します。なお、コマンドは,で区切ってあります。

2to3,2to3-3.11,alias,amstex,apropos,ar,awk,bc,bibtex,bokeh,bookmark,brave,calc,call,cat,cd,chflags,chmod,cksum,clang,clang++,clear,compare,composite,compress,config,conjure,convert,corelist,cowsay,cp,cpan,credits,cslatex,csplain,ctags,curl,cygdb,cython,cythonize,dash,date,dc,deactivate,deletemark,diff,dig,distro,docutils,downloadFile,downloadFolder,du,dvilualatex,dviluatex,dvipdfmx,ebong,echo,ed,egrep,enc2xs,encguess,env,eplain,etex,euptex,exit,export,f2py,f2py3,f2py3.11,ffmpeg,ffprobe,fgrep,file,find,fio,firefox,fits2bitmap,fitscheck,fitsdiff,fitsheader,fitsinfo,fmtutil,fmtutil-sys,fonttools,googlechrome,grep,gunzip,gzip,h2ph,h2xs,head,help,hideKeyboard,hideToolbar,history,host,id,identify,idle3,idle3.11,ifconfig,import,instmodsh,internalbrowser,ipython,ipython3,isympy,jadetex,jlpm,jq,jsc,jsc_core,jsi,json_pp,jsonpointer,jsonschema,jump,jupyter,jupyter-bundlerextension,jupyter-console,jupyter-contrib,jupyter-dejavu,jupyter-events,jupyter-execute,jupyter-kernel,jupyter-kernelspec,jupyter-lab,jupyter-labextension,jupyter-labhub,jupyter-migrate,jupyter-nbclassic,jupyter-nbclassic-bundlerextension,jupyter-nbclassic-extension,jupyter-nbclassic-serverextension,jupyter-nbconvert,jupyter-nbextension,jupyter-nbextensions_configurator,jupyter-notebook,jupyter-qtconsole,jupyter-run,jupyter-server,jupyter-serverextension,jupyter-troubleshoot,jupyter-trust,keepDirectoryAfterShortcut,kpsewhich,l4p-tmpl,latex,ld,ld.lld,ld64.lld,less,lessecho,lex,lg2,libnetcfg,link,llc,lld,lld-link,lli,llvm-dis,llvm-link,ln,ls,lua,luac,luahbtex,lualatex,luatex,magick-script,make,makeindex,man,mandoc,mandocdb,md5,mercantile,meson,mex,mkdir,mktexfmt,mktexlsr,mllatex,mltex,mogrify,montage,more,multimarkdown,mv,nc,newWindow,nltk,normalizer,nslookup,open,openurl,opera,opt,pbcopy,pbpaste,pdfcslatex,pdfcsplain,pdfetex,pdfjadetex,pdflatex,pdfmex,pdftex,pdfxmltex,perl,perl5,perlbug,perldoc,perlivp,pickFolder,pico,piconv,ping,ping6,pip,pip3,pip3.11,pkg,pl2pm,play,pod2html,printenv,prove,ptar,ptardiff,ptargrep,pwd,pybabel,pybind11-config,pydoc3,pydoc3.11,pyftmerge,pyftsubset,pygmentize,pyjson5,pyproj,python,python3,python3-config,python3.11,python3.11-config,python3.9,qtpy,ranlib,readlink,readtags,rehash,renamemark,rio,rlogin,rm,rmdir,rst2html.py,rst2html4.py,rst2html5.py,rst2latex.py,rst2man.py,rst2odt.py,rst2odt_prepstyles.py,rst2pseudoxml.py,rst2s5.py,rst2xetex.py,rst2xml.py,rstpep2html.py,safari,samp_hub,say,scp,sed,send2trash,setenv,sftp,sh,sha1,sha256,shasum,showToolbar,showmarks,showtable,sleep,sort,source,splain,ssh,ssh-keygen,stat,stream,streamzip,stty,sum,sw_vers,tail,tar,task,tee,telnet,tex,texlua,texluac,texsis,text,tlmgr,touch,tqdm,tr,tree,true,ttx,type,unalias,uname,uncompress,uniq,unlink,unrar,unsetenv,updmap,updmap-sys,uplatex,uptex,uptime,utf8mex,versioneer,view,vim,volint,wasm,wasm-ld,wc,wcslint,whatis,wheel,whoami,whois,wol,wordcloud_cli,wsdump,xargs,xcode-select,xdvipdfmx,xelatex,xetex,xmltex,xsubpp,xxd,xz,xzdec,yandexbrowser,z,zipdetails,

なお、コマンドの中にはアプリがインストールされていないと実行できないものもあります。その場合、コマンドを実行してもエラーにはなりません。何も実行されなかったことになるようです。

基本的なコマンド

a-Shellは基本的なコマンドは使えるようですが、最近のLinuxに慣れてしまった人には、物足りない部分があるかもしれません。
とりあえず、基本的なコマンドを入力してみましょう。まずは、lsコマンドです。単純にlsと入力すると図のようになります。最初の段階ではカレントディレクトリになっている~/Documentsディレクトリには何もないので何も表示されません。

オプションも指定できます。ls -laと入力すると図のようになります。

現在のディレクトリパスを確認してみましょう。pwdと入力します。入力すると現在のディレクトリパスが表示されます。

ディレクトリを変更してみましょう。ひとつ上の階層に移動してみます。cd ../と入力します。

ここで、ls -laとするとディレクトリなどの一覧が表示されます。表示される情報が横にが長い場合はiPhoneを回転させて横向きにしてからコマンドを実行した方が見やすいかもしれません。

いくつかのディレクトリがありますが、多くは権限がないためアクセスできません。基本的に何か処理をする場合はDocumentsディレクトリで作業する事になるでしょう。

sayコマンドでiPhoneをしゃべらせる

以前の連載で説明したmacOSのsayコマンドもa-Shellで実行する事ができます。sayコマンドで、iPhoneをしゃべらせてみましょう。syaコマンドに関しては以前取り上げているので以下の連載記事を参照してください。

https://news.mynavi.jp/techplus/article/natonakucommand-30/
https://news.mynavi.jp/techplus/article/natonakucommand-31/
まずは、簡単な英語をしゃべらせてみます。sayの後に半角空白で区切ってしゃべらせたい単語を書きます。なお、長文で半角空白が入る場合にはシングルクォーテーションかダブルクオーテーションで囲んでください。

以下のようにコマンドを入力すると英語でハローとしゃべってくれます。

say hello

英語ではなく日本語もしゃべらせる事ができます。自動的に日本語かどうかを判別してくれます。
以下のようにすると、こんにちは、としゃべってくれます。なお、うまくいかない場合はシングルクォーテーションでしゃべらせたい文字を囲んでください。

say こんにちは

ファイル内容を読み上げることもできます。この場合、オプションのfを指定します。カレントディレクトリにあるv.txtの内容をしゃべらせてみましょう。なお、v.txtの内容は日本語で「こんばんは」となっており、以下のようにechoコマンドとリダイレクトを使って生成しています。

この記事は
Members+会員の方のみ御覧いただけます

ログイン/無料会員登録

会員サービスの詳細はこちら