Arşiv Anasayfa Linux
Sayfalar: 1
Kabuk Betikleri By: Hipokondriyak Date: January 02, 2009, 03:12:05 PM
Bulunduğunuz dizindeki şarkı isimlerini ve mp3 tag-lerini değiştirmek;

İlk işimiz hangi dağıtımı kullanıyorsanız ona "eyeD3" programını kurmak. Ubuntu için;

"apt-get install eyeD3"

Daha sonra bulunduğunuz dizin ismini şarkıcının albümünün adı olduğunu varsayıyorum. Ve şu şekilde kabuk programımızı yazmaya başlıyoruz. Daha da okunabilir ve taşınabilir yapmak sizin elinizde



#!/bin/bash

simdiz=`pwd`
album=`basename "$simdiz"`

for i in *.mp3
do
sarki=${i#*-}
sarkici=${i%-*}
eyeD3 -A "$album" -a "$sarkici" -t "$sarki" "$i"
done

Otomatik USB Bellek Bağlamak

Linux’ta süreçlerin (process) birbirleriyle iletişimini sağlayan dbus diye bir program var. Bir de çekirdek (kernel) ile kullanıcı arasında donanımsal soyutlamayı sağlayan, yani kullanıcının harici bir giriş/çıkış cihazı rahatlıkla kullanabilmesi için sağlanan soyutlayıcı program da ‘Hal’dır. İşte, temelde bu iki programı kullanılarak, şu şekilde betikler yazılıp USB Bellek otomatik bağlanıyor

Kaynak gentoo-wiki’dir.



mount USB-Sticks

One can use the following rule to auto-mount usb sticks:

# mount block device when added
SUBSYSTEM=="block", ACTION=="add", RUN+="/usr/local/bin/mount-device.sh /dev/%k"

mount-device.sh

To do anything useful you need the script /usr/local/bin/mount-device.sh:

#!/bin/sh

DEVICE="$1"
GID=`grep plugdev /etc/group | cut -d: -f 3`

if [ "$DEVICE" = "" ] ; then exit 1 ; fi

# wait a moment till’ hal has information about the device

sleep 2

HAL_UDI=`hal-find-by-property --key block.device --string "$DEVICE"`

function get_hal_label {
CUR_UDI=$1
LABEL=""
COUNTER=0;
while [ -z "$LABEL" -a $COUNTER -lt 4 ]; do

LABEL=`hal-get-property --key volume.label --udi "$CUR_UDI" 2>/dev/null`
if [ -z "$LABEL" ]; then
LABEL=`hal-get-property --key storage.serial --udi "$CUR_UDI" 2>/dev/null`

fi
CUR_UDI=`hal-get-property --key info.parent --udi "$CUR_UDI" 2>/dev/null`
let COUNTER=COUNTER+1
done

if [ -z $LABEL ]; then
LABEL=${DEVICE##/dev/}
fi
}

function get_hal_removable {

CUR_UDI=$1
REMOVABLE=""
COUNTER=0
while [ -z "$REMOVABLE" -a $COUNTER -lt 4 ]; do
REMOVABLE=`hal-get-property --key storage.removable --udi "$CUR_UDI" 2>/dev/null`

if [ -z "$REMOVABLE" ]; then
BUS=`hal-get-property --key storage.bus --udi "$CUR_UDI" 2>/dev/null`
if [ "$BUS" = "usb" ]; then
REMOVABLE="true"

fi
fi
CUR_UDI=`hal-get-property --key info.parent --udi "$CUR_UDI" 2>/dev/null`
let COUNTER=COUNTER+1
done

if [ -z "$REMOVABLE" ]; then
logger "assuming $HAL_UDI is removable for safety reasons"

REMOVABLE="true"
fi
}

if [ -z "$HAL_UDI" ]; then # can’t find device in hal db
logger "hald didn’t know about $DEVICE"
LABEL=${DEVICE##/dev/}
else # device found in hal db.

get_hal_label "$HAL_UDI"
get_hal_removable "$HAL_UDI"
fi

logger "Mounting HAL_UDI $HAL_UDI as $DEVICE to $LABEL (removable: $REMOVABLE)"

SYNC_OPT=""


if [ $REMOVABLE = "true" ]; then
SYNC_OPT="--sync"
fi

pmount --umask 007 $SYNC_OPT "$DEVICE" "$LABEL"

# if you do not want to use pmount (why should you?)

#MOUNTPOINT=/media/${LABEL}
#mkdir -p "$MOUNTPOINT" &&
#touch "$MOUNTPOINT"/.created_by_pmount &&
#mount "$DEVICE" "$MOUNTPOINT" -o gid=$GID,umask=007 ||

#rm "$MOUNTPOINT"/.created_by_pmount &&
#rmdir "$MOUNTPOINT"

Aynı Paketin Çakışan Farklı Versiyonları

Gentoo’da bazen aynı paketin farklı versiyonları çakışır. Paket yöneticisi der ki; "ya bunu seç ya da diğerini ve bunu bana bildir. Yoksa amacına ulaştıramam seni! : ) ".

İşte örnek bir çıktı.



# emerge gnome-extra/gdesklets-core

’’’Calculating dependencies’’’
!!! all ebuilds that could satisfy "gnome-extra/gdesklets-core" have been masked.

!!! possible candidates are:
- gnome-extra/gdesklets-core-0.26 (masked by: ~keyword)
- gnome-extra/gdesklets-core-0.26.1 (masked by: ~keyword)
!!! Error calculating dependencies. Please correct.



Yapmamız gereken bu paketlerden birini seçip başına "~" işareti koyup, sonuna da "~amd64" (hangi mimaride derliyorsanız.) /etc/portage/package.keywords dosyasının sonuna yazmak.
Biraz artistik olsun diye bu çıktıyı şu şekilde bir dosyaya yazdırıyorum. Yazdırmasak da olur.

#$ emerge gnome-extra/gdesklets-core >cikti.txt

Sonra dosya üzerinde egrep ile arama yapıyorum. Paketi buluyorum. Ve gerekli dosyaya yönlendiriyorum.

yonlen=`egrep ’gdesklet.*0.26.1|0.26.1.*gdesklet’ cikti.txt | cut -d" " -f4`
echo "~$yonlen ~amd64">>/etc/portage/package.keywords

Bunu tek satır ile de halledebilirsiniz. Ama farklı özellikleri göstermek açısından bu şekilde yazmak daha yerinde olur diye düşündüm. Böyle basit ama kullanışlı çözümleri sıkça paylaşacağım. Yararlı olması dileğiyle.
Resimlerin Thumbnail-lerini oluşturan kabuk betiği
#!/bin/bash

# Komut satirindan girilen dosyalarin
# genisligi 150px olacak sekilde kucuk
# resimlerini(thumbnail) olusturan betik.
# Thumbnail yapilan dosyalar buyuk resim ile
# ayni path’te "thumb_orijinal_resi_adi.jpg"
# seklinde kaydedilir. Eger thumnail daha önceden
# yaratilmissa kullanicidan onay bekler.

BETIK=`basename $0`

if [ $# -eq 0 ]; then
echo "Kullanimi: $BETIK [,...]"
echo "Örnek: $BETIK resim1.jpg resim2.jpg"
echo "Örnek: $BETIK resim1.jpg klasor1/*"
exit
fi

PWD=`pwd`

for i in $*; do
IMAGE_NAME=`basename $i`
IMAGE_DIR=`dirname $i`
THUMB_NAME="thumb_${IMAGE_NAME}"

if [ -f ${IMAGE_DIR}/${THUMB_NAME} ]; then
ONAY=""
echo -n "Uyari: ${IMAGE_DIR}/${THUMB_NAME} zaten var, uzerine yazayim mi?[e/h,y/n]"
read ONAY
if [ "$ONAY" = "e" ] || [ "$ONAY" = "y" ]; then
echo "${IMAGE_DIR}/${IMAGE_NAME} --> ${IMAGE_DIR}/${THUMB_NAME}"
convert ${IMAGE_DIR}/${IMAGE_NAME} -scale 150 ${IMAGE_DIR}/${THUMB_NAME}
fi
continue
fi

echo "${IMAGE_DIR}/${IMAGE_NAME} --> ${IMAGE_DIR}/${THUMB_NAME}"
convert ${IMAGE_DIR}/${IMAGE_NAME} -scale 150 ${IMAGE_DIR}/${THUMB_NAME}
done

Ynt: Kabuk Betikleri By: abra Date: October 08, 2012, 03:17:27 PM
Paylaşım İçin Teşekkürler.
Ynt: Kabuk Betikleri By: WhySoSerious Date: October 08, 2012, 10:11:18 PM
Teşekkürler
Ynt: Kabuk Betikleri By: excell2121 Date: February 11, 2014, 08:47:21 PM
Aralarindan en kolay ogrenileni bash olsa gerek Gülmek :)

SiteMap - İmode - Wap2