İşte yıllar boyunca ortaya attığım bazı hileler ..
Düşmanca olmayan veya etkileşimli olmayan modda kes ve yapıştır
EOF / ^ D / ^ F'nin algılanmadığı bir durumdaysanız, metin dosyalarını bir ana bilgisayara aktarmak için dd kullanabilirsiniz. Belirli bir bayt miktarından sonra otomatik olarak okumayı durduracağından.
Bunu, geçen yılki gibi uzak bir ana bilgisayarda tty olmayan mermiler alabildiğimiz ve dosyaları aktarmak için gerekli olan bir güvenlik alıştırması sırasında kullandım.
Aslında, onları kodlayan base64 kullanarak ve yavaş ama güvenilir bir saf-bash base64 kod çözme komut dosyası kullanarak birkaç ikili dosya bile yaptım.
dd of=textfile.txt bs=1 count=<size_of_data_in_paste_buffer>
Süper havalı bir hile şu ki dd çalışırken, eğer bir USR1 sinyali gönderirseniz, o anki durumunu yayar (bayt okundu, saniye başına bayt sayısı ..)
Evrensel geçiş durumu filtresi
Bunu, stdout aracılığıyla veri yayan herhangi bir program için saf bir bash ilerleme filtresi gibi davranması için yazdım. (Not: Hemen hemen her şey stdout aracılığıyla veri yayar - yapmayan programlar için, eğer / dev / stdout'u dosya adı olarak kullanmaktan alıkoymazlarsa hile yapabilirsiniz. bayt miktarı, karma işaretleri yazdır (karma modu açıkken eski okul FTP gibi)
(Not) İlerleme dosyası olayı topal, bu çoğunlukla bir konsept kanıtıydı. Yeniden yazsaydım, sadece bir değişken kullanırdım.
dd bs=$BLKSZ of=${TMPFILE} 2>&1 \
| grep --line-buffered -E '[[:digit:]]* bytes' \
| awk '{ print $1 }' >> ${PROGRESS} &
while [[ $(pidof dd) -gt 1 ]]; do
# PROTIP: You can sleep partial seconds
sleep .5
# Force dd to update us on it's progress (which gets
# redirected to $PROGRESS file.
pkill -USR1 dd
local BYTES_THIS_CYCLE=$(tail -1 $PROGRESS)
local XFER_BLKS=$(((BYTES_THIS_CYCLE-BYTES_LAST_CYCLE)/BLKSZ))
if [ $XFER_BLKS -gt 0 ]; then
printf "#%0.s" $(seq 0 $XFER_BLKS)
BYTES_LAST_CYCLE=$BYTES_THIS_CYCLE
fi
done
anonim kabuk filehandles kullanarak dilim-ve-zar dosyaları
Kısmi dosya verilerini depolamak için herhangi bir tmp dosyası kullanmadan, anonim bir dosya kilidi üzerinden tar girişi sağlayarak, hatasız ayıklayabileceğiniz imzalı bir tar dosyasına nasıl sahip olabileceğinize dair son derece sahte kod örneği.
generate_hash() {
echo "yay!"
}
# Create a tar file, generate a hash, append it to the end
tar -cf log.tar /var/log/* 2>/dev/null
TARFILE_SIZE=$(stat -f "%z" log.tar)
SIGNATURE=$(generate_hash log.tar)
echo $SIGNATURE >>log.tar
# Then, later, extract without getting an error..
tar xvf <(dd if=$OLDPWD/log.tar bs=1 count=${TARFILE_SIZE})
Tl; dr: dd'nin inanılmaz derecede faydalı olduğunu düşünüyorum. Ve bunlar kafamın üstünden düşünebildiğim sadece üç örnek.