Anzeige:
Ergebnis 1 bis 6 von 6

Thema: [BASH] Echo von Befehl unterdruecken

  1. #1
    Registrierter Benutzer
    Registriert seit
    20.02.2004
    Ort
    Boeblingen
    Beiträge
    90

    [BASH] Echo von Befehl unterdruecken

    Hallo Forum,

    im Gegensatz zur Posixshell, mit der ich bisher programmiert habe, echoed mir die Bash einen Befehl immer, den ich als Subshell ausfuehre an STDERR.
    Beispiel:

    Code:
    while :
    do
       FILES=`ls | wc -l`
       echo "Noch $FILES Files im Directory."
       sleep 5
    done
    Da kommt immer:

    Code:
    ls | wc -l
    Noch 1000 Files im Directory.
    Bisher hab ich es nur so in Griff bekommen:
    Code:
    while :
    do
       FILES=`ls | wc -l 2> /dev/null`
       echo "Noch $FILES Files im Directory."
       sleep 5
    done
    Aber das ist doch Mist, geht das nicht eleganter?
    Servus und bis bald,

    Blackhawk

  2. #2
    Registrierter Benutzer
    Registriert seit
    19.02.2005
    Beiträge
    32
    Also bei mir läuft die BASh 3.1.16 und die, und auch vorherige Versionen die ich benutzt habe, haben kein solches Verhalten an den Tag gelegt.
    Vllt sagst du uns welche Distribution du verwendest, welche Version der BASh du verwendest und ob du evtl Anpassungen an BASh-spezifischen Dateien vorgenommen hast.
    Ich denke, also bin ich. Manche sind trotzdem.
    System: AMD64 3700+ (1MB), 2GB RAM, NVidia eGeForce 7600 GS (256MB), ASUS A8N-SLI SE, 3 x 400GB (SATA2, NCQ, Seagate)
    OS: Gentoo GNU/Linux AMD64

  3. #3
    Registrierter Benutzer
    Registriert seit
    20.02.2004
    Ort
    Boeblingen
    Beiträge
    90
    rpm -qi bash
    Code:
    Name        : bash                         Relocations: /usr 
    Version     : 3.0                               Vendor: Red Hat, Inc.
    Release     : 19.3                          Build Date: Wed 12 Apr 2006 10:01:32 PM CEST
    Install Date: Sat 16 Sep 2006 01:13:23 PM CEST      Build Host: hs20-bc1-6.build.redhat.com
    Group       : System Environment/Shells     Source RPM: bash-3.0-19.3.src.rpm
    Size        : 5112724                          License: GPL
    Signature   : DSA/SHA1, Thu 01 Jun 2006 07:27:07 PM CEST, Key ID 219180cddb42a60e
    Packager    : Red Hat, Inc. <http://bugzilla.redhat.com/bugzilla>
    Summary     : The GNU Bourne Again shell (bash).
    Description :
    The GNU project Bourne Again shell (bash) is a shell or command
    language interpreter that is compatible with the Bourne shell
    (sh). Bash incorporates useful features from the Korn shell (ksh) and
    the C shell (csh) and most sh scripts can be run by bash without
    modification. Bash is the default shell for Red Hat Linux.
    hier die .bash_profile
    Code:
    ################################################
    # special profile for HSG root users
    
    ################################################################################
    # declare functions                       # ATTENTION: defines shell history
    function updatePATH                       # extend path $1 with $2, $3, ...
    {                                         #
        set +u                                # no error on unset vars
        typeset pathVAR                       # declare local variables
        typeset pathVAL
        eval pathVAL=\$${1}                   # copy value of $1 to pathVAL
        pathVAR=${1}                          # remember $1
        shift
        while [[ "$1" != "" ]]
        do                                    # append to pathVAL if necessary
            echo ":$pathVAL:" | /bin/grep -q ":${1}:" \
               || pathVAL=${pathVAL}:$1
            shift
        done
        eval $pathVAR=${pathVAL}              # update original PATH variable
    }
    ################################################################################
    # Set up the search paths:
        [[ -f /etc/PATH ]] \
          && PATH=$(cat /etc/PATH) \
          || PATH="/bin"
        updatePATH PATH /bin /sbin /usr/bin /usr/sbin /etc /usr/local/bin /usr/bin/X11
    
    ################################################################################
    # set and export subsequent variables
    set -a  set and export subsequent variables
        SHELL=$(grep "^$LOGNAME:" /etc/passwd | awk -F: '{print $7}')
        SHELL=${SHELL:-/bin/bash}                 # set default SHELL
        [[ ! -x $SHELL ]] && SHELL=/bin/bash
    
        BASH_ENV=~/.bashrc
        HOSTNAME=$(hostname)
        HOSTNAME=${HOSTNAME%%.*}
        DISPLAY=${DISPLAY:-$HOSTNAME:0.0}
    
        HISTFILEdir=~/.HISTORY                      
        [[ ! -d $HISTFILEdir ]] && mkdir -p $HISTFILEdir
        HISTSIZE=1024                              
        DISPhost=${DISPLAY%%:*}   
        Xhost=${Xhost:-$DISPhost}     ; export Xhost 
        if [[ "$Xhost" = "localhost" ]] && [[ -n $SSH_CLIENT ]]
        then
            XhostIP=${SSH_CLIENT%% *}
            XhostIP=${XhostIP##*:}
            Xhost=$(nslookup $XhostIP 2>/dev/null | grep -i name | tail -1 | awk '{print $NF}' | sed -e 's/\..*//')
        fi
    
        EDITOR=/bin/vi              # set default editor
        [[ ! -x $EDITOR ]] && EDITOR=/usr/bin/vi
        FCEDIT=$EDITOR
        VISUAL=$EDITOR
                                    # evtl. use vim
        [[ -x /usr/local/bin/vim ]] && EDITOR=/usr/local/bin/vim
        [[ -x /usr/bin/vim ]]       && EDITOR=/usr/bin/vim
    
        [ -f /usr/bin/less ] && PAGER="/usr/bin/less"
        LESS="-iMX -j2 -z-2"
        LESSCHARSET=latin1
    
        LC_COLLATE=C                      # set default language
        LANG=C
    set +a
    ################################################################################
    # MAIN body
    set +u                                # no error on unset vars
    
    umask 022
    [[ -f ~/.bashrc ]] && . ~/.bashrc     # source aliases and functions
    
    ################################################################################
    Servus und bis bald,

    Blackhawk

  4. #4
    Registrierter Benutzer
    Registriert seit
    21.06.1999
    Beiträge
    677
    Das Echo-Verhalten kann mit dem Bash-Builtin "set" ein oder abgeschaltet werden. Für weitere Infos: "man bash"

  5. #5
    Registrierter Benutzer
    Registriert seit
    19.02.2005
    Beiträge
    32
    Code:
    set -v
    würde zwar zur Ausgabe passen, aber warum ist nur die subshell davon betroffen? Was wird geladen, was sonst nicht geladen wird... oder wird geprüft, ob es eine subshell ist...
    Ich denke, also bin ich. Manche sind trotzdem.
    System: AMD64 3700+ (1MB), 2GB RAM, NVidia eGeForce 7600 GS (256MB), ASUS A8N-SLI SE, 3 x 400GB (SATA2, NCQ, Seagate)
    OS: Gentoo GNU/Linux AMD64

  6. #6
    Registrierter Benutzer
    Registriert seit
    21.06.1999
    Beiträge
    677
    Zitat Zitat von lagalopex Beitrag anzeigen
    Code:
    set -v
    würde zwar zur Ausgabe passen, aber warum ist nur die subshell davon betroffen? Was wird geladen, was sonst nicht geladen wird... oder wird geprüft, ob es eine subshell ist...
    Wann welches Profile geladen wird, habe ich nie so richtig verstanden und die Angaben in der Manpage scheinen den Erfahrungen zu widersprechen. Für die Bash gibt es mehrere Profiles /etc/profile $HOME/.profile $HOME/.bashrc (vielleicht gibt es noch weitere). Mal wird die .profile geladen, mal die .bashrc und manchmal auch beide.

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •