Vi'de bir metin dosyası oluşturmak bilgisayarımı değiştirir mi?


9

Linux'un metin dosyaları üzerine kurulu bir işletim sistemi olduğunu biliyorum. Yapmak istediğim vi, öğrendiğim çeşitli komutları kullanarak bir dosya oluşturmak . Ben her komutu bulabildiğim Bu şekilde çok kolay kullanarak /in vi. Ancak bunu yalnızca bilgisayarımın çalışma şeklini değiştirmezse yapmak istiyorum. Bu iyi bir fikir olur mu?


12
Evet, daha fazla bir yerde bir metin dosyası olacak. ;-) (Şaka) Gerçekten, bir dosya bir dosyadır. Bir klasöre fotoğraf eklemeyi mi yoksa yeni bir kelime belgesi oluşturmanın bilgisayarınızı değiştirip değiştirmeyeceğini sormak gibidir. Evet olacak; orada bir fotoğrafınız / belgeniz daha var. Her neyse, aldığınız cevaplar çoğunlukla doğrudur.
Rmano

Neden bunu yapasın ki?
Braiam

2
"Metin dosyaları üzerine kurulu bir işletim sistemi" ile ne demek istediğinizden emin değilsiniz, ancak Linux, metin dosyaları söz konusu olduğunda, Windows'dan gerçekten farklı değildir. Windows'un .ini ve .bat dosyaları var, eğer düşündüğünüz buysa.
hyde

Ayrıca, özel bir şey olduğunu mu düşünüyorsunuz vi(mesela ile karşılaştırıldığında gedit) ya da sadece bir metin editörü mü demek istediniz?
Bay Lister

1
@BJsgoodlife Bazı metin dosyaları sistemi kontrol eder. Özel yerlere konurlar ve genellikle onsuz değiştirilemezler sudo.
cpast

Yanıtlar:


34

Metin dosyası yazmak "bilgisayarınızın çalışma şeklini değiştirmez".

Özellikle, böyle bir şey yapmak için aşağıdakilerden birini yapmanız gerekir:

  • bazı önemli dosyaların üzerine yaz
  • dosyanızı / etc içindeki * .d dizini gibi özel korumalı bir konuma yazın; bunu yapmak için izniniz olmayacak
  • yürütülebilir dosyayı işaretleyin ve yolunuza koyun

Açıkçası böyle bir şey yapmayacağınız için endişelenecek bir şey yok. Özellikle, diğer yanıt metin dosyalarınızın her satırda karma ile başlaması gerektiğini önererek gereksiz uzunluklara gider. Tabii ki bilmiyorlar. Bir metin dosyasını normal bir giriş dizini içinde bir yerde saklamak hiçbir şey yapmaz.


3
Ben koyarak önerdi #hiçbir şeyin kasıtsız bir ihtimal gerçekleştirilen alır böylece. Sanırım daha güvenli tarafta olmak her zaman daha iyidir.
heemayl

8
Sanırım daha güvenli tarafta olmak her zaman daha iyi değil . Güvenliğin bir maliyeti vardır ve azaltılmış riskin artık maliyete değmediği bir nokta vardır. Örneğin, güvende tutmaya çalıştığınız şeyin değerini aştığında (bu argümanın mantıklı olduğu bağlamlarda). Üzerinde fazla Bilgi Güvenliği Uygun güvenlik bir değiş tokuş olduğunu ve her durumda mükemmel güvenlik konusunda ısrar etmek saçma olurdu böylece sadece tamamen güvenli bir sistem, aynı zamanda tamamen yararsız olduğunu nasıl tartışan birçok sorunun cevabını bulabilirsiniz.
David Z

9
Biraz ayrı bir sorun olarak, (bu cevabın yaptığı ve diğerinin yapmadığı) ortaya çıkmanın en önemli noktası, keyfi bir dosya oluşturmanın sistemi değiştirmek için hiçbir şey yapmayacağıdır. Sistemi yalnızca, başka bir işlemin aradığı bir dosya oluşturarak veya sistemi etkilemek için kod içeriyorsa, oluşturduğunuz dosyayı yürüterek etkileyebilirsiniz - ancak bu, tamamen bilinmeyen kabuk komutlarını çalıştırmamanın genel tavsiyesi kapsamındadır. , dosyalarla çalışsanız da çalışmasanız da akıllıdır.
David Z

2
bana bir sandviç yap. You won't have permission to do this. sudo bana bir sandviç yap. Aye, aye, sir!
Lie Ryan

2
@heemayl neden sadece dosyadaki ilk satırı oluşturmuyorsunuz exit?
Random832

15

Öğrendiğiniz tüm komutları bir dosyaya kaydedebilirsiniz, ancak dikkat etmeniz gereken bazı önemli noktalar:

  • Dosyayı yürütülebilir yapmayın
  • Asla sourcedosya
  • En iyi yol #, tüm komutların başında yanlışlıkla atılmaması için bir komut koymaktır . Bu şekilde gerçekten ihtiyacınız olan komutu arayabilir ve risksiz de olabilirsiniz. #Aşağıdaki komutla her satırın başına ekleyebilirsiniz :

    sed -i 's/^/#/' <file_name>

DÜZENLEME: "neon_overload" ve "David Z", tüm satırlarda hashes koymak çok geniş ve dolayısıyla gerekli değil, bu bağlamda ikinci olur işaret gibi üçüncü bir güvenlik önlemi olarak üçüncü noktayı verdim. Ayrıca "random832" tarafından işaret edildiği gibi, üçüncü noktama çok daha iyi bir alternatif exit, daha sonra komut yürütülmeyeceği için dosyayı başlatmak olacaktır.

EDIT-2: "Rinzwind" iki önemli noktadan bahsetti:

  • Mevcut bir dosyanın üzerine yazma

  • Dosyayı kullanıcının ana dizininde ( /home/$USER/) saklayın .


4
put a # in the beginning of all the commands to comment out all the commands so they don't get executed accidentallyBunun ciddi bir öneri mi yoksa şaka mı olacağından emin değilim. Bugün alay detektörüm başarısız oldu.
Lie Ryan

Önem vermeniz gereken kelime 'yanlışlıkla' .. kullanıcı yanlışlıkla dosyayı yürütülebilir olarak güvenli olmayan bir yerde tutabilir .... burada sadece şansım yok .. şimdi net
umuyoruz

4
Dosyanın başına her satırı yorumlamak yerine "çıkış" ya da buna benzer bir şey koyamadı mı?
o0 '.

Belki de # demek istiyordu! - bu, yorumlayıcıyı null olarak ayarlar, böylece çalışmaz.
Joshua

1
@BJsgoodlife, hayır #!- sadece exit; bu şekilde de korunmuş olursunuz sh yourfile, bu da geçersiz bir uğurun yardım etmeyeceğidir.
Charles Duffy

7

neon_overload çok iyi bir cevaba sahip.

Sorunuzun belirli bir yüzüne biraz genişleyeceğim - bunu bir yorum yapacağım, ancak burada yeterince itibarım yok.

Bir işletim sistemi olarak Linux, metin dosyalarına dayalı DEĞİLDİR. Yani, nereden geldiğini görebiliyorum. Dışarıdan bir gözlemci için, özellikle Windows ile karşılaştırıldığında "metin" dosyalarını düzenleme ve başlatma konusunda oldukça fazla şey var.

Bunun birkaç nedeni vardır, bazıları:

  • Windows'ta olduğu gibi Linux'ta bir kayıt sistemi yoktur. Bu nedenle, uygulamaların ayarlarını metin dosyalarında saklaması yaygındır ve Windows'ta olduğu gibi kayıt defterini düzenlemek yerine bunları düzenlemeniz istenir.
  • Linux çok yaygın olarak bir sunucu sistemi olarak kullanılır ve masaüstünde kullananların çoğu sunucu sistemleriyle çalışır. Windows Server'ın aksine, Linux sunucuları genellikle grafik arabirim olmadan çalışır. Bu nedenle, Linux sunucularında çalışması beklenen ürünlerin ve gerçekten de kullanıcılarının ve yöneticilerinin grafiksel bir arayüz olmadan çalışması beklenir. Yalnızca Windows üzerinde çalışması beklenen ürünler (ve sistem özellikleri) genellikle daha fazla GUI merkezlidir (MS SQL gibi)
  • Linux betik sistemi Windows'dan biraz daha yaygın ve daha şeffaftır. Windows'da komut dosyaları görürsünüz - ancak bunlara something.vbs veya another.bat denir. Gerektiğinde metin dosyaları olduklarını fark edemezsiniz - ancak, ikinci noktamda ne olduğunu düşünürsek, Linux'ta .sh dosyalarını araştırmak çok daha yaygın.
  • Son olarak, birçok Linux kullanıcısı grafik arayüzü olmadan çalışmaya alışkındır ve birçok şey için dosyaları grafik araçlarıyla uğraşmak yerine doğrudan GUI olmadan olduğu gibi düzenleyecektir. Biliyorum, sistemde daha derin bir şey yapmak istediğimde, sadece terminale başladım ve birçok meslektaşım da öyle.

"Linux'ta kayıt sistemi yok", ancak dconf ( en.wikipedia.org/wiki/Dconf ) var. Linux çekirdeğini çalıştıran tüm sistemler buna sahip olmayacak ve bir Windows sisteminin kayıt defterinde yapılandıracağı her şey orada yapılandırılmayacak.
Daniel Landau

1

Kısa cevap, hayır, vi'de bir metin dosyası oluşturarak bilgisayarınızı değiştirmeyeceksiniz . Ancak, dikkatli değilseniz, bu ilk metin dosyasını oluşturmak hayatınızı değiştirebilir . Unix yöntemini öğrenmek derinden ödüllendirici bir uygulama olabilir.


0

vibir metin düzenleyicisidir , bu nedenle istediğiniz tek şey bir metin parçacığını bir metin dosyasında saklamak ve içinde arama yapmaksa, yerleşik komutlarla hepsini doğrudan terminalden yapabilirsiniz.

  1. Metin dosyasına bir not yazın (dosya yoksa, dosyayı oluşturur):

    önemli verilerle yankı notu >> info.txt

ÖNEMLİ: Tek ve çift tırnaklara dikkat edin ve eklenmesini istiyorsanız eğik çizgilerle önek ekleyin.

  1. Dosyada bazı metinler arayın (ör. important):

    grep --color -i important info.txt

Yazmaktan kaçınmak için --color -ibu takma adınız olmalıdır ~/.bashrc.

Varolan veya varolmayan metin dosyalarına çok satırlı metin de ekleyebilirsiniz:

cat >> info2.txt

ardından metni yazın veya yapıştırın ve işiniz bittiğinde CTR+Z

Sistemi değiştirmeye gelince, hayır, kendi ana klasörünüzde dosya oluşturduğunuzda ve bunları yürütmediğiniz sürece sisteminizin çalışma şeklini değiştirmez (bir dosyayı yürütülebilir olmasa bile yürütebilirsiniz, örneğin bash myFile) . Ayrıca kök ayrıcalıklarını yalnızca ihtiyacınız olduğunda kullandığınızdan emin olun.

Ve son olarak, dosya tabanlı sistem hakkındaki yorumunuz sizi bir şekilde yanlış yönlendirmiştir: çoğu işletim sistemi, sistemin çalışma şeklini derinden etkileyen önemli ayarları saklayan dosyalara sahiptir, ancak önceden tanımlanmış konumlarda bulunurlar ve genellikle normal kullanıcılar tarafından yapılan değişikliklerden korunurlar.

Kendinizi kolayca ayağa vurmak mümkündür, örneğin, normal bir kullanıcı olarak eklediğiniz yerel bir 'yürütülebilir' klasörünüz PATHvarsa ve bu klasörde yerleşik olarak aynı adlara sahip yürütülebilir dosyalarınız varsa gibi yaygın araçlardan ya da deneme anahtar kelimeler, -in test, echo, cat, for, cut, vs.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.