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

Book Cover
Average Rating
Published
Birmingham, UK : Packt Publishing Ltd., 2024.
Status
Available Online

Description

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. 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. 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.

More Details

Format
Language
English
ISBN
9781804612385, 1804612383

Notes

Description
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. 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. 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.
Local note
O'Reilly O'Reilly Online Learning: Academic/Public Library Edition

Table of Contents

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.
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.
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.

Discover More

Reviews from GoodReads

Loading GoodReads Reviews.

Citations

APA Citation, 7th Edition (style guide)

Cohen, D., & Sturm, C. (2024). The software developer's guide to Linux: a practical, no-nonsense guide to using the Linux command line and utilities as a software developer . Packt Publishing Ltd..

Chicago / Turabian - Author Date Citation, 17th Edition (style guide)

Cohen, David and Christian, Sturm. 2024. The Software Developer's Guide to Linux: A Practical, No-nonsense Guide to Using the Linux Command Line and Utilities As a Software Developer. Birmingham, UK: Packt Publishing Ltd.

Chicago / Turabian - Humanities (Notes and Bibliography) Citation, 17th Edition (style guide)

Cohen, David and Christian, Sturm. The Software Developer's Guide to Linux: A Practical, No-nonsense Guide to Using the Linux Command Line and Utilities As a Software Developer Birmingham, UK: Packt Publishing Ltd, 2024.

Harvard Citation (style guide)

Cohen, D. and Sturm, C. (2024). The software developer's guide to linux: a practical, no-nonsense guide to using the linux command line and utilities as a software developer. Birmingham, UK: Packt Publishing Ltd.

MLA Citation, 9th Edition (style guide)

Cohen, David,, and Christian Sturm. The Software Developer's Guide to Linux: A Practical, No-nonsense Guide to Using the Linux Command Line and Utilities As a Software Developer Packt Publishing Ltd., 2024.

Note! Citations contain only title, author, edition, publisher, and year published. Citations should be used as a guideline and should be double checked for accuracy. Citation formats are based on standards as of August 2021.

Staff View

Grouped Work ID
37b530bf-060e-8d7c-d089-b8d40cb5e85f-eng
Go To Grouped Work View in Staff Client

Grouping Information

Grouped Work ID37b530bf-060e-8d7c-d089-b8d40cb5e85f-eng
Full titlesoftware developers guide to linux a practical no nonsense guide to using the linux command line and utilities as a software developer
Authorcohen david
Grouping Categorybook
Last Update2025-01-24 12:33:29PM
Last Indexed2025-05-03 03:09:29AM

Book Cover Information

Image Sourcedefault
First LoadedJan 22, 2025
Last UsedJan 22, 2025

Marc Record

First DetectedDec 16, 2024 11:27:45 PM
Last File Modification TimeDec 17, 2024 08:29:01 AM
SuppressedRecord had no items

MARC Record

LEADER10028cam a22004577a 4500
001on1418977518
003OCoLC
00520241217082608.0
006m     o  d        
007cr |n|||||||||
008240127s2023    enk     o     000 0 eng d
020 |a 9781804612385|q (electronic bk.)
020 |a 1804612383|q (electronic bk.)
035 |a (OCoLC)1418977518
037 |a 9781804616925|b O'Reilly Media
040 |a YDX|b eng|c YDX|d ORMDA|d UKAHL|d OCLCO|d N$T|d SFB
049 |a MAIN
050 4|a QA76.774.L46
08204|a 005.4/2|2 23/eng/20240206
1001 |a Cohen, David,|e author.|9 138211
24514|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
4901 |a Expert insight
5050 |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.
5058 |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.
5058 |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.
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. 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. 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.
590 |a O'Reilly|b O'Reilly Online Learning: Academic/Public Library Edition
63000|a Linux.|9 18093
650 0|a Operating systems (Computers)|9 49633
7001 |a Sturm, Christian,|e author.
77608|i Print version:|z 9781804612385
77608|i Print version:|z 1804616923|z 9781804616925|w (OCoLC)1346617854
830 0|a Expert insight.
85640|u https://library.access.arlingtonva.us/login?url=https://learning.oreilly.com/library/view/~/9781804616925/?ar|x O'Reilly|z eBook
938 |a Askews and Holts Library Services|b ASKH|n AH40789031
938 |a YBP Library Services|b YANK|n 305949823
938 |a EBSCOhost|b EBSC|n 3780696
994 |a 92|b VIA
999 |c 360503|d 360503