Programming :: How To Create A Menu In C Like Bash's Select
May 23, 2011
Im wondering how to create a menu in c like bash's select. I imagine there is already something out but I don't know what it would be. Im a c newb but been scripting for a long time now and trying to pick up a little c.this would be what I am looking to display:
Code:
1) option 1
2) option 2
3) option 3
Make a selection:obviously 1,2,3 would be the only valid selection and anything else would say invalid or something like that.
I would like to create a bash menu script for my home server For instance if i were to type ./script It would then bring up 3 options
a. Create a backup b. Restore files from a backup c. Quit
If you were to select a or b it should then ask you were you want to backup or restore from. And if i were to type in an incorrect letter i should get an error and take me back to menu. I have attepmted this a view time now and have magaged to get the menu up using parameters
I need to know how to assign a result from a select. I am clueless on the sytax. I am trying this in bash. Maybe I am not assigning the array right. It gives me the whole row in the echo instead of just field a. How do I get fieldA = a in the select. Note script was stripped for security on database info but the syntax is same.
Code:
#!/bin/sh results="$(mysql --user ${DB_USER} -p${DB_PWD} ${DB_NAME} -Bse 'select a,b,c,d from tblMytable')" for rows in "${results[@]}" do fieldA=${rows[0]}; echo ${fieldA}; done
I am envisioning a dialog menu with 2 sections, the top 2/3 a menu, then the bottom 1/3 is a message box. When you highlight a menu item it gives you a description of what it does in the message box. However I am not sure it is possible. Can this be done in BASH?
I have a file called list.txt with on word on each line that changes in length. I'd like to make a menu, each line being its own choice. I pieced together most of it the only thing missing is a failsafe for typing a number out of range
I have a Directory of files over time the directory has become a pain to manage... Its now a few 100GBs each file has a partner .log file so id would want some logic in keeping these together..So I want a script to move the files into sub-directories with a limit or 4GB and then i'll burn each of the directories to DVD.
Is it possible to create a text based menu layout in bash were it is possible to browse through. The menu list should look something like this:
---------------------------------------- user: root colour: blue number: 4 animal: dog ----------------------------------------
At the start the cursor should blink at the r from root so that text can be entered. When pressing the enter the cursor should go to the b from blue and so on. the imported thing is that all the text is visible also beyond the position from the cursor.
I am using GTK and C and on my application I have a Drag and drop feature.
Code: Select allicon_view = gtk_icon_view_new_with_model(create_and_fill_model(pALP)); g_object_unref(pALP->list_store); /* destroy model automatically with view */ gtk_icon_view_set_selection_mode(GTK_ICON_VIEW(icon_view), GTK_SELECTION_SINGLE); gtk_icon_view_set_reorderable(GTK_ICON_VIEW(icon_view), TRUE); gtk_icon_view_set_text_column(GTK_ICON_VIEW(icon_view), COL_DISPLAY_NAME);
[Code] ....
The drag and drop works fine but when I exit the application and enter again, the changes of the drops are not saved, meaning the new location is not saved. I understand that in order to save the location of the drops I need to create a menu file and write some xml, But how do I do this? it there another way?
I'm trying to write a script that will prompt the user for a username/password, then create that user/password in the right groups on all my machines. I know this is kind of a long way around to avoid a NIS server, but I like making my life more difficult.
This is what I have so far:
Code:
the script has 2 problems: The "if" functions return an error and do not compare the strings successfully. whatever password is entered does get applied properly and the user is unable to login
I'm trying to create an SSL certificate and answer the questions inside a bash script. The command used to create the SSL certificate
Code: openssl req $@ -new -x509 -days 365 -nodes -out /etc/apache2/apache.pem -keyout /etc/apache2/apache.pem The first question asked is. Country Name (2 letter code) [AU]:
I've found myself in the situation where I need to create a menu in gnome/kde for a directory structure full of documents.The directory structure looks like this:
I'm starting bash shell script and I'm looping without any solution.
I'm trying to find some files under a folder hierarchy and in case of errors moving these files to a destination folder under the same hierarchy recreating this hierarchy if not exists.
Finding all ._* files under /src and moving them to /dest recreating folder1 or the others which contains ._* files but without moving files which does not correspond to the pattern.
Code:
I tried find command and I'am getting all needed files
Code:
But I don't know how to use the output to get the parent folder of files which are found to
1- create folder with mkdir -p /dest/folder1 or /dest/folder1/folder4
2- move found files from /src/... to /dest/... with rm command
I'm working on a find command as this trying to do all in the same line but ... little lost
I am attempting to put a SystemRecoveryCD ISO onto a USB drive by using a shell script that is bundled with the ISO file (usb_inst.sh). When I run this script, I am presenting with a dialog box with a blue background (see attachment) with two options: <OK> and <Cancel>. I am able to switch between the options by using the arrow keys and Tab, but if I try to select an option by pressing Enter, O, or C, a new terminal line appears (as in the attachment), preventing me from selecting anything in the dialog. I feel like I'm not doing something extremely obvious;
I recently bought an host to have a personal website and would like to create a bash script to create make a mirror copy of it and then add it to crontab to run once a week. Essentially what I want to do is to get the website by using wget -m ftp://user***@ftp.host/mydir
Once this is done I'd like to have everything in an archive called mysite.date.tar.7z I've no experience at all of bash scripting but I guess this should be an easy task? How to make the user and password not visible ? Is there any other option better than wget? (maybe rsync it works better?)
I installed Ubuntu as a dual-boot system with Windows XP very carefully. Unfortunately, though given the option to boot Windows at the grub menu, when I select it, I get an error. Booting Ubuntu on my other partition works just fine, no issues.
I also attempted to access files from the first partition in Ubuntu using gparted, but once I mounted it, all of my files were not present. I only saw manufacturer files, and many files and folders I didn't recognize.
Also, as an aside, my laptop monitor is suffering from occasional black-outs during use. Ubuntu gave me a little toolbar flag, telling me to go to a website and use the patches given to fix it, but I'm not quite so sure where to input the given patch text. Do I really need to go through the trouble of finding the source code, etc., or is it more simple?
I know that there is a nice little launcher that will run the script for Grub to select a menu option upon shutdown for a reboot [URL]
I however would like to use this from Windows XP and have grub select menu item 2 during a reboot. Does anyone know if there is any way to set Grub commands from within Windows?
I recently installed Linux Mint 8 (main) on my P.C.. When I select the main menu and activate the Terminal, all that comes up is a blank white window--The same thing happens when I try to run Software Manager or Synaptic. Could you please instruct me how to fix this problem.
I have currently had the need to go back to basic socket programming, and implemented a simple udp packet sender. But I realized I needed to be able to select which network interface to send the packets from.
The reason is so that one of the interfaces has vlan tagging, and I need my UDP packets to be accordingly vlan tagged. For example, one of the interfaces is eth1.200.
This is an interaction between OOo and the font package on Ubuntu, so I have searched both sets of forums fruitlessly. In Open Office when I go to select font characteristics for the so-called MS fonts (Arial for example) instead of the menu showing Bold and Italic, it shows "Negreta" and "Cursiva".
I would like to know how do I print the line # in a script. My requirement is, I have a script which is about ~5000 lines long. If there are any errors happen I just exit. And I would like to add the line # of the script where the error happened.
Code: #!/bin/bash trap "echo 'you got me'" SIGINT SIGTERM # to trap ctrl+c echo "Press ctrl+c during 5 sec loop" for ((i=0;i<5;i++)); do
[Code]...
How come code behaves normally and stops when ctrl+c signal is caught and resumes, but after I use at least one timeout read in the code it looks like, if signal is caught again it doesn't pause the execution but skips the loop. If you remove -t (timeout) option from the read, both loops look the same!
Now in my bash script, I want to get the output /home/user instead of $HOME once read. So far, I have managed to get the $HOME variable but I can't get it to echo the variable. All I get is the output $HOME.
I have written quite a few separate bash & scripts and php scripts that up to now I have run from cron jobs. However I have to estimate how long each takes to run, before running the next and so it probably takes much longer than necessary to run them all. They have to run in order.
Now there are so many I am thinking it would be better to have a master bash script that would run one after the other, but I am not sure how to get the master script to wait before starting to run the next script. Is this possible and is there a command that will make the script wait between bash and php scripts , for them to finish, before running the next?
This is a bit of an odd problem that's been happening to me recently. My home folder is a version of Fedora old, I've been using the same one between Fedora 11 and 12 (which I'm now using).
When booting up, I notice that my system fonts are not the ones I have manually set. They're the ugly version, whatever exact font it is. It's only when I select System->Appearances from the menu that the system seems to detect my seletions to use Liberation fonts in all areas, and then everything instantly switches to the more visually pleasing Liberation fonts. This is a strange bug, I was wondering if anyone has experienced this or can point me in the right direction?
So I have the burned ubuntu CD, and I'm attempting to install it on a system that has one HDD with XP/Vista on it, and another that is completely formatted and unpartitioned. However, when I boot to the ubuntu CD, I can use the menus from the bottom, and select the language when initially prompted, but I can't select any of the menu options except for boot from first hard drive.
I have a process that forks, where the childs puts some data of random size and exits while the parent should get the data and does some manipulation.. here I have used a pipe for child to write the data and parent to read the data.. Child simply dumps the data, and the data is of any size even child and parent doesnt know. I have used select in the parent to see whether there is any data coming on the reading end of the pipe.. if there is a data.. I copy into a buffer.. Im reading the data continusly when the child exits after closing the writing end of pipe. Parent gets blocked on the read part But my question is how parent know the other of pipe is closed when using the select call. In otherwords.. while using select in readfds, how would i know the other end has closed the pipe..
Trying to export a Mysql query to a .csv file the query draws from multiple tables, e.g. sales, purchase and currency
Code:
What i'm trying to do is to export both the sales and purchase to a single line where both the currency for the sales and the purchase is specified.
Basically like this:
Code:
Problem here is that i'm stating currency.value twice in the same select and don't know how to define which currency.value applies to sales and which to purchase.
I'm trying to make a very small script with greasemonkey to do some automatic things when a page loads. The first thing I need to do is to click on a link. I've done that. Then I need to select the 3rd element of a drop down list that appears a few moments (depending on the connection) after the link is pressed, without reloading the page (ajax or something like that). This I can't get to work, The select has no id or class, but I can get its xpath value. There is only one select on the page. I've tried both setTimeOut and the DOMNodeInserted event with no effect.