{"id":22611039,"url":"https://github.com/buraksecer/linux-101","last_synced_at":"2025-10-10T04:33:25.779Z","repository":{"id":41936010,"uuid":"435881978","full_name":"buraksecer/linux-101","owner":"buraksecer","description":"Anyone who wants to learn Linux can read and add new information they learn.","archived":false,"fork":false,"pushed_at":"2024-06-19T17:47:53.000Z","size":137,"stargazers_count":161,"open_issues_count":0,"forks_count":9,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-10-10T04:32:49.109Z","etag":null,"topics":["bash","linux","ubuntu"],"latest_commit_sha":null,"homepage":"https://buraksecer.github.io/linux-101/","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"unlicense","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/buraksecer.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2021-12-07T13:01:27.000Z","updated_at":"2025-09-24T10:35:11.000Z","dependencies_parsed_at":"2024-06-20T05:27:03.857Z","dependency_job_id":"ebf0238d-ccf4-4de6-a012-3a778eff8813","html_url":"https://github.com/buraksecer/linux-101","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/buraksecer/linux-101","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/buraksecer%2Flinux-101","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/buraksecer%2Flinux-101/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/buraksecer%2Flinux-101/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/buraksecer%2Flinux-101/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/buraksecer","download_url":"https://codeload.github.com/buraksecer/linux-101/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/buraksecer%2Flinux-101/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279002674,"owners_count":26083442,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-10T02:00:06.843Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bash","linux","ubuntu"],"created_at":"2024-12-08T16:08:55.790Z","updated_at":"2025-10-10T04:33:25.748Z","avatar_url":"https://github.com/buraksecer.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Dil Seçimi (Select Language)\n\n|Diller   | Linkler  | \n| ------------ | ------------ |\n| Turkish  :tr: | [Tıklaa](https://github.com/buraksecer/linux-101 \"Tıklaa\")  |\n| English :england:|  [Click Me!](https://github.com/buraksecer/linux-101/tree/master/language/eng \"Click Me! \")|\n\n# Örnekler (Examples)\n\n| Örnek İsmi | Link  :tr:                                                                                      | Link :england:|\n|------------|-------------------------------------------------------------------------------------------------| ------------ | \n| Counter    | [Tıklaa](https://github.com/buraksecer/linux-101/tree/master/shell-scripts/tr/counter \"Tıklaa\") | [Click Me!](https://github.com/buraksecer/linux-101/tree/master/shell-scripts/eng/counter \"Click Me!\") |\n| Copy       | [Tıklaa](https://github.com/buraksecer/linux-101/tree/master/shell-scripts/tr/copy \"Tıklaa\")    | [Click Me!](https://github.com/buraksecer/linux-101/tree/master/shell-scripts/eng/copy \"Click Me!\") |\n| Parameter    | [Tıklaa](https://github.com/buraksecer/linux-101/tree/master/shell-scripts/tr/parameter \"Tıklaa\")  | [Click Me!](https://github.com/buraksecer/linux-101/tree/master/shell-scripts/eng/parameter \"Click Me!\") |\n\n# Linux 101\n\n* [Linux Nedir?](#linux-nedir)\n* [Distro Nedir?](#distro-nedir)\n* [Distrolar Arasındaki Farklar](#distrolar-arasındaki-farklar)\n* [Bazı Distroların Dosya Yapıları](#bazı-distroların-dosya-yapıları)\n* [Paket Yönetim Sistemi](#paket-yönetim-sistemi)\n* [Bazı Distroların Paket Yöneticileri](#bazı-distroların-paket-yöneticileri)\n* [Debian Nedir?](#debian-nedir)\n* [CentOS Nedir?](#centos-nedir)\n* [Red Hat Nedir?](#red-hat-nedir)\n* [Shell Nedir?](#shell-nedir)\n* [Terminal Nedir?](#terminal-nedir)\n* [SSH Servisi](#ssh-servisi)\n* [Komutlar](#komutlar)\n  * [history](#history)\n  * [man](#man)\n  * [shutdown](#shutdown)\n  * [dig](#dig)\n  * [curl](#curl)\n  * [lsb_release](#lsb_release)\n  * [cal](#cal)\n  * [date](#date)\n  * [uname](#uname)\n  * [w - who - who am i](#w-who-who-am-i)\n  * [uptime](#uptime)\n  * [hostname](#hostname)\n  * [free](#free)\n* [Dosya/Klasör İzinleri](#dosya--klasör-i̇zinleri)\n  * [Yetkiler](#yetkiler)\n  * [Erişim Yetkilerinin Değiştirilmesi](#erişim-yetkilerinin-değiştirilmesi)\n  * [Suid Biti](#suid-biti)\n  * [Umask Komutu](#umask-komutu)\n  * [Chattr Komutu](#chattr-komutu)\n* [Bir Dosyayı Okuma](#bir-dosyayı-okuma)\n* [Dosya Monitoring](#dosya-monitoring)\n* [Vim Editörü](#vim-editörü)\n* [Aradığımız Dosyayı Bulma](#aradığımız-dosyayı-bulma)\n* [Dosya/Klasör İşlemleri](#dosya-i̇şlemleri)\n  * [Dosya Oluşturma](#dosya-oluşturma)\n  * [Dosya Silme](#dosya-silme)\n  * [Dosya Kopyalama](#dosya-kopyalama)\n  * [Dosya Taşıma](#dosya-taşıma)\n  * [Dosya İsim Değiştirme](#dosya-i̇sim-değiştirme)\n* [Dosya İçinde Kelime Arama](#dosya-i̇çinde-kelime-arama)\n* [Ortam Değişkenleri](#ortam-değişkenleri)\n* [Process İzleme](#process-i̇zleme)\n* [Foreground - Background Process](#foreground---background-process)\n* [Cron Jobs](#cron-jobs)\n  * [Cron Job Log Monitor](#cron-job-log-monitor)\n* [Kullanıcı İşlemleri](#kullanıcı-i̇şlemleri)\n  * [Kullanıcı Ekleme](#kullanıcı-ekleme)\n  * [Kullanıcı Silme](#kullanıcı-silme)\n  * [Kullanıcı Bilgilerini Listeleme](#kullanıcı-bilgilerini-listeleme)\n  * [Kullanıcı Bilgilerini Güncelleme](#kullanıcı-bilgilerini-güncelleme)\n  * [Kullanıcı Parola Değiştirme](#kullanıcı-parola-değiştirme)\n* [Kullanıcı Değiştirme Ve Başka Kullanıcı Adına İşlem Yapma](#kullanıcı-değiştirme-ve-başka-kullanıcı-adına-i̇şlem-yapma) \n* [Disk Durumu İnceleme](#disk-durumunu-i̇nceleme)\n* [Bilgisayarın Ip Adreslerini Listeleme](#bilgisayarın-ip-adreslerini-listeleme)\n* [Bir Domaini Pingleme](#bir-domaini-pingleme)\n* [Bir Domainin Dns Kayıtlarını Listeleme](#bir-domainin-dns-kayıtlarını-listeleme)\n* [Package Manager İle Bir Paket Yükleme](#package-manager-i̇le-bir-paket-yükleme)\n* [Bir Uzak Sunucuya SSH İle Uzaktan Bağlanma](#bir-uzak-sunucuya-ssh-i̇le-uzaktan-bağlanma)\n* [Linux Servisler](#linux-servisler)\n  * [systemd](#systemd) \n  * [systemctl](#systemctl)\n* [Sıkıştırma İşlemleri](#sıkıştırma-i̇şlemleri) \n  * [zip](#zip)\n  * [gzip](#gzip)\n  * [tar](#tar) \n* [Linux'a Nasıl Yükleriz?](#linuxa-nasıl-yükleriz)\n  * [Docker Cli](#docker-cli)\n  * [Docker Compose Cli](#docker-compose-cli)\n  \n* [Ekstralar](#ekstralar)\n\n------------\n\n# Linux Nedir?\n\nUnix’e fikirsel ve teknik anlamda atıfta bulunarak geliştirilmiş açık kaynak kodlu, özgür ve ücretsiz (destek hariç) bir işletim sistemi çekirdeğidir. Çekirdeğin kaynak kodları GNU (Genel Kamu Lisansı) çerçevesinde özgürce dağıtılabilir, değiştirilebilir ve kullanılabilir. Linux ismi ilk olarak Linus Torvalds tarafından yazılan ve 5 Ekim 1991 Linux 0.02 etiketiyle duyurusu yapılan, Linux çekirdeğinden gelmektedir. Linux’un Unix ile herhangi bir kod ortaklığı bulunmamaktadır yani Linux’un kodları sıfırdan başlanılarak yazılmıştır.\n\n# Distro Nedir?\n\nLinux'un dağıtımlarına verilen isimdir. Bunlardan en yaygın olarak bilinenleri;\n\n- Debian\n- Linux Mint\n- Ubuntu\n- OpenSUSE\n- Fedora\n\n# Distrolar Arasındaki Farklar\n\nDağıtımlar ihtiyaçlara göre geliştirilmişlerdir. Örneğin mint dağıtımı genelde görselliğe önem verir ve windowsdan gelen kullanıcılara cazip gelir. Ayrıca paket yönetim şekilleri ve dosya yapıları gibi farklılıklarda mevcuttur.\n\n#  Bazı Distroların Dosya Yapıları\n\n- [Linux Mint](https://community.linuxmint.com/tutorial/view/355 \"Linux Mint\")\n- [Debian](https://www.debian.org/releases/buster/amd64/apcs02.en.html \"Debian\")\n- [Ubuntu](https://help.ubuntu.com/community/LinuxFilesystemTreeOverview \"Ubuntu\")\n- [Fedora](https://fedoraproject.org/wiki/Docs/Drafts/DirectoryStructure \"Fedora\")\n\n# [Paket](https://tr.wikipedia.org/wiki/Paket_y%C3%B6netim_sistemi \"Paket\") Yönetim Sistemi\n\nPaket yönetim sistemi ya da paket yöneticisi; yazılım paketlerinin ve kütüphanelerinin kurulum, güncelleme, konfigürasyon, kaldırılması işlemlerinin tutarlı ve stabil bir şekilde yürütülmesini sağlayan olan sistemlerdir. Tipik olarak paket ve kütüphanelerin hangi versiyonunun kurulduğunu ve birbirlerine olan bağımlılıklarını da hesaba katarlar. Modern paket yöneticilerinin birçoğu merkezi bir kaynaktan yazılım ve kütüphanelerin indirilip yüklenmesi işlevine sahiptirler.\n\nPaket yönetim sistemleri, bir işletim sistemine kurulan yazılımların yönetimi için kullanılabildiği gibi yazılım geliştirme sırasında kullanılan yazılım kütüphanelerinin kurulması ve bağımlılık yönetimi (dependency management) için hazırlananları da mevcuttur.\n\n# Bazı Distroların Paket Yöneticileri\n\n- Linux Mint, Debian ve Ubuntu: [dpkg](https://tr.wikipedia.org/wiki/Dpkg \"dpkg\")\n- OpenSUSE: ZYpp, YaST ve RPM\n- Fedora: [RPM Paket Yöneticisi](https://tr.wikipedia.org/wiki/RPM_Paket_Y%C3%B6neticisi \"RPM Paket Yöneticisi\")\n\n# Debian Nedir?\n\n[Debian](https://wmaraci.com/nedir/debian \"Debian\") Linux, birçok Linux dağıtımının kaynak olarak kullandığı arayüzden ziyade daha çok komutların kullanıldığı ve orta seviyedeki her Linux kullanıcısının kullanabileceği bir Linux dağıtımıdır. 1993 yılından bu yana geçen süreç içerisinde sürekli olarak geliştiriliyor olması ve donanım konusunda kullanıcılara sunduğu geniş desteği sayesinde Debian Linux deneyiminin tam anlamıyla yaşanabileceği en iyi işletim sistemlerinden biridir.\n\n# CentOS Nedir?\n\nCentOS Red Hat firmasının dağıtımı olan Red Hat Enterprise Linux (RHEL) \nkaynak kodları üzerine kurulu ve bu dağıtım ile uyumlu bir linux dağıtımıdır.\nBağımsız bir grup tarafından geliştirilen işletim sisteminin isminin açılımı \nThe Community ENTerprise Operating System biçimindedir. Ocak 7, \n2014 tarihli bir bildiri ile CentOS geliştirici lideri Karanbir Singh,\nCentOS'un RedHat ekibine dahil olduğunu bildirmiştir.\n\n# Red Hat Nedir?\n\nRed Hat, açık kaynaklı ve Linux tabanlı profesyonel yazılım şirketidir. Şirket, 1993′te Bob Young ve Marc Ewing tarafından kurulmuştur.\n\nRed Hat tarafından resmi olarak desteklense de, Fedora özgür yazılım geliştiricilerinin katılımıyla varlığını sürdürmektedir ve aynı zamanda Red Hat Enterprise Linux ürünü için bir test ortamı görevi görmektedir.\n\nRed Hat Linux ve dolayısıyla Fedora'yı özel yapan şey kararlı ve bilinen paketlerin, sağlam bilgi ile bir araya getirilmesidir. Paketler güncel değildir; güvenlik güncellemeleri dışında, yeni bir beta versiyon çıktığında paket versiyonları dondurulmaktadır. Sonuç, iyi test edilmiş, nispeten kararlı bir Linux dağıtımıdır. Ayrıca RPM paket yöneticisi, Red Hat'ın Linux'a katkılarından birisidir. Bugün Mandriva, Suse gibi popüler birçok dağıtımın kullandığı RPM paket kurulumu konusunda önemli adımlar atılmasını sağlamıştır.\n\n# [Shell](https://siberoloji.github.io/linux-shell-nedir/ \"Shell\") Nedir?\n\nLinux işletim sisteminin yapısında, bilgisayarın donanımı ile iletişim kuran yazılıma Kernel (Kabuk) adı verilmektedir. Kullanıcı, doğrudan donanım ile iletişim kuramaz. Kernel e bir komut göndermek ve işlemlerin yapılmasını sağlamak gerekmektedir. Kullanıcı ile Kernel arasında haberleşme, Shell ismi verilen aracı program sayesinde yapılır.\n\nTemel olarak Shell aşağıdaki işlemleri sırasıyla yapan bir döngüye sahiptir.\n\n1. Komutu, komut satırından veya dosyadan oku\n2. Komutu değerlendir.\n3. Komutu çalıştır veya gerekli programı çalıştır.\n4. Sonucu ekrana veya istenen yere yazdır.\n5. Birinci adıma geri dön.\n\n# Terminal Nedir?\n\nTerminal, metin tabanlı komutları yazabileceğiniz ve uygulayabileceğiniz bir arayüzdür. Bu arayüz sayesinde komutları çalıştırırız.\n\n# SSH Servisi\n\nİki sistem arasında ister yerel ağdaki bağlantıların isterse uzak bağlantıların güvenli bir şekilde yapılabilmesini sağlayan bir protokoldür. Bağlantı yapılan iki sistemin arasındaki tüm ağ trafiği şifrelenerek verilerin güvenliği sağlanır.\n\nBağlantı yapılırken kimlik doğrulaması yapılmaktadır. Bu kimlik doğrulamasından sonra istemci ile sunucu arasında bir şifreleme oluşur ve bu şifreleme ile haberleşirler. Ssh için istemci ve sunucuda ssh servisinin yüklü olması gereklidir.[Linux komut satırı - Kemal Demirez]\n\n# KOMUTLAR\n\n## history\n\nTerminalde çalıştırdığımız her komut aslında hemen kaybolmazlar. Bu komutlar bellekte tutulur ve History komutu ile en son verdiğiniz komutları listeleyebilirsiniz.\n\nVerdiğiniz son 10 komutu listeler:\n\n```shell\nhistory 10\n```\n## man\n\nTerminalde bir komutun detaylarına erişmek için bu komut kullanılır.\n\n```shell\nman exit\n```\n\n## shutdown\n\nHemen kapat:\n```shell\nshutdown\n```\n\nKapat ve yeniden aç (restart):\n\n```shell\nshutdown -r\n```\n\n20 dakika sonra kapat:\n\n```shell\nshutdown +20\n```\n\n20 dakika sonra restart:\n\n```shell\nshutdown -r 20\n```\n\nSaat 17:30 da kapat:\n\n```shell\nshutdown -h 17:30\n```\n\n## dig\n\nAçılımı Domain Information Gropher demektir. Yani Alan Bilgisi Toplayıcısı diyebiliriz.\n\ndig komutu ile A kayıtları görüntüleyebiliriz.\n\n`Adres (A) kaydı, host adını bir IP adresine yönlendirir. Örneğin, server.domainame.com adresinin direkt olarak sizin ana bilgisayarınıza (ip adresi 111.111.111.111 olsun) yönlendirilmesini istiyorsanız, şunun gibi bir kayıt girmeniz gerekir: domainame.com. A 111.111.111.111`\n\n```shell\ndig buraksecer.com // Answer Section altında A kaydını görebiliriz.\n```\n\n```shell\ndig buraksecer.com -t NS //name server listeler\n```\n\n##  curl\n\nclient url kısaltınca c-url -\u003e curl olmuş :tea: \n\nSitelerle iletişim kurmamızı sağlayan komuttur. Http protokolü en bilindik kullanımdır ayrıca;\n\ncurl, aşağıdaki protokolleri destekler:\n\n- HTTP ve HTTPS\n- SFTP\n- SCP\n- IMAP ve IMAPS\n- POP3 ve POP3S\n- TELNET\n- SMB ve SMBS\n- GOPHER\n- LDAP ve LDAPS\n- SMTP ve SMTPS\n- FTP ve FTPS\n\nHadi bir get isteği atalım;\n\n```shell\ncurl https://www.buraksecer.com //sitenin içeriğini size döner. \n```\n\nEğer benim güncel cv mi komutu çalıştırdığınız dizine indirmek istiyorsanız buyrun :sunglasses: \n\n```shell\ncurl -o burak.pdf https://www.buraksecer.com/wp-content/uploads/2021/12/burak-secer-up.pdf\n```\nŞimdi bir FTP protokolü kullanalım;\nDosya indirme işlemi,\n\n```shell\ncurl -u root:password -O ftp://sunucu/dosya.tar.gz\n```\n\nDosya yükleme işlemi,\n```shell\ncurl -u root:password -T dosya.tar.gz ftp://sunucu\n```\nDaha fazlası için man curl yazıp inceleyebilirsiniz.\n\n## lsb_release\n\nKullandığınız linux dağıtımını öğrenmek için;\n\n```shell\nlsb_release -a\n```\n\n## cal\n\nEğer bu komutu çalıştırırsanız ekrana bir takvim gelir.\n\n```shell\ncal\n```\n\nBelirli bir tarihin takvimini görmek için;\n\n```shell\ncal 1 1992 //1. ayı gösterir\n```\n\n## date\n\nSistemin o an tarihini veren komuttur.\n\n```shell\ndate\n```\n\n## uname\n\nKullanılan karnel versiyonunu öğrenmek için kullanılan komuttur.\n\n```shell\nuname\n```\n\n## w-who-who am i\n\n- w: Hangi kullanıcının hangi komutu çalıştırdığı bilgisi.\n- who: O an hangi kimlikle çalıştığınız.\n- who am i: who'dan farklı daha detaylı bir bilgi sağlar.\n\n```shell\nw\n\nwho\n\nwho am i\n```\n\n## uptime\n\nSistemin ne kadar zamandır açık kaldığını görmek istersek kullanıyoruz.\n\n```shell\nuptime\n```\n\n## hostname\n\nLinux'da kullanılan host adını verir.\n\n```shell\nhostname\n```\n\n## free\n\nLinux sistemimizde o an bellek durumunu öğrenmemize yardım eden komuttur.\n\n```shell\nfree\n```\n\n```shell\nfree -b\n```\n\n```shell\nfree -k\n```\n\n```shell\nfree -m\n```\n\n```shell\nfree -g\n```\n[![](https://i.ibb.co/rQHkkZC/lnx2.png)](https://i.ibb.co/rQHkkZC/lnx2.png)\n- b: byte\n- k: kilo - byte\n- m: mega - byte\n- g: giga - byte\n\n# Dosya / Klasör İzinleri\n\n## Yetkiler\n\nTerminali açıp bulunduğunuz dizinde **ls -l** komutunu çalıştırırsanız aşağıdaki çıktıyı alacaksınız.\n\n[![Terminal ls -l](https://i.ibb.co/jh8s5Fm/rwrw.png \"Terminal ls -l\")](https://i.ibb.co/jh8s5Fm/rwrw.png \"Terminal ls -l\")\n\nHemen alt satırda **total 32** yazıyor. Bu iç içe geçmiş dosyalar dahil bütün dosya-klasörleri sayar ve size verir. İlk satıra bakacak olursanız Desktop için izinleri görüyorsunuz. Burada her harfin bir anlamı vardır.\n\n- d -\u003e burası bir dizindir, demektir. Ama eğer d yerine - (tire) olursa bu bir dosya demekti.\n- r -\u003e okuma\n- w -\u003e yazma\n- x -\u003e çalıştırma\n\nİzinlerde dikkatimizi çeken, 3 ana parça şeklinde dağılmış olmaları. Örnek vermek gerekir ise **drwxr - xr - x ** burada tireler ile 3 ana parçaya ayrılmıştır.\n\n- drwxr -\u003e 1. kısım dosya/dizin sahibinin yetkileri.\n- xr -\u003e 2. kısım dosya sahibi ile aynı grupta bulunan kullanıcıların yetkileri.\n- x -\u003e 3. kısım ise genel kullanıcı yetkilerini belirtir.\n\n## Erişim Yetkilerinin Değiştirilmesi\n\nErişim yetkileri önemli bir konu olduğu için bu manipülasyon işlemini sadece root kullanıcısı yapabilir. Erişim yetkilerini değiştirirken **chmod** komutu kullanılır.\n\n```shell\nchmod \u003cugoa\u003e\u003c+=-\u003e\u003crwxst\u003e\u003cdosya/dizin\u003e\n```\n- u: Dosya ya da dizin sahibi, user.\n- g: u ile aynı grupta bulunan kullanıcılar.\n- o: Diğer kullanıcılar.\n- a: Herkes.\n- +: Yetki ekleme.\n- -: Yetki çıkartma.\n- =: Yetki eşitleme.\n- r: Okuma\n- w: Yazma\n- x: Çalıştırma\n- s: Suid biti.\n- t: Sticky bit.\n\n## Suid Biti\n\nBir dosya düşünün, bir kullanıcının yazma yetkisi yok. Fakat o kullanıcının geçici olarak yazması lazım. Suid biti ayarlanan kullanıcılar bu geçici yetkiye sahip olurlar.\n\nSuit biti ayarlama komutu:\n\n\n\n```shell\nchmod u+s text.txt\n```\n\nSistemdeki suit biti ayarlanmış dosya/dizin bulma komutu:\n\n```shell\nfind / -perm -4000\n```\n\n## Umask Komutu\n\nYeni oluşturulan dizin/dosyalar için varsayılan olarak verilecek izinleri ayarlamamıza yarar.\n\n```shell\numask rwxr-r--r--\n```\n\n## Chattr Komutu\n\nBir dosya düşünün, config dosyası. Bu dosyanın içinde kesinlikle değişiklil yaplmasın diyorsanız bu komut tam size göre.\n\n```shell\nchattr +i text.txt\n```\n\nDosyayı eski haline getirmek için ise;\n\n```shell\nchattr -i text.txt\n```\n\nSistemde korumalı dosyalar neler merak ediyorsanız?\n\n```shell\nlsattr -R \u003cdizin\u003e\n```\n\n# Bir Dosyayı Okuma\n\nHer hangi bir dosyanın içini okumak istiyorsak bunun farklı komutları vardır. Okumak istediğiniz dizinde olmalısınız ya da dizini komuttan sonra belirtmelisiniz.\n\n```shell\ncat test.txt\n```\n\nya da \n\n```shell\ncat  ./folder/test.txt\n```\n\nya da \n\n```shell\ntail test.txt\n```\n\nşekillerinde kullanım sağlayabiliriz ayrıca;\n\nBir metin dosyanız var ve çok satırlı. Bu komut metin dosyanızı kolayca okumanızı sağlar ve eğer **enter** tuşuna basarsanız satır satır ilerler aşağı doğru. **Space** basılırsa ise diğer sayfaya geçer, aslında bir sayfalama işlemi var diyebiliriz. **b** tuşuna basarsanız bir önceki sayfaya döner.\n\n```shell\nmore folder.txt\n```\n\n# Dosya Monitoring\n\nGenellikle log dosyalarını izlemek için kullanılan bir komuttur fakat txt dosyalarını izlemek içinde kullanılabilir.\n\n```shell\ntail -c 50  text.txt         //50 byte'lık veri görüntüler\ntail text.txt -\u003e son         //10 satırı görüntüler\ntail -f  /var/log/syslog     //log izlemek için kullanılır\ntail -F text.txt             //txt dosyasının değişikliklerini anlık görüntüler ve bilgi verir.\n```\n\n# Vim Editörü\n\nDosyalarınızı açıp düzenleyebileceğiniz bir text editörüdür. Şimdi vim komutlarına yakından bakalım.\n\nDebian base bir linux kullanıyorsanız önce bir install edelim.\n\n```shell\nsudo apt-get install vim\n```\nAçmak istediğiniz dosyayı;\n\n```shell\nvim test.txt\n```\n\nŞeklinde açabiliyorsunuz.\n\n\u003e Aşağıdaki komutları dosyayı açtıktan sonra veriyorsunuz.\n\nVim düzenleyicisini kullanmak için verilen bazı komutlar vardır. Tüm komutları ve belgelerini help komutuyla aşağıdaki gibi görebilirsiniz:\n\n```shell\n:help\n```\n\nVim bazı modları vardır. Insert modunda dosyaya istediğiniz gibi girdi yapabilirsiniz. Bunun için **i** basmanız yeterlidir.\n\nVerileri bir dosyaya yazdık, şimdi görev, dosyayı kaydedip kapatmak ve bunu yapmak için Esc tuşuna basarak ilk ekleme modundan çıkmak. Bir komut yazmak için önce noktalı virgül (   :   ) yazın ve ardından wq! Ve sonra ENTER'a basın.\n\n```shell\n:wq!\n```\n\nDosyayı kaydetmeden dosyadan çıkmak için sadece q komutunu kullanın! Aşağıdaki gibi\n\n```shell\n:q! \n```\n\nİmlecin altındaki karakteri silmek için komut modunda **x** tuşu sağlıyoruz. İmleci silinmesi gereken karaktere getirin ve Esc tuşuna basın ve ardından **x** tuşuna basın.\n\nGeri almak için normal modda **u** tuşuna basın. Böylece en son yapılan değişiklik geri alınır. Değişiklikleri ileri sarmak için ise **ctrl+r** kullanılır.\n\nBir dosyanız var ve binlerce satır var. Arama yapmak istiyorsunuz vim editörü ile şu şekilde arama numaraları vardır.\n\n**ESC** bastıktan sonra;\n\n```shell\n:/aranacakkelime\n```\nEğer bir sonraki aranan kelimeye geçmek istiyorsanız;\n\n```shell\n:n\n```\n\nBende shift + n oldu bu arada :)\n\nBir önceki eşleşen kelime için ise:\n\n```shell\n:N\n```\nDosyadaki kelimeyi değiştirmek için;\n\n```shell\n:s/arama sözcüğü/değiştirme sözcüğü/\n```\n\nBütün dosyada değişiklik yapmak için: (gc tek tek onay ister sadece g onaysızdır ama güvenli değildir.)\n\n```shell\n:%s/arama sözcüğü/değiştirme sözcüğü/gc\n```\n\n# Aradığımız Dosyayı Bulma\n\nBir dizin içerisinde veya bütün işletim sistemi içerisinde isme göre dosya araması yapabiliriz. Ayrıca sadece txt uzantılı dosyalarıda arayabiliriz.\n\nBunun için **find** komutu kullanıyoruz.\n\n```shell\nfind ./Desktop -name test.txt\n```\n\nVeya txt uzantılı dosyaları arayabiliriz.\n\n```shell\nfind ./Desktop -name *.txt\n```\n\nVeya içinde test geçen dosyaları arayabiliriz bir nevi like gibi.\n\n```shell\nfind ./Desktop -type f -name \"*test*\"\n```\n\n# Dosya İşlemleri\n\nDizin işlemlerinde **-r** kullanılmalıdır.\n\n## Dosya Oluşturma\n\n```shell\nmkdir dosya1\n```\n\nDizinli dosya oluşturma\n\n```shell\nmkdir dosya1/test\n```\n\nİç içe oluşturma\n\n```shell\nmkdir -p resim/b1/b2\n```\n\nKlasör oluşturma;\n\n```shell\ntouch text.txt\n```\n\n## Dosya Silme\n\n-r ile kullanılırsa dizin silebiliriz.\n\n```shell\nrm -r dosya\n```\n\nSadece dosya silmek için;\n\n```shell\nrm dosya \n```\n\nya da\n\n```shell\nrmdir dosya\n```\n\n## Dosya Kopyalama\n\n```shell\ncp -r kopyalanan_dosya kopyalancak_konum\n```\n\nEğer bir dizin değil ise;\n\n```shell\ncp kopyalanan_dosya kopyalancak_konum\n```\n\nEğer ssh ile taşıma yapılacak ise;\n\n```shell\nscp kopyalanan_dosya kopyalancak_konum\nscp myfile.txt remoteuser@remoteserver:/remote/folder/\n```\n\n## Dosya Taşıma\n\nDosyayı olduğu gibi taşımak istiyorsanız;\n\n```shell\nmv dosya1 tasinacagi_konum\n```\n\n## Dosya İsim Değiştirme\n\nmv komutu ile yapılabiliyor. İlk önce değiştirmek istediğiniz dosya ya da klasör yazılıyor sonra yeni ismi.\n\n```shell\nmv dosya1 yeni_isim\n```\n\n# Dosya İçinde Kelime Arama\n\nBir dosyanız var 1000 satırlık ve içinde şu kelime geçiyor mu bakmak istiyorsunuz.\n\n```shell\ngrep sorgu dosya\n```\n\nMesela log.txt var elinizde ve içinde error var mı bakmak istiyorsunuz.\n\n```shell\ngrep error log.txt\n```\n\nBüyük / küçük harf ayırmadan arama için;\n\n```shell\ngrep -i sorgu dosya\n```\n\nYa da kaç tane error kelimesi geçiyor şu log dosyasında bakalım?\n\n```shell\ngrep -c error log.txt\n```\n\nYa da bir dosyalar dizininiz var acaba diyorsunuz şu error nerde hangi dosyada var?\n\n```shell\ngrep -l error ./*\n```\n\n# Ortam Değişkenleri\n\nİşletim sisteminde bazı sabit değerler vardır. Bütün sistem kullanıcılar veya bazıları bu sabitleri istedikleri zaman okuyup kullanırlar. Şimdi bizde bu değişkenleri nasıl tanımlarız ve bu değişkenlerin listesini nasıl okuruz buna bakacağız.\n\nburak isminde bir değişken tanımlayacağız.\n\n```shell\nexport burak=31\n```\n\nTanım yaptıktan sonra;\n\n```shell\nprintenv\n```\n\nKomutunu çalıştırıp, tanımladığımız ortam değişkeni listede var mı bakalım?\n\nEğer linux restart olur ise bu değişken ne yazık ki kaybolur. Bunu kalıcı hale getirmek için **/etc/bashrc** dosyasının içine bu **export** komutunu eklemeniz gerekiyor.\n\n# Process İzleme\n\nİşletim sisteminde en önemli konulardan biri tabii ki process. Bir çok şekilde farklı yöntemler ile terminalden izleme yapabiliyoruz.\n\nAşağıdaki komut sayesinde,\n\n- a: Bütün process'leri göster.\n- u: Diğer kullanıcılar da dahil olmak üzere göster.\n\n```shell\nps -au\n```\n\nSadece belli bir kullanıcının precess'lerini listelemek için;\n\n```shell\nps -u root\n```\nBirde gerçek zamanlı akış sağlayan bir komut var;\n\n```shell\ntop\n```\n[![top](https://i.ibb.co/72trPs9/top.png \"top\")](https://i.ibb.co/72trPs9/top.png \"top\")\n\nGelişmiş bir monitöring için(**sudo apt install atop** gerekir);\n\n```shell\natop\n```\n\n[![atop](https://i.ibb.co/wN8SRh6/atop.png \"atop\")](https://i.ibb.co/wN8SRh6/atop.png \"atop\")\n\nEtkileşimli süreç görüntüleyici için(**sudo apt install htop**)\n\n```shell\nhtop\n```\n\n[![htop](https://i.ibb.co/GJD8nbS/htop.png \"htop\")](https://i.ibb.co/GJD8nbS/htop.png \"htop\")\n\nAğaç bağlantılı process listesi için ise:\n\n```shell\npstree\n```\n\n[![pstree](https://i.ibb.co/ZcXg23n/pstree.png \"pstree\")](https://i.ibb.co/ZcXg23n/pstree.png \"pstree\")\n\n# Foreground - Background Process\n\n[Process izlemeyi](https://github.com/buraksecer/linux-101#process-i%CC%87zleme \"Process izlemeyi\") daha önce işlemiştik. Şimdi bu process tiplerine ve nasıl bir process oluşturabiliriz bunlara bakacağız.\n\nİş parçacıklarının listesini;\n\n```shell\njobs\n```\n\nKomutu ile alabiliyoruz.\n\nForeground, siz bir komut verdiğiniz vakit teminalde o komutun/işlemin bitmesini bekliyoruz ya hani, işte o foreground oluyor. Yani işi ön yüzde yapıyor ve terminali kitliyor. Background ise bunun tam tersi, iş arka planda asenkron şekilde akıyor. Haydi bir örnek yapalım;\n\n```shell\nsleep 20\n```\n\nBu komutu çalıştırırsanız 20 saniye boyunca uyutur ve siz hiç bir komut vb giriş yapamazsınız bu bize foreground 'u verir. Fakat;\n\n```shell\nsleep 20 \u0026\n```\n\nDerseniz, git bu işi bir background process olarak arkada asenkron yap. Bu sefer size bir progress id dönecektir ve jobs yazdığınızda devam ediyor olarak yarattığınız progress'i göreceksiniz.\n\nBir process foreground yapmak istiyorsanız önce\n\n```shell\njobs -l\n```\n\nÖnce çalışan jobları listeliyoruz ve istediğimiz job index id alıyoruz.\n\n```shell\nfg 1\n```\n\nyaparak bu process artık foreground 'a çeviriyoruz. Aynı şekilde;\n\n```shell\nbg 1\n```\n\nyaparak process'i background process yapıyoruz.\n\n# Cron Jobs\n\nBelli bir aralık ile çalışan iş parçacıklarına cron job diyoruz. Bir cron çalışma zamanı nasıl anlaşılır?\n\n```shell\n# Example of job definition:\n# .---------------- minute (0 - 59)\n# |  .------------- hour (0 - 23)\n# |  |  .---------- day of month (1 - 31)\n# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...\n# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat\n# |  |  |  |  |\n# *  *  *  *  * user-name command to be executed\n17 *\t* * *\troot    cd / \u0026\u0026 run-parts --report /etc/cron.hourly\n```\n\nEğer linux'unuzda cd /etc gidip cat crontab derseniz bu açıklama ile karşılaşacaksınız. Burada örnek bir cron ve üzerinde cron time nasıl kurulur anlatmış ama ben size bir site vereceğim çok sevdiğim bir sitedir. [CrontabGuru](https://crontab.guru/ \"CrontabGuru\") sitesinden kolayca bir cron time çıktısı alabilirsiniz.\n\nBunları anlattıktan sonra bir cron job oluşturalım.\n\ncrontab -e | -r | -l\n\n- e: Edit\n- r: Remove\n- l: Liste\n\nAşağıdaki komut sayesinde cron dosyamızı edit yapabiliriz. Size ilk açılırken hangi editör ile devam edelim diye soruyor, ben vim ile devam ettim.\n\n```shell\ncrontab -e\n```\n\nŞimdi bir satır olarak aşağıdaki komutu ekliyoruz.\n\n```shell\n*/5 * * * * tar -cvzf /sikistirilacak/dizin/log.tar.gz  /sikisacak/dizin\n```\n\nKayıt edip çıktıktan sonra artık job 5 dakikada bir log sıkıştırma dosyası oluşturur ve üzerine yazar.\n\n## Cron Job Log Monitor\n\nCron job kurduktan sonra anlık monitör edebilirsiniz;\n\n```shell\ntail -F CRON /var/log/syslog\n```\n\n# Kullanıcı İşlemleri\n\n##  Kullanıcı Ekleme\n\n```shell\nadduser burak\n```\nBu komutu verdikten sonra sizden bir şifre isteyecek. Şifre girdikten sonra artık bir kullanıcı oluşturdunuz hayırlı olsun. /home klasörünün altında kullanıcı adı ile bir klasör göreceksiniz.\n\n## Kullanıcı Silme\n\n```shell\ndeluser --remove-home burak\n```\n\n## Kullanıcı Bilgilerini Listeleme\n\n```shell\nchage -l burak\n```\n\n## Kullanıcı Bilgilerini Güncelleme\n\n```shell\nchfn burak\n```\n\n## Kullanıcı Parola Değiştirme\n\n```shell\npasswd burak\n```\n\n# Kullanıcı Değiştirme Ve Başka Kullanıcı Adına İşlem Yapma\n\nŞimdi bu yukarıdaki oluşturduğumuz kullanıcıya geçiş yapalım ve onun kabuğunda çalışalım.\n\n```shell\nsu - burak\n```\nŞifre isteyecektir.\n\nPeki bir diğer komutta başka kullanıcıya geçiş yapmaktır fakat sadece komutları o kullanıcı olarak verirsiniz.\n\n```shell\nsu burak\n```\n\n# Disk Durumunu İnceleme\n\n([Kaynak](https://www.hostinger.web.tr/rehberler/disk-kullanimi-nedir/ \"Kaynak\"))\n\n[![pasted-image-0-75](https://www.hostinger.web.tr/rehberler/wp-content/uploads/sites/6/2017/04/pasted-image-0-75.png \"pasted-image-0-75\")](https://www.hostinger.web.tr/rehberler/wp-content/uploads/sites/6/2017/04/pasted-image-0-75.png \"pasted-image-0-75\")\n\n- Dosya sistemi (Filesystem) – Dosya sisteminin adını verir.\n- Boyut (Size) – Dosya sisteminin toplam boyutunu gösterir.\n- Kullanılan (Used) – Dosya sisteminde kullanılan disk alanını boyutunu gösterir.\n- Kullanılabilir (Available) – Dosya sisteminde boş olan disk alanı boyutunu gösterir.\n- Kullanılan (Use) – Kullanılan disk alanı yüzdesini gösterir.\n- Bağlı olduğu (Mounted On) – Son sütun dosya sisteminin nereye bağlı olduğunu gösterir.\n- df -h – Daha iyi ve daha insan tarafından okunabilir formatta gösterecek. Bu şekilde disk boyutu GB ile gösterilecek. (Eğer boyut 1 GB’dan daha küçükse MB veya hatta B ile gösterilir.)\n- df -m – Dosya sistemi kullanımını MB ile göstermek için kullanılabilir.\n- df -k – Önceki gibi, dosya sistemi bilgisini KB ile göstermek için kullanılabilir.\n- df -T – Dosya sistemi türünü göstermek için kullanılır (yeni bir sütunda görünecek).\n- df -ht /home – Bu komutu kullanarak belirli bir dosya sistemi hakkında bilgileri (insanın okuyabileceği formatta) görebilirsiniz.\n- df --help – Kullanabileceğiniz kullanışlı komutları ve komutlar hakkındaki bilgileri gösterir.\n- du /home/user/Desktop/ – Bu seçenek, kullanıcının Masaüstü’nü görmenizi sağlar ve Masaüstü’müzdeki klasörlerin ve dosyaların disk kullanımıyla ilgili bilgi verir.\n- du -h /home/user/Desktop/ – Tıpkı df‘de olduğu gibi -h seçeneği de bilgileri daha okunabilir bir biçimde görüntüler.\n- du -sh /home/user/Desktop/ – -s seçeneği belirtilen bir klasörün toplam boyutunu verir (bu durumda, Masaüstü’nün toplam boyutunu gösterir).\n- du -m /home/user/Desktop/ – Tıpkı df‘de olduğu gibi, bu da bize Megabyte cinsinden bilgi sağlayacaktır (bilgileri kilobayt cinsinden görmek için -k kullanabilirsiniz.\n- du -h --time /home/user/Desktop/ – Bu bize, görüntülenen dosya ve klasörlerin son değiştirilme tarihini baz alarak bilgi verecektir.\n- df --help – Kullanabileceğiniz diğer yararlı komutları gösterecek ve onlarla ilgili daha fazla bilgi sağlayacaktır.\n\n# Bilgisayarın Ip Adreslerini Listeleme\n\n```shell\ncurl ifconfig.me\n```\n\n# Bir Domaini Pingleme\n\nBir web sitesine 1 paket gönderip cevap alabiliyor muyuz bakmaya, pingleme denir.\n\nÖrnek bir ping komutu:\n\n```shell\nping google.com\n```\n\nBurada siz durdurana kadar foreground bir process çalışır.\n\n```shell\nping -c 3 google.com\n```\n\nDerseniz; 3 adet ping atacak ve sonlanacak fakat hala bir foreground process'dir.\n\n# Bir Domainin Dns Kayıtlarını Listeleme\n\nLocal linux dns ayarları ve listesi için;\n\n```shell\ncat /etc/resolv.conf \n```\n\nBir domain ayrıntıları için;\n\n ```shell\nnslookup -type=mx google.com\n```\n\n# Package Manager İle Bir Paket Yükleme\n\nYerel sisteminizin yüklü paketlerinin en son sürüm bilgilerini güncellemek için;\n\nAşağıdaki komut paketleri update etmez sadece güncel bağlılıklarını ve paketlerin hangi repoları kullandığını update eder, bu listeye **/etc/apt/sources.list **'den erişebiliriz.\n\n```shell\nsudo apt-get update\n```\n\nHaydi şimdi linux'umuza node kuralım.\n\n```shell\nsudo apt install nodejs\n```\n\nYükleme bittikten sonra bir kontrol şart:\n\n```shell\nnode –version\n```\n\n# Bir Uzak Sunucuya SSH İle Uzaktan Bağlanma\n\nSSH, şifreli bir şekilde iki ağ arasında iletişimi sağlayan bir tüneldir. Bağlantı yapılırken bilgiler karşı tarafa şifreli bir şekilde gönderilir. Önemli nokta ssh yapılabilmesi için karşı tarafta ssh servisinin çalışıyor olması gerekmektedir.\n\nÖncelikle SSH servisi ne alemde bakalım ve eğer aktif değilse başlatalım;\n\n```shell\nservice ssh status\n```\n\nSSH servisini başlatalım:\n\n```shell\nservice ssh start\n```\n\nŞimdi artık SSH bağlantısı açabiliriz.\n\n```shell\nssh kullanici@ipadresi\n```\n\nbu komutan sonra sizden şifre isteyecek ve laps diye bağlantı açılacak. Artık uzak sunucunuzun linuxuna bağlandınız hayırlı olsun.\n\n# Linux Servisler\n\n## systemd\n\nSystemd servislerin abisidir. Nerde bir servis çalışır ya da durur ise orada systemd vardır. Genelde linux dağıtımları systemd kullanır. İşletim sistemi her başladığında servisleri çalıştıran, logları toplayan abimizdir.\n\n\u003eLinux’ta çalıştırdığımız web ve uygulama sunucuları, SSH, DNS, telnet, vb servisler systemd veya benzeri (örneğin upstart) bir init system tarafından yönetilirler. Bu sistemlere init system denmesinin sebebi, Linux'un bu sistemleri açılış sırasında (boot) diğer process'leri başlatan ve PID (Process ID) 1 ile ifade edilen init process'i olarak kullanmasıdır([kaynak](https://gokhansengun.com/)).\n\n## systemctl\n\nsystemd yönetimini sağlayan komuttur. Gelin bazı komutları inceleyelim.\n\n```shell\nsudo systemctl status //Bütün servislerin durumunu gösterir.\n```\n\n```shell\nsudo systemctl status apache2 //apache2 servisinin durumunu gösterir.\n```\n\n```shell\nsudo systemctl start/restart/stop apache2 \n//apache2 servisini başlatmak/yenidenbaşlatmak/durdurmak için kullanılan komut.\n```\n\n```shell\nsudo service —status-all | less //Servislerin durumunu gösterir ve listede scrool yapmanı sağlar.\n```\n\n```shell\nsudo systemctl disable/enable apache2 //apache2 servisini deaktif/aktif etme. \n//Deaktif edilen servis kendi kendine(linux restart vb.) tekrar başlatılmaz!\n```\n\n```shell\nsudo journalctl -u apache2.service //Apache2 servisinin loglarını döker.\n```\n\n# Sıkıştırma İşlemleri\n\nBir çok sıkıştırma komutu vardır. Bunlardan bazıları;\n\n- zip\n- gzip\n- tar\n\n## zip\n\nZip oluşturma,\n\n```shell\nzip -r test.zip ziplenecekhedef\n```\n\nŞifreli zip oluşturma,\n\n```shell\nzip -r -P 1234 test.zip ziplenecekhedef\n```\n\nZip açma,\n\n```shell\nunzip acilacakzipdosyasi.zip\n```\n\nŞifreli zip açma,\n\n```shell\nunzip -P şifre acilacakzipdosyasi.zip\n```\n\n## gzip\n\ngzip oluştururken sizden bir sıkıştırma kalitesi ister. \nBu kalite 1 en düşük ama hızlı, 9 yüksek ama yavaş sıkıştırır.\n\nGzip oluşturma,\n\n```shell\ngzip -9 index.html\n```\n\nBurada dikkat edilmesi gereken, index.html.gz olarak değiştirir sıkıştırdığı direkt dosyanın\nkendisidir. Parametre olarak 9 verdik. En iyi sıkıştırma deneyimi için en yüksek değeri\nverdik.\n\nGzip dizin sıkıştırma,\n\n```shell\ngzip -9 -r file\n```\n\nGzip açma,\n\n```shell\ngunzip index.html.gz\n```\n\n## tar\n\nTar oluşturma,\n\n```shell\ntar -cvf test.tar ziplenecekhedef\n```\n\nTar açma,\n\n```shell\ntar -xvf test.tar\n```\n\n# Linux'a Nasıl Yükleriz?\n\n## Docker Cli\n\nAslında kolayca bir arama ile nasıl yüklersiniz bulabilirsiniz fakat günün sonunda bu guide size her komutu sağlasın istiyoruz ve o sebeple Docker nasıl yüklenir hızlı bir göz atalım.\n\nUbuntu için kurulum adımları:\n\n1. apt paket güncelleme işlemi ve repo ekleme\n\n```\nsudo apt-get update\nsudo apt-get install \\\n    ca-certificates \\\n    curl \\\n    gnupg \\\n    lsb-release\n\n```\n\n2. Docker resmi GPG key ekleme işlemi.\n\n```\nsudo mkdir -p /etc/apt/keyrings\ncurl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg\n```\n\n3. Repository setup işlemi yapıyoruz.\n\n```\necho \\\n  \"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \\\n  $(lsb_release -cs) stable\" | sudo tee /etc/apt/sources.list.d/docker.list \u003e /dev/null\n\n```\n\n4. Bamm artık apt ye git update et dediğimiz zaman docker yüklenecek.\n\n```\nsudo apt-get update\n\n```\n\n5. Eğer update hata verirse;\n\n```\nsudo chmod a+r /etc/apt/keyrings/docker.gpg\nsudo apt-get update\n\n```\n\n6. Tamam şimdi bakalım yükleyebildik mi?\n\n```\n\ndocker --version\n\n```\n\nBeklenen çıktı: ``Docker version 20.10.20, build 9fdeb9c`` \n- Versiyon bilgisi değişebilir tabii.\n\nVersiyon bilgisini alabildiysek tebrikler :)\n\n\n## Docker Compose Cli\n\nAşağıdaki komutları sırayla çalıştırdığımız zaman docker-compose cli kurulmuş olacaktır.\n\nİlk olarak burada dikkat etmemiz gereken versiyondur. Ben 1.29.2 kullandım ama siz günceli kullanabilirsiniz. Bu komut /usr/local/bin/docker-compose klasörüne indirme işlemi yapacaktır.\n\n```\nsudo curl -L \"https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)\" -o /usr/local/bin/docker-compose\n\n```\n\nCurl ile indirme yaptıktan sonra gerekli izinleri tanımlıyoruz.\n\n```\nsudo chmod +x /usr/local/bin/docker-compose\n\n```\n\nVe izinden sonra işlem tamam! Bakalım versiyon komutu çalışacak mı?\n\n```\ndocker-compose --version\n```\n\nEğer bir çıktı aldıysanız bravo!\n\nBeklenen çıktı: ``docker-compose version 1.29.2, build 5becea4c`` \n([kaynak](https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-compose-on-ubuntu-20-04))\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fburaksecer%2Flinux-101","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fburaksecer%2Flinux-101","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fburaksecer%2Flinux-101/lists"}