{"id":37923,"date":"2026-01-18T16:40:41","date_gmt":"2026-01-18T13:40:41","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=37923"},"modified":"2026-01-18T16:40:41","modified_gmt":"2026-01-18T13:40:41","slug":"linux-i-o-yonlendirmesine-giris-komut-satiri-akislarini-ustaca-yonetmek","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/linux-i-o-yonlendirmesine-giris-komut-satiri-akislarini-ustaca-yonetmek\/","title":{"rendered":"Linux I\/O Y\u00f6nlendirmesine Giri\u015f: Komut Sat\u0131r\u0131 Ak\u0131\u015flar\u0131n\u0131 Ustaca Y\u00f6netmek"},"content":{"rendered":"<p><body><\/p>\n<h2>Linux I\/O Y\u00f6nlendirmesine Giri\u015f: Komut Sat\u0131r\u0131 Ak\u0131\u015flar\u0131n\u0131 Ustaca Y\u00f6netmek<\/h2>\n<h3>Giri\u015f<\/h3>\n<p>Linux ve Unix benzeri i\u015fletim sistemlerinin temel g\u00fc\u00e7lerinden biri, komutlar\u0131n esnek bir \u015fekilde birbirine ba\u011flanabilme ve veri ak\u0131\u015flar\u0131n\u0131 y\u00f6netebilme yetene\u011fidir. Bu yetenek, &#8220;Girdi\/\u00c7\u0131kt\u0131 Y\u00f6nlendirme&#8221; (Input\/Output Redirection) olarak bilinir ve sistem y\u00f6neticilerinden yaz\u0131l\u0131m geli\u015ftiricilere kadar her seviyeden Linux kullan\u0131c\u0131s\u0131n\u0131n vazge\u00e7ilmez arac\u0131d\u0131r. I\/O y\u00f6nlendirme, bir komutun standart girdi, standart \u00e7\u0131kt\u0131 ve standart hata ak\u0131\u015flar\u0131n\u0131 varsay\u0131lan terminallerinden al\u0131p ba\u015fka bir dosyaya, ba\u015fka bir komuta veya hatta <code>\/dev\/null<\/code> gibi \u00f6zel bir cihaza y\u00f6nlendirmeyi m\u00fcmk\u00fcn k\u0131lar. Bu sayede, karma\u015f\u0131k g\u00f6revler basit komutlar\u0131n bir araya getirilmesiyle kolayca otomatize edilebilir, log dosyalar\u0131 etkin bir \u015fekilde y\u00f6netilebilir ve hata ay\u0131klama s\u00fcre\u00e7leri h\u0131zland\u0131r\u0131labilir.<\/p>\n<p>Bu makale, Linux I\/O y\u00f6nlendirmenin temel prensiplerini, farkl\u0131 operat\u00f6rlerini ve geli\u015fmi\u015f kullan\u0131m senaryolar\u0131n\u0131 detayl\u0131 bir \u015fekilde ele alacakt\u0131r. Standart ak\u0131\u015flar\u0131n ne anlama geldi\u011finden ba\u015flayarak, \u00e7\u0131kt\u0131, girdi ve hata y\u00f6nlendirme tekniklerini, boru hatlar\u0131n\u0131 (pipes) ve daha karma\u015f\u0131k dosya tan\u0131mlay\u0131c\u0131 manip\u00fclasyonlar\u0131n\u0131 ad\u0131m ad\u0131m inceleyece\u011fiz. Ama\u00e7, okuyucunun Linux komut sat\u0131r\u0131nda veri ak\u0131\u015flar\u0131n\u0131 tam anlam\u0131yla kontrol etme ve bu g\u00fc\u00e7l\u00fc mekanizmay\u0131 kendi lehine kullanma becerisini kazanmas\u0131n\u0131 sa\u011flamakt\u0131r.<\/p>\n<h3>Linux&#8217;ta Temel Girdi\/\u00c7\u0131kt\u0131 Ak\u0131\u015flar\u0131<\/h3>\n<p>Linux&#8217;ta her s\u00fcre\u00e7 (program), varsay\u0131lan olarak \u00fc\u00e7 temel veri ak\u0131\u015f\u0131yla ili\u015fkilendirilir. Bu ak\u0131\u015flar, s\u00fcrecin \u00e7evreyle ileti\u015fim kurmas\u0131n\u0131 sa\u011flayan kanallard\u0131r. Kabuk (shell), bu ak\u0131\u015flar\u0131 y\u00f6netmek i\u00e7in \u00f6zel mekanizmalar sa\u011flar.<\/p>\n<h4>Standart Girdi (stdin &#8211; Dosya Tan\u0131mlay\u0131c\u0131 0)<\/h4>\n<p>Standart girdi, bir programa g\u00f6nderilen verilerin ak\u0131\u015f\u0131n\u0131 temsil eder. \u00c7o\u011fu zaman, bu veri klavyeden gelir. Bir komut, girdi bekledi\u011finde, varsay\u0131lan olarak klavyeden girilen karakterleri okur. Dosya tan\u0131mlay\u0131c\u0131 numaras\u0131 <code>0<\/code> ile temsil edilir.<\/p>\n<p>\u00d6rne\u011fin, <code>cat<\/code> komutu herhangi bir dosya ad\u0131 belirtilmeden \u00e7al\u0131\u015ft\u0131r\u0131ld\u0131\u011f\u0131nda, standart girdiden okur ve okudu\u011fu veriyi standart \u00e7\u0131kt\u0131ya yazar:<\/p>\n<pre><code class=\"language-bash\">$ cat\nMerhaba D\u00fcnya!\nMerhaba D\u00fcnya!\n^D (Ctrl+D ile \u00e7\u0131k\u0131\u015f)<\/code><\/pre>\n<h4>Standart \u00c7\u0131kt\u0131 (stdout &#8211; Dosya Tan\u0131mlay\u0131c\u0131 1)<\/h4>\n<p>Standart \u00e7\u0131kt\u0131, bir program\u0131n \u00fcretti\u011fi normal sonu\u00e7lar\u0131n ak\u0131\u015f\u0131n\u0131 temsil eder. Varsay\u0131lan olarak, bu \u00e7\u0131kt\u0131 terminal ekran\u0131na yazd\u0131r\u0131l\u0131r. Dosya tan\u0131mlay\u0131c\u0131 numaras\u0131 <code>1<\/code> ile temsil edilir.<\/p>\n<p>\u00d6rne\u011fin, <code>ls<\/code> komutu bir dizinin i\u00e7eri\u011fini standart \u00e7\u0131kt\u0131ya listeler:<\/p>\n<pre><code class=\"language-bash\">$ ls\ndosya1.txt  dizinA  program.sh<\/code><\/pre>\n<h4>Standart Hata (stderr &#8211; Dosya Tan\u0131mlay\u0131c\u0131 2)<\/h4>\n<p>Standart hata, bir program\u0131n kar\u015f\u0131la\u015ft\u0131\u011f\u0131 hatalar\u0131n veya tan\u0131sal mesajlar\u0131n ak\u0131\u015f\u0131n\u0131 temsil eder. T\u0131pk\u0131 standart \u00e7\u0131kt\u0131 gibi, varsay\u0131lan olarak terminal ekran\u0131na yazd\u0131r\u0131l\u0131r. Ancak, standart \u00e7\u0131kt\u0131dan ayr\u0131 bir kanal olmas\u0131, normal \u00e7\u0131kt\u0131 ile hata mesajlar\u0131n\u0131 birbirinden ay\u0131rma esnekli\u011fi sunar. Bu, \u00f6zellikle hata ay\u0131klama ve loglama s\u00fcre\u00e7lerinde kritik \u00f6neme sahiptir. Dosya tan\u0131mlay\u0131c\u0131 numaras\u0131 <code>2<\/code> ile temsil edilir.<\/p>\n<p>\u00d6rne\u011fin, var olmayan bir dosyay\u0131 listelemeye \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131zda hata mesaj\u0131 standart hata ak\u0131\u015f\u0131ndan gelir:<\/p>\n<pre><code class=\"language-bash\">$ ls olmayan_dosya.txt\nls: 'olmayan_dosya.txt' eri\u015filemiyor: B\u00f6yle bir dosya veya dizin yok<\/code><\/pre>\n<h4>Dosya Tan\u0131mlay\u0131c\u0131lar\u0131 ve \u00d6nemi<\/h4>\n<p>Her a\u00e7\u0131k dosya veya I\/O ak\u0131\u015f\u0131, i\u015fletim sistemi taraf\u0131ndan benzersiz bir say\u0131sal tan\u0131mlay\u0131c\u0131 ile temsil edilir. Bunlara &#8220;dosya tan\u0131mlay\u0131c\u0131lar\u0131&#8221; (file descriptors) denir. Standart girdi (<code>0<\/code>), standart \u00e7\u0131kt\u0131 (<code>1<\/code>) ve standart hata (<code>2<\/code>) bu dosya tan\u0131mlay\u0131c\u0131lar\u0131n\u0131n en bilinenleridir. Y\u00f6nlendirme i\u015flemleri, asl\u0131nda bu dosya tan\u0131mlay\u0131c\u0131lar\u0131n\u0131n hedeflerini de\u011fi\u015ftirmekten ibarettir. Bu, komutlar\u0131n veri kaynaklar\u0131n\u0131 ve hedeflerini dinamik olarak kontrol etmemizi sa\u011flar.<\/p>\n<h3>\u00c7\u0131kt\u0131 Y\u00f6nlendirme<\/h3>\n<p>\u00c7\u0131kt\u0131 y\u00f6nlendirme, bir komutun standart \u00e7\u0131kt\u0131s\u0131n\u0131 (veya hata \u00e7\u0131kt\u0131s\u0131n\u0131) terminal ekran\u0131 yerine bir dosyaya yazma i\u015flemidir. Bu, komut \u00e7\u0131kt\u0131s\u0131n\u0131 depolamak, ba\u015fka bir komuta girdi olarak kullanmak veya basit\u00e7e ekran\u0131 temiz tutmak i\u00e7in yayg\u0131n olarak kullan\u0131l\u0131r.<\/p>\n<h4>Dosyaya Yazma (Overwrite): <code>><\/code><\/h4>\n<p><code>><\/code> operat\u00f6r\u00fc, bir komutun standart \u00e7\u0131kt\u0131s\u0131n\u0131 belirtilen bir dosyaya y\u00f6nlendirir. E\u011fer dosya mevcut de\u011filse, olu\u015fturulur. E\u011fer dosya zaten mevcutsa, i\u00e7eri\u011fi tamamen silinir ve komutun \u00e7\u0131kt\u0131s\u0131yla yeniden yaz\u0131l\u0131r (overwrite). Bu nedenle, bu operat\u00f6r\u00fc kullan\u0131rken dikkatli olmak gerekir, zira yanl\u0131\u015fl\u0131kla \u00f6nemli verileri kaybetmenize neden olabilir.<\/p>\n<p><strong>Kullan\u0131m:<\/strong> <code>komut > dosya_ad\u0131<\/code><\/p>\n<p><strong>\u00d6rnek:<\/strong><br \/>\nMevcut dizinin i\u00e7eri\u011fini <code>dizin_icerigi.txt<\/code> adl\u0131 bir dosyaya yazal\u0131m:<\/p>\n<pre><code class=\"language-bash\">$ ls -l > dizin_icerigi.txt\n$ cat dizin_icerigi.txt\n<h2>(ls -l \u00e7\u0131kt\u0131s\u0131 bu dosyan\u0131n i\u00e7inde olacakt\u0131r)<\/code><\/pre>\n<\/h2>\n<p>E\u011fer <code>dizin_icerigi.txt<\/code> zaten varsa, i\u00e7indeki her \u015fey silinip yeni <code>ls -l<\/code> \u00e7\u0131kt\u0131s\u0131yla de\u011fi\u015ftirilecektir.<\/p>\n<h4>Dosyaya Ekleme (Append): <code>>><\/code><\/h4>\n<p><code>>><\/code> operat\u00f6r\u00fc, bir komutun standart \u00e7\u0131kt\u0131s\u0131n\u0131 belirtilen bir dosyan\u0131n sonuna ekler (append). E\u011fer dosya mevcut de\u011filse, olu\u015fturulur. E\u011fer dosya mevcutsa, komutun \u00e7\u0131kt\u0131s\u0131 dosyan\u0131n mevcut i\u00e7eri\u011finin sonuna eklenir ve \u00f6nceki i\u00e7erik korunur. Bu, log dosyalar\u0131 olu\u015fturmak veya zaman i\u00e7inde veri toplamak i\u00e7in idealdir.<\/p>\n<p><strong>Kullan\u0131m:<\/strong> <code>komut >> dosya_ad\u0131<\/code><\/p>\n<p><strong>\u00d6rnek:<\/strong><br \/>\nSistemdeki \u00e7al\u0131\u015fan s\u00fcre\u00e7leri <code>sistem_log.txt<\/code> dosyas\u0131na ekleyelim:<\/p>\n<pre><code class=\"language-bash\">$ ps aux >> sistem_log.txt\n$ date >> sistem_log.txt # Tarihi de ekleyelim\n$ cat sistem_log.txt\n<h2>(ps aux \u00e7\u0131kt\u0131s\u0131 ve ard\u0131ndan tarih bu dosyan\u0131n sonunda olacakt\u0131r)<\/code><\/pre>\n<\/h2>\n<p>Her \u00e7al\u0131\u015ft\u0131r\u0131ld\u0131\u011f\u0131nda, <code>sistem_log.txt<\/code> dosyas\u0131na yeni \u00e7\u0131kt\u0131lar eklenecektir.<\/p>\n<h4>\u00d6rnekler ve Kullan\u0131m Senaryolar\u0131<\/h4>\n<p>*   <strong>Komut \u00c7\u0131kt\u0131s\u0131n\u0131 Saklama:<\/strong> Bir komutun uzun \u00e7\u0131kt\u0131s\u0131n\u0131 daha sonra incelemek \u00fczere bir dosyaya kaydetmek.<\/p>\n<pre><code class=\"language-bash\">$ find \/ -name \"*.conf\" > tum_yapilandirma_dosyalari.txt<\/code><\/pre>\n<p>*   <strong>Log Y\u00f6netimi:<\/strong> Sistem olaylar\u0131n\u0131, program \u00e7\u0131kt\u0131s\u0131n\u0131 veya hata mesajlar\u0131n\u0131 belirli bir log dosyas\u0131na kaydetmek.<\/p>\n<pre><code class=\"language-bash\">$ my_custom_script.sh >> \/var\/log\/my_app\/activity.log 2>&1<\/code><\/pre>\n<p>    (Burada <code>2>&1<\/code> ile standart hata \u00e7\u0131kt\u0131s\u0131 da standart \u00e7\u0131kt\u0131ya y\u00f6nlendirilerek ayn\u0131 dosyaya yaz\u0131l\u0131r.)<br \/>\n*   <strong>Bo\u015f Dosya Olu\u015fturma:<\/strong> <code>touch<\/code> yerine <code>><\/code> kullanarak da bo\u015f dosya olu\u015fturulabilir.<\/p>\n<pre><code class=\"language-bash\">$ > yeni_bos_dosya.txt<\/code><\/pre>\n<p>*   <strong>Dosya \u0130\u00e7eri\u011fini Temizleme:<\/strong> Mevcut bir dosyan\u0131n i\u00e7eri\u011fini h\u0131zl\u0131ca bo\u015faltmak.<\/p>\n<pre><code class=\"language-bash\">$ > buyuk_log_dosyasi.log<\/code><\/pre>\n<h3>Girdi Y\u00f6nlendirme<\/h3>\n<p>Girdi y\u00f6nlendirme, bir komutun standart girdisini klavye yerine bir dosyadan almas\u0131n\u0131 sa\u011flar. Bu, komutlar\u0131n interaktif olmayan bir \u015fekilde \u00e7al\u0131\u015ft\u0131r\u0131lmas\u0131 gerekti\u011finde veya belirli bir veri setini i\u015flemek i\u00e7in kullan\u0131\u015fl\u0131d\u0131r.<\/p>\n<h4>Dosyadan Okuma: <code><<\/code><\/h4>\n<p><code><<\/code> operat\u00f6r\u00fc, bir komutun standart girdisini belirtilen bir dosyadan okumas\u0131n\u0131 sa\u011flar. Komut, klavyeden girdi beklemek yerine, dosyan\u0131n i\u00e7eri\u011fini sat\u0131r sat\u0131r okuyacakt\u0131r.<\/p>\n<p><strong>Kullan\u0131m:<\/strong> <code>komut < dosya_ad\u0131<\/code><\/p>\n<p><strong>\u00d6rnek:<\/strong><br \/>\n<code>wc -l<\/code> komutu, bir dosyadaki sat\u0131r say\u0131s\u0131n\u0131 sayar. Genellikle dosya ad\u0131 arg\u00fcman olarak verilir, ancak girdi y\u00f6nlendirme ile de \u00e7al\u0131\u015fabilir:<\/p>\n<pre><code class=\"language-bash\">$ cat liste.txt\nelma\narmut\nkiraz\n$ wc -l < liste.txt\n3<\/code><\/pre>\n<p>Bu \u00f6rnekte, <code>wc -l<\/code> komutu <code>liste.txt<\/code> dosyas\u0131n\u0131n i\u00e7eri\u011fini standart girdi olarak ald\u0131 ve sat\u0131r say\u0131s\u0131n\u0131 hesaplad\u0131.<\/p>\n<h4>Here Strings (<code><<<<\/code>)<\/h4>\n<p><code><<<<\/code> operat\u00f6r\u00fc, bir komuta do\u011frudan bir string'i standart girdi olarak g\u00f6ndermenin k\u0131sa bir yoludur. Bu, \u00f6zellikle k\u00fc\u00e7\u00fck, tek sat\u0131rl\u0131k verileri bir komuta beslemek i\u00e7in kullan\u0131\u015fl\u0131d\u0131r ve ge\u00e7ici bir dosya olu\u015fturmaya gerek kalmaz. Sadece Bash kabu\u011funda veya uyumlu kabuklarda bulunur.<\/p>\n<p><strong>Kullan\u0131m:<\/strong> <code>komut <<< \"string\"<\/code><\/p>\n<p><strong>\u00d6rnek:<\/strong><br \/>\nBir string'deki kelime say\u0131s\u0131n\u0131 sayal\u0131m:<\/p>\n<pre><code class=\"language-bash\">$ wc -w <<< \"Bu bir deneme c\u00fcmlesidir.\"\n4<\/code><\/pre>\n<h4>Here Documents (<code><<<\/code>)<\/h4>\n<p><code><<<\/code> operat\u00f6r\u00fc, \u00e7ok sat\u0131rl\u0131 bir metin blo\u011funu bir komuta standart girdi olarak g\u00f6ndermek i\u00e7in kullan\u0131l\u0131r. Bu, bir betik i\u00e7inde veya komut sat\u0131r\u0131nda uzun metinleri bir programa girdi olarak sa\u011flamak i\u00e7in idealdir. Belirli bir \"ay\u0131r\u0131c\u0131\" (delimiter) kelime ile ba\u015flar ve biter.<\/p>\n<p><strong>Kullan\u0131m:<\/strong> <code>komut << AYIRICI_KEL\u0130ME<\/code><br \/>\n<code>metin sat\u0131r\u0131 1<\/code><br \/>\n<code>metin sat\u0131r\u0131 2<\/code><br \/>\n<code>AYIRICI_KEL\u0130ME<\/code><\/p>\n<p><strong>\u00d6rnek:<\/strong><br \/>\n<code>cat<\/code> komutuna birden fazla sat\u0131r girdi verelim:<\/p>\n<pre><code class=\"language-bash\">$ cat << EOF\n> Bu birinci sat\u0131r.\n> Bu ikinci sat\u0131r.\n> EOF\nBu birinci sat\u0131r.\nBu ikinci sat\u0131r.<\/code><\/pre>\n<p>Burada <code>EOF<\/code> (End Of File) ay\u0131r\u0131c\u0131 kelime olarak kullan\u0131lm\u0131\u015ft\u0131r. <code>cat<\/code> komutu, <code>EOF<\/code> ile ba\u015flayan ve biten t\u00fcm metni standart girdi olarak al\u0131r.<\/p>\n<h4>\u00d6rnekler ve Kullan\u0131m Senaryolar\u0131<\/h4>\n<p>*   <strong>Betiklere Veri Sa\u011flama:<\/strong> Otomatik betiklerin kullan\u0131c\u0131 etkile\u015fimi olmadan veri i\u015flemesini sa\u011flamak.<\/p>\n<pre><code class=\"language-bash\">$ sort < veriler.txt<\/code><\/pre>\n<p>*   <strong>Parola Giri\u015fi:<\/strong> Baz\u0131 komutlar parolas\u0131n\u0131 standart girdiden okur.<\/p>\n<pre><code class=\"language-bash\">$ ssh-keygen -P \"\" -f ~\/.ssh\/id_rsa <<< \"\" # Parola sormadan ssh anahtar\u0131 olu\u015fturma (g\u00fcvenli de\u011fil, sadece \u00f6rnek)<\/code><\/pre>\n<p>*   <strong>SQL Sorgular\u0131:<\/strong> Veritaban\u0131 istemcilerine SQL sorgular\u0131 g\u00f6ndermek.<\/p>\n<pre><code class=\"language-bash\">$ mysql -u user -p database << SQL_QUERY\n    > SELECT * FROM users WHERE status='active';\n    > UPDATE products SET price=price*1.1 WHERE category='electronics';\n    > SQL_QUERY<\/code><\/pre>\n<h3>Hata Y\u00f6nlendirme<\/h3>\n<p>Hata y\u00f6nlendirme, standart hata ak\u0131\u015f\u0131n\u0131 (stderr) normal \u00e7\u0131kt\u0131lardan ay\u0131rarak ayr\u0131 bir dosyaya yazma veya ba\u015fka bir \u015fekilde i\u015fleme yetene\u011fidir. Bu, hata ay\u0131klama, sorun giderme ve sistem loglar\u0131n\u0131 temiz tutma a\u00e7\u0131s\u0131ndan \u00e7ok \u00f6nemlidir.<\/p>\n<h4>Sadece Hata \u00c7\u0131kt\u0131s\u0131n\u0131 Y\u00f6nlendirme: <code>2><\/code><\/h4>\n<p><code>2><\/code> operat\u00f6r\u00fc, bir komutun standart hata \u00e7\u0131kt\u0131s\u0131n\u0131 belirtilen bir dosyaya y\u00f6nlendirir. T\u0131pk\u0131 <code>><\/code> gibi, dosya mevcut de\u011filse olu\u015fturulur, mevcutsa i\u00e7eri\u011fi silinir ve yeniden yaz\u0131l\u0131r.<\/p>\n<p><strong>Kullan\u0131m:<\/strong> <code>komut 2> hata_log.txt<\/code><\/p>\n<p><strong>\u00d6rnek:<\/strong><br \/>\nMevcut olmayan bir dosyay\u0131 listelemeye \u00e7al\u0131\u015fal\u0131m ve hata mesaj\u0131n\u0131 <code>hatalar.log<\/code> dosyas\u0131na y\u00f6nlendirelim:<\/p>\n<pre><code class=\"language-bash\">$ ls olmayan_dosya.txt 2> hatalar.log\n$ cat hatalar.log\nls: 'olmayan_dosya.txt' eri\u015filemiyor: B\u00f6yle bir dosya veya dizin yok<\/code><\/pre>\n<p>Bu durumda, terminalde herhangi bir hata mesaj\u0131 g\u00f6rmezsiniz, \u00e7\u00fcnk\u00fc hata \u00e7\u0131kt\u0131s\u0131 <code>hatalar.log<\/code> dosyas\u0131na y\u00f6nlendirildi.<\/p>\n<h4>Hata \u00c7\u0131kt\u0131s\u0131n\u0131 Ekleme: <code>2>><\/code><\/h4>\n<p><code>2>><\/code> operat\u00f6r\u00fc, bir komutun standart hata \u00e7\u0131kt\u0131s\u0131n\u0131 belirtilen bir dosyan\u0131n sonuna ekler. E\u011fer dosya mevcut de\u011filse, olu\u015fturulur.<\/p>\n<p><strong>Kullan\u0131m:<\/strong> <code>komut 2>> hata_log.txt<\/code><\/p>\n<p><strong>\u00d6rnek:<\/strong><br \/>\nFarkl\u0131 zamanlarda olu\u015fan hatalar\u0131 ayn\u0131 log dosyas\u0131na ekleyelim:<\/p>\n<pre><code class=\"language-bash\">$ ls olmayan_dosya_1.txt 2>> tum_hatalar.log\n$ ls olmayan_dosya_2.txt 2>> tum_hatalar.log\n$ cat tum_hatalar.log\nls: 'olmayan_dosya_1.txt' eri\u015filemiyor: B\u00f6yle bir dosya veya dizin yok\nls: 'olmayan_dosya_2.txt' eri\u015filemiyor: B\u00f6yle bir dosya veya dizin yok<\/code><\/pre>\n<h4>Standart \u00c7\u0131kt\u0131 ve Hatay\u0131 Birlikte Y\u00f6nlendirme: <code>&><\/code> veya <code>2>&1<\/code><\/h4>\n<p>Genellikle, hem standart \u00e7\u0131kt\u0131y\u0131 hem de standart hatay\u0131 ayn\u0131 dosyaya y\u00f6nlendirmek istenir. Bunun i\u00e7in iki yayg\u0131n y\u00f6ntem vard\u0131r:<\/p>\n<p>1.  <strong><code>2>&1<\/code>:<\/strong> Bu, dosya tan\u0131mlay\u0131c\u0131 <code>2<\/code>'yi (stderr) dosya tan\u0131mlay\u0131c\u0131 <code>1<\/code>'e (stdout) y\u00f6nlendir demektir. Bu i\u015flem, standart \u00e7\u0131kt\u0131 y\u00f6nlendirildikten sonra yap\u0131lmal\u0131d\u0131r, aksi takdirde stderr terminale giderken stdout dosyaya gider. Bu, \u00e7o\u011fu kabukta (Bash, sh, ksh) \u00e7al\u0131\u015fan geleneksel y\u00f6ntemdir.<\/p>\n<p>    <strong>Kullan\u0131m:<\/strong> <code>komut > dosya_ad\u0131 2>&1<\/code><\/p>\n<p>    <strong>\u00d6rnek:<\/strong><br \/>\n    Hem normal \u00e7\u0131kt\u0131y\u0131 hem de hatay\u0131 <code>cikti_ve_hata.log<\/code> dosyas\u0131na y\u00f6nlendirelim:<\/p>\n<pre><code class=\"language-bash\">$ find \/proc -name \"limits\" > cikti_ve_hata.log 2>&1\n    # Bu komut, \/proc dizini alt\u0131nda \"limits\" ad\u0131nda dosyalar\u0131 arar.\n    # Baz\u0131 dosyalara eri\u015fim izni olmayaca\u011f\u0131 i\u00e7in hata mesajlar\u0131 \u00fcretecektir.\n    # Hem bulunan dosyalar hem de eri\u015fim hatalar\u0131 cikti_ve_hata.log'a yaz\u0131l\u0131r.<\/code><\/pre>\n<p>2.  <strong><code>&><\/code>:<\/strong> Bu, Bash kabu\u011funa \u00f6zel, daha modern ve k\u0131sa bir syntax't\u0131r. Hem standart \u00e7\u0131kt\u0131y\u0131 hem de standart hatay\u0131 belirtilen dosyaya y\u00f6nlendirir.<\/p>\n<p>    <strong>Kullan\u0131m:<\/strong> <code>komut &> dosya_ad\u0131<\/code><\/p>\n<p>    <strong>\u00d6rnek:<\/strong><\/p>\n<pre><code class=\"language-bash\">$ find \/proc -name \"limits\" &> cikti_ve_hata_modern.log<\/code><\/pre>\n<p>    Bu iki y\u00f6ntem de ayn\u0131 sonucu verir, ancak <code>&><\/code> daha okunabilir ve k\u0131sad\u0131r.<\/p>\n<h4>Hata \u00c7\u0131kt\u0131s\u0131n\u0131 \/dev\/null'a Y\u00f6nlendirme<\/h4>\n<p>Bazen, bir komutun \u00fcretti\u011fi hata mesajlar\u0131n\u0131 tamamen g\u00f6z ard\u0131 etmek istenir. Bu durumda, hata \u00e7\u0131kt\u0131s\u0131 \u00f6zel bir \"kara delik\" dosyas\u0131na, <code>\/dev\/null<\/code>'a y\u00f6nlendirilebilir. <code>\/dev\/null<\/code>'a yaz\u0131lan her \u015fey kaybolur ve okunmaya \u00e7al\u0131\u015f\u0131ld\u0131\u011f\u0131nda an\u0131nda bo\u015f bir dosya d\u00f6nd\u00fcr\u00fcr.<\/p>\n<p><strong>Kullan\u0131m:<\/strong> <code>komut 2> \/dev\/null<\/code><\/p>\n<p><strong>\u00d6rnek:<\/strong><br \/>\n<code>grep<\/code> komutu ile var olmayan bir dosyay\u0131 ararken olu\u015fan hata mesajlar\u0131n\u0131 gizleyelim:<\/p>\n<pre><code class=\"language-bash\">$ grep \"aranan_kelime\" olmayan_dosya.txt 2> \/dev\/null\n<h2>Terminalde hata mesaj\u0131 g\u00f6r\u00fcnmeyecektir.<\/code><\/pre>\n<\/h2>\n<h4>\u00d6rnekler ve Kullan\u0131m Senaryolar\u0131<\/h4>\n<p>*   <strong>Hata Ay\u0131klama:<\/strong> Betiklerde veya programlarda olu\u015fan hatalar\u0131 ayr\u0131 bir dosyaya kaydederek daha sonra incelemek.<br \/>\n*   <strong>Temiz \u00c7\u0131kt\u0131:<\/strong> Bir komutun sadece ba\u015far\u0131l\u0131 \u00e7\u0131kt\u0131s\u0131n\u0131 g\u00f6rmek, hata mesajlar\u0131n\u0131 gizlemek.<br \/>\n*   <strong>G\u00fcvenlik Denetimi:<\/strong> Eri\u015fim reddi gibi g\u00fcvenlik hatalar\u0131n\u0131 belirli bir log dosyas\u0131na y\u00f6nlendirmek.<br \/>\n*   <strong>Cron \u0130\u015fleri:<\/strong> Cron i\u015flerinin \u00e7\u0131kt\u0131s\u0131n\u0131 ve hatalar\u0131n\u0131 e-posta ile almak yerine bir dosyaya y\u00f6nlendirmek.<\/p>\n<h3>Pipe'lar (Borular) ile Ak\u0131\u015flar\u0131 Birle\u015ftirme<\/h3>\n<p>I\/O y\u00f6nlendirmenin en g\u00fc\u00e7l\u00fc ve temel \u00f6zelliklerinden biri, bir komutun \u00e7\u0131kt\u0131s\u0131n\u0131 do\u011frudan ba\u015fka bir komutun girdisi olarak kullanmakt\u0131r. Bu i\u015flem, \"boru hatt\u0131\" veya \"pipe\" (<code>|<\/code>) operat\u00f6r\u00fc ile ger\u00e7ekle\u015ftirilir. Pipe'lar, k\u00fc\u00e7\u00fck, \u00f6zel g\u00f6revleri olan komutlar\u0131 birle\u015ftirerek karma\u015f\u0131k veri i\u015fleme zincirleri olu\u015fturmay\u0131 sa\u011flar.<\/p>\n<h4><code>|<\/code> Operat\u00f6r\u00fc<\/h4>\n<p><code>|<\/code> operat\u00f6r\u00fc, solundaki komutun standart \u00e7\u0131kt\u0131s\u0131n\u0131 al\u0131r ve sa\u011f\u0131ndaki komutun standart girdisi olarak besler. Bu, Unix felsefesinin temelini olu\u015fturan \"k\u00fc\u00e7\u00fck ve iyi i\u015f yapan programlar\u0131 birle\u015ftirme\" ilkesinin bir uygulamas\u0131d\u0131r.<\/p>\n<p><strong>Kullan\u0131m:<\/strong> <code>komut1 | komut2 | komut3<\/code><\/p>\n<p><strong>\u00d6rnek:<\/strong><br \/>\nMevcut dizindeki <code>.txt<\/code> uzant\u0131l\u0131 dosyalar\u0131 listeleyelim ve bu listedeki kelime say\u0131s\u0131n\u0131 bulal\u0131m:<\/p>\n<pre><code class=\"language-bash\">$ ls *.txt | wc -w<\/code><\/pre>\n<p>Bu \u00f6rnekte:<br \/>\n1.  <code>ls *.txt<\/code> komutu, dizindeki t\u00fcm <code>.txt<\/code> dosyalar\u0131n\u0131 listeler ve \u00e7\u0131kt\u0131s\u0131n\u0131 standart \u00e7\u0131kt\u0131ya g\u00f6nderir.<br \/>\n2.  <code>|<\/code> operat\u00f6r\u00fc, <code>ls<\/code> komutunun standart \u00e7\u0131kt\u0131s\u0131n\u0131 al\u0131r.<br \/>\n3.  <code>wc -w<\/code> komutu, standart girdiden okudu\u011fu verideki kelime say\u0131s\u0131n\u0131 sayar.<\/p>\n<p>Sonu\u00e7 olarak, <code>.txt<\/code> dosyalar\u0131n\u0131n adlar\u0131n\u0131n toplam kelime say\u0131s\u0131 (yani dosya say\u0131s\u0131) ekrana yaz\u0131l\u0131r.<\/p>\n<h4>Filtreleme ve Veri \u0130\u015fleme<\/h4>\n<p>Pipe'lar, veri filtreleme ve i\u015fleme i\u00e7in vazge\u00e7ilmezdir. <code>grep<\/code>, <code>awk<\/code>, <code>sed<\/code>, <code>sort<\/code>, <code>uniq<\/code> gibi metin i\u015fleme ara\u00e7lar\u0131, pipe'lar arac\u0131l\u0131\u011f\u0131yla en verimli \u015fekilde kullan\u0131l\u0131r.<\/p>\n<p><strong>\u00d6rnek:<\/strong><br \/>\n<code>ps aux<\/code> komutunun \u00e7\u0131kt\u0131s\u0131nda <code>bash<\/code> kelimesini i\u00e7eren sat\u0131rlar\u0131 bulal\u0131m:<\/p>\n<pre><code class=\"language-bash\">$ ps aux | grep bash<\/code><\/pre>\n<p>Bu \u00f6rnekte:<br \/>\n1.  <code>ps aux<\/code> komutu, t\u00fcm \u00e7al\u0131\u015fan s\u00fcre\u00e7leri listeler.<br \/>\n2.  <code>|<\/code> operat\u00f6r\u00fc, bu listeyi <code>grep<\/code> komutuna y\u00f6nlendirir.<br \/>\n3.  <code>grep bash<\/code> komutu, girdisindeki her sat\u0131r\u0131 kontrol eder ve <code>bash<\/code> kelimesini i\u00e7eren sat\u0131rlar\u0131 standart \u00e7\u0131kt\u0131ya yazar.<\/p>\n<h4>\u00d6rnekler ve Kullan\u0131m Senaryolar\u0131<\/h4>\n<p>*   <strong>Log Dosyalar\u0131n\u0131 Filtreleme:<\/strong> B\u00fcy\u00fck log dosyalar\u0131ndan belirli desenleri veya hatalar\u0131 ay\u0131klamak.<\/p>\n<pre><code class=\"language-bash\">$ cat \/var\/log\/syslog | grep \"ERROR\" | tail -n 10<\/code><\/pre>\n<p>    (syslog dosyas\u0131ndaki \"ERROR\" i\u00e7eren son 10 sat\u0131r\u0131 g\u00f6sterir.)<br \/>\n*   <strong>Veri S\u0131ralama ve Tekille\u015ftirme:<\/strong> Bir listedeki verileri s\u0131ralamak ve yinelenen giri\u015fleri kald\u0131rmak.<\/p>\n<pre><code class=\"language-bash\">$ cat isimler.txt | sort | uniq<\/code><\/pre>\n<p>*   <strong>Hesaplamalar:<\/strong> Say\u0131sal veriler \u00fczerinde i\u015flem yapmak.<\/p>\n<pre><code class=\"language-bash\">$ ls -l | awk '{print $5}' | sort -nr | head -n 5<\/code><\/pre>\n<p>    (Mevcut dizindeki en b\u00fcy\u00fck 5 dosyan\u0131n boyutunu listeler.)<br \/>\n*   <strong>Kullan\u0131c\u0131lar\u0131 Bulma:<\/strong> Sistemdeki belirli bir kullan\u0131c\u0131n\u0131n s\u00fcre\u00e7lerini bulma.<\/p>\n<pre><code class=\"language-bash\">$ who | cut -d' ' -f1 | sort | uniq<\/code><\/pre>\n<p>    (Sistemde oturum a\u00e7m\u0131\u015f benzersiz kullan\u0131c\u0131lar\u0131n listesini verir.)<\/p>\n<h3>Geli\u015fmi\u015f Y\u00f6nlendirme Teknikleri<\/h3>\n<p>Temel y\u00f6nlendirme ve pipe operat\u00f6rlerinin \u00f6tesinde, Linux kabuklar\u0131 daha karma\u015f\u0131k senaryolar i\u00e7in geli\u015fmi\u015f I\/O y\u00f6nlendirme teknikleri sunar.<\/p>\n<h4>Dosya Tan\u0131mlay\u0131c\u0131lar\u0131n\u0131 Kopyalama ve Kapatma (<code>exec<\/code> ile)<\/h4>\n<p><code>exec<\/code> komutu, mevcut kabu\u011fun dosya tan\u0131mlay\u0131c\u0131lar\u0131n\u0131 kal\u0131c\u0131 olarak de\u011fi\u015ftirmek i\u00e7in kullan\u0131labilir. Bu, bir beti\u011fin t\u00fcm \u00e7\u0131kt\u0131s\u0131n\u0131 veya hatas\u0131n\u0131 belirli bir dosyaya y\u00f6nlendirmek istedi\u011finizde kullan\u0131\u015fl\u0131d\u0131r.<\/p>\n<p>*   <strong>Dosya Tan\u0131mlay\u0131c\u0131 Kopyalama:<\/strong><br \/>\n    <code>exec 3>&1<\/code> komutu, dosya tan\u0131mlay\u0131c\u0131 <code>3<\/code>'\u00fc, <code>1<\/code>'in (stdout) bir kopyas\u0131 yapar. Bu, daha sonra orijinal <code>stdout<\/code>'u bir dosyaya y\u00f6nlendirip, gerekti\u011finde <code>stdout<\/code>'u tekrar terminale y\u00f6nlendirmek i\u00e7in <code>3<\/code>'\u00fc kullanabilece\u011finiz anlam\u0131na gelir.<\/p>\n<p>    <strong>\u00d6rnek:<\/strong><\/p>\n<pre><code class=\"language-bash\">#!\/bin\/bash\n    exec 3>&1       # stdout'u (1) 3'e kopyala\n    exec 1> log.txt # stdout'u log.txt'ye y\u00f6nlendir\n    echo \"Bu log dosyas\u0131na yaz\u0131lacak.\"\n    echo \"Bu da yaz\u0131lacak.\"\n    exec 1>&3       # stdout'u tekrar orijinal haline (terminale) getir\n    exec 3>&-       # 3 numaral\u0131 dosya tan\u0131mlay\u0131c\u0131y\u0131 kapat\n    echo \"Bu terminale yaz\u0131lacak.\"<\/code><\/pre>\n<p>*   <strong>Dosya Tan\u0131mlay\u0131c\u0131 Kapatma:<\/strong><br \/>\n    <code>exec 3>&-<\/code> komutu, dosya tan\u0131mlay\u0131c\u0131 <code>3<\/code>'\u00fc kapat\u0131r. Bu, \u00f6zellikle bir dosya tan\u0131mlay\u0131c\u0131n\u0131n art\u0131k kullan\u0131lmad\u0131\u011f\u0131nda kaynaklar\u0131 serbest b\u0131rakmak i\u00e7in \u00f6nemlidir.<\/p>\n<h4>\u00c7oklu Y\u00f6nlendirmeler<\/h4>\n<p>Bir komutun hem girdisini hem \u00e7\u0131kt\u0131s\u0131n\u0131 hem de hatas\u0131n\u0131 ayn\u0131 anda y\u00f6nlendirebiliriz.<\/p>\n<p><strong>\u00d6rnek:<\/strong><br \/>\n<code>input.txt<\/code> dosyas\u0131ndan okuyan, \u00e7\u0131kt\u0131s\u0131n\u0131 <code>output.txt<\/code> dosyas\u0131na yazan ve hatalar\u0131n\u0131 <code>error.log<\/code> dosyas\u0131na kaydeden bir komut:<\/p>\n<pre><code class=\"language-bash\">$ my_command < input.txt > output.txt 2> error.log<\/code><\/pre>\n<h4>Alt Kabuklar ve Y\u00f6nlendirme<\/h4>\n<p>Bazen, sadece belirli bir komut grubunun \u00e7\u0131kt\u0131s\u0131n\u0131 y\u00f6nlendirmek istenir. Bu durumda, komutlar\u0131 parantez i\u00e7ine alarak bir alt kabuk olu\u015fturabilir ve bu alt kabu\u011fun \u00e7\u0131kt\u0131s\u0131n\u0131 y\u00f6nlendirebiliriz.<\/p>\n<p><strong>Kullan\u0131m:<\/strong> <code>(komut1; komut2; komut3) > dosya_ad\u0131<\/code><\/p>\n<p><strong>\u00d6rnek:<\/strong><br \/>\nBirden fazla komutun \u00e7\u0131kt\u0131s\u0131n\u0131 tek bir dosyaya y\u00f6nlendirelim:<\/p>\n<pre><code class=\"language-bash\">$ (echo \"Kullan\u0131c\u0131lar:\"; who; echo \"Tarih:\"; date) > rapor.txt\n$ cat rapor.txt\nKullan\u0131c\u0131lar:\nuser1    tty1        2023-10-27 10:00\nuser2    pts\/0       2023-10-27 10:05\nTarih:\nCum Eki 27 10:30:00 TRT 2023<\/code><\/pre>\n<p>Bu, her komutun \u00e7\u0131kt\u0131s\u0131n\u0131 ayr\u0131 ayr\u0131 y\u00f6nlendirmek yerine, bir grup komutun birle\u015fik \u00e7\u0131kt\u0131s\u0131n\u0131 y\u00f6netmek i\u00e7in temiz bir yoldur.<\/p>\n<h3>Pratik Kullan\u0131m Alanlar\u0131 ve \u0130pu\u00e7lar\u0131<\/h3>\n<p>I\/O y\u00f6nlendirme, Linux ortam\u0131nda say\u0131s\u0131z pratik uygulamaya sahiptir.<\/p>\n<h4>Log Y\u00f6netimi<\/h4>\n<p>*   Uygulama veya sistem betiklerinin \u00e7\u0131kt\u0131s\u0131n\u0131 ve hatalar\u0131n\u0131 belirli log dosyalar\u0131na y\u00f6nlendirmek.<br \/>\n*   Log dosyalar\u0131n\u0131 d\u00fczenli olarak d\u00f6nd\u00fcrmek ve eski loglar\u0131 s\u0131k\u0131\u015ft\u0131rmak veya silmek i\u00e7in cron i\u015fleri ile birle\u015ftirmek.<\/p>\n<pre><code class=\"language-bash\">$ my_app_processor.sh >> \/var\/log\/my_app\/processor.log 2>&1<\/code><\/pre>\n<h4>Otomasyon Betikleri<\/h4>\n<p>*   Kullan\u0131c\u0131 etkile\u015fimi olmadan \u00e7al\u0131\u015fan betikler olu\u015fturmak.<br \/>\n*   Bir komutun \u00e7\u0131kt\u0131s\u0131n\u0131 bir sonraki komuta girdi olarak vererek karma\u015f\u0131k i\u015f ak\u0131\u015flar\u0131 olu\u015fturmak.<\/p>\n<pre><code class=\"language-bash\">$ find \/var\/www -type f -name \"*.php\" | xargs grep -l \"eval(\" > suspicious_files.txt<\/code><\/pre>\n<p>    (Web dizinindeki <code>eval(<\/code> i\u00e7eren PHP dosyalar\u0131n\u0131 bulur.)<\/p>\n<h4>Veri \u0130\u015fleme ve Raporlama<\/h4>\n<p>*   B\u00fcy\u00fck veri k\u00fcmelerini filtrelemek, s\u0131ralamak ve \u00f6zetlemek i\u00e7in pipe'lar\u0131 kullanmak.<br \/>\n*   Sistem kaynaklar\u0131 veya performans verileri hakk\u0131nda raporlar olu\u015fturmak.<\/p>\n<pre><code class=\"language-bash\">$ free -h | grep \"Mem:\" | awk '{print \"Toplam Bellek: \" $2 \", Kullan\u0131lan: \" $3 \", Bo\u015f: \" $4}' > memory_report.txt<\/code><\/pre>\n<h4>G\u00fcvenlik ve Hata Ay\u0131klama<\/h4>\n<p>*   Hata mesajlar\u0131n\u0131 ayr\u0131 bir dosyaya y\u00f6nlendirerek g\u00fcvenlik denetimlerini kolayla\u015ft\u0131rmak.<br \/>\n*   Gereksiz hata mesajlar\u0131n\u0131 <code>\/dev\/null<\/code>'a y\u00f6nlendirerek temiz bir terminal deneyimi sa\u011flamak.<br \/>\n*   <code>tee<\/code> komutunu kullanarak bir komutun \u00e7\u0131kt\u0131s\u0131n\u0131 hem terminale hem de bir dosyaya ayn\u0131 anda yazmak.<\/p>\n<pre><code class=\"language-bash\">$ ls -l | tee output_and_screen.txt<\/code><\/pre>\n<p>    Bu komut, <code>ls -l<\/code> \u00e7\u0131kt\u0131s\u0131n\u0131 hem ekrana yazar hem de <code>output_and_screen.txt<\/code> dosyas\u0131na kaydeder.<\/p>\n<h3>Sonu\u00e7<\/h3>\n<p>Linux I\/O y\u00f6nlendirme, komut sat\u0131r\u0131 kullan\u0131c\u0131lar\u0131 i\u00e7in temel bir beceridir ve Linux'un mod\u00fcler, birle\u015ftirilebilir ara\u00e7lar felsefesinin merkezinde yer al\u0131r. Standart girdi, \u00e7\u0131kt\u0131 ve hata ak\u0131\u015flar\u0131n\u0131 anlamak, <code>><\/code>, <code>>><\/code>, <code><<\/code>, <code>2><\/code>, <code>2>&1<\/code>, <code>&><\/code> ve <code>|<\/code> gibi operat\u00f6rleri ustaca kullanmak, g\u00fcnl\u00fck g\u00f6revleri basitle\u015ftirmekten karma\u015f\u0131k otomasyon betikleri yazmaya kadar geni\u015f bir yelpazede size g\u00fc\u00e7 katacakt\u0131r.<\/p>\n<p>Bu makalede ele ald\u0131\u011f\u0131m\u0131z temel ve geli\u015fmi\u015f teknikler, bir komutun veri kaynaklar\u0131n\u0131 ve hedeflerini nas\u0131l kontrol edebilece\u011finizi, hatalar\u0131 nas\u0131l y\u00f6netebilece\u011finizi ve farkl\u0131 komutlar\u0131 birle\u015ftirerek g\u00fc\u00e7l\u00fc veri i\u015fleme boru hatlar\u0131 nas\u0131l olu\u015fturabilece\u011finizi g\u00f6stermi\u015ftir. Bu bilgileri edinmek ve d\u00fczenli olarak pratik yapmak, Linux komut sat\u0131r\u0131nda daha \u00fcretken ve verimli olman\u0131z\u0131n anahtar\u0131d\u0131r. I\/O y\u00f6nlendirme yeteneklerinizi geli\u015ftirerek, Linux sistemleriniz \u00fczerinde tam kontrol sa\u011flayabilir ve kar\u015f\u0131la\u015ft\u0131\u011f\u0131n\u0131z hemen hemen her g\u00f6revi daha zarif ve etkili bir \u015fekilde \u00e7\u00f6zebilirsiniz.<\/p>\n","protected":false},"excerpt":{"rendered":"Linux I\/O Y\u00f6nlendirmesine Giri\u015f: Komut Sat\u0131r\u0131 Ak\u0131\u015flar\u0131n\u0131 Ustaca Y\u00f6netmek\nGiri\u015f\nLinux ve Unix benzeri i\u015fletim sistemlerinin temel g\u00fc\u00e7ler","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[241],"tags":[],"class_list":{"0":"post-37923","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-linux","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Linux I\/O Y\u00f6nlendirmesine Giri\u015f: Komut Sat\u0131r\u0131 Ak\u0131\u015flar\u0131n\u0131 Ustaca Y\u00f6netmek - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/linux-i-o-yonlendirmesine-giris-komut-satiri-akislarini-ustaca-yonetmek\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Linux I\/O Y\u00f6nlendirmesine Giri\u015f: Komut Sat\u0131r\u0131 Ak\u0131\u015flar\u0131n\u0131 Ustaca Y\u00f6netmek\" \/>\n<meta property=\"og:description\" content=\"Linux I\/O Y\u00f6nlendirmesine Giri\u015f: Komut Sat\u0131r\u0131 Ak\u0131\u015flar\u0131n\u0131 Ustaca Y\u00f6netmek Giri\u015f Linux ve Unix benzeri i\u015fletim sistemlerinin temel g\u00fc\u00e7ler\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/linux-i-o-yonlendirmesine-giris-komut-satiri-akislarini-ustaca-yonetmek\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2026-01-18T13:40:41+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"14 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/linux-i-o-yonlendirmesine-giris-komut-satiri-akislarini-ustaca-yonetmek\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/linux-i-o-yonlendirmesine-giris-komut-satiri-akislarini-ustaca-yonetmek\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Linux I\/O Y\u00f6nlendirmesine Giri\u015f: Komut Sat\u0131r\u0131 Ak\u0131\u015flar\u0131n\u0131 Ustaca Y\u00f6netmek\",\"datePublished\":\"2026-01-18T13:40:41+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/linux-i-o-yonlendirmesine-giris-komut-satiri-akislarini-ustaca-yonetmek\/\"},\"wordCount\":2693,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Linux\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/linux-i-o-yonlendirmesine-giris-komut-satiri-akislarini-ustaca-yonetmek\/#respond\"]}],\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/linux-i-o-yonlendirmesine-giris-komut-satiri-akislarini-ustaca-yonetmek\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/linux-i-o-yonlendirmesine-giris-komut-satiri-akislarini-ustaca-yonetmek\/\",\"name\":\"Linux I\/O Y\u00f6nlendirmesine Giri\u015f: Komut Sat\u0131r\u0131 Ak\u0131\u015flar\u0131n\u0131 Ustaca Y\u00f6netmek - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2026-01-18T13:40:41+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/linux-i-o-yonlendirmesine-giris-komut-satiri-akislarini-ustaca-yonetmek\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/linux-i-o-yonlendirmesine-giris-komut-satiri-akislarini-ustaca-yonetmek\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/linux-i-o-yonlendirmesine-giris-komut-satiri-akislarini-ustaca-yonetmek\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Linux I\/O Y\u00f6nlendirmesine Giri\u015f: Komut Sat\u0131r\u0131 Ak\u0131\u015flar\u0131n\u0131 Ustaca Y\u00f6netmek\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Linux I\/O Y\u00f6nlendirmesine Giri\u015f: Komut Sat\u0131r\u0131 Ak\u0131\u015flar\u0131n\u0131 Ustaca Y\u00f6netmek - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/linux-i-o-yonlendirmesine-giris-komut-satiri-akislarini-ustaca-yonetmek\/","og_locale":"tr_TR","og_type":"article","og_title":"Linux I\/O Y\u00f6nlendirmesine Giri\u015f: Komut Sat\u0131r\u0131 Ak\u0131\u015flar\u0131n\u0131 Ustaca Y\u00f6netmek","og_description":"Linux I\/O Y\u00f6nlendirmesine Giri\u015f: Komut Sat\u0131r\u0131 Ak\u0131\u015flar\u0131n\u0131 Ustaca Y\u00f6netmek Giri\u015f Linux ve Unix benzeri i\u015fletim sistemlerinin temel g\u00fc\u00e7ler","og_url":"https:\/\/fatihsoysal.com\/blog\/linux-i-o-yonlendirmesine-giris-komut-satiri-akislarini-ustaca-yonetmek\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2026-01-18T13:40:41+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"14 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/linux-i-o-yonlendirmesine-giris-komut-satiri-akislarini-ustaca-yonetmek\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/linux-i-o-yonlendirmesine-giris-komut-satiri-akislarini-ustaca-yonetmek\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Linux I\/O Y\u00f6nlendirmesine Giri\u015f: Komut Sat\u0131r\u0131 Ak\u0131\u015flar\u0131n\u0131 Ustaca Y\u00f6netmek","datePublished":"2026-01-18T13:40:41+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/linux-i-o-yonlendirmesine-giris-komut-satiri-akislarini-ustaca-yonetmek\/"},"wordCount":2693,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Linux"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/linux-i-o-yonlendirmesine-giris-komut-satiri-akislarini-ustaca-yonetmek\/#respond"]}],"copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/linux-i-o-yonlendirmesine-giris-komut-satiri-akislarini-ustaca-yonetmek\/","url":"https:\/\/fatihsoysal.com\/blog\/linux-i-o-yonlendirmesine-giris-komut-satiri-akislarini-ustaca-yonetmek\/","name":"Linux I\/O Y\u00f6nlendirmesine Giri\u015f: Komut Sat\u0131r\u0131 Ak\u0131\u015flar\u0131n\u0131 Ustaca Y\u00f6netmek - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2026-01-18T13:40:41+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/linux-i-o-yonlendirmesine-giris-komut-satiri-akislarini-ustaca-yonetmek\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/linux-i-o-yonlendirmesine-giris-komut-satiri-akislarini-ustaca-yonetmek\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/linux-i-o-yonlendirmesine-giris-komut-satiri-akislarini-ustaca-yonetmek\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Linux I\/O Y\u00f6nlendirmesine Giri\u015f: Komut Sat\u0131r\u0131 Ak\u0131\u015flar\u0131n\u0131 Ustaca Y\u00f6netmek"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/37923","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=37923"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/37923\/revisions"}],"predecessor-version":[{"id":37924,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/37923\/revisions\/37924"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=37923"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=37923"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=37923"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}