Creating a bash based restricted shell


 
Thread Tools Search this Thread
Top Forums Programming Creating a bash based restricted shell
# 1  
Old 09-03-2013
Question Creating a bash based shell with auto complete

Hello.

I need to write a command line interface that can be invoked either directly from the shell (command sub-command arguments), or as a shell that can process sub-commands.
i want to use bash auto completion for both scenarios.

example: lets say my CLI module is called 'mycli' and there are 3 sub commands: add, list, delete.

for the first type of usage, one would write from the prompt:
Code:
ubuntu@ubuntu:/$mycli add -name myname

for the second type of usage, one would do the following:
Code:
ubuntu@ubuntu:/$mycli
MYCLI>add -name myname
MYCLI>list

i know how to create a bash autocomplete for the first example. but don't know how to create a shell-like prompt that will use bash auto complete for sub command processing.

any suggestions?

Last edited by noamr; 09-03-2013 at 08:47 AM..
# 2  
Old 09-03-2013
bash uses the readline library to implement the auto complete, line up, emacs keys editing in commands.

There is a Perl "scriptable" equivalent, Term::Readline which may provide a suitable easily programmable shell for you
This User Gave Thanks to Skrynesaver For This Post:
# 3  
Old 09-03-2013
license issues

unfortunately, although the readline library would probably work, it's license mandates that any software using it will be free. and the product i'm developing isn't, so i probably can't use it.

any other suggestions?
# 4  
Old 09-03-2013
Hi.

The tcl/tk package may be of some use. The sense of the license is left as an exercise: Tcl/Tk Licensing Terms

Searching for completion at the tcl/tk site brings up a about 2K hits.

Best wishes ... cheers, drl
# 5  
Old 09-03-2013
Quote:
Originally Posted by noamr
unfortunately, although the readline library would probably work, it's license mandates that any software using it will be free. and the product i'm developing isn't, so i probably can't use it.

any other suggestions?
If readline would work, but its license is a dealbreaker, have a look at the editline library (BSD license).

Regards,
Alister
# 6  
Old 09-03-2013
Hi, Alister.
Quote:
Originally Posted by alister
If readline would work, but its license is a dealbreaker, have a look at the editline library (BSD license) ...
Good alternative for many features. However, at a quick glance I didn't see anything for completion. I looked at editline(3) - Linux man page and Man Page for editline (freebsd Section 3) - The UNIX and Linux Forums -- is there a betteer version or did I just miss reading the page? ... cheers, drl
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Creating a text based game using shell script.

Hello guys I'm new to shell scripting and I need to make a game using shell script. I want to know if it is possible for me a total noob to shell scripting to make this game. The game concept is simple: First thing when you launch the script you get a menu in which you select if you want to... (3 Replies)
Discussion started by: Othmane
3 Replies

2. Shell Programming and Scripting

Creating bash script to process a data file based on the menu

Hey, im fairly new to unix and Im trying to make this unix project that would display a menu and do the following. MENU =========================== (p, P) Print users info (a, A) Add new user (s, S) Search user (d, D) Delete user (x,X) Exit Enter your choice: Trying to... (3 Replies)
Discussion started by: ultimaxtrd
3 Replies

3. UNIX Desktop Questions & Answers

Restricted shell with execution permission on a file

Hi, I've created a user which shell is the restricted one (/usr/lib/rsh), but I've realized that the user cannot execute a script !!! The scope was to allow the ssh access to a user that could not access to any other directories but there that user should be able to run a script that retrieves ... (2 Replies)
Discussion started by: mary0
2 Replies

4. AIX

Restricted shell

Hello I have a user with a Restricted Shell on a Aix 5.3. My question is about if I can add one more path on the home directory. I mean the user have in his home directory. for example /test/my_application/logs but I need that this user can view another log that is on another path, if this... (1 Reply)
Discussion started by: lo-lp-kl
1 Replies

5. Shell Programming and Scripting

Creating a command on a BASH shell

Hi all. Suppose I have the following function in an executable file named "HOLA": ------------------------ function hola { echo "Hola ${@}."; } ------------------------ In addition, suppose that I want to execute the file so I can input my name next to ./HOLA. I mean,... (4 Replies)
Discussion started by: hresquivelo
4 Replies

6. Shell Programming and Scripting

help needed with creating challenging bash script with creating directories

Hi, Can someone help me with creating a bash shell script. I need to create a script that gets a positive number n as an argument. The script must create n directories in the current directory with names like map_1, map_2 etcetera. Each directory must be contained within its predecessor. So... (7 Replies)
Discussion started by: I-1
7 Replies

7. Shell Programming and Scripting

Bash shell: Creating Preferences

In OS X I'm currently writing a bash script that requires writing to preference file. I may eventually want to share it with users on other Unix-like OSs and would like to accommodate for that possibility ahead of time. Most OS X applications save preferences in xml-format plist files. These... (4 Replies)
Discussion started by: airsmurf
4 Replies

8. UNIX for Advanced & Expert Users

Creating USERs with restricted Access

Hi There, i need to creat USERS in UNIX with restricted access to different directories. for example user1 should have access to dir1 and dir2 user2 should have access to dir2 and dir3 Please help me (4 Replies)
Discussion started by: ramanan25
4 Replies

9. Shell Programming and Scripting

shell: creating different arrays based on function argument

hi, I was wondering if there was a good way to create an array within a function, where the name is based on a passed argument? I tried this: _____________________________ func(){ #take in 1st arg as the arrayname arrayName=$1 let i=0 while read line do arrayName=${line} let i+=1... (5 Replies)
Discussion started by: nix21
5 Replies

10. Shell Programming and Scripting

creating email based on an output

Hello folks. I need to create a script that looks at a certain output (list of full paths of files) and gets the owner's name (2nd position in the path, for example: /dirA/jsmith/blah1/more_blah/still_blah... etc) Gets the jsmith and greps the related file for jsmith and send that output to... (1 Reply)
Discussion started by: saswerks
1 Replies
Login or Register to Ask a Question