Komutlarla ilgili bir soru

Başlatan blackwidow, 02 Mayıs 2015 - 23:40:52

« önceki - sonraki »

0 Üyeler ve 2 Ziyaretçi konuyu incelemekte.

blackwidow

Merhaba arkadaşlar

ls komutunu yazıyordum C dilinde ve bitirdikten sonra kodu çalıştırırken

./program diye değilde direkt ls yazınca benim yazdığım ls komutumun çalışmasını istiyorum böyle birşey mümkünmü

bir diğer sorum da şu

kodu çalıştırırken ./program şeklinde değil de terminal'e program yazınca direkt yazdığım kodun çalışmasını istiyorum böyle birşey mümkün mü?

sh yazmamız mı lazım bunun için :)

Çok teşekkürler :)

7hr33l3t73r

#1
Yazilimi /usr/bin gibi bir dizine tasidiginiz zaman sorunsuz program ismini yazip calistirabilirsiniz.
Yada kendi programlariniz icin bir dizin olusturup, path tanimlamasi yaptiginiz zaman da sorunsuz kullanabilirsiniz.
Tek sorun sistemde ki ls komutunla cakismasi olabilir bu sorunu da kendi programinizin ismini ls harici bir isim atayarak sisteme eklemeniz ve ls komutunu alias tanimi yaparak kendi yaziliminizi calismasini saglayabilirsiniz..


dc -e '[q]sa[ln0=aln256%Pln256/snlbx]sb207356256404211981204295703670388snlbxq'
https://www.getgnu.org/gnulinux/gnulinux-ipuclari/nasil-akillica-soru-sorulur.html

blackwidow

path tanımlamak daha iyi gibi geldi bana .

Path atamaya baktıktan sonra paylaşıcam inş

sem

Profile dosyasında alias kullanarak da yapabilirsiniz.
".NET çemberinden geçen lirisist etkisi bir 'Volcano', bir yüzüm Java bir yüzüm Badalamenti Don Tano"
----------------------------------------------------------------------------------------------------------------------
"Her yer ölüm yine, burası dünya
Derken ölüm bile bu nasıl dünya?
Benden ölüm dile, batıyor gün yine
Burası dünya?

Sh4oTT

Path tanımlamak ve alias tanımlamak nasıl oluyor?

heartsmagic

#5
Yol tanımlaması için eskilerde .profile ve .bashrc gibi dosyalara işleme yapardık ancak yeni yeni daha nezih yöntemler öğreniyoruz. Şu an bu iş için en güzel dosya  ~/.pam_environment dosyası. Bu yöntem ile ilgili sıkıntı mevcut olup, başlığın devamındaki yöntem uygulanabilir.

gedit ~/.pam_environment
ile açacağın dosyaya şunu ekleyeceksin:
Alıntı YapPATH DEFAULT=${PATH}:/eklemek/istediğin/dizin
Örneğin ev dizinin içinde uygulamalarım diye bir dizini mi ekleyeceksin?
Alıntı YapPATH DEFAULT=${PATH}:~/uygulamalarım

alias içinse şu dosya güzel olur: ~/.bash_aliases

Benzer şekilde oluşturabilirsin dosyayı:
gedit ~/.bash_aliases

Tanımlama ise şöyle:
alias isim "ne yapacağı"

Bunları geçici olarak da tanımlayabilirsin doğrudan uçbirimde. Ancak bir başka uçbirim açtığında uçup giderler.
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.

Sh4oTT


blacksnow

@heartsmagic, bahsettiğiniz dosyaya bu satırı ekledim fakat bir şey olmadı.Yol tanımlamak tam olarak nedir?Yani uygulama dizininin içinde "/usr/bin" içinde olan dosyaları mı görmeliyim?
Alıntı YapPATH DEFAULT=${/usr/bin}:~/uygulama

heartsmagic

İlk olarak, ekleme öyle yapılmayacak. Tekrar vereyim:
PATH DEFAULT=${PATH}:~/uygulamalarım

Bu önemli çünkü, zira yanlış yapılırsa sistemde bazı uygulamaları doğrudan çalıştıramazsın, ilgili dizine gitmen gerekir vs.

Yol değişkeni şu anlama geliyor: Bu değişkenin içerdiği her dizinde çalıştırılabilir dosyalar doğrudan kabuk tarafından yürütülebilirler. Linux üzerinde bir uygulama bu değişkenin içerdiği dizin içinde değilse doğrudan çalıştırılamaz. Örneğin elinde ikilik, kendi derlediğin bir uygulama olsun: hesap_makinesi.

Bu uygulama çalıştırılabilir olsa dahi dosyanın olduğu dizinde:
./hesap_makinesi
şeklinde çağırmadığın sürece çalıştıramazsın. Neden? Doğrudan:
hesap_makinesi
dersen eğer, sistem bunu bir komut veya yol değişkenine dahil dizinlerdeki bir uygulama gibi algılar. Haliyle böyle bir komut veya uygulama (yola dahil) olmadığı için bulamadığını söyler.

Sen diyelim ki uygulama yazıyorsun ve ev dizini içindeki uygulamalar dizininde saklıyorsun bunları. Her seferinde de bu dizine gidip ./falanca şeklinde çağırmak istemiyorsun. Bu durumda ~/uygulamalar dizinini yol değişkenine eklersin, sorun hallolmuş olur. Başka kullanım örneği de şu olabilir, ikilik olarak dağıtılan uygulamalar mevcut hani, indirip bir yerlere açıyoruz. Android Studio gibi. Her seferinde falanca_dizin/android_studio/sdk/bin gibi bir dizine gidip (dizin ismi farazi) ilgili uygulamayı çalıştırmak yerine bu dizini yol değişkenine ekleyebilirsin. Hem böylece uygulamanın kullandığı diğer ek araçlar da yola eklenmiş olur. Öteki türlü tek bir uygulama varsa ben kendi adıma yol değişkeni ile uğraşmam, alias gibi çözümlere giderim.

Son sorunu anlayamadım ancak varsa kafa karışıklığı yine soru sorabilirsin elbette. Fakat ilgili dosyayı düzelt bence :)

Not: Meseleyi de güncelleyelim. .pam_enviroment dosyası sağda solda önerilse de [1] ne yazık ki iş görmüyormuş şu an. Başlıklara bir şey yazmadan önce genelde kendim denerim ancak bu sefer tembellik yaptım ne yazık ki. Sen çalışmıyor dedikten sonra (hoş yanlış eklesen dahi ) bir deneyeyim dedim ve bende de çalışmadığını gördüm. Eski yöntemler bir süre daha en güzel yöntemler olacak sanırım :)

gedit ~/.profile

ile dosya açılıp son satıra şu eklenebilir:

Alıntı Yapexport PATH="$PATH:~/uygulamalarım"

Dikkat, burada ekleme yöntemi değişiyor. Ardından:

source ~/.profile

dendikten hemen sonra yol etkin hale gelecektir.


[1] https://help.ubuntu.com/community/EnvironmentVariables
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.

blacksnow

#9
@heartsmagic, ben PATH olayını yanlış anlamışım.Sanki kısayol atıyormuşuz gibi bir şey sanmıştım o yüzden öyle yaptım. :) Sorduğum soruda buydu zaten.Yani PATH bilgisayarda çalıştırılabilir dosyaların bulunduğu dizinleri tutan bir değişken.Böylelikle ismini yazdığımızda çalışıyor.Java'da da buna benzer şeyler yapmıştım.Şimdi daha iyi anlıyorum.Teşekkür ederim, hiç erinmeden o kadar açıkladığınız için.

Düzenleme: Daha önce bahsettiğiniz gibi uçbirimi kapattığımda eski haline dönüyor ve tekrar "source ~/.profile" yapmam gerekiyor.Kalıcı olması için bir yöntem var mı?Ayrıca alias tam olarak ne yapıyor?Tek bir programı mı ekliyor bu sefer?

heartsmagic

Rica ederim :)
Kısayoldan kastın tam olarak nasıl bir şey?
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.

blacksnow

Alıntı yapılan: heartsmagic - 12 Temmuz 2015 - 22:24:05
Rica ederim :)
Kısayoldan kastın tam olarak nasıl bir şey?
ln komutu gibi bir şey. :)

heartsmagic

Sembolik bağ yani. Kısayol olarak kullanmak mümkün olsa da alias daha uygun olur o iş için :)
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.

blacksnow

#13
Yukarıda alias ile gerçek bir örnek verseniz, yine yanlış yapmak istemiyorum.Bir de bunları kalıcı yapabiliyor muyuz?

Düzenleme: Ben bu şekilde yaptım ama yine olmadı galiba. alias my_prog "./~/Masaüstü/my_prog".Tırnak içine bu şekilde mi yazıyoruz?

heartsmagic

https://forum.ubuntu-tr.net/index.php?topic=3338.0

Benim de örneklerim var orada. Tabi 2008 senesinden kaldıkları için bazılarına gerek bile olmayabilir :) wget için -c örneğinde olduğu gibi.

alias veya fonksiyonlar .bashrc gibi bir dosyaya eklenebilir. Hemen etkin olması için:

source ~./bashrc
veya

. ~/.bashrc
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.

blacksnow

Yukarıda ~/.bash_aliases dosyasına yazılmasını belirtmiştiniz.Aralarında bir fark var mı?Kusura bakmayın sürekli sorular soruyorum, umarım rahatsız olmadınız.

Diğer .bashrc dosyasını da denedim ama bir şeyleri yanlış yapıyorum.Bir çalıştırılabilir c dosyam var.Onu yapmak istiyorum, şöyle:
Alıntı Yapalias calistir='./~/Masaüstü/c'

heartsmagic

Ne kusuru, rahatsız olsam burada olmam zaten. Vaktim olmadığında da forumda değilim demektir. Öteki türlü soru sormanın hiçbir mahzuru yok elbette. ~/.bash_aliases dosyası da olur, sorun değil. O iş görüyor bak ama emin olabilirsin :) Eklemeyi yanlış yapmışsın ama, şöyle değiştir:

alias calistir='~/Masaüstü/c'

~ karakteri başlangıç dizinini işaret eder, önüne de bir şey eklemen gerekmiyor ./ gibi. Zira burada tam yol gösteriyorsun, ./ farklı bir olay.
Ardından:
source ~/.bashrc
dersen etkinleşir. Zira .bashrc ilgili dosyayı kaynak olarak alabiliyor.
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.

blacksnow

Bu sefer hallettim. :) Son bir şey var, bunları nasıl kalıcı yapabilirim?Çünkü terminali kapattığımda tekrardan source yapmam gerekiyor.

heartsmagic

Merak etme, bir sonraki oturum açışında tamamen kalıcı olacaklar :)
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.

blacksnow

Tamamdır o zaman tekrardan çok teşekkürler.

heartsmagic

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.

blackwidow

uzun zamandır forumdan uzak kaldım hocam bu sene bash dersimiz var mühendislikte :)

inşallah şu merak ettiklerimi kaparım mesela bash kodlarını çok ustaca kullanmak gibi.

heartsmagic

Kabuk için ders mi açmışlar mühendislikte? Ne güzel :) Dersin tamamı değildir ama sanırım?
Üzerine gittiğin, vakit ayırdığın sürece kolaylıkla kaparsın kabuk programlamayı.
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.