The software developer's guide to Linux a practical, no-nonsense guide to using the Linux command line and utilities as a software developer

A must-read for software developers lacking command-line skills, focusing on Linux. It provides transferable command-line proficiency for use in Mac OS, Unix, and Windows with WSL Key Features A practical, no-nonsense guide specifically written for developers (not sysadmins) who need to quickly lear...

Full description

Bibliographic Details
Main Authors: Cohen, David, Sturm, Christian (Author)
Format: eBook
Language:English
Published: Birmingham, UK Packt Publishing Ltd. 2024
Series:Expert insight
Subjects:
Online Access:
Collection: O'Reilly - Collection details see MPG.ReNa
LEADER 09640nmm a2200397 u 4500
001 EB002199891
003 EBX01000000000000001337094
005 00000000000000.0
007 cr|||||||||||||||||||||
008 240305 ||| eng
020 |a 9781804612385 
050 4 |a QA76.774.L46 
100 1 |a Cohen, David 
245 0 0 |a The software developer's guide to Linux  |h [electronic resource]  |b a practical, no-nonsense guide to using the Linux command line and utilities as a software developer  |c David Cohen, Christian Sturm 
260 |a Birmingham, UK  |b Packt Publishing Ltd.  |c 2024 
300 |a 1 online resource 
505 0 |a Step 3: Copy the public key to your server -- Step 4: Test it out! -- Converting SSH2 keys to the OpenSSH format -- What we are trying to achieve -- How to convert the SSH2-formatted key to OpenSSH -- The other direction: Converting SSH2 keys to the OpenSSH format -- SSH-agent -- Common SSH errors and the -v (verbose) argument -- File transfer -- SFTP -- SCP -- Clever examples -- Without SFTP or SCP -- Directory upload and .tar.gz compression -- Tunnels -- Local forwarding -- Proxying -- The configuration file -- Conclusion -- Chapter 14: Version Control with Git -- Some background on Git -- What is a distributed version control system? -- Git basics -- First-time setup -- Initialize a new Git repository -- Make and see changes -- Stage and commit changes -- Optional: add a remote Git repository -- Pushing and pulling -- Cloning a repository -- Terms you might come across -- Repository -- Bare repository -- Branch -- Main/master branch -- HEAD -- Tag -- Shallow -- Merging -- Merge commit -- Merge conflict -- Stash -- Pull request -- Cherry-picking -- Bisecting -- Rebasing -- Best practices for commit messages -- Good commit messages -- GUIs -- Useful shell aliases -- Poor man's GitHub -- Considerations -- 1. Connect to your server -- 2. Install Git -- 3. Initialize a repository -- 4. Clone the repository -- 5. Edit the project and push your changes -- Conclusion -- Chapter 15: Containerizing Applications with Docker -- How containers work as packages -- Prerequisite: Docker install -- Docker crash course -- Creating images with a Dockerfile -- Container commands -- docker run -- docker image list -- docker ps -- docker exec -- docker stop -- Docker project: Python/Flask application container -- 1. Set up the application -- 2. Create the Docker image -- 3. Start a container from your image -- Containers vs. virtual machines 
505 0 |a Exceptions -- Executing previous commands with ! -- Re-running a command with the same arguments -- Prepending a command to something in your history -- Jumping to the beginning or end of the current line -- Conclusion -- Chapter 5: Introducing Files -- Files on Linux: the absolute basics -- Plaintext files -- What is a binary file? -- Line endings -- The filesystem tree -- Basic filesystem operations -- ls -- pwd -- cd -- touch -- less -- tail -- mv -- Moving -- Renaming -- cp -- mkdir -- rm -- Editing files -- File types -- Symbolic links -- Hard links -- The file command -- Advanced file operations -- Searching file content with grep -- Finding files with find -- Copying files between local and remote hosts with rsync -- Combining find, grep, and rsync -- Advanced filesystem knowledge for the real world -- FUSE: Even more fun with Unix filesystems -- Conclusion -- Chapter 6: Editing Files on the Command Line -- Nano -- Installing nano -- Nano cheat sheet -- File handling -- Editing -- Search and replace -- Vi(m) -- Vi/vim commands -- Modes -- Command mode -- Normal mode -- Tips for learning vi(m) -- Use vimtutor -- Think in terms of mnemonics -- Avoid using arrow keys -- Avoid using the mouse -- Don't use gvim -- Avoid starting with extensive configuration or plugins -- Vim bindings in other software -- Editing a file you don't have permissions for -- Setting your preferred editor -- Conclusion -- Chapter 7: Users and Groups -- What is a user? -- Root versus everybody else -- sudo -- What is a group? -- Mini project: user and group management -- Creating a user -- Create a group -- Modifying a Linux user -- Adding a Linux user to a group -- Removing a user from a group -- Removing a Linux user -- Remove a Linux group -- Advanced: what is a user, really? -- User metadata / attributes -- A note on scriptability -- Conclusion 
505 0 |a Cover -- Copyright -- Contributors -- Table of Contents -- Preface -- Chapter 1: How the Command Line Works -- In the beginning...was the REPL -- Command-line syntax (read) -- Command line vs. shell -- How does the shell know what to run? (evaluate) -- A quick definition of POSIX -- Basic command-line skills -- Unix filesystem basics -- Absolute vs. relative file paths -- Absolute vs. relative pathname review -- Opening a terminal -- Looking around -- command-line navigation -- pwd -- print working directory -- ls -- list -- Moving around -- cd -- change directory -- find -- find files -- Reading files -- less -- page through a file -- Making changes -- touch -- create an empty file, or update modification time for an existing one -- mkdir -- create a directory -- rmdir -- remove empty directories -- rm -- remove files and directories -- mv -- move or rename files and directories -- Getting help -- Shell autocompletion -- Conclusion -- Chapter 2: Working with Processes -- Process basics -- What is a Linux process made of? -- Process ID (PID) -- Effective User ID (EUID) and Effective Group ID (EGID) -- Environment variables -- Working directory -- Practical commands for working with Linux processes -- Advanced process concepts and tools -- Signals -- Practical uses of signals -- Trapping -- The kill command -- lsof -- show file handles that a process has open -- Inheritance -- Review -- example troubleshooting session -- Conclusion -- Chapter 3: Service Management with systemd -- The basics -- init -- Processes and services -- systemctl commands -- Checking the status of a service -- Starting a service -- Stopping a service -- Restarting a service -- Reloading a service -- Enable and disable -- A note on Docker -- Conclusion -- Chapter 4: Using Shell History -- Shell history -- Shell configuration files -- History files -- Searching through shell history 
653 |a Systèmes d'exploitation (Ordinateurs) 
653 |a Operating systems (Computers) / http://id.loc.gov/authorities/subjects/sh85094982 
653 |a Linux / http://id.loc.gov/authorities/names/n94087892 
653 |a operating systems / aat 
700 1 |a Sturm, Christian  |e author 
041 0 7 |a eng  |2 ISO 639-2 
989 |b OREILLY  |a O'Reilly 
490 0 |a Expert insight 
776 |z 1804616923 
776 |z 1804612383 
776 |z 9781804612385 
776 |z 9781804616925 
856 4 0 |u https://learning.oreilly.com/library/view/~/9781804616925/?ar  |x Verlag  |3 Volltext 
082 0 |a 005.4/2 
520 |a A must-read for software developers lacking command-line skills, focusing on Linux. It provides transferable command-line proficiency for use in Mac OS, Unix, and Windows with WSL Key Features A practical, no-nonsense guide specifically written for developers (not sysadmins) who need to quickly learn command-line skills Expand your practical skills and look like a wizard on the command line Build practical skills to work effectively with the most common CLI tools on Unix-like systems Book Description Developers are always looking to raise their game to the next level, yet most are completely lost when it comes to the Linux command line. This book is the bridge that will take you to the next level in your software development career. Most of the skills in the book can be immediately put to work to make you a more efficient developer.  
520 |a It's written specifically for software engineers, not Linux system administrators, so each chapter will equip you with just enough theory to understand what you're doing before diving into practical commands that you can use in your day-to-day work as a software developer. As you work through the book, you'll quickly absorb the basics of how Linux works while you get comfortable moving around the command line. Once you've got the core skills, you'll see how to apply them in different contexts that you'll come across as a software developer: building and working with Docker images, automating boring build tasks with shell scripts, and troubleshooting issues in production environments. By the end of the book, you'll be able to use Linux and the command line comfortably and apply your newfound skills in your day-to-day work to save time, troubleshoot issues, and be the command-line wizard that your team turns to.  
520 |a What you will learn Learn useful command-line tricks and tools that make software development, testing, and troubleshooting easy Understand how Linux and command line environments actually work Create powerful, customized tools and save thousands of lines of code with developer-centric Linux utilities Gain hands-on experience with Docker, SSH, and Shell scripting tasks that make you a more effective developer Get comfortable searching logs and troubleshooting problems on Linux servers Handle common command-line situations that stump other developers Who this book is for This book is for software developers who want to build practical Command-Line (CLI) and Linux skills and who want to quickly fill the gap to advance their skills and their career. Basic knowledge of editing text, working with files and folders, having some idea of what "operating systems" are, installing software, and using a development environment is assumed