Learn programing in linux

Содержание
  1. Linux Programming Made Easy – A Complete Guide With Resources For Beginners
  2. Need Web Hosting?
  3. Linux kernel development
  4. What You Need to Know
  5. Development Skills
  6. Understanding Linux
  7. Process and Culture
  8. Developing Kernel Modules
  9. What You Need to Know
  10. Compare Popular Web Hosting Plans
  11. BlueHost
  12. Dreamhost
  13. SiteGround
  14. A2 Hosting
  15. GreenGeeks
  16. Hostinger
  17. Developing Applications For the Linux Operating System
  18. What You Need to Know
  19. Scripting in Linux
  20. What You Need to Know
  21. Bash Resources
  22. Python Resources
  23. Perl Resources
  24. Need Web Hosting?
  25. General Linux Resources
  26. Summary
  27. 25 Free Books To Learn Linux For Free
  28. How to learn Linux?
  29. 1. Free materials to learn Linux for absolute beginners
  30. Introduction to Linux by Linux Foundation [Video Course]
  31. Linux Journey [Online Portal]
  32. Learn Linux in 5 Days [eBook]
  33. The Ultimate Linux Newbie Guide [eBook]
  34. 2. Free Linux eBooks for Beginners to Advanced
  35. Introduction to Linux [eBook]
  36. Linux Fundamentals [eBook]
  37. Advanced Linux Programming [eBook]
  38. Linux From Scratch [eBook]
  39. 3. Free eBooks to learn Linux command line and Shell scripting
  40. The Linux Command Line [eBook]
  41. GNU/Linux Command−Line Tools Summary [eBook]
  42. Bash Reference Manual from GNU [eBook]
  43. Bash Guide for Beginners [eBook]
  44. Advanced Bash-Scripting Guide [eBook]
  45. Linux 101 Hacks [eBook]
  46. The AWK Programming Language [eBook]
  47. 4. Free eBooks for SysAdmin
  48. The Debian Administration’s Handbook [eBook]
  49. Advanced Linux System Administration [eBook]
  50. Linux System Administration [eBook]
  51. Linux Servers [eBook]
  52. Linux Networking [eBook]
  53. Linux Storage [eBook]
  54. Linux Security [eBook]
  55. Your favorite Linux learning material?

Linux Programming Made Easy – A Complete Guide With Resources For Beginners

Updated June 18, 2021

Disclosure: Your support helps keep the site running! We earn a referral fee for some of the services we recommend on this page. Learn more

Linux is an operating system, platform, ecosystem, and culture. While the continued dominance of Windows and Mac OS for desktop computing causes the uninitiated consumer to assume that Linux is a sort of fringe option for extreme geeks and those who don’t want to pay for an operating system, the truth of the matter is that Linux is the most used and most important operating system on the planet. It powers the web, it powers our infrastructure, it powers the largest supercomputers in the world.

Developing for Linux can be a bit of a challenge, but it can also be extremely rewarding. This short guide will provide you with an introduction to the information and resources you need to get started with Linux programming. It covers four areas of Linux development: contributing to the kernel, building new modules, developing applications for Linux, and Shell scripting.

Need Web Hosting?

If you’re in the market for a new web hosting provider, be sure to check out our user reviews, our A-Z hosting guide and our top three popular hosting picks:

Linux kernel development

The Linux kernel is, perhaps, the most ambitious software development project on the planet. New stable releases come out approximately every three months, and each release involves thousands of developers working in dozens of countries.

Getting involved with kernel development is, paradoxically, both easier than it seems like it should be, and also ridiculously difficult. It is easier than it seems like it should be, because there is no hiring process, no interview, no bureaucracy. Anyone who knows what they are doing is welcome to develop for the core, and submit patches. On the other hand, it is also extremely difficult because the kernel is extremely complicated. Moreover, the kernel development community, while quite welcoming in some ways, does not tolerate amateur shenanigans very well. While it helps to have thick skin, nothing really substitutes for actually knowing what you are doing. Developing the core is pretty serious business, involving pretty serious computer science. If you are just getting started with operating system development, this is not really the place to start.

What You Need to Know

Development Skills

Programming of the Linux kernel is done in C. Not C++, not Objective-C, not C#. So the first thing that you need to do is learn the C programming language extremely well.

You also need to have a deep understanding of operating system theory, particularly as it relates to the Linux system. More on that in the next section.

  • The C Programming Language: the definitive guide to the language. Also available as a free PDF.
  • Operating System Concepts: a thorough introduction to the theory and practice of operating system development.

Understanding Linux

Naturally, you need to understand Linux both as a user and as a developer. This includes having a fairly deep understanding of how the Linux kernel is structured, and how the various sub projects fit together.

Process and Culture

Finally, you need to understand how the Linux development process actually works. This includes getting a feel for the community as a whole, for its culture, and how the various members of the development community relate to each other. Also, it means understanding distributed version control, and the development release cycle.

  • How to Participate in the Linux Community: required reading. Start here.
  • Three Ways for Beginners to Contribute to the Linux Kernel: a short, friendly guide to getting involved.
  • Official Things:
    • The Linux Kernel Archives
    • The Linux Kernel Mailing List
    • The Kernel Bug Tracker
  • Being a Moron on linux-kernel: a guide on how not to behave on the Linux Kernel (or any other) mailing list. (Our recommendation: lurk for at least six-months before posting anything.)

Developing Kernel Modules

Before jumping into core development on the Linux kernel, a good way to increase your knowledge and expertise with Linux programming is to work on a kernel module. These are independently developed pieces of software that work with the kernel in order to function as a complete operating system. Kernel modules include things like device drivers for various hardware peripheries, as well as file managers and other low level operating system features.

Читайте также:  Работа с окнами справочная система windows

The barriers to entry for working on a kernel module are, generally speaking, much lower than they are for working on the Linux kernel. There are hundreds of modules, developed by many different teams and individuals, so there is not one set of gatekeepers setting the tone for development. Moreover, the stakes are a bit lower with module development.

What You Need to Know

Kernel modules, like the kernel itself, are usually written in C. (There is some fringe debate about developing kernel modules in C++, and there are some off-the-wall ways of accomplishing this, but it is certainly not the normal way nor is it recommended.)

Obviously, if you are writing a device driver for a piece of hardware, you will need to know quite a bit about the type of hardware, and the firmware embedded on it. You also need a decent understanding of the Linux-based kernel, and the way that it interacts with kernel modules. Finally, if you are contributing to an existing kernel module, you will need to learn about their procedures and development cycle.

Also see the list of resources above in the Kernel Development section.

We think the following plans will suit the majority of our visitor’s needs.

BlueHost

Dreamhost

SiteGround

A2 Hosting

GreenGeeks

Hostinger

Developing Applications For the Linux Operating System

Once we get up out of the weeds of operating system development, and start talking about developing actual applications for the Linux operating system, the job gets a little easier and we have a lot more options about how to proceed. Compilers and interpreters for just about every programming language are available for the Linux platform, often more than one for a particular language.

What You Need to Know

If you are used to developing for Windows or Mac OS, the biggest shock when developing for Linux is probably the wide variety of Linux environments. There are dozens of Linux distros, and every Linux user has the ability to change quite a lot about how their particular environment works. This means, among other things, that you have to pay attention to dependency management a lot more than you might otherwise need to.

Another difference, particularly as compared to a Windows system is that many Linux users prefer to compile their applications from source code. This happens on Mac OS as well but with less frequency. In the Linux world, a large number of users will always prefer to compile applications from source, rather than using an installer package. This might affect how you think about development and distribution of your software.

Most Linux-centric development takes place in C, C++, Perl, or Python. Learning those languages well, and diving into the resources mentioned above (Kernel and Modules) and below (scripting) will help a lot.

  • C Programming in Linux: a thorough introduction and tutorial about programming Linux applications in the C language.
  • Linux Developer Training: paid courses on Linux development, from the Linux Foundation.

Scripting in Linux

Perhaps the “lowest-level” of programming in Linux is shell scripting. However, this is no less “programming” than anything else. Shell scripting in Linux is a great way to automate routine tasks and accomplish more work in less time. Additionally, digging into advanced shell scripting will give you a deeper knowledge and understanding of the Linux operating system. Shell scripting is really what separates novice Linux consumers from advanced Linux users.

What You Need to Know

While there are other options, the most common scripting language is Bash. Even if you plan to move on to more advanced scripting languages, getting a handle on Bash will start you off on the right foot for all types of operating system scripting. Most people who really get into scripting as a way to boost productivity, use either Python or Perl for most of their work. Once you have hit a wall with what you can easily accomplish in Bash, you will probably want to move onto one of those languages.

Bash Resources

Python Resources

  • Learn Python the Hard Way: one of the most popular introductions to Python development.
  • Automate the Boring Stuff with Python: Practical Programming for Total Beginners: a great introduction to scripting (as opposed to “development”) in Python. Also available for free online as a video course.

Perl Resources

Need Web Hosting?

If you’re in the market for a new web hosting provider, be sure to check out our user reviews, our A-Z hosting guide and our top three popular hosting picks:

General Linux Resources

Linux.org: a central forum for all things Linux.

The Linux Documentation Project: a giant library of Linux guides on all of the subjects above, plus a bunch of other things. This is one of the most important places to go for in-depth Linux information.

Summary

That was a wild ride! From Linux kernel programming all the way down to shell scripting. There are endless ways to program the Linux operating system. With this guide, you should be well on your way.

Источник

25 Free Books To Learn Linux For Free

Last updated February 6, 2020 By Abhishek Prakash 111 Comments

Читайте также:  Посмотреть версию линукса командная строка

Brief: In this article, I’ll share with you the best resource to learn Linux for free. This is a collection of websites, online video courses and free eBooks.

How to learn Linux?

This is perhaps the most commonly asked question in our Facebook group for Linux users.

The answer to this simple looking question ‘how to learn Linux’ is not at all simple.

Problem is that different people have different meanings of learning Linux.

  • If someone has never used Linux, be it command line or desktop version, that person might be just wondering to know more about it.
  • If someone uses Windows as the desktop but have to use Linux command line at work, that person might be interested in learning Linux commands.
  • If someone has been using Linux for sometimes and is aware of the basics but he/she might want to go to the next level.
  • If someone is just interested in getting your way around a specific Linux distribution.
  • If someone is trying to improve or learn Bash scripting which is almost synonymous with Linux command line.
  • If someone is willing to make a career as a Linux SysAdmin or trying to improve his/her sysadmin skills.

You see, the answer to “how do I learn Linux” depends on what kind of Linux knowledge you are seeking. And for this purpose, I have collected a bunch of free Linux resources that you could use for learning Linux.

These free resources include eBooks, video courses, websites etc. And these are divided into sub-categories so that you can easily find what you are looking for when you seek to learn Linux.

If you are looking to build a career as a Linux SysAdmin, I recommend getting professional certification from The Linux Foundation, the organization that employs Linux creator Linus Torvalds. You can also check some inexpensive Linux courses on Udemy.

Again, there is no best way to learn Linux. It totally up to you how you go about learning Linux, by online web portals, downloaded eBooks, video courses or something else.

Disclaimer: All the books listed here are legal to download. The sources mentioned here are the official sources, as per my knowledge. However, if you find it otherwise, please let me know so that I can take appropriate action.

1. Free materials to learn Linux for absolute beginners

So perhaps you have just heard of Linux from your friends or from a discussion online. You are intrigued about the hype around Linux and you are overwhelmed by the vast information available on the internet but just cannot figure out exactly where to look for to know more about Linux.

Worry not. Most of us, if not all, have been to your stage.

Introduction to Linux by Linux Foundation [Video Course]

If you have no idea about what is Linux and you want to get started with it, I suggest you to go ahead with the free video course provided by the Linux Foundation on edX. Consider it an official course by the organization that ‘maintains’ Linux. And yes, it is endorsed by Linus Torvalds, the father of Linux himself.

Linux Journey [Online Portal]

Not official and perhaps not very popular. But this little website is the perfect place for a no non-sense Linux learning for beginners.

The website is designed beautifully and is well organized based on the topics. It also has interactive quizzes that you can take after reading a section or chapter. My advice, bookmark this website:

Learn Linux in 5 Days [eBook]

This brilliant eBook is available for free exclusively to It’s FOSS readers all thanks to Linux Training Academy.

Written for absolute beginners in mind, this free Linux eBook gives you a quick overview of Linux, common Linux commands and other things that you need to learn to get started with Linux.

The Ultimate Linux Newbie Guide [eBook]

This is a free to download eBook for Linux beginners. The eBook starts with explaining what is Linux and then go on to provide more practical usage of Linux as a desktop.

You can download the latest version of this eBook from the link below:

2. Free Linux eBooks for Beginners to Advanced

This section lists out those Linux eBooks that are ‘complete’ in nature.

What I mean is that these are like academic textbooks that focus on each and every aspects of Linux, well most of it. You can read those as an absolute beginner or you can read those for deeper understanding as an intermediate Linux user. You can also use them for reference even if you are at expert level.

Introduction to Linux [eBook]

Introduction to Linux is a free eBook from The Linux Documentation Project and it is one of the most popular free Linux books out there. Though I think some parts of this book needs to be updated, it is still a very good book to teach you about Linux, its file system, command line, networking and other related stuff.

Linux Fundamentals [eBook]

This free eBook by Paul Cobbaut teaches you about Linux history, installation and focuses on the basic Linux commands you should know.

You can get the book from the link below:

Advanced Linux Programming [eBook]

As the name suggests, this is for advanced users who are or want to develop software for Linux. It deals with sophisticated features such as multiprocessing, multi-threading, interprocess communication, and interaction with hardware devices.

Читайте также:  Addons respawn linux csdm

Following the book will help you develop a faster, reliable and secure program that uses the full capability of a GNU/Linux system.

Linux From Scratch [eBook]

If you think you know enough about Linux and you are a pro, then why not create your own Linux distribution? Linux From Scratch (LFS) is a project that provides you with step-by-step instructions for building your own custom Linux system, entirely from source code.

Call it DIY Linux but this is a great way to put your Linux expertise to the next level.

There are various sub-parts of this project, you can check it out on its website and download the books from there.

3. Free eBooks to learn Linux command line and Shell scripting

The real power of Linux lies in the command line and if you want to conquer Linux, you must learn Linux command line and Shell scripting.

In fact, if you have to work on Linux terminal on your job, having a good knowledge of Linux command line will actually help you in your tasks and perhaps help you in advancing your career as well (as you’ll be more efficient).

In this section, we’ll see various Linux commands free eBooks.

The Linux Command Line [eBook]

This 500+ pages of free eBook by William Shotts is the MUST HAVE for anyone who is serious about learning Linux command line.

Even if you think you know things about Linux, you’ll be amazed at how much this book still teaches you.

It covers things from beginners to advanced level. I bet that you’ll be a hell lot of better Linux user after reading this book. Download it and keep it with you always.

GNU/Linux Command−Line Tools Summary [eBook]

This eBook from The Linux Documentation Project is a good place to begin with Linux command line and get acquainted with Shell scripting.

Bash Reference Manual from GNU [eBook]

This is a free eBook to download from GNU. As the name suggests, it deals with Bash Shell (if I can call that). This book has over 175 pages and it covers a number of topics around Linux command line in Bash.

Bash Guide for Beginners [eBook]

If you just want to get started with Bash scripting, this could be a good companion for you. The Linux Documentation Project is behind this eBook again and it’s the same author who wrote Introduction to Linux eBook (discussed earlier in this article).

Advanced Bash-Scripting Guide [eBook]

If you think you already know basics of Bash scripting and you want to take your skills to the next level, this is what you need. This book has over 900+ pages of various advanced commands and their examples.

Linux 101 Hacks [eBook]

This 270 pages eBook from The Geek Stuff teaches you the essentials of Linux command lines with easy to follow practical examples.

The AWK Programming Language [eBook]

Not the prettiest book here but if you really need to go deeper with your scripts, this old-yet-gold book could be helpful.

4. Free eBooks for SysAdmin

This section is dedicated to the SysAdmins, the superheroes for developers. I have listed a few free eBooks here for SysAdmin which will surely help anyone who is already a SysAdmin or aspirs to be one. I must add that you should also focus on essential Linux command lines as it will make your job easier.

The Debian Administration’s Handbook [eBook]

If you use Debian Linux for your servers, this is your bible. The Debian Administration’s Handbook starts with Debian history, installation, package management etc and then moves on to cover topics like LAMP, virtual machines, storage management and other core sysadmin stuff.

Advanced Linux System Administration [eBook]

This is an ideal book if you are preparing for LPI certification. The book deals straightway to the topics essential for sysadmins. So knowledge of Linux command line is a prerequisite in this case.

Linux System Administration [eBook]

Another free eBook by Paul Cobbaut. The 370 pages long eBook covers networking, disk management, user management, kernel management, library management etc.

Linux Servers [eBook]

One more eBook from Paul Cobbaut of linux-training.be. This book covers web servers, mysql, DHCP, DNS, Samba and other file servers.

Linux Networking [eBook]

Networking is the bread and butter of a SysAdmin, and this book by Paul Cobbaut (again) is a good reference material.

Linux Storage [eBook]

This book by Paul Cobbaut (yes, him again) explains disk management on Linux in detail and introduces a lot of other storage-related technologies.

Linux Security [eBook]

This is the last eBook by Paul Cobbaut in our list here. Security is one of the most important part of a sysadmin’s job. This book focuses on file permissions, acls, SELinux, users and passwords etc.

Your favorite Linux learning material?

So you now have plenty of reading materials. If you want to practice, you can use one of the online Linux terminals that allow you to run Linux and Bash commands.

I know that this is a good collection of free Linux eBooks. But this could always be made better. If you have some other resources that could be helpful in learning Linux, do share with us. Please note to share only the legal downloads so that I can update this article with your suggestion(s) without any problem.

I hope you find this article helpful in learning Linux. Your feedback is welcome 🙂

Like what you read? Please share it with others.

Источник

Оцените статью