Skocz do zawartości

Problematyczny Bash


borzole

Rekomendowane odpowiedzi

@qmic - bash się przydaje, ale faktycznie robienie jakiegoś supermenu w bash-u to przesada;) Ale w bashu robi się "cokolwiek" czyli pisze skrypty ułatwiające życie, automatyzujące system itp. A jak chcesz np. seryjnie konwertować obrazki czy zrzucać nagraną muzyka do innych formatów w PHP to powodzenia;) - dobijesz serwer zasobożerną. W bashu zrobić można to dużo szybciej.

 

@wszyscy - Sam pisze skrypty dla samego basha i dla Zenity - zasada działania jest podobna, tylko że w bashu nazwy plików i przełączki wchodzą jako parametr..

Korzystajcie z basha i uczcie się basha, niesamowicie ułatwia życie. Ale nie przesadzajcie....;) Po to zostało wymyślone Zenity żeby wszystko ładnie wyglądało.

Odnośnik do komentarza
Udostępnij na innych stronach

@qmic - bash się przydaje, ale faktycznie robienie jakiegoś supermenu w bash-u to przesada;) Ale w bashu robi się "cokolwiek" czyli pisze skrypty ułatwiające życie, automatyzujące system itp. A jak chcesz np. seryjnie konwertować obrazki czy zrzucać nagraną muzyka do innych formatów w PHP to powodzenia;) - dobijesz serwer zasobożerną. W bashu zrobić można to dużo szybciej.

 

@wszyscy - Sam pisze skrypty dla samego basha i dla Zenity - zasada działania jest podobna, tylko że w bashu nazwy plików i przełączki wchodzą jako parametr..

Korzystajcie z basha i uczcie się basha, niesamowicie ułatwia życie. Ale nie przesadzajcie....;) Po to zostało wymyślone Zenity żeby wszystko ładnie wyglądało.

 

No zgadza się, można pisać jakieś skrypciki po kilka linijek (ustawiające uprawnienia, wykonujące zbiór poleceń), ale to nie jest u mnie robieniem czegokolwiek :)

 

Odnośnik do komentarza
Udostępnij na innych stronach

  • 2 weeks later...

Trzeba wybrac z klawiatury numerycznej numer interesującej pozycji :

 

export tutaj=$PWD
export glowny=${tutaj%/*}
export katalog_glowny=` ls $glowny `



               select katalog in `ls $katalog_glowny `
                     do 
printf "\n\n\n\n\n"
                          banner $katalog
printf "\n\n"
sleep 3


                     break 
               done

 

Na szybko. Bierze wszystko. Pliki, katalogi. Dla samych katalogów można użyć

 

du |awk '{ print $2 }' |cut -d'/' -f2 |sort -u

 

ale wolno działa bo zlicza zajętość katalogów.

 

lub

 ls -la |grep dr | awk '{ print $7 }' |sort -u

 

" grep dr " wybiera katalog z takiej listy:

 

drwxrwxr-x  13 morg morg    4096 11-27 01:15 Start
-rwxrwxrwx   1 morg morg 1244942 2009-03-27  start.zip

 

O to chodziło?

 

M.

 

 

 

EDIT: tagi {}

Odnośnik do komentarza
Udostępnij na innych stronach

O to chodziło?
...nie :lol: chciałem uniwersalną funkcję "Wybierz katalog"

W poście #5 napisałem, że select jest kaszaniarski. Jeśli lista jest za długa to wychodzi poza ekran i będąc w "init 3" nie da się jej przewinąć do góry. Jeśli wiesz jak zrobić przewijaną listę: less+select (najlepiej od razu mc :P) to będzie git.

Darowałem sobie ten problem :)

Odnośnik do komentarza
Udostępnij na innych stronach

prawie mam, przerobiłem jakiegoś znalezionego "while do" i mam taki ciekawy jednolinijkowy sposób:

#!/bin/bash

# skrypt pozwala na wybór folderu w jednej kresce
# niestety nie rozpoznaje spacji ;( ale poza tym jest git 

msg="\rZlokalizuj folder używając strzałek góra/dół/enter + wybór potwierdź \"y\""
echo -e $msg

line(){
     for (( j=1; j<=$(tput cols); j++ )); do 
         echo -n "${1:--}"
     done
}
set_dir_tab(){
     unset dir_tab
     # element "." jest celowo pomijany
     dir_tab=( "." ".." $(find . -mindepth 1 -maxdepth 1 -xtype d | sort) )
}

cd_folder(){
     cd "${dir_tab[$i]}"
     set_dir_tab
}
     
main(){
     SETCURRENT="$PWD"
     # dla szybszego działania wykonajmy to tylko raz
     czysc=$(line \ )
     set_dir_tab
     i=1
     while [ 0 ]; do
         [ $i == 0 ] && i=1
         [ ! "${dir_tab[$i]}" ] && let i=i-1
         echo -en "\r$czysc\r"
         echo -en "FOLDER=$PWD | ${dir_tab[$i]} "
         read -sn 1 char
         case "$char" in
             "A")
                 # A = UP
                 let i=i-1;;
             "B")
                 # B = DOWN
                 let i=i+1;;
             "")
                 echo -en "\r$czysc\r"
                 echo -en "\rFOLDER=$PWD | (y)es? or ENTER | \"${dir_tab[$i]}\" "
                 read -sn 1 char
                 [ "$char" == "y" ] || [ "$char" == "Y" ] && break || cd_folder "${dir_tab[$i]}"
        esac
     done
     echo -e "\n WYBRAŁEŚ = $PWD"  
     cd "$SETCURRENT"
}

main

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
×
×
  • Dodaj nową pozycję...