GithubHelp home page GithubHelp logo

holzschu / a-shell Goto Github PK

View Code? Open in Web Editor NEW
2.4K 59.0 108.0 108.93 MB

A terminal for iOS, with multiple windows

License: BSD 3-Clause "New" or "Revised" License

Swift 2.13% HTML 0.02% JavaScript 1.76% Makefile 0.97% C 34.13% Roff 1.01% Awk 0.04% Perl 48.63% MATLAB 0.01% Tcl 0.01% Batchfile 0.01% Shell 0.51% PostScript 0.12% Python 0.25% Smalltalk 0.05% Emacs Lisp 0.06% NewLisp 0.07% Ruby 0.07% SystemVerilog 0.05% C++ 10.11%

a-shell's Introduction

a-shell: A terminal for iOS, with multiple windows

Platform: iOS Twitter Discord

The goal in this project is to provide a simple Unix-like terminal on iOS. It uses ios_system for command interpretation, and includes all commands from the ios_system ecosystem (nslookup, whois, python3, lua, pdflatex, lualatex...)

The project uses iPadOS 13 ability to create and manage multiple windows. Each window has its own context, appearance, command history and current directory. newWindow opens a new window, exit closes the current window.

For help, type help in the command line. help -l lists all the available commands. help -l | grep command will tell you if your favorite command is already installed.

You can change the appearance of a-Shell using config. It lets you change the font, the font size, the background color, the text color and the cursor color and shape. Each window can have its own appearance. config -p will make the settings for the current window permanent, that is used for all future windows. With config -t you can also configure the toolbar.

When opening a new window, a-Shell executes the file .profile if it exists. You can use this mechanism to customize further, e.g. have custom environment variables or cleanup temporary files.

For more tips on how to use a-Shell, see the document.

AppStore

a-Shell is now available on the AppStore.

How to compile it?

If you want to compile the project yourself, you will need the following steps:

  • download the entire project and its sub-modules: git submodule update --init --recursive
  • download all the xcFrameworks: downloadFrameworks.sh
    • this will download the standard Apple frameworks (in xcfs/.build/artefacts/xcfs, with checksum control).
    • There are too many Python frameworks (more than 2000) for automatic download. You can either remove them from the "Embed" step in the project, or compile them:
      • You'll need the Xcode command line tools, if you don't already have them: sudo xcode-select --install
      • You also need the OpenSSL libraries (libssl and libcrypto), XQuartz (freetype), and Node.js (npm) for macOS (we provide the versions for iOS and simulator).
      • change directory to cpython: cd cpython
      • build Python 3.11 and all the associated libraries / frameworks: sh ./downloadAndCompile.sh (this step takes several hours on a 2GHz i5 MBP, YMMV).

a-Shell now runs on the devices. a-Shell mini can run on the devices and the simulator.

Because Python 3.x uses functions that are only available on the iOS 14 SDK, I've set the minimum iOS version to 14.0. It also reduces the size of the binaries, so ios_system and the other frameworks have the same settings. If you need to run it on an iOS 13 device, you'll have to recompile most frameworks.

Home directory

In iOS, you cannot write in the ~ directory, only in ~/Documents/, ~/Library/ and ~/tmp. Most Unix programs assume the configuration files are in $HOME.

So a-Shell changes several environment variables so that they point to ~/Documents. Type env to see them.

Most configuration files (Python packages, TeX files, Clang SDK...) are in ~/Library.

Sandbox and Bookmarks

a-Shell uses iOS 13 ability to access directories in other Apps sandbox. Type pickFolder to access a directory inside another App. Once you have selected a directory, you can do pretty much anything you want here, so be careful.

All the directories you access with pickFolder are bookmarked, so you can return to them later without pickFolder. You can also bookmark the current directory with bookmark. showmarks will list all the existing bookmarks, jump mark and cd ~mark will change the current directory to this specific bookmark, renamemark will let you change the name of a specific bookmark and deletemark will delete a bookmark.

A user-configurable option in Settings lets you use the commands s, g, l, r and d instead or as well.

If you are lost, cd will always bring you back to ~/Documents/. cd - will change to the previous directory.

Shortcuts

a-Shell is compatible with Apple Shortcuts, giving users full control of the Shell. You can write complex Shortcuts to download, process and release files using a-Shell commands. There are three shortcuts:

  • Execute Command, which takes a list of commands and executes them in order. The input can also be a file or a text node, in which case the commands inside the node are executed.
  • Put File and Get File are used to transfer files to and from a-Shell.

Shortcuts can be executed either "In Extension" or "In App". "In Extension" means the shortcut runs in a lightweight version of the App, without no graphical user interface. It is good for light commands that do not require configuration files or system libraries (mkdir, nslookup, whois, touch, cat, echo...). "In App" opens the main application to execute the shortcut. It has access to all the commands, but will take longer. Once a shortcut has opened the App, you can return to the Shortcuts app by calling the command open shortcuts://. The default behaviour is to try to run the commands "in Extension" as much as possible, based on the content of the commands. You can force a specific shortcut to run "in App" or "in Extension", with the warning that it won't always work.

Both kind of shortcuts run by default in the same specific directory, $SHORTCUTS or ~shortcuts. Of course, since you can run the commands cd and jump in a shortcut, you can pretty much go anywhere.

Programming / add more commands:

a-Shell has several programming languages installed: Python, Lua, JS, C, C++ and TeX.

For C and C++, you compile your programs with clang program.c and it produces a webAssembly file. You can then execute it with wasm a.out. You can also link multiple object files together, make a static library with ar, etc. Once you are satisfied with your program, if you move it to a directory in the $PATH (e.g. ~/Documents/bin) and rename it program.wasm, it will be executed if you type program on the command line.

You can also cross-compile programs on your main computer using our specific WASI-sdk, and transfer the WebAssembly file to your iPad or iPhone.

Precompiled WebAssembly commands specific for a-Shell are available here: https://github.com/holzschu/a-Shell-commands These include zip, unzip, xz, ffmpeg... You install them on your iPad by downloading them and placing them in the $PATH.

We have the limitations of WebAssembly: no sockets, no forks, no interactive user input (piping input from other commands with command | wasm program.wasm works fine).

For Python, you can install more packages with pip install packagename, but only if they are pure Python. The C compiler is not yet able to produce dynamic libraries that could be used by Python.

TeX files are not installed by default. Type any TeX command and the system will prompt you to download them. Same with LuaTeX files.

VoiceOver

If you enable VoiceOver in Settings, a-Shell will work with VoiceOver: reading commands as you type them, reading the result, letting you read the screen with your finger...

a-shell's People

Contributors

bummoblizard avatar cclauss avatar heavysnowjakarta avatar holzschu avatar kkebo avatar lucaslarson avatar majixed avatar n-holzschuch avatar personalizedrefrigerator avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

a-shell's Issues

trouble with ssh

I tried unsuccessfully to run ssh on a local host. It says "The authenticity of host xxx can't be established" and " Permanently added key for xxx to known hosts". But then it says "No keys found in directory .../.ssh." It has created a file named known_hosts but ther eis no dir called .ssh. I tried creating .ssh and moving the known_hosts file there but the result is the same. Does ssh work?

Czech keyboard

Czech keyboard (probably others as well) has an option to write special characters with alt. For example alt+2 writes @. When I use external keyboard, these characters don’t work in a-shell. It looks like alt is used as standard shift key in this case.

Python Fatal error

Typing python results in Fatal Python error: initfsencoding: unable to load the file system codec ModuleNotFoundError: No module named "encodings"

Tab+Ctrl+Esc keys are not passed to interactive ssh sessions

Pressing the TAB-, CTRL- or ESC-button is interpreted locally by a-shell instead of passing to an interactive ssh session. E. g. if I press the TAB button I expect command completion in the ssh session instead of inserting a tab character. Or pressing Ctrl+C should abort the running command in the ssh session instead of exiting the session. And furthermore it is impossible to use vi within an interactive ssh session. But there seem to be other reasons for the remote vi(m) issue than that the key is not passed to the ssh session. Feel free to split this issue into two parts (one for „keys are not passed in ssh session“ and one for „vi(m) is not working in ssh session“)

Python cannot import multiprocessing.util

#5 has been fixed, but instead, another problem has come with the build 36. It didn't occur on the previous build 34.

Environment:

  • a-Shell 1.0 (36) on iPadOS 13.2 Developer Beta 3 (17B5077a)
  • a-Shell 1.0 (36) on iOS 13.1.3

Log:

$ python -c 'import multiprocessing.util'
Traceback (most recent call last):
  File "<string>", line 1, in <module>
ModuleNotFoundError: No module named 'multiprocessing.util'

$ python3 -c 'import multiprocessing.util'
Traceback (most recent call last):
  File "<string>", line 1, in <module>
ModuleNotFoundError: No module named 'multiprocessing.util'

$ ipython
Python 3.7.1 (default, Oct 20 2019, 20:51:38) 
Type 'copyright', 'credits' or 'license' for more information
IPython 7.3.0 -- An enhanced Interactive Python. Type '?' for help.
In [1]: import multiprocessing.util                                                                                                                                           
---------------------------------------------------------------------------
ModuleNotFoundError                       Traceback (most recent call last)
<ipython-input-1-99d2c16ef625> in <module>
----> 1 import multiprocessing.util
ModuleNotFoundError: No module named 'multiprocessing.util'

It seems that there is a difference between the target directory of the symbolic links in $HOME/Library/lib/python3.7/multiprocessing and the target directory of the symbolic links in $HOME/Library/lib/python3.7. I think that is the cause.

$ ls -l $HOME/Library/lib/python3.7/multiprocessing
total 0
lrwxr-xr-x   1 mobile  mobile  141 Oct  8 23:35 __init__.py -> /private/var/containers/Bundle/Application/B178CEC6-6A18-4407-9E93-AB9E0D44B4D7/a-Shell.app/Library/lib/python3.7/multiprocessing/__init__.py
drwxr-xr-x  12 mobile  mobile  384 Oct 17 00:52 __pycache__
lrwxr-xr-x   1 mobile  mobile  143 Oct  8 23:35 connection.py -> /private/var/containers/Bundle/Application/B178CEC6-6A18-4407-9E93-AB9E0D44B4D7/a-Shell.app/Library/lib/python3.7/multiprocessing/connection.py
lrwxr-xr-x   1 mobile  mobile  140 Oct  8 23:35 context.py -> /private/var/containers/Bundle/Application/B178CEC6-6A18-4407-9E93-AB9E0D44B4D7/a-Shell.app/Library/lib/python3.7/multiprocessing/context.py
drwxr-xr-x   4 mobile  mobile  128 Oct  8 23:35 dummy
lrwxr-xr-x   1 mobile  mobile  143 Oct  8 23:35 forkserver.py -> /private/var/containers/Bundle/Application/B178CEC6-6A18-4407-9E93-AB9E0D44B4D7/a-Shell.app/Library/lib/python3.7/multiprocessing/forkserver.py
lrwxr-xr-x   1 mobile  mobile  137 Oct  8 23:35 heap.py -> /private/var/containers/Bundle/Application/B178CEC6-6A18-4407-9E93-AB9E0D44B4D7/a-Shell.app/Library/lib/python3.7/multiprocessing/heap.py
lrwxr-xr-x   1 mobile  mobile  141 Oct  8 23:35 managers.py -> /private/var/containers/Bundle/Application/B178CEC6-6A18-4407-9E93-AB9E0D44B4D7/a-Shell.app/Library/lib/python3.7/multiprocessing/managers.py
lrwxr-xr-x   1 mobile  mobile  137 Oct  8 23:35 pool.py -> /private/var/containers/Bundle/Application/B178CEC6-6A18-4407-9E93-AB9E0D44B4D7/a-Shell.app/Library/lib/python3.7/multiprocessing/pool.py
lrwxr-xr-x   1 mobile  mobile  143 Oct  8 23:35 popen_fork.py -> /private/var/containers/Bundle/Application/B178CEC6-6A18-4407-9E93-AB9E0D44B4D7/a-Shell.app/Library/lib/python3.7/multiprocessing/popen_fork.py
lrwxr-xr-x   1 mobile  mobile  149 Oct  8 23:35 popen_forkserver.py -> /private/var/containers/Bundle/Application/B178CEC6-6A18-4407-9E93-AB9E0D44B4D7/a-Shell.app/Library/lib/python3.7/multiprocessing/popen_forkserver.py
lrwxr-xr-x   1 mobile  mobile  150 Oct  8 23:35 popen_spawn_posix.py -> /private/var/containers/Bundle/Application/B178CEC6-6A18-4407-9E93-AB9E0D44B4D7/a-Shell.app/Library/lib/python3.7/multiprocessing/popen_spawn_posix.py
lrwxr-xr-x   1 mobile  mobile  150 Oct  8 23:35 popen_spawn_win32.py -> /private/var/containers/Bundle/Application/B178CEC6-6A18-4407-9E93-AB9E0D44B4D7/a-Shell.app/Library/lib/python3.7/multiprocessing/popen_spawn_win32.py
lrwxr-xr-x   1 mobile  mobile  140 Oct  8 23:35 process.py -> /private/var/containers/Bundle/Application/B178CEC6-6A18-4407-9E93-AB9E0D44B4D7/a-Shell.app/Library/lib/python3.7/multiprocessing/process.py
lrwxr-xr-x   1 mobile  mobile  139 Oct  8 23:35 queues.py -> /private/var/containers/Bundle/Application/B178CEC6-6A18-4407-9E93-AB9E0D44B4D7/a-Shell.app/Library/lib/python3.7/multiprocessing/queues.py
lrwxr-xr-x   1 mobile  mobile  142 Oct  8 23:35 reduction.py -> /private/var/containers/Bundle/Application/B178CEC6-6A18-4407-9E93-AB9E0D44B4D7/a-Shell.app/Library/lib/python3.7/multiprocessing/reduction.py
lrwxr-xr-x   1 mobile  mobile  148 Oct  8 23:35 resource_sharer.py -> /private/var/containers/Bundle/Application/B178CEC6-6A18-4407-9E93-AB9E0D44B4D7/a-Shell.app/Library/lib/python3.7/multiprocessing/resource_sharer.py
lrwxr-xr-x   1 mobile  mobile  150 Oct  8 23:35 semaphore_tracker.py -> /private/var/containers/Bundle/Application/B178CEC6-6A18-4407-9E93-AB9E0D44B4D7/a-Shell.app/Library/lib/python3.7/multiprocessing/semaphore_tracker.py
lrwxr-xr-x   1 mobile  mobile  145 Oct  8 23:35 sharedctypes.py -> /private/var/containers/Bundle/Application/B178CEC6-6A18-4407-9E93-AB9E0D44B4D7/a-Shell.app/Library/lib/python3.7/multiprocessing/sharedctypes.py
lrwxr-xr-x   1 mobile  mobile  138 Oct  8 23:35 spawn.py -> /private/var/containers/Bundle/Application/B178CEC6-6A18-4407-9E93-AB9E0D44B4D7/a-Shell.app/Library/lib/python3.7/multiprocessing/spawn.py
lrwxr-xr-x   1 mobile  mobile  144 Oct  8 23:35 synchronize.py -> /private/var/containers/Bundle/Application/B178CEC6-6A18-4407-9E93-AB9E0D44B4D7/a-Shell.app/Library/lib/python3.7/multiprocessing/synchronize.py
lrwxr-xr-x   1 mobile  mobile  137 Oct  8 23:35 util.py -> /private/var/containers/Bundle/Application/B178CEC6-6A18-4407-9E93-AB9E0D44B4D7/a-Shell.app/Library/lib/python3.7/multiprocessing/util.py

$ ls -l $HOME/Library/lib/python3.7
total 0
lrwxr-xr-x    1 mobile  mobile   127 Oct 22 23:30 __future__.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/__future__.py
lrwxr-xr-x    1 mobile  mobile   131 Oct 22 23:30 __phello__.foo.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/__phello__.foo.py
drwxr-xr-x  123 mobile  mobile  3936 Oct 23 00:15 __pycache__
lrwxr-xr-x    1 mobile  mobile   128 Oct 22 23:30 _bootlocale.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/_bootlocale.py
lrwxr-xr-x    1 mobile  mobile   133 Oct 22 23:30 _collections_abc.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/_collections_abc.py
lrwxr-xr-x    1 mobile  mobile   131 Oct 22 23:30 _compat_pickle.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/_compat_pickle.py
lrwxr-xr-x    1 mobile  mobile   129 Oct 22 23:30 _compression.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/_compression.py
lrwxr-xr-x    1 mobile  mobile   130 Oct 22 23:30 _dummy_thread.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/_dummy_thread.py
lrwxr-xr-x    1 mobile  mobile   128 Oct 22 23:30 _markupbase.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/_markupbase.py
lrwxr-xr-x    1 mobile  mobile   129 Oct 22 23:30 _osx_support.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/_osx_support.py
lrwxr-xr-x    1 mobile  mobile   124 Oct 22 23:30 _py_abc.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/_py_abc.py
lrwxr-xr-x    1 mobile  mobile   127 Oct 22 23:30 _pydecimal.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/_pydecimal.py
lrwxr-xr-x    1 mobile  mobile   122 Oct 22 23:30 _pyio.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/_pyio.py
lrwxr-xr-x    1 mobile  mobile   130 Oct 22 23:30 _sitebuiltins.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/_sitebuiltins.py
lrwxr-xr-x    1 mobile  mobile   126 Oct 22 23:30 _strptime.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/_strptime.py
lrwxr-xr-x    1 mobile  mobile   147 Oct 22 23:30 _sysconfigdata_m_darwin_darwin.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/_sysconfigdata_m_darwin_darwin.py
lrwxr-xr-x    1 mobile  mobile   148 Oct 22 23:30 _sysconfigdata_m_unknown_darwin.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/_sysconfigdata_m_unknown_darwin.py
lrwxr-xr-x    1 mobile  mobile   133 Oct 22 23:30 _threading_local.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/_threading_local.py
lrwxr-xr-x    1 mobile  mobile   128 Oct 22 23:30 _weakrefset.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/_weakrefset.py
lrwxr-xr-x    1 mobile  mobile   120 Oct 22 23:30 abc.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/abc.py
lrwxr-xr-x    1 mobile  mobile   121 Oct 22 23:30 aifc.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/aifc.py
lrwxr-xr-x    1 mobile  mobile   128 Oct 22 23:30 antigravity.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/antigravity.py
lrwxr-xr-x    1 mobile  mobile   125 Oct 22 23:30 argparse.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/argparse.py
lrwxr-xr-x    1 mobile  mobile   120 Oct 22 23:30 ast.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/ast.py
lrwxr-xr-x    1 mobile  mobile   125 Oct 22 23:30 asynchat.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/asynchat.py
drwxr-xr-x   28 mobile  mobile   896 Oct 22 23:30 asyncio
lrwxr-xr-x    1 mobile  mobile   125 Oct 22 23:30 asyncore.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/asyncore.py
lrwxr-xr-x    1 mobile  mobile   123 Oct 22 23:30 base64.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/base64.py
lrwxr-xr-x    1 mobile  mobile   120 Oct 22 23:30 bdb.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/bdb.py
lrwxr-xr-x    1 mobile  mobile   123 Oct 22 23:30 binhex.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/binhex.py
lrwxr-xr-x    1 mobile  mobile   123 Oct 22 23:30 bisect.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/bisect.py
lrwxr-xr-x    1 mobile  mobile   120 Oct 22 23:30 bz2.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/bz2.py
lrwxr-xr-x    1 mobile  mobile   125 Oct 22 23:30 cProfile.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/cProfile.py
lrwxr-xr-x    1 mobile  mobile   125 Oct 22 23:30 calendar.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/calendar.py
lrwxr-xr-x    1 mobile  mobile   120 Oct 22 23:30 cgi.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/cgi.py
lrwxr-xr-x    1 mobile  mobile   122 Oct 22 23:30 cgitb.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/cgitb.py
lrwxr-xr-x    1 mobile  mobile   122 Oct 22 23:30 chunk.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/chunk.py
lrwxr-xr-x    1 mobile  mobile   120 Oct 22 23:30 cmd.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/cmd.py
lrwxr-xr-x    1 mobile  mobile   121 Oct 22 23:30 code.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/code.py
lrwxr-xr-x    1 mobile  mobile   123 Oct 22 23:30 codecs.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/codecs.py
lrwxr-xr-x    1 mobile  mobile   123 Oct 22 23:30 codeop.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/codeop.py
drwxr-xr-x    5 mobile  mobile   160 Oct 22 23:30 collections
lrwxr-xr-x    1 mobile  mobile   125 Oct 22 23:30 colorsys.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/colorsys.py
lrwxr-xr-x    1 mobile  mobile   127 Oct 22 23:30 compileall.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/compileall.py
drwxr-xr-x    5 mobile  mobile   160 Oct 22 23:30 concurrent
lrwxr-xr-x    1 mobile  mobile   129 Oct 22 23:30 configparser.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/configparser.py
lrwxr-xr-x    1 mobile  mobile   127 Oct 22 23:30 contextlib.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/contextlib.py
lrwxr-xr-x    1 mobile  mobile   128 Oct 22 23:30 contextvars.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/contextvars.py
lrwxr-xr-x    1 mobile  mobile   121 Oct 22 23:30 copy.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/copy.py
lrwxr-xr-x    1 mobile  mobile   124 Oct 22 23:30 copyreg.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/copyreg.py
lrwxr-xr-x    1 mobile  mobile   122 Oct 22 23:30 crypt.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/crypt.py
lrwxr-xr-x    1 mobile  mobile   120 Oct 22 23:30 csv.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/csv.py
drwxr-xr-x    9 mobile  mobile   288 Oct 22 23:30 ctypes
drwxr-xr-x    8 mobile  mobile   256 Oct 22 23:30 curses
lrwxr-xr-x    1 mobile  mobile   128 Oct 22 23:30 dataclasses.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/dataclasses.py
lrwxr-xr-x    1 mobile  mobile   125 Oct 22 23:30 datetime.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/datetime.py
drwxr-xr-x    6 mobile  mobile   192 Oct 22 23:30 dbm
lrwxr-xr-x    1 mobile  mobile   124 Oct 22 23:30 decimal.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/decimal.py
lrwxr-xr-x    1 mobile  mobile   124 Oct 22 23:30 difflib.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/difflib.py
lrwxr-xr-x    1 mobile  mobile   120 Oct 22 23:30 dis.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/dis.py
drwxr-xr-x   33 mobile  mobile  1056 Oct 22 23:30 distutils
lrwxr-xr-x    1 mobile  mobile   124 Oct 22 23:30 doctest.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/doctest.py
lrwxr-xr-x    1 mobile  mobile   132 Oct 22 23:30 dummy_threading.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/dummy_threading.py
drwxr-xr-x   25 mobile  mobile   800 Oct 22 23:30 email
drwxr-xr-x  128 mobile  mobile  4096 Oct 22 23:30 encodings
drwxr-xr-x    7 mobile  mobile   224 Oct 22 23:30 ensurepip
lrwxr-xr-x    1 mobile  mobile   121 Oct 22 23:30 enum.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/enum.py
lrwxr-xr-x    1 mobile  mobile   124 Oct 22 23:30 filecmp.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/filecmp.py
lrwxr-xr-x    1 mobile  mobile   126 Oct 22 23:30 fileinput.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/fileinput.py
lrwxr-xr-x    1 mobile  mobile   124 Oct 22 23:30 fnmatch.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/fnmatch.py
lrwxr-xr-x    1 mobile  mobile   126 Oct 22 23:30 formatter.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/formatter.py
lrwxr-xr-x    1 mobile  mobile   126 Oct 22 23:30 fractions.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/fractions.py
lrwxr-xr-x    1 mobile  mobile   123 Oct 22 23:30 ftplib.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/ftplib.py
lrwxr-xr-x    1 mobile  mobile   126 Oct 22 23:30 functools.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/functools.py
lrwxr-xr-x    1 mobile  mobile   128 Oct 22 23:30 genericpath.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/genericpath.py
lrwxr-xr-x    1 mobile  mobile   123 Oct 22 23:30 getopt.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/getopt.py
lrwxr-xr-x    1 mobile  mobile   124 Oct 22 23:30 getpass.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/getpass.py
lrwxr-xr-x    1 mobile  mobile   124 Oct 22 23:30 gettext.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/gettext.py
lrwxr-xr-x    1 mobile  mobile   121 Oct 22 23:30 glob.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/glob.py
lrwxr-xr-x    1 mobile  mobile   121 Oct 22 23:30 gzip.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/gzip.py
lrwxr-xr-x    1 mobile  mobile   124 Oct 22 23:30 hashlib.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/hashlib.py
lrwxr-xr-x    1 mobile  mobile   122 Oct 22 23:30 heapq.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/heapq.py
lrwxr-xr-x    1 mobile  mobile   121 Oct 22 23:30 hmac.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/hmac.py
drwxr-xr-x    6 mobile  mobile   192 Oct 22 23:30 html
drwxr-xr-x    8 mobile  mobile   256 Oct 22 23:30 http
drwxr-xr-x   78 mobile  mobile  2496 Oct 22 23:30 idlelib
lrwxr-xr-x    1 mobile  mobile   124 Oct 22 23:30 imaplib.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/imaplib.py
lrwxr-xr-x    1 mobile  mobile   123 Oct 22 23:30 imghdr.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/imghdr.py
lrwxr-xr-x    1 mobile  mobile   120 Oct 22 23:30 imp.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/imp.py
drwxr-xr-x   10 mobile  mobile   320 Oct 22 23:30 importlib
lrwxr-xr-x    1 mobile  mobile   124 Oct 22 23:30 inspect.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/inspect.py
lrwxr-xr-x    1 mobile  mobile   119 Oct 22 23:30 io.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/io.py
lrwxr-xr-x    1 mobile  mobile   126 Oct 22 23:30 ipaddress.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/ipaddress.py
drwxr-xr-x    8 mobile  mobile   256 Oct 22 23:30 json
lrwxr-xr-x    1 mobile  mobile   124 Oct 22 23:30 keyword.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/keyword.py
drwxr-xr-x   20 mobile  mobile   640 Oct 22 23:30 lib2to3
lrwxr-xr-x    1 mobile  mobile   126 Oct 22 23:30 linecache.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/linecache.py
lrwxr-xr-x    1 mobile  mobile   123 Oct 22 23:30 locale.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/locale.py
drwxr-xr-x    6 mobile  mobile   192 Oct 22 23:30 logging
lrwxr-xr-x    1 mobile  mobile   121 Oct 22 23:30 lzma.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/lzma.py
lrwxr-xr-x    1 mobile  mobile   124 Oct 22 23:30 macpath.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/macpath.py
lrwxr-xr-x    1 mobile  mobile   124 Oct 22 23:30 mailbox.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/mailbox.py
lrwxr-xr-x    1 mobile  mobile   124 Oct 22 23:30 mailcap.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/mailcap.py
lrwxr-xr-x    1 mobile  mobile   126 Oct 22 23:30 mimetypes.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/mimetypes.py
lrwxr-xr-x    1 mobile  mobile   129 Oct 22 23:30 modulefinder.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/modulefinder.py
drwxr-xr-x    6 mobile  mobile   192 Oct 22 23:30 msilib
drwxr-xr-x   24 mobile  mobile   768 Oct  8 23:35 multiprocessing
lrwxr-xr-x    1 mobile  mobile   122 Oct 22 23:30 netrc.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/netrc.py
lrwxr-xr-x    1 mobile  mobile   124 Oct 22 23:30 nntplib.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/nntplib.py
lrwxr-xr-x    1 mobile  mobile   123 Oct 22 23:30 ntpath.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/ntpath.py
lrwxr-xr-x    1 mobile  mobile   127 Oct 22 23:30 nturl2path.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/nturl2path.py
lrwxr-xr-x    1 mobile  mobile   124 Oct 22 23:30 numbers.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/numbers.py
lrwxr-xr-x    1 mobile  mobile   123 Oct 22 23:30 opcode.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/opcode.py
lrwxr-xr-x    1 mobile  mobile   125 Oct 22 23:30 operator.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/operator.py
lrwxr-xr-x    1 mobile  mobile   125 Oct 22 23:30 optparse.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/optparse.py
lrwxr-xr-x    1 mobile  mobile   119 Oct 22 23:30 os.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/os.py
lrwxr-xr-x    1 mobile  mobile   124 Oct 22 23:30 pathlib.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/pathlib.py
lrwxr-xr-x    1 mobile  mobile   120 Oct 22 23:30 pdb.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/pdb.py
lrwxr-xr-x    1 mobile  mobile   123 Oct 22 23:30 pickle.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/pickle.py
lrwxr-xr-x    1 mobile  mobile   128 Oct 22 23:30 pickletools.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/pickletools.py
lrwxr-xr-x    1 mobile  mobile   122 Oct 22 23:30 pipes.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/pipes.py
lrwxr-xr-x    1 mobile  mobile   124 Oct 22 23:30 pkgutil.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/pkgutil.py
lrwxr-xr-x    1 mobile  mobile   125 Oct 22 23:30 platform.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/platform.py
lrwxr-xr-x    1 mobile  mobile   125 Oct 22 23:30 plistlib.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/plistlib.py
lrwxr-xr-x    1 mobile  mobile   123 Oct 22 23:30 poplib.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/poplib.py
lrwxr-xr-x    1 mobile  mobile   126 Oct 22 23:30 posixpath.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/posixpath.py
lrwxr-xr-x    1 mobile  mobile   123 Oct 22 23:30 pprint.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/pprint.py
lrwxr-xr-x    1 mobile  mobile   124 Oct 22 23:30 profile.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/profile.py
lrwxr-xr-x    1 mobile  mobile   123 Oct 22 23:30 pstats.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/pstats.py
lrwxr-xr-x    1 mobile  mobile   120 Oct 22 23:30 pty.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/pty.py
lrwxr-xr-x    1 mobile  mobile   127 Oct 22 23:30 py_compile.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/py_compile.py
lrwxr-xr-x    1 mobile  mobile   123 Oct 22 23:30 pyclbr.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/pyclbr.py
lrwxr-xr-x    1 mobile  mobile   122 Oct 22 23:30 pydoc.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/pydoc.py
drwxr-xr-x    6 mobile  mobile   192 Oct 22 23:30 pydoc_data
lrwxr-xr-x    1 mobile  mobile   122 Oct 22 23:30 queue.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/queue.py
lrwxr-xr-x    1 mobile  mobile   123 Oct 22 23:30 quopri.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/quopri.py
lrwxr-xr-x    1 mobile  mobile   123 Oct 22 23:30 random.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/random.py
lrwxr-xr-x    1 mobile  mobile   119 Oct 22 23:30 re.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/re.py
lrwxr-xr-x    1 mobile  mobile   124 Oct 22 23:30 reprlib.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/reprlib.py
lrwxr-xr-x    1 mobile  mobile   128 Oct 22 23:30 rlcompleter.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/rlcompleter.py
lrwxr-xr-x    1 mobile  mobile   122 Oct 22 23:30 runpy.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/runpy.py
lrwxr-xr-x    1 mobile  mobile   122 Oct 22 23:30 sched.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/sched.py
lrwxr-xr-x    1 mobile  mobile   124 Oct 22 23:30 secrets.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/secrets.py
lrwxr-xr-x    1 mobile  mobile   126 Oct 22 23:30 selectors.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/selectors.py
lrwxr-xr-x    1 mobile  mobile   123 Oct 22 23:30 shelve.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/shelve.py
lrwxr-xr-x    1 mobile  mobile   122 Oct 22 23:30 shlex.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/shlex.py
lrwxr-xr-x    1 mobile  mobile   123 Oct 22 23:30 shutil.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/shutil.py
lrwxr-xr-x    1 mobile  mobile   123 Oct 22 23:30 signal.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/signal.py
drwxr-xr-x  188 mobile  mobile  6016 Oct 23 00:15 site-packages
lrwxr-xr-x    1 mobile  mobile   121 Oct 22 23:30 site.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/site.py
lrwxr-xr-x    1 mobile  mobile   122 Oct 22 23:30 smtpd.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/smtpd.py
lrwxr-xr-x    1 mobile  mobile   124 Oct 22 23:30 smtplib.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/smtplib.py
lrwxr-xr-x    1 mobile  mobile   123 Oct 22 23:30 sndhdr.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/sndhdr.py
lrwxr-xr-x    1 mobile  mobile   123 Oct 22 23:30 socket.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/socket.py
lrwxr-xr-x    1 mobile  mobile   129 Oct 22 23:30 socketserver.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/socketserver.py
drwxr-xr-x    6 mobile  mobile   192 Oct 22 23:30 sqlite3
lrwxr-xr-x    1 mobile  mobile   128 Oct 22 23:30 sre_compile.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/sre_compile.py
lrwxr-xr-x    1 mobile  mobile   130 Oct 22 23:30 sre_constants.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/sre_constants.py
lrwxr-xr-x    1 mobile  mobile   126 Oct 22 23:30 sre_parse.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/sre_parse.py
lrwxr-xr-x    1 mobile  mobile   120 Oct 22 23:30 ssl.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/ssl.py
lrwxr-xr-x    1 mobile  mobile   121 Oct 22 23:30 stat.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/stat.py
lrwxr-xr-x    1 mobile  mobile   127 Oct 22 23:30 statistics.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/statistics.py
lrwxr-xr-x    1 mobile  mobile   123 Oct 22 23:30 string.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/string.py
lrwxr-xr-x    1 mobile  mobile   127 Oct 22 23:30 stringprep.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/stringprep.py
lrwxr-xr-x    1 mobile  mobile   123 Oct 22 23:30 struct.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/struct.py
lrwxr-xr-x    1 mobile  mobile   127 Oct 22 23:30 subprocess.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/subprocess.py
lrwxr-xr-x    1 mobile  mobile   122 Oct 22 23:30 sunau.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/sunau.py
lrwxr-xr-x    1 mobile  mobile   123 Oct 22 23:30 symbol.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/symbol.py
lrwxr-xr-x    1 mobile  mobile   125 Oct 22 23:30 symtable.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/symtable.py
lrwxr-xr-x    1 mobile  mobile   126 Oct 22 23:30 sysconfig.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/sysconfig.py
lrwxr-xr-x    1 mobile  mobile   125 Oct 22 23:30 tabnanny.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/tabnanny.py
lrwxr-xr-x    1 mobile  mobile   124 Oct 22 23:30 tarfile.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/tarfile.py
lrwxr-xr-x    1 mobile  mobile   126 Oct 22 23:30 telnetlib.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/telnetlib.py
lrwxr-xr-x    1 mobile  mobile   125 Oct 22 23:30 tempfile.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/tempfile.py
lrwxr-xr-x    1 mobile  mobile   125 Oct 22 23:30 textwrap.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/textwrap.py
lrwxr-xr-x    1 mobile  mobile   121 Oct 22 23:30 this.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/this.py
lrwxr-xr-x    1 mobile  mobile   126 Oct 22 23:30 threading.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/threading.py
lrwxr-xr-x    1 mobile  mobile   123 Oct 22 23:30 timeit.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/timeit.py
drwxr-xr-x   16 mobile  mobile   512 Oct 22 23:30 tkinter
lrwxr-xr-x    1 mobile  mobile   122 Oct 22 23:30 token.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/token.py
lrwxr-xr-x    1 mobile  mobile   125 Oct 22 23:30 tokenize.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/tokenize.py
lrwxr-xr-x    1 mobile  mobile   122 Oct 22 23:30 trace.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/trace.py
lrwxr-xr-x    1 mobile  mobile   126 Oct 22 23:30 traceback.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/traceback.py
lrwxr-xr-x    1 mobile  mobile   128 Oct 22 23:30 tracemalloc.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/tracemalloc.py
lrwxr-xr-x    1 mobile  mobile   120 Oct 22 23:30 tty.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/tty.py
lrwxr-xr-x    1 mobile  mobile   123 Oct 22 23:30 turtle.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/turtle.py
drwxr-xr-x   24 mobile  mobile   768 Oct 22 23:30 turtledemo
lrwxr-xr-x    1 mobile  mobile   122 Oct 22 23:30 types.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/types.py
lrwxr-xr-x    1 mobile  mobile   123 Oct 22 23:30 typing.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/typing.py
drwxr-xr-x   14 mobile  mobile   448 Oct 22 23:30 unittest
drwxr-xr-x    9 mobile  mobile   288 Oct 22 23:30 urllib
lrwxr-xr-x    1 mobile  mobile   119 Oct 22 23:30 uu.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/uu.py
lrwxr-xr-x    1 mobile  mobile   121 Oct 22 23:30 uuid.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/uuid.py
drwxr-xr-x    6 mobile  mobile   192 Oct 22 23:30 venv
lrwxr-xr-x    1 mobile  mobile   125 Oct 22 23:30 warnings.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/warnings.py
lrwxr-xr-x    1 mobile  mobile   121 Oct 22 23:30 wave.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/wave.py
lrwxr-xr-x    1 mobile  mobile   124 Oct 22 23:30 weakref.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/weakref.py
lrwxr-xr-x    1 mobile  mobile   127 Oct 22 23:30 webbrowser.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/webbrowser.py
drwxr-xr-x    8 mobile  mobile   256 Oct 22 23:30 wsgiref
lrwxr-xr-x    1 mobile  mobile   123 Oct 22 23:30 xdrlib.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/xdrlib.py
drwxr-xr-x    8 mobile  mobile   256 Oct 22 23:30 xml
drwxr-xr-x    6 mobile  mobile   192 Oct 22 23:30 xmlrpc
lrwxr-xr-x    1 mobile  mobile   123 Oct 22 23:30 zipapp.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/zipapp.py
lrwxr-xr-x    1 mobile  mobile   124 Oct 22 23:30 zipfile.py -> /private/var/containers/Bundle/Application/185C0346-F38E-4BA4-A53B-E46C72C497CA/a-Shell.app/Library/lib/python3.7/zipfile.py

"ssh-keygen" command problem

when I use "ssh-keygen" command, the console is dead. I want to generate ssh keys to connect remote host, what should I do now?

Installation error for scipy

Getting the following error when I try to install scipy (pip3 install scipy). Any suggestions that might fix it? Does this look like an a-shell error?

ERROR: Complete output from command /var/mobile/Containers/Data/Application/<big number>/Library/bin/python3 /var/mobile/Conta
iners/Data/Application/<big number>/Library/lib/python3.7/site-packages/pip/_vendor/pep517/_in_process.py get_requires_for_build
_wheel /private/var/mobile/Containers/Data/Application/<big number>/tmp/tmphjxg9ape:
  ERROR: Traceback (most recent call last):
    File "/var/mobile/Containers/Data/Application/<big number>/Library/lib/python3.7/site-packages/pip/_vendor/pep517/_in_proces
s.py", line 207, in <module>
      main()
    File "/var/mobile/Containers/Data/Application/<big number>/Library/lib/python3.7/site-packages/pip/_vendor/pep517/_in_proces
s.py", line 197, in main
      json_out['return_val'] = hook(**hook_input['kwargs'])
    File "/var/mobile/Containers/Data/Application/<big number>/Library/lib/python3.7/site-packages/pip/_vendor/pep517/_in_proces
s.py", line 48, in get_requires_for_build_wheel
      backend = _build_backend()
    File "/var/mobile/Containers/Data/Application/<big number>/Library/lib/python3.7/site-packages/pip/_vendor/pep517/_in_proces
s.py", line 31, in _build_backend
      ep = os.environ['PEP517_BUILD_BACKEND']
    File "/var/mobile/Containers/Data/Application/<big number>/Library/lib/python3.7/os.py", line 680, in __getitem__
      raise KeyError(key) from None
  KeyError: 'PEP517_BUILD_BACKEND'
  ----------------------------------------
ERROR: Command "/var/mobile/Containers/Data/Application/<big number>/Library/bin/python3 /var/mobile/Containers/Data/Application
/<big number>/Library/lib/python3.7/site-packages/pip/_vendor/pep517/_in_process.py get_requires_for_build_wheel /private/var/mo
bile/Containers/Data/Application/<big number>/tmp/tmphjxg9ape" failed with error code 1 in /private/var/mobile/Containers/Data/A
pplication/<big number>/tmp/pip-install-wg38bd7_/scipy

Space Bar does not work on IPadOS 13 when Full Keyboard Access is enabled

On my iPad (iPro 4th gen 12.9” with Magic Keyboard) the space bar is not received by the app. All other keys work fine, even [cmd-Space] to pull up iOS’s search bar when in the app. This seems to be because in Settings, one of the “Controls” that are enabled is “Activate”. Once full keyboard access is disabled everything works fine.

I also tested this on LibTerm and there seemed to be no issues within that app. I would try and compare differences between both app’s ios_project repository, I just have little knowledge in Obj-C and Swift.

Thanks again for making this project! A local vim install with a shell is something that is sorely needed on iOS.

Remote iCloud files don't show

Hi,

first of all thank you very much for this awesome App. I was looking for a VIM editor on iOS and this looks very promising. I tried around with Blink and iVim but encountered various issues (Blink has no local VIM and iVim doesn't support my german keyboard very well yet).

Now I am testing a-Shell and while it looks and works very nice with my keyboard I do seem to have issues with its iCloud/iOS Files support. The problem is that files that are not downloaded to the iPad (cloud icon in the Files app) do not show up in directory listings in a-Shell. When I do a ls in a cloud folder all remote files seem to be missing.

As a workaround I can of course download the file in Apples Files app after which they appear in the a-Shell directory listing as well but that is very cumbersome especially with folder structures with many subfolders (e.g. my .vim folder). (Edit: You can "compress" a folder in the Files app to force all files to be downloaded, then remove the resulting zip file).

Thanks for the attention,
Normen Hansen

iCloud folder contents deleted when switching storage?

Hi,

it seems a-Shell (or iVim) deleted all the contents of my iCloud "TextEdit" folder (the folder that the MacOS TextEdit app creates in iCloud). I use that folder to keep my code snippets etc. and opened it in both a-Shell and iVim. At some point the folder was suddenly empty except for the two files I had opened in iVim before. This points to iVim being the culprit and I posted an issue over there (see below) however just before that happened I played with the settings of a-Shell and changed the "Document Storage" from iCloud to NextCloud.

Heres what I suspect was the sequence that triggered this:

  • In the a-Shell settings I had "iCloud" selected as storage
  • I then opened the TextEdit iCloud folder in a-Shell
  • Then in the settings I switched the "iCloud" storage to my "NextCloud"
  • I tried to open a folder from my NextCloud in a-Shell (which didn't work, it was still greyed out)
  • Then I switched the settings back to iCloud storage

At some point after that I noticed all my files were gone.

For reference, heres the issue I raised in iVims tracker:
terrychou/iVim#111

Cheers,
Normen

Please add mosh

It would be awesome if mosh would be available and maybe tmux.

Add traceroute command

Ping and nslookup are very useful. Traceroute would be a nice addition.

Just realized that this is probably not possible as it would require root privs.

Python cannot import bundled NumPy

Environment:

  • a-Shell 1.0 (34) on iPadOS 13.2 Developer Beta 3 (17B5077a)
  • a-Shell 1.0 (34) on iOS 13.1.3

Log:

$ python
Python 3.7.1 (default, Oct  4 2019, 14:40:06) 
[Clang 11.0.0 (clang-1100.0.33.8)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy
Traceback (most recent call last):
  File "/var/mobile/Containers/Data/Application/F7637F3E-E1F4-4D40-8BDF-9A865B244EC8/Library/lib/python3.7/site-packages/numpy-1.16.0-py3.7-macosx-10.9-x86_64.egg/numpy/core/__init__.py", line 16, in <module>
    from . import multiarray
  File "/var/mobile/Containers/Data/Application/F7637F3E-E1F4-4D40-8BDF-9A865B244EC8/Library/lib/python3.7/site-packages/numpy-1.16.0-py3.7-macosx-10.9-x86_64.egg/numpy/core/multiarray.py", line 12, in <module>
    from . import overrides
  File "/var/mobile/Containers/Data/Application/F7637F3E-E1F4-4D40-8BDF-9A865B244EC8/Library/lib/python3.7/site-packages/numpy-1.16.0-py3.7-macosx-10.9-x86_64.egg/numpy/core/overrides.py", line 9, in <module>
    from numpy.core._multiarray_umath import add_docstring, ndarray
  File "/var/mobile/Containers/Data/Application/F7637F3E-E1F4-4D40-8BDF-9A865B244EC8/Library/lib/python3.7/site-packages/numpy-1.16.0-py3.7-macosx-10.9-x86_64.egg/numpy/core/_multiarray_umath.py", line 7, in <module>
    __bootstrap__()

  File "/var/mobile/Containers/Data/Application/F7637F3E-E1F4-4D40-8BDF-9A865B244EC8/Library/lib/python3.7/site-packages/numpy-1.16.0-py3.7-macosx-10.9-x86_64.egg/numpy/core/_multiarray_umath.py", line 7, in <module>
    __bootstrap__()
  File "/var/mobile/Containers/Data/Application/F7637F3E-E1F4-4D40-8BDF-9A865B244EC8/Library/lib/python3.7/site-packages/numpy-1.16.0-py3.7-macosx-10.9-x86_64.egg/numpy/core/_multiarray_umath.py", line 6, in __bootstrap__
    imp.load_dynamic(__name__,__file__)
  File "/var/mobile/Containers/Data/Application/F7637F3E-E1F4-4D40-8BDF-9A865B244EC8/Library/lib/python3.7/imp.py", line 342, in load_dynamic
    return _load(spec)
ImportError: dlopen(/private/var/containers/Bundle/Application/B178CEC6-6A18-4407-9E93-AB9E0D44B4D7/a-Shell.app/Frameworks/python-numpy.core._multiarray_umath.framework/python-numpy.core._multiarray_umath, 0x0002): dlopen(): file not found: /private/var/containers/Bundle/Application/B178CEC6-6A18-4407-9E93-AB9E0D44B4D7/a-Shell.app/Frameworks/python-numpy.core._multiarray_umath.framework/python-numpy.core._multiarray_umath

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/var/mobile/Containers/Data/Application/F7637F3E-E1F4-4D40-8BDF-9A865B244EC8/Library/lib/python3.7/site-packages/numpy-1.16.0-py3.7-macosx-10.9-x86_64.egg/numpy/__init__.py", line 142, in <module>
    from . import core
  File "/var/mobile/Containers/Data/Application/F7637F3E-E1F4-4D40-8BDF-9A865B244EC8/Library/lib/python3.7/site-packages/numpy-1.16.0-py3.7-macosx-10.9-x86_64.egg/numpy/core/__init__.py", line 47, in <module>
    raise ImportError(msg)
ImportError: 

IMPORTANT: PLEASE READ THIS FOR ADVICE ON HOW TO SOLVE THIS ISSUE!

Importing the multiarray numpy extension module failed.  Most
likely you are trying to import a failed build of numpy.
Here is how to proceed:
- If you're working with a numpy git repository, try `git clean -xdf`
  (removes all files not under version control) and rebuild numpy.
- If you are simply trying to use the numpy version that you have installed:
  your installation is broken - please reinstall numpy.
- If you have already reinstalled and that did not fix the problem, then:
  1. Check that you are using the Python you expect (you're using /var/mobile/Containers/Data/Application/F7637F3E-E1F4-4D40-8BDF-9A865B244EC8/Library/bin/python),
     and that you have no directories in your PATH or PYTHONPATH that can
     interfere with the Python and numpy versions you're trying to use.
  2. If (1) looks fine, you can open a new issue at
     https://github.com/numpy/numpy/issues.  Please include details on:
     - how you installed Python
     - how you installed numpy
     - your operating system
     - whether or not you have multiple versions of Python installed
     - if you built from source, your compiler versions and ideally a build log

     Note: this error has many possible causes, so please don't comment on
     an existing issue about this - open a new one instead.

Original error was: dlopen(/private/var/containers/Bundle/Application/B178CEC6-6A18-4407-9E93-AB9E0D44B4D7/a-Shell.app/Frameworks/python-numpy.core._multiarray_umath.framework/python-numpy.core._multiarray_umath, 0x0002): dlopen(): file not found: /private/var/containers/Bundle/Application/B178CEC6-6A18-4407-9E93-AB9E0D44B4D7/a-Shell.app/Frameworks/python-numpy.core._multiarray_umath.framework/python-numpy.core._multiarray_umath

>>> 

.bashrc and source command

Hey, I’m wondering if it’s currently possible to create aliases. I added a .bashrc file and a .profile file and neither one seems to get sourced when I open the app. There is also no source command available.

Just wondering if I’m missing something or if this is currently not possible. Thanks!

Python encoding module not found

Hi, I’m trying to run python but there’s a problem with the module Encodings. I am on IPad Pro 11 with iPad Os 13.

$python

Fatal Python error: initfsencoding: unable to load the file system codec
ModuleNotFoundError: No module named 'encodings'
Current thread 0x000000016c387000 (most recent call first):

In any case, It is an awesome project.
Thanks

Feature request - luarocks

Given lua is installed out of the box, having access to the package manager luarocks would be a natural complement.

I recognise that this may be highly challenging if not impossible, since many many luarocks are wrappers around C libraries that are presumably not portable (or automatically portable). I don't know whether luarocks provides an easy way to screen out / reject any packages than are not pure Lua. The rockspec format MAY be possible to identify pure Lua functions with a few heuristics I suppose.

Otherwise I guess it would be fine if non-pure Lua packages just died at some phase of the luarocks installation process :)

iPython help screen and %magic

If you execute iPython and type ? The help file is shown with the line “return to continue; q to quit —-“ at the bottom. However, it appears the program is hung at this point. Also, typing %magic results in less:command not found with a-shell hanging.

Font size too small and not configurable

As the title says... This is a great app but the font size makes it too uncomfortable to use for anything buy very short periods. A-shell reports screen size as 174x55 characters. (iPad Pro 12in iOS 13.1.3.)

Thank you for making the iPad more useful!

Add shell history file

After closing a-shell app, the shell history (last entered commands) is not present anymore. So it would be great to add a history file (e.g. .sh_history) which stores the entered commands and is automatically loaded when a-shell starts. Also a possibility to search in the history (like Ctrl+R in bash) would be nice.

Please add ruby and node

Thank you so much for building this—a-shell feels like one of the last missing pieces for me to actually be productive on my iPad.

My primary development environment is in node (lots of frontend React apps) and my primary scripting language is Ruby (I realize python is practically the same thing, but old habits and all that).

This issue would potentially be resolved by a package manager, as in #42.

Development Build Workflow Questions

I have checked the code out and am trying to build a-shell so that I can contribute to this project. (I want to make the cursor blinking a setting and I'm sure more things as time goes along.)

When I first checked out the project I was getting a bunch of compile errors that ended up being due to needing a newer version of ios_system and after building a new ios_system from master they went away. There were also a bunch of missing frameworks and files that were needed at build time. I was able to locate most of the frameworks and then just removed a few that didn't seem critical for basic usage just to get through the build to make sure I tracked down any other major issues when it came to the build side of things.

I was going to start working on something that would go out to all the places that was needed to grab all the dependencies to make it easier to get started on development. I am new to the iOS_system ecosystem of libraries and such so forgive me if my ignorance shows too much on this side of things. Is there currently a way to get most or all the frameworks from the different projects that are included or is it basically just going around to each of them and downloading them? If that is the way that it is done then I'm OK with that I just wanted to make sure before I was aware of anything that might exist already before I get started on writing something.

vi mode for shell?

On zsh and bash you can configure the shell to work like VIM (i.e. switch between insert and normal mode, use key combos like dw in normal mode etc). I wondered if thats possible for a-Shell as well? If I do echo $SHELL I see that the used shell is /bin/sh which doesn't support VI mode out of the box afaik.

Thanks for the attention,
Normen Hansen

‘\’ not shown in vim

When I open a tex file with a-shell, it does not show the ‘\’ it replace is it with empty space and stuff

Freezes on iPhone

I just installed a-Shell on my iPhone SE with iOS 13.3.1. I launched lua, did 1+88, and exited it with ^c. After that the app freezes every now and then and is practically useless.

emacs?

I know we have Vim but is there any chance you could add emacs?

Can't open an external file when its path contains a space

Recently, the feature to open a file from another app was added. It's very nice, but it doesn't seem to escape a file path, so I can't open a file if its path contains a space.

For instance, when I try to open a file which is in iCloud Drive, whose path contains 'Mobile Documents', the path is split into two parts. One is '/path/to/Mobile', and the other is 'Documents/foo/bar/file'.

IMG_0126

(1) Send email using python?

Would this python script to send email work with a-shell? On macOS I use the sendEmail CLI, but I also tested McShane's python script, and it works on macOS. But on iOS?

It uses import smtplib, email, sys, time.

EDIT – another question: does a-shell come with the dig command?

Please add Git and Pandoc

Couldn't install vim plugins with Vim-Plug, maybe because of missing git?
Yes I could try pathogen, I will, but Git seems somewhat important to have.

Thanks for the work in the app, it is amazing!

Scp does not work with port

It might be a known bug because this also does not work on blink but in ish. Scp returns “ curl: (7) Couldn't connect to server” when -P port is used.

clang link issue

while trying to compile some simple c++ code (single header, only using std::vector and iostream), I'm having strange link issues when running clang++:

wasm-ld: error: /private/var/mobile/Containers/Data/Application/F31CCAE9-535B-4BEC-866E-92B42B73A6B4/tmp/e
xample-b7e8bf.o: undefined symbol: __cxa_allocate_exception
wasm-ld: error: /private/var/mobile/Containers/Data/Application/F31CCAE9-535B-4BEC-866E-92B42B73A6B4/tmp/e
xample-b7e8bf.o: undefined symbol: __cxa_throw
clang++: error: linker command failed with exit code 1 (use -v to see invocation)

The code is this one (low discrepancy BN sampling, single header with a tiny main.cpp): https://github.com/dcoeurjo/LowDiscBlueNoise

any idea ?

(and thanks, Nicolas, for this very nice app!)

SSH -p

SSH connections can only be established on port 22, the command

ssh [email protected] -p2222 fails with a "..not found on port 22" message.

Add ffmpeg

Would like to use this in conjunction with Siri Shortcuts to convert my gopro videos to smaller size on iPad given that iPad itself is pretty powerful.

Resizing window leaves random characters in the prompt

On iPadOS 13.4.1, I noticed that resizing the a-shell window will leave some random characters in the prompt.

Here’s some sample input that was put into the prompt from collapsing / expanding the onscreen keyboard a few times:

[M tQ[M#tQ[M vP[M#vP[M uQ[M#uQ[M uM[M#uM[M O4[M#O4

I’m not sure what this is - perhaps control characters for the terminal size changing?

launchd/cron equivalent

Is it possible to create something like an app-internal equivalent to launchd/cron? I.e. to create, modify, load, unload, start "agents" that run scripts in the bin directories? Could e.g. have settings like StartInterval every n seconds, RunAtAppLaunch, RunAtLoad, KeepAlive etc.

Access files of other apps

How do I access files that belong to other apps? I see PickFolder can add sources but how to get to them in a-shell? For example, I would like access to python scripts in other directories.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.