Linux Komutları ve Kabuk Becerileri
sed: Düzenleyiciyi Açmadan Akışları Düzenleme
sed yana doğru düzenleme yapar: tüm metin akışı bunun içinden geçer, dönüştürülmüş olarak çıkar ve hiçbir düzenleyici açılmaz. İtibarı, tek satırlık bir değişikliği binlerce dosyada toplu işleme dönüştüren -i'den ve onu bir yedekleme son eki olmadan çalıştıran yöneticilerin felaket hikayelerinden geliyor. Güvenli iş akışı hiçbir zaman değişmez: değişikliği görünür şekilde çalıştırın, çıktıyı onaylayın, ardından -i'yi bir sonekle ekleyin ve çıkış kodunu saklayın.
Ana noktalar
- İşlemden önce ön izleme yapın: sed -n '10,20p' dosyası bir satır aralığını gösterir ve aynı -n artı p kombinasyonu yalnızca bir normal ifade veya adresle eşleşen satırları yazdırır.
- Demek istediğinizi yapan bayraklarla değiştirin: tüm eşleşmeler için s/eski/yeni/g, yalnızca saniye için 2g gibi bir sayı ve ters eğik çizgi kaçış sayfası olmayan genişletilmiş normal ifade için -E.
- Yerinde düzenlemelerin bir son eki vardır, istisna yoktur: sed -i.bak 's/http:/https:/g' uygulaması her değişikliğin yanında aynı isimli bir yedekleme tutar; bu son ek, herhangi bir düzenleyicinin geri alma geçmişinden daha fazla konuşlandırmayı kurtardı.
- Sınırlayıcılar ücretsizdir: s|/var/www|/srv/app|g (veya s#...#g), deseniniz yollarla dolu olduğunda eğik çizgiden kaçan kavgaları önler.
- -i atomik değildir: toplu iş ortasında meydana gelen bir çökme veya hatalı bir normal ifade, yarı yeniden yazılmış dosyaları geride bıraktığından, toplu işler kopyalara veya git izlenen ağaçlara karşı çalıştırılır, asla tek kopya olmaz.
- GNU ve BSD sed -i konusunda aynı fikirde değil: BSD, komut dosyasından önce son eki gerektirir (sed -i '' macOS'ta çalışır, bir Linux sözdizimi değildir), bu da taşınabilirlik komut dosyalarının -i'den tamamen kaçınmasının bir başka nedenidir.
- Silme ve izole etme dürüst fiillerdir: 'd' eşleşen satırları kaldırır (sed '/^#/d' yorumları çıkarır) ve -n bir aralıkla bir bölümü izole eder; her ikisi de akıllıca değişiklik yapmaktan daha iyi okunur.
- Tek satırlık düzenlemeleri, gerçek çok satırlı blokları veya durum bilgisi olan birleştirmeleri aşan her şey awk'ye veya gerçek bir komut dosyasına aittir; sed'i programcı işi yapmaya zorlamak, okunamayan tek satırlık satırların nasıl doğduğudur.
Saha notu
.bak son eki olmayan ilk sed -i'm öğleden sonraki trafik yoğunluğundan hemen önce bir üretim nginx yapılandırmasına çarptı. O zamandan beri her yerinde düzenleme bir yedek sonek taşıyor ve -i komutun yanına bile yaklaşmadan önce deneme çıktısını okudum.
Sık sorulan sorular
Yalnızca başka bir şeyle eşleşen satırları nasıl düzenlerim?
Bunları ele alın: sed '/cache/s/true/false/' yalnızca önbellek satırlarında doğruyu yanlışa çevirir ve bloklara yönelik '/<VirtualHost>/,/<\/VirtualHost>/s/Old/New/g' kapsamı düzenlemeleri gibi aralıklar; adres önce gelir, komut ikinci olarak.
Sed neden Windows tarafından düzenlenen bir dosyadaki satırların sonlarıyla eşleşmiyor?
Bu satırlar, '$' bağlantılarının beklemediği satır başı karakterleriyle bitiyor; önce bunları tr ile soyun veya girerken normalleştirin; çok satırlı içerik hala awk'ye veya -0777 ile Perl'e aittir.
Basit değişiklikler için sed awk'dan daha hızlı mıdır?
Marjinal ve ilgisiz olarak; yapılandırma boyutundaki dosyalarda her ikisi de milisaniyeler içinde tamamlanır. Okunabilirliğe göre seçim yapın çünkü bir iş arkadaşınızın altı ay içinde tek satırlık yazınızı çözmesi gerekiyor.
Tüm konfigürasyon bloklarını sed ile ekleyebilir miyim?
Evet: 'a' sonra eklenir, 'i' önce eklenir ve 'c' satırın yerine geçer; ancak eklenen metni basit ve tek amaçlı tutun; gerçek bloklar bir şablon dosyasına veya uygun bir hazırlık adımına aittir.
Kinetikatech linux komutları ve kabuk becerileri konusunda nasıl yardımcı oluyor
linux komutları ve kabuk becerileri konusunda uzman olmanız gerekmiyor: Bir yöneticinin bir sunucuyu mu çalıştıracağına yoksa onunla mücadele mi edeceğine karar veren komutlar ve komut dosyası oluşturma alışkanlıkları: her temel kurulumda bulunan araçlarla metin ve süreçleri arayın, dönüştürün, aktarın ve denetleyin. Linux Sunucu Güvenliği ve Sunucu Yönetimi tam bunun için var: kurulum, sertleştirme, izleme ve gece gündüz açık bir insan desteği.