Basit bir listeleme problemi (msdos ve linux komutları ile)

Başlatan elifirgan, 29 Aralık 2015 - 00:35:10

« önceki - sonraki »

0 Üyeler ve 2 Ziyaretçi konuyu incelemekte.

elifirgan

Arkadaşlar ekte resmi bulunan örneği nasıl yapacağım konusunda yardımcı olabilir misiniz? (Programın ismi "listeleme" olmalıdır.Çalıştırıldığında resimde yer alan tüm işlemleri otomatik olarak yapmalıdır) (msdos ve linux komutları ile)


[eklenti yönetici tarafından silindi]

neynefes

Bu bir ödev mi?  :) Konu ile ilgili bilgim yok ama temel düzeyde birşeyler yapılması isteniyor sanırım. Hani en azından şunları yapmaya çalıştım, şu kadar ilerledim, şurada tıkandım gibi bir şeyler söyleseniz anlarım ama ortada hiçbir uğraş olmadan direk burada ödev yaptırmak ne kadar sizin işinize yarayacak?  :) Lütfen sözlerime alınmayın.

plazma

Bash temi yazılacak bu otomasyon dizin ve dosyaları yerleştirecek olan? Yada hangi dilde yazılacak?

Reverser

tree ile istenen şey yapılabilir gibi fakat "liste.doc" içinde dosya ve dizin yapısı olmalıdır ? bu kısmı anlayamadım [1]
Bir tür veri yapısı oluşturulup istenen şeye ulaşılabilir sanırım. 7zip kaynak kodlarına bakmanı öneriyorum eğer yapmak istediğin şeyi doğru anladıysam.
[1] https://en.wikipedia.org/wiki/Document_file_format

XFCE ROCKS !
Powered by Thunar & XFWM4



elifirgan

Bu bir ödev evet, resimdeki görünütüyü;
mkdir
vi
cd
cd ..
gibi kodlar ile oluşturabiliyorum. Fakat bunu bir program içerisine yerleştirmeyi bilmiyorum. Ödevde istenen resimdeki görüntü oluşturulduktan sonra program çalıştırıldığı anda görseldeki işlemleri otomatik olarak yapması.


Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 29 Aralık 2015 - 02:12:22

yapmak istediğim görseldeki bu işlemleri bir program ile çalıştırıp, işlemleri otomatik olarak yapmasını (listelemesini) sağlamak.

[eklenti yönetici tarafından silindi]

neynefes

Bash üzerinde sırayla bu komutları uygulatmak gerekiyor sanırım. Tamamen hayal kuruyorum şu anda :)

mhmtkrktr

Program içerisinde derken, bunu herhangi bir arayüz içerisinde mi yapmak istiyorsun? Eğer bu gerekmiyorsa, betiğe bir başlatıcı oluşturman yeterli olur. Tıkladığında arkaplanda verdiğin komutlar yürütülür ve istediğin bölümler oluşturulmuş olur.


Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 29 Aralık 2015 - 09:59:17

Son yazdığın paragrafı atlamışım.
Öncelikle bu işlemlerin kök (/) dosyası altında yapılması istenmiş. Bu durum da ya terminali (sudo) yönetici olarak açmak, yada komutun kendisine sudo ile başlamak gerekecek. Benim tercihim ikinci yöntem olurdu.
Yapılacak işlemler de ihtiyaç olan mkdir ve touch komutlarından ibaret. cd kullanmaya gerek olmaz sanırım. Fakat bu uygulamada mkdir komutuna -p ifadesi eklemek daha iyi olur gibi. -p ifadesi, eğer orada aynı isimle bir dizin varsa, önceki dizini tutmanı sağlar. Diğer durumda sadece mkdir komutu verilirse ve aynı isimde dizin varsa, betiğin dosya çakışmasından dolayı durmasına sebep olacaktır.

Aslında kafanı karıştırmak istemem ama özellikle arşiv dosyası açma gibi işlemlerde orada aynı isimli dosyanın olup olmadığını kontrol ettirmek daha sağlıklı olur.
ikincisi, özellikle betik içerisinde çok kullanılan ve yazması uzun olan dosya yolu için tanımlama yapmak işi biraz daha basitleştirir.
Yazdıklarıma dayanarak bir örnek oluşturmaya çalışayım. (verdiğin örneğin masaüstüne oluşacağını varsayalım)

  yol="/home/kullanıcı_adı/Masaüstü"
# veya yol="$HOME/Masaüstü"
# (yol benim tarafımdan oluşturulan bir kelime)

[[ -d $yol/deneme ]] && echo "Daha önce bu dizin oluşturulmuş" || mkdir -p $yol/deneme
# belirtilen yerde, belirtilen isimde bir dizin varsa, && ve diyerek sonraki komuta geçilir. echo ile isteğe bağlı açıklama oluşturulabilir.
# eğer bu yolda bu isimde bir dizin yoksa, || veya diyerek isteğe bağlı bir isimle dizin oluşturulur.

[[ -e $yol/deneme/deneme1.jpg ]] && echo "aynı isimde resim var, işlem atlanıyor" || touch $yol/deneme/deneme1.jpg
[[ -e $yol/deneme/deneme2.xls ]] && echo "aynı isimde bir exel dosyası var, işlem atlanıyor" || touch $yol/deneme/deneme2.xls
# bu defa dizin yerine dosya olarak kontrol yapmış olduk. Sonrası aynı şekilde işliyor.

[[ -d $yol/dersler ]] && echo "!!" || mkdir -p $yol/dersler

[[ -e $yol/resim.txt ]] && echo " " || touch $yol/resim.txt

[[ -e $yol/ödevler.txt ]] && echo " " || touch $yol/ödevler.txt

[[ -e $yol/liste.doc ]] && echo " " || touch $yol/liste.doc

# Eğer liste.doc içerisin de, yapılan diğer işlemlerin listelenmesini istiyorsan, yöntemlerden biri, ilk komuttan itibaren her komut sonuna bir boşluk koyarak,
# && echo "durum için liste bilgisi" >>$yol/liste.doc
# şeklinde düzenlemek. Örn:

[[ -d $yol/deneme ]] && echo "Daha önce bu dizin oluşturulmuş" || mkdir -p $yol/deneme && echo "deneme" >>$yol/liste.doc
# > işaretini tek girersen, her komutta bir öncesi için yazdığını temizler.

# Eğer bu şekilde uygulamışsan,
[[ -e $yol/liste.doc ]] && echo " " || touch $yol/liste.doc # bu bölüme ihtiyaç kalmamış olur. Bu da dosya oluşturmanın farklı bir yöntemi ayrıca. :)

# Son olarak liste içeriğini ekrana bastırmak istiyorsan cat komutunu kullanabilirsin,
cat $yol/liste.doc

(bu komutların arasına sleep .3; clear ifadesi koyarsan, biraz daha yavaş işler ama özellikle açıklamaların olduğu bölümler daha janjanlı olur.)

Tüm bu işlemler bittiğinde betiğe çalıştırma yetkisi verir ve daha önce söylediğim gibi bir başlatıcı oluşturursun. Terminalin kendisinde görüntülemek için Exec= bölümüne çalıştırmak istediğin terminali tanımlarsın.
Örn: (betiğin bulunduğu konumun Belgelerim dizininde ve isminin betik1 olduğunu varsayarsak)

[Desktop Entry]
Type=Application
Hidden=false
Name=test betiği
İcon= # icon temasında bulunan herhangi bir ikonun sadece adını veya başka bir alanda istediğin bir ikonu dosya yoluyla birlikte girebilirsin. (mecburi değil)
Exec=gnome-terminal -e /home/kullanıcı_adı/Belgelerim/betik1.sh


Bu kez umarım doğru anlamışımdır. :)

elifirgan

Tam olarak böyle :) Çok çok teşekkür ederim yardımların ve her komutun ardından yaptığın açıklamaların için mhmtkrktr :)

heartsmagic

Tamam mıyız şimdi başlık için? Eğer öyleyse: http://kb.ubuntu-tr.net/cozulen-basliklarin-etiketlenmesi

Esasında şema sadece dizin yapısı ile ilgili gibi geldi bana. @mhmtkrktr ince ince dokumuş :) Basit olanı ise şöyle olabilir:
mkdir -p kok kok/deneme kok/dersler
touch kok/deneme/deneme1.jpg kok/deneme/deneme2.xls kok/resim.txt kok/odevler.txt kok/liste.doc
tree kok > kok/liste.doc


İlk komut dizinleri oluşturuyor, ikincisi dosyaları, üçüncüsü de dizin yapısını ağaç şeklinde liste.doc isimli dosyaya basıyor. Dosyalar var mı yok mu diye bakarak daha uzman bir şey yazılması isteniyorsa zaten @mhmtkrktr örneğini güzelce vermiş.

Not: tree aracı kurulu değildir, kurulması gerekir muhtemelen.
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.