Προς το περιεχόμενο

[INFO] Η δύναμη της Κονσόλας


Manos-Sx

Προτεινόμενες αναρτήσεις

Η δύναμη της κονσόλας: :-D

 

 

@Technology_fan:

sed 's/'$1'/'$2'/' aout.txt > bout.txt

μπορεί να γραφεί καλύτερα ως ==>

sed "s/$1/$2/" aout.txt > bout.txt

 

Για τη δεύτερη ερώτηση, αν υπάρχουν ειδικοί χαρακτήρες ([]/...) ένας τρόπος είναι να τους περάσεις από κάποια δική σου συνάρτηση που θα τους κάνει "escape", δηλαδή θα τους προσθέτει το \ μπροστά τους.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • Απαντ. 889
  • Δημ.
  • Τελ. απάντηση

Συχνή συμμετοχή στο θέμα

Έχω γράψει ένα σκριπτάκι το οποίο κατα κάποιο τρόπο μου ταξινομεί τις ταινίες ανα χρονολογική σειρά αρκεί οι ταινίες να περιέχουν στο όνομα τους μία χρονολογία από το 2001 εώς 2009. Επίσης αν η ταινία είναι .avi φτιάχνει φτιάχνει ένα φάκελο αν δεν υπάρχει ήδη και βάζει μέσα του τη ταινία.

 

Μπορεί κάποιος να μου πει αν γίνεται και πως να εκτελέιται αυτόματα με το που τοποθετείται μία ταινία στο directory,

 

παραθέτω το σκριπτάκι για όποιον φανεί χρήσιμο...

 

>#!/bin/bash
ls |grep avi > aout.txt
sed 's/.avi//' aout.txt > bout.txt # allazei to aout.txt kai to bazei sto bout.txt sbinontas to .avi sto telos


cat bout.txt | while read line  ## metakinei to avi ston antistoixo fakelo
do
echo "metakinitai to " $line.avi "...."
mkdir "$line"  
mv "$line.avi" "$line"  
done

rm aout.txt
for i in 2001 2002 2003 2004 2005 2006 2007 2008 2009
do
ls |grep $i > aout.txt 

cat aout.txt | while read line
do
	if [ "$line" != "$i" ]
	then
		mv "$line" "$i"
	fi
done

rm aout.txt
done
rm bout.txt

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Χρησιμοποίησε την watch με παράμετρο το directory που θέλεις και τρέξτην στο background ή μέσω του start-stop-daemon με ένα custom init script.

man watch για περισσότερες λεπτομέρειες.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημοσ. (επεξεργασμένο)

ενδιαφέρον το watch αλλα δε ξέρω το να τρέχει συνέχεια μου φαίνεται κάπως χαζό..Και εξάλλου δε θα χει πρόβλημα αν ακόμα η ταινία μετακινείται? πώς θα πω να ελεγθέι πρώτα αν ολοκληρώθηκε η μεταφορά και μετά να το τρέξει!

 

το start-stop-daemon μου θυμίζει πολύ λειτουργικά και φασαρίες με διεργασίες...

 

κανα παράδειγμα με τη watch μπορεί να δείξει κανείς? και πως θα συνδέσω και το αντίστοιχο σκριπτάκι?

Επεξ/σία από Technology fan
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημοσ. (επεξεργασμένο)

Ο πιο αποδοτικός τρόπος για αυτό πρέπει να είναι μέσω του kernel Inotify.

 

Υπάρχουν libraries για Python/Perl/Ruby, αλλά εναλλακτικά μπορείς και να παρακολουθείς την έξοδο της inotifywait (συμπεριλαμβάνεται στα inotify-tools), από ένα shell script με μια while, και να εκτελείς το script σου όταν τυπωθούν κάποια events (π.χ. CLOSE_WRITE)

Επεξ/σία από nske
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημοσ. (επεξεργασμένο)

Κάτι scripts που χρησιμοποιώ για τον τοπικό mirror της διανομής και ένα άλλο για backup από live cd.

 

>
#!/bin/bash

Black='\e0;30m'
Blue='\e0;34m'
Green='\e0;32m'
Cyan='\e0;36m'
Red='\e[0;31m'
Purple='\e[0;35m'
Brown='\e[0;33m'
Light_Gray='\e[0;37m'
Dark_Gray='\e[1;30m'
Light_Blue='\e[1;34m'
Light_Green='\e[1;32m'
Light_Cyan='\e[1;36m'
Light_Red='\e[1;31m'
Light_Purple='\e[1;35m'
Yellow='\e[1;33m'
White='\e[1;37m'

No_Color='\033[0m'


#Checking if user running the script is root.
# Comment out the lines below.

#Start here
if [ `id -u` = 0 ]; then  
echo
echo -e "${Yellow}You are running this script as root. I dont want so."
echo -e "You have to comment out the code that implements the check.${No_Color}"
echo
exit 1
fi
#Stop here

# Filesystem locations for the sync operations
SYNC_HOME="/mnt/storage1/arch"
SYNC_LOGS="$SYNC_HOME/logs"
SYNC_EXTRA="$SYNC_HOME/extra/os/i686/"
SYNC_CORE="$SYNC_HOME/core/os/i686/"
SYNC_COMMUNITY="$SYNC_HOME/community/os/i686/"
SYNC_LOCK="/tmp/mirrorsync.lck"

# Bandwidth Limit variable
BAND_LIMIT=$1

# Set the rsync server to use
# Only official public mirrors are allowed to use rsync.archlinux.org
# SYNC_SERVER=rsync.archlinux.org::ftp
#SYNC_SERVER=rsync://distro.ibiblio.org/distros/archlinux
SYNC_SERVER=rsync://mirror.rit.edu/archlinux
#SYNC_SERVER=rsync://mirror.archlinux.fi/archlinux
#SYNC_SERVER=rsync://ftp.sh.cvut.cz/arch
SYNC_SERVER=rsync://mirror.umoss.org/archlinux
#SYNC_SERVER=rsync://mir1.archlinuxfr.org/archlinux
SYNC_SERVER=rsync://mirror.cs.vt.edu/archlinux

# Set the format of the log file name
# This example will output something like this: sync_20070201-8.log
LOG_FILE="pkgsync_$(date +%Y%m%d-%H).log"

# Checking if bandwidth limit variable is a number greater than zero

if [ ! -z $BAND_LIMIT ]; then
if [ $BAND_LIMIT -eq $BAND_LIMIT > /dev/null 2>&1 ]; then
	if [ $BAND_LIMIT -ne 0 ]; then
		BAND_LIMIT="--bwlimit=$BAND_LIMIT"
	else
		echo -e "${Yellow}Bandwidth limit must be an integer number greater than zero (0)${No_Color}."
		exit 1
	fi
else
	echo -e "${Yellow}Bandwidth limit must be an intger number. For example 100 means 100 kBps limit.${No_Color}"
	exit 1
fi
fi

# Do not edit the following lines, they protect the sync from running more than
# one instance at a time
if [ ! -d $SYNC_HOME ]; then
 echo "$SYNC_HOME does not exist, please create it, then run this script again."
 exit 1
fi

if [ -f $SYNC_LOCK ]; then
 echo "The sync failed. Check if websync is already running."
 echo "If not you must remove  manually the file $SYNC_LOCK"
 exit 1
fi

touch $SYNC_LOCK
# End of non-editable lines

# Create the log file and insert a timestamp
touch "$SYNC_LOGS/$LOG_FILE"

echo "=============================================" >> "$SYNC_LOGS/$LOG_FILE"
echo ">> Starting sync on $(date --rfc-3339=seconds)" >> "$SYNC_LOGS/$LOG_FILE"
echo -e ">> ---" >> "$SYNC_LOGS/$LOG_FILE"


echo
echo -e "${Light_Cyan}############################################"
echo    "####                                    ####"
echo    "####   Synchronizing Extra repository   ####"
echo    "####                                    ####"
echo -e "############################################${No_Color}"
echo

rsync -rptLv --partial --progress --delete-after --size-only --no-motd $BAND_LIMIT $SYNC_SERVER/extra/os/i686/ $SYNC_EXTRA

echo
echo -e "${Light_Red}############################################"
echo    "####                                    ####"
echo    "####   Synchronizing Core repository    ####"
echo    "####                                    ####"
echo -e "############################################${No_Color}"
echo

rsync -rptLv --partial --progress --delete-after --size-only --no-motd $BAND_LIMIT $SYNC_SERVER/core/os/i686/ $SYNC_CORE

echo
echo -e "${Light_Green}############################################"
echo    "####                                    ####"
echo    "#### Synchronizing Community repository ####"
echo    "####                                    ####"
echo -e "############################################${No_Color}"
echo

rsync -rptLv --partial --progress --delete-after --size-only --no-motd $BAND_LIMIT $SYNC_SERVER/community/os/i686/ $SYNC_COMMUNITY


#Insert another timestamp and close the log file
echo ">> ---" >> "$SYNC_LOGS/$LOG_FILE"
echo ">> Finished sync on $(date --rfc-3339=seconds)" >> "$SYNC_LOGS/$LOG_FILE"
echo "=============================================" >> "$SYNC_LOGS/$LOG_FILE"
echo "" >> "$SYNC_LOGS/$LOG_FILE"

# Remove the lock file and exit
rm -f "$SYNC_LOCK"
exit 0

 

 

>
#!/bin/bash

Black='\e0;30m'
Blue='\e0;34m'
Green='\e0;32m'
Cyan='\e0;36m'
Red='\e[0;31m'
Purple='\e[0;35m'
Brown='\e[0;33m'
Light_Gray='\e[0;37m'
Dark_Gray='\e[1;30m'
Light_Blue='\e[1;34m'
Light_Green='\e[1;32m'
Light_Cyan='\e[1;36m'
Light_Red='\e[1;31m'
Light_Purple='\e[1;35m'
Yellow='\e[1;33m'
White='\e[1;37m'

No_Color='\033[0m'

if [ ! `id -u` = 0 ]; then  
echo
echo -e "${Yellow}This script should be run as root.${No_Color}"
echo
exit 1
fi

# trap ctrl-c.

trap ctrl_c INT

function ctrl_c() { 

echo
echo
echo -e "${Yellow}Back up process terminated by user.${No_Color}"
echo
exit 1

}




echo
echo -e "${Yellow}Getting ready for the back up process.${No_Color}"
echo

#disk_bck_serial=`sdparm --quiet --page=sn /dev/sda | xargs -n 6 | awk '{ print $6}'`

disk_bck="/dev/sdb1"
disk_boot="/dev/sda3"
disk_home="/dev/mapper/VolGroup00-lvolHome"
disk_sys="/dev/mapper/VolGroup00-lvolSys"

mnt_bck="/mnt/sdb1"
mnt_boot="/mnt/boot"
mnt_home="/mnt/home"
mnt_sys="/mnt/sys"

#Creating needed directories.
if [ ! -d $mnt_bck ]; then
echo "Creating /mnt/sdb1 directory"
mkdir $mnt_bck
echo
else
echo "Directory /mnt/sdb1 is already present"
echo
fi

if [ ! -d $mnt_boot ]; then
echo "Creating /mnt/boot directory"
mkdir $mnt_boot
echo
else
echo "Directory /mnt/boot is already present"
echo
fi

if [ ! -d $mnt_home ]; then
echo "Creating /mnt/home directory"
mkdir $mnt_home
echo
else
echo "Directory /mnt/home is already present"
echo
fi

if [ ! -d $mnt_sys ]; then
echo "Creating /mnt/sys directory"
mkdir $mnt_sys
echo
else
echo "Directory /mnt/sys is already present"
echo
fi



#Enabling LVM support
echo "Enabling LVM support"
echo

modprobe dm_mod
vgchange -ay

sleep 2


#Checking if disks exists.

if [ ! -f $disk_boot ]; then
 echo -e "${Yellow}Disk $disk_boot is missing.${No_Color}"
 exit 1
fi

if [ ! -f  $disk_sys ]; then
 echo -e "${Yellow}Logical Voloume $disk_sys is missing.${No_Color}"
 exit 1
fi

if [ ! -f  $disk_home ]; then
 echo -e "${Yellow}Logical Voloume $disk_home is missing.${No_Color}"
 exit 1
fi

#Mounting disks.

#if [ ! $disk_bck_serial = 9VM11HL1 ]; then
#	echo -e ${Yellow}
#	echo "The serial number of destination disk is not the spected one"
#	read -p "Type yes to continue or no to exit: ${No_Color}"  usr_resp_0
#	echo
#
#	if [ ! $usr_resp_0 = yes ]; then  
#		echo
#		echo -e "${Yellow}Back up proccess terminated by user.${No_Color}"
#		echo
#		exit 1
#	fi
#fi


mount -t auto $disk_bck $mnt_bck > /dev/null

if ! mount | grep "$disk_bck on" > /dev/null; then
echo
echo -e "${Yellow}Could not mount $disk_bck.${No_Color}"
echo
exit 1

fi

mount -t auto $disk_boot $mnt_boot > /dev/null

if ! mount | grep "$disk_boot on" > /dev/null; then
echo
echo -e "${Yellow}Could not mount $disk_boot.${No_Color}"
echo
exit 1

fi

mount -t auto $disk_home $mnt_home > /dev/null

if ! mount | grep "$disk_home on" > /dev/null; then
echo
echo -e "${Yellow}Could not mount $disk_home.${No_Color}"
echo
exit 1

fi

mount -t auto $disk_sys $mnt_sys > /dev/null

if ! mount | grep "$disk_sys on" > /dev/null; then
echo
echo -e "${Yellow}Could not mount $disk_sys.${No_Color}"
echo
exit 1

fi


echo -e ${Yellow}
echo "Everything looks fine."
read -p "Type yes to continue or no to exit."  usr_resp_1
echo -e ${No_Color}

if [ ! $usr_resp_1 = yes ]; then  
echo
echo -e "${Yellow}Back up proccess terminated by user.${No_Color}"
echo
exit 1
fi


echo
echo -e "${Light_Red}############################################"
echo    "####                                    ####"
echo    "####      Starting back UP proccess     ####"
echo    "####                                    ####"
echo -e "############################################${No_Color}"
echo


echo -e ${Light_green}
read -p "Please enter the date. E.g.: 31-12-2011" usr_date
echo -e ${No_Color}

cd /mnt

echo
echo -e "${Light_green}Backing up boot.${No_Color}"
echo

tar -cvpjf ../sdb1/backup_boot_$usr_date.tar.bz2 boot > /dev/null

cd /mnt/sys 

echo
echo -e "${Light_green}Backing up bin.${No_Color}"
echo

tar -cvpjf ../sdb1/backup_bin_$usr_date.tar.bz2 bin > /dev/null

echo
echo -e "${Light_green}Backing up dev.${No_Color}"
echo

tar -cvpjf ../sdb1/backup_dev_$usr_date.tar.bz2 dev > /dev/null

echo
echo -e "${Light_green}Backing up etc.${No_Color}"
echo

tar -cvpjf ../sdb1/backup_etc_$usr_date.tar.bz2 etc > /dev/null

echo
echo -e "${Light_green}Backing up lib.${No_Color}"
echo

tar -cvpjf ../sdb1/backup_lib_$usr_date.tar.bz2 lib > /dev/null

echo
echo -e "${Light_green}Backing up media.${No_Color}"
echo

tar -cvpjf ../sdb1/backup_media_$usr_date.tar.bz2 media > /dev/null

echo
echo -e "${Light_green}Backing up mnt.${No_Color}"
echo

tar -cvpjf ../sdb1/backup_mnt_$usr_date.tar.bz2 mnt > /dev/null

echo
echo -e "${Light_green}Backing up opt.${No_Color}"
echo

tar -cvpjf ../sdb1/backup_opt_$usr_date.tar.bz2 opt > /dev/null

echo
echo -e "${Light_green}Backing up root.${No_Color}"
echo

tar -cvpjf ../sdb1/backup_root_$usr_date.tar.bz2 root > /dev/null

echo
echo -e "${Light_green}Backing up sbin.${No_Color}"
echo

tar -cvpjf ../sdb1/backup_sbin_$usr_date.tar.bz2 sbin > /dev/null

echo
echo -e "${Light_green}Backing up srv.${No_Color}"
echo

tar -cvpjf ../sdb1/backup_srv_$usr_date.tar.bz2 srv > /dev/null

echo
echo -e "${Light_green}Backing up sys.${No_Color}"
echo

tar -cvpjf ../sdb1/backup_sys_$usr_date.tar.bz2 sys > /dev/null

echo
echo -e "${Light_green}Backing up usr.${No_Color}"
echo

tar -cvpjf ../sdb1/backup_usr_$usr_date.tar.bz2 usr > /dev/null

echo
echo -e "${Light_green}Backing up var.${No_Color}"
echo

tar -cvpjf ../sdb1/backup_var_$usr_date.tar.bz2 var > /dev/null

cd /mnt

echo
echo -e "${Light_green}Backing up home.${No_Color}"
echo

tar -cvpjf ../sdb1/backup_home_$usr_date.tar.bz2 home > /dev/null


echo
echo -e "${Light_Red}############################################"
echo    "####                                    ####"
echo    "####      Back up process complited     ####"
echo    "####                                    ####"
echo -e "############################################${No_Color}"
echo

exit 0

Επεξ/σία από firewalker
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Σκριπτ για την αφαίρεση των παλιών kernels. Λειτουργεί σε Ubuntu και υποθέτω ότι θα παίζει και σε Debian.

 

>
#!/bin/sh
# Purges all kernels except for the active one

active_kernel=`uname -r`   # e.g. 2.6.28-15-generic
active=${active_kernel%-*} # e.g. 2.6.28-15
echo "Current kernel: $active"

# Trying to match e.g.:
# linux-headers-2.6.31-8
# linux-headers-2.6.31-8-generic
# linux-image-2.6.31-8-generic
found_kernel=""
to_remove=""
while read state name version description
do
   [ "$state" = 'ii' ] || continue
   version=${version%.*}   # E.g. 2.6.28-15 without the .48 at the end
   if [ "$version" = "$active" ]
   then
       found_kernel="yes"
       continue
   fi
   to_remove="$to_remove $name"
done <<EOF
`dpkg -l 'linux-headers-2.*' 'linux-image-2.*'`
EOF

if [ -z "$found_kernel" ]
then
   echo "Didn't find the current kernel $active_kernel in the list of the installed kernels! Aborting..."
   exit 1
fi

if [ -z "$to_remove" ]
then
   echo "No kernels to be removed."
   exit 0
fi

sudo apt-get purge $to_remove

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Σκριπτ για την αφαίρεση των παλιών kernels

στα Ιωάννινα

κυκλοφορεί και ο parsifal :mrgreen:

 

 

Ethiopian Review

Ten Linux commands you can’t live without

http://www.ethiopianreview.com/scitech/211

 

το ξέρω ότι τα ξέρετε.

.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • 2 μήνες μετά...
Δημοσ. (επεξεργασμένο)

Δημιουργία video από εικόνες.

 

Έστω ότι θέλουμε να φτιάξουμε ένα video από σταθερές εικόνες. Πάμε στον φάκελο με τις εικόνες και δήνουμε την εντολή:

 

mencoder mf://*.jpg -mf fps=25:type=jpg -ovc lavc -lavcopts vcodec=mpeg4:aspect=4/3 -o test.avi

 

Παράγεται το αρχείο test.avi χωρίς ήχο. Αν θέλουμε να βάλουμε και ήχο:

 

mencoder -ovc copy -audiofile temp.mp3 -oac copy temp.avi -of avi -o output.avi

 

temp.mp3 είναι ο ήχος και output.avi το αρχείο με τον ήχο.

Επεξ/σία από firewalker
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα

  • Δημιουργία νέου...