Posts mit dem Label shell werden angezeigt. Alle Posts anzeigen
Posts mit dem Label shell werden angezeigt. Alle Posts anzeigen

Montag, 21. September 2015

YASSI 1.0.1 - Final release

I'm happy to announce the final release of YASSI.

YASSI does not need to be installed, unless you want to 'info yassi'.
The project name and version 'yassi'/1.0.1, and both lines with 'Report bugs...' are read from the configuration file,
and therefor will adjust to your project settings.
Not even 2 months ago I had started with this project, and it already provides all the functions i've wanted for it.While I initially started it for another project of mine where i needed to focus on the duty, i wanted to have it as its own project, to use with ther projects.

I do hope you helps you as much as it does for me.

What is YASSI again?

Yet Another Simple Script Installer

What is it for?

It requires a single file to provide all information for an installation custom to your needs,
while staying easy change-able by the end user.

Get it


Dienstag, 26. Mai 2015

Background jobs, exit status

Figured another way to get an exit status of a job ran in background.

Obviously, these examples are simplified.
Each first of the two, is the 'one-liner' and the 2nd code box shows the structure with idention.

1) In this first one, we're sending the output of the background job into a variable, which we echo at the end.
This works, but doesnt really take advantage of a 'background' job.
ret=$(( sleep 2 ; [ -d not-existing ] ; echo $?) &)
echo $ret
ret=$(
    (
        sleep 2
        [ -d not-existing ]
        echo $?
    )&
)
echo $ret


2) This one applies alot more to what one usualy expects as a background job. (AFAIU) mkfifo lets the read-command wait until something is written to its passed file.

tmp=~/.cache/$$~ ; mkfifo "$tmp"
( sleep 10 ; [ -d not-existing ] ; echo $? > "$tmp") &
read RET < "$tmp" ; [ "$RET" = "0" ] && echo "GOOD!" || echo "BAD"
rm -f "$tmp"
tmp=~/.cache/$$~
mkfifo "$tmp"
(
    sleep 10
    [ -d not-existing ]
    echo $? > "$tmp"
) &
read RET < "$tmp"
[ "$RET" = "0" ] && echo "GOOD!" || echo "BAD"
rm -f "$tmp"
3) And to close the top 3, my most used code of these three.
This one loops while the background job is active and prints dots while its running. One could replace the printed string to update the text accordingly.

tmp="~/.cache/$~"
( sleep 5 ; [ -d not-existing ] ; echo $? > "$tmp") &
pid=$!
while ps $pid 1>/dev/zero;do sleep 0.5 ; printf ".";done
cat "$tmp"
tmp="~/.cache/$~"
(
    sleep 5
    [ -d not-existing ]
    echo $? > "$tmp"
) &
pid=$!
while ps $pid 1>/dev/zero
do
    sleep 0.5
    printf "."
done
cat "$tmp"

Last but not least, i'll have a tool to help with such a task.
Its called: tui-psm, which names Text User Interface - Paralell Script Manager.
You can pass as many scripts as an array can hold, and limit the paralell executed scripts to any number you want (5 is default).
tui-psm script1.sh script2.bash script3.csh

But it can more, for example, if you need at least 3 scripts to be executed successfully before you attempt to run script 5, this could be your approach:
tui-psm -cq script1.sh script2.bash script3.csh ./script4.zsh
[ $? -ge 3 ] && ./script5.ash

Hope this helped.
Have fun scripting!

Montag, 25. Mai 2015

Taming the beast, TUI back to stable

Now after the big excitement of the successfull changes to use an invidiual rc file for all its used variables, basic usage seems to be back to normal again.

It is causing a rush to figure one successfully installs the bash completition, accidently to a wrong and non-working path.

But this massive change also helped me to figure out which internal variables to share and which not, so i've added the function 'provides' to figure that out.

tui provides
Will print a hughe and long list with all the variables used internaly and which you may use as well.

If you
source  tui
you'll have all of those variables available, but sourcing just the rc file, and the wanted file providing the variables you want can increase usage speed.
source ~/.tui_rc || . tui
source $TUI_FILE_{APPS,SETTINGS}

Also several small hotfixes, of which i was sure i have had applied already 6 months ago....

Hope you like it, enjoy! :)

Freitag, 22. Mai 2015

TUI 0.8.0-2, The RC File release

Get it here:
https://github.com/sri-arjuna/tui/releases/tag/v0.8.0-2

Read about it here:
http://www.unix.com/shell-programming-and-scripting/253496-tui-text-user-interface-framework-scripts.html

Also the installation script has changed:


Hope you like the changes.
Enjoy! :)

Samstag, 16. Mai 2015

Todays achievement

I'm trying to provide some information on the variables used by TUI, reading them from 'memory' as env doesnt list them anymore (since heartbleed, still accessable by "echo ...").

Anyway, so me kind of proud this worked on first attempt :)
List all the variables starting with TUI_ and RET_:
echo ${!TUI_*} ${!RET_*}
While this is already nice, as it prints all variable names starting with either TUI_ or RET_, i'd like to show the values of these variables as well, so the user gets an idea what to expect.
Thought, eval might be usefull at this point, to show the current set paths, files, colors and default return values.

for foundVar in ${!TUI_*} ${!RET_*}
do    tui-printf -E \
           "$foundVar" \
           "$(tmp=\$$foundVar ; printf '%s' $(eval echo $tmp))"
done

Which then finaly printed (shortened):
:: TUI_DIR_CACHE                     /home/sea/.cache ::
:: TUI_DIR_CONF                              /etc/tui ::
:: TUI_DIR_DOCS                    /usr/share/doc/tui ::
:: TUI_DIR_INSTALL_ROOT                               ::
:: TUI_DIR_SYSTEM                      /usr/share/tui ::
:: TUI_DIR_THEMES               /usr/share/tui/themes ::
:: TUI_DIR_USER                 /home/sea/.config/tui ::
:: TUI_DIR_USER_LOGS       /home/sea/.config/tui/logs ::
:: TUI_DIR_USER_MANPAGES    /home/sea/.local/man/man1 ::
:: TUI_DIR_USER_SCRIPTS          /home/sea/.local/bin ::

Mittwoch, 6. Mai 2015

Get the extension of a filename

Every now and then, one needs to decide upon a file its extension what to do.

This is what i've added as tui-str-extension:
out=""
FN=$( echo "$1" | sed s," ","",g)    # Remove any spaces and make it a single string
for chance in $(echo "$FN"|sed s,"\."," ",g)    # Use dots as string seperators
do    out="$chance"
done
if [ "$out" = "$FN" ]
then    echo ""
else     echo "${out%\ /}"     # Remove any tailing or single space
fi
Hope you like it :)

Freitag, 30. Januar 2015

Howto: Connect BSD to WIFI spot

Heyas

So i've just installed FreeBSD on my computer.

Preparation:

So, to get started for WIFI, i first need to plug in a wire, and install some of the tools required to enable WIFI.

pkg install -y wpa_supplicant 

Once this is installed, lets remove the wire, so we can be sure the next internet connection will be using the WIFI.


Saving the WIFI config

Is quite simple, we're using the just installed wpa_password tool, passing the AP-Name and its password, and redirect the output to a file:

wpa_password APNAME PaSSwoRd >> /etc/wpa_supplicant.conf


Enable WIFI for startup

Basicly, you just need to get the device from the output of:

ifconfig | grep -B3 -i wireless

And save it to: /etc/rc.conf

wlans_ath0="wlan0"
ifconfig_wlan0="WPA SYNCDHCP"

Or you cold type this:

WLAN=`ifconfig | grep -B3 -i wireless | grep ^[ai]|awk '{print $1}'`

echo "wlans_${WLAN/:}=wlan0
ifconfig_wlan0=\"WPA SYNCDHCP\"" >> /etc/rc.conf


Enable WIFI


To get it right away:

service netif restart

Or simply reboot to verify everything worked well.

Sources:

https://www.freebsd.org/doc/handbook/network-wireless.html
http://www.wonkity.com/~wblock/docs/html/wireless.html