{"product_id":"shell-scripting-expert-recipes-for-linux-bash-and-more-paperback-softback-9781118024485","title":"Shell Scripting; Expert Recipes for Linux, Bash, and more (Paperback \/ softback) 9781118024485","description":"\u003cfont face=\"Georgia\"\u003e\r\n\u003cp\u003e\u003cfont size=\"6\"\u003eShell Scripting\u003c\/font\u003e\u003cbr\u003e\r\n\u003cfont size=\"5\"\u003eExpert Recipes for Linux, Bash, and more\u003c\/font\u003e\u003c\/p\u003e\r\n\r\n\r\n\r\n\r\n\u003cp\u003e\u003cfont size=\"4\"\u003eSteve Parker (Author)\u003c\/font\u003e\u003c\/p\u003e\r\n\r\n\u003cp\u003e\u003cfont size=\"3\"\u003e9781118024485, Wiley\u003c\/font\u003e\u003c\/p\u003e\r\n\r\n\u003cp\u003e\u003cfont size=\"3\"\u003ePaperback \/ softback, published 26 August 2011\u003c\/font\u003e\u003c\/p\u003e\r\n\r\n\u003cp\u003e\u003cfont size=\"3\"\u003e608 pages\u003cbr\u003e23.6 x 18.8 x 2.9 cm, 1.007 kg\u003c\/font\u003e\u003c\/p\u003e\r\n\r\n\r\n\r\n\r\n\r\n\u003cp align=\"justify\"\u003e\u003cstrong\u003e\u003cfont size=\"3\"\u003e\u003cb\u003eA compendium of shell scripting recipes that can immediately be used, adjusted, and applied\u003c\/b\u003e  \u003cp\u003e The shell is the primary way of communicating with the Unix and Linux systems, providing a direct way to program by automating simple-to-intermediate tasks. With this book, Linux expert Steve Parker shares a collection of shell scripting recipes that can be used as is or easily modified for a variety of environments or situations. The book covers shell programming, with a focus on Linux and the Bash shell; it provides credible, real-world relevance, as well as providing the flexible tools to get started immediately.\u003c\/p\u003e \u003cul\u003e \u003cli\u003eShares a collection of helpful shell scripting recipes that can immediately be used for various of real-world challenges \u003c\/li\u003e \u003cli\u003eFeatures recipes for system tools, shell features, and systems administration \u003c\/li\u003e \u003cli\u003eProvides a host of plug and play recipes for to immediately apply and easily modify so the wheel doesn't have to be reinvented with each challenge faced \u003c\/li\u003e \u003c\/ul\u003e  \u003cp\u003e Come out of your shell and dive into this collection of tried and tested shell scripting recipes that you can start using right away!\u003c\/p\u003e\u003c\/font\u003e\u003c\/strong\u003e\u003c\/p\u003e\r\n\r\n\u003cp\u003e\u003cfont size=\"3\"\u003e\u003cp\u003eIntroduction xxix\u003c\/p\u003e \u003cp\u003e\u003cb\u003ePart I: About the Ingredients\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 1: The History of Unix, Gnu, and Linux 3\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eUnix 3\u003c\/p\u003e \u003cp\u003e“Everything is a File” and Pipelines 5\u003c\/p\u003e \u003cp\u003eBSD 6\u003c\/p\u003e \u003cp\u003eGNU 7\u003c\/p\u003e \u003cp\u003eLinux 11\u003c\/p\u003e \u003cp\u003eSummary 12\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 2: Getting Started 15\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eChoosing an OS 15\u003c\/p\u003e \u003cp\u003eGNU\/Linux 15\u003c\/p\u003e \u003cp\u003eThe BSDs 17\u003c\/p\u003e \u003cp\u003eProprietary Unix 17\u003c\/p\u003e \u003cp\u003eMicrosoft Windows 17\u003c\/p\u003e \u003cp\u003eChoosing an Editor 18\u003c\/p\u003e \u003cp\u003eGraphical Text Editors 18\u003c\/p\u003e \u003cp\u003eTerminal Emulation 21\u003c\/p\u003e \u003cp\u003eNongraphical Text Editors 22\u003c\/p\u003e \u003cp\u003eSetting Up the Environment 24\u003c\/p\u003e \u003cp\u003eThe Shell Profile 24\u003c\/p\u003e \u003cp\u003eAliases 26\u003c\/p\u003e \u003cp\u003evim Settings 30\u003c\/p\u003e \u003cp\u003eSummary 31\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 3: Variables 33\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eUsing Variables 33\u003c\/p\u003e \u003cp\u003eTyping 34\u003c\/p\u003e \u003cp\u003eAssigning Values to Variables 35\u003c\/p\u003e \u003cp\u003ePositional Parameters 39\u003c\/p\u003e \u003cp\u003eReturn Codes 42\u003c\/p\u003e \u003cp\u003eUnsetting Variables 45\u003c\/p\u003e \u003cp\u003ePreset and Standard Variables 47\u003c\/p\u003e \u003cp\u003eBASH_ENV 47\u003c\/p\u003e \u003cp\u003eBASHOPTS 47\u003c\/p\u003e \u003cp\u003eSHELLOPTS 48\u003c\/p\u003e \u003cp\u003eBASH_COMMAND 50\u003c\/p\u003e \u003cp\u003eBASH_SOURCE, FUNCNAME, LINENO, and BASH_LINENO 51\u003c\/p\u003e \u003cp\u003eSHELL 55\u003c\/p\u003e \u003cp\u003eHOSTNAME and HOSTTYPE 55\u003c\/p\u003e \u003cp\u003eWorking Directory 55\u003c\/p\u003e \u003cp\u003ePIPESTATUS 55\u003c\/p\u003e \u003cp\u003eTIMEFORMAT 56\u003c\/p\u003e \u003cp\u003ePPID 57\u003c\/p\u003e \u003cp\u003eRANDOM 58\u003c\/p\u003e \u003cp\u003eREPLY 58\u003c\/p\u003e \u003cp\u003eSECONDS 58\u003c\/p\u003e \u003cp\u003eBASH_XTRACEFD 59\u003c\/p\u003e \u003cp\u003eGLOBIGNORE 60\u003c\/p\u003e \u003cp\u003eHOME 62\u003c\/p\u003e \u003cp\u003eIFS 62\u003c\/p\u003e \u003cp\u003ePATH 63\u003c\/p\u003e \u003cp\u003eTMOUT 64\u003c\/p\u003e \u003cp\u003eTMPDIR 65\u003c\/p\u003e \u003cp\u003eUser Identification Variables 65\u003c\/p\u003e \u003cp\u003eSummary 66\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 4: Wildcard Expansion 67\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eFilename Expansion (Globbing) 67\u003c\/p\u003e \u003cp\u003eBash Globbing Features 70\u003c\/p\u003e \u003cp\u003eShell Options 71\u003c\/p\u003e \u003cp\u003eRegular Expressions and Quoting 75\u003c\/p\u003e \u003cp\u003eOverview of Regular Expressions 76\u003c\/p\u003e \u003cp\u003eQuoting 77\u003c\/p\u003e \u003cp\u003eSummary 81\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 5: Conditional Execution 83\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eIf\/Then 83\u003c\/p\u003e \u003cp\u003eElse 85\u003c\/p\u003e \u003cp\u003eelif 85\u003c\/p\u003e \u003cp\u003eTest ([) 87\u003c\/p\u003e \u003cp\u003eFlags for Test 88\u003c\/p\u003e \u003cp\u003eFile Comparison Tests 95\u003c\/p\u003e \u003cp\u003eString Comparison Tests 96\u003c\/p\u003e \u003cp\u003eRegular Expression Tests 98\u003c\/p\u003e \u003cp\u003eNumerical Tests 101\u003c\/p\u003e \u003cp\u003eCombining Tests 103\u003c\/p\u003e \u003cp\u003eCase 105\u003c\/p\u003e \u003cp\u003eSummary 109\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 6: Flow Control Using Loops 111\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eFor Loops 111\u003c\/p\u003e \u003cp\u003eWhen to Use for Loops 112\u003c\/p\u003e \u003cp\u003eImaginative Ways of Feeding “for” with Data 112\u003c\/p\u003e \u003cp\u003eC-Style for Loops 118\u003c\/p\u003e \u003cp\u003ewhile Loops 119\u003c\/p\u003e \u003cp\u003eWhen to Use while Loops 119\u003c\/p\u003e \u003cp\u003eWays to Use while Loops 119\u003c\/p\u003e \u003cp\u003eNested Loops 125\u003c\/p\u003e \u003cp\u003eBreaking and Continuing Loop Execution 126\u003c\/p\u003e \u003cp\u003ewhile with Case 130\u003c\/p\u003e \u003cp\u003euntil Loops 131\u003c\/p\u003e \u003cp\u003eselect Loops 133\u003c\/p\u003e \u003cp\u003eSummary 137\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 7: Variables Continued 139\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eUsing Variables 139\u003c\/p\u003e \u003cp\u003eVariable Types 141\u003c\/p\u003e \u003cp\u003eLength of Variables 142\u003c\/p\u003e \u003cp\u003eSpecial String Operators 144\u003c\/p\u003e \u003cp\u003eStripping Variable Strings by Length 144\u003c\/p\u003e \u003cp\u003eStripping from the End of the String 146\u003c\/p\u003e \u003cp\u003eStripping Strings with Patterns 147\u003c\/p\u003e \u003cp\u003eSearching Strings 151\u003c\/p\u003e \u003cp\u003eUsing Search and Replace 151\u003c\/p\u003e \u003cp\u003eReplacing Patterns 153\u003c\/p\u003e \u003cp\u003eDeleting Patterns 153\u003c\/p\u003e \u003cp\u003eChanging Case 153\u003c\/p\u003e \u003cp\u003eProviding Default Values 153\u003c\/p\u003e \u003cp\u003eIndirection 157\u003c\/p\u003e \u003cp\u003eSourcing Variables 158\u003c\/p\u003e \u003cp\u003eSummary 159\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 8: Functions and Libraries 161\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eFunctions 161\u003c\/p\u003e \u003cp\u003eDefining Functions 162\u003c\/p\u003e \u003cp\u003eFunction Output 162\u003c\/p\u003e \u003cp\u003eWriting to a File 164\u003c\/p\u003e \u003cp\u003eRedirecting the Output of an Entire Function 167\u003c\/p\u003e \u003cp\u003eFunctions with Trap 171\u003c\/p\u003e \u003cp\u003eRecursive Functions 173\u003c\/p\u003e \u003cp\u003eVariable Scope 177\u003c\/p\u003e \u003cp\u003eLibraries 181\u003c\/p\u003e \u003cp\u003eCreating and Accessing Libraries 183\u003c\/p\u003e \u003cp\u003eLibrary Structures 183\u003c\/p\u003e \u003cp\u003eNetwork Configuration Library 187\u003c\/p\u003e \u003cp\u003eUse of Libraries 191\u003c\/p\u003e \u003cp\u003egetopts 191\u003c\/p\u003e \u003cp\u003eHandling Errors 194\u003c\/p\u003e \u003cp\u003egetopts within Functions 195\u003c\/p\u003e \u003cp\u003eSummary 197\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 9: Arrays 199\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eAssigning Arrays 199\u003c\/p\u003e \u003cp\u003eOne at a Time 200\u003c\/p\u003e \u003cp\u003eAll at Once 200\u003c\/p\u003e \u003cp\u003eBy Index 201\u003c\/p\u003e \u003cp\u003eAll at Once from a Source 201\u003c\/p\u003e \u003cp\u003eRead from Input 203\u003c\/p\u003e \u003cp\u003eAccessing Arrays 205\u003c\/p\u003e \u003cp\u003eAccessing by Index 205\u003c\/p\u003e \u003cp\u003eLength of Arrays 206\u003c\/p\u003e \u003cp\u003eAccessing by Variable Index 206\u003c\/p\u003e \u003cp\u003eSelecting Items from an Array 209\u003c\/p\u003e \u003cp\u003eDisplaying the Entire Array 209\u003c\/p\u003e \u003cp\u003eAssociative Arrays 210\u003c\/p\u003e \u003cp\u003eManipulating Arrays 211\u003c\/p\u003e \u003cp\u003eCopying an Array 211\u003c\/p\u003e \u003cp\u003eAppending to an Array 213\u003c\/p\u003e \u003cp\u003eDeleting from an Array 214\u003c\/p\u003e \u003cp\u003eAdvanced Techniques 216\u003c\/p\u003e \u003cp\u003eSummary 217\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 10: Processes 219\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eThe ps Command 219\u003c\/p\u003e \u003cp\u003eps Line Length 220\u003c\/p\u003e \u003cp\u003eParsing the Process Table Accurately 220\u003c\/p\u003e \u003cp\u003ekillall 223\u003c\/p\u003e \u003cp\u003eThe \/proc pseudo-filesystem 225\u003c\/p\u003e \u003cp\u003eprtstat 226\u003c\/p\u003e \u003cp\u003eI\/O Redirection 227\u003c\/p\u003e \u003cp\u003eAppending Output to an Existing File 229\u003c\/p\u003e \u003cp\u003ePermissions on Redirections 229\u003c\/p\u003e \u003cp\u003eexec 229\u003c\/p\u003e \u003cp\u003eUsing exec to Replace the Existing Program 230\u003c\/p\u003e \u003cp\u003eUsing exec to Change Redirection 231\u003c\/p\u003e \u003cp\u003ePipelines 237\u003c\/p\u003e \u003cp\u003eBackground Processing 237\u003c\/p\u003e \u003cp\u003ewait 238\u003c\/p\u003e \u003cp\u003eCatching Hangups with nohup 239\u003c\/p\u003e \u003cp\u003eOther Features of \/proc and \/sys 242\u003c\/p\u003e \u003cp\u003eVersion 242\u003c\/p\u003e \u003cp\u003eSysRq 242\u003c\/p\u003e \u003cp\u003e\/proc\/meminfo 245\u003c\/p\u003e \u003cp\u003e\/proc\/cpuinfo 245\u003c\/p\u003e \u003cp\u003e\/sys 246\u003c\/p\u003e \u003cp\u003e\/sys\/devices\/system\/node 251\u003c\/p\u003e \u003cp\u003esysctl 253\u003c\/p\u003e \u003cp\u003eSummary 254\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 11: Choosing and Using Shells 255\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eThe Bourne Shell 256\u003c\/p\u003e \u003cp\u003eThe KornShell 256\u003c\/p\u003e \u003cp\u003eThe C Shell 256\u003c\/p\u003e \u003cp\u003eThe Tenex C Shell 257\u003c\/p\u003e \u003cp\u003eThe Z Shell 257\u003c\/p\u003e \u003cp\u003eThe Bourne Again Shell 257\u003c\/p\u003e \u003cp\u003eThe Debian Almquist Shell 258\u003c\/p\u003e \u003cp\u003eDotfiles 258\u003c\/p\u003e \u003cp\u003eInteractive Login Shells 259\u003c\/p\u003e \u003cp\u003eInteractive Non-Login Shells 260\u003c\/p\u003e \u003cp\u003eNon-Interactive Shells 261\u003c\/p\u003e \u003cp\u003eLogout Scripts 262\u003c\/p\u003e \u003cp\u003eCommand Prompts 262\u003c\/p\u003e \u003cp\u003eThe PS1 Prompt 262\u003c\/p\u003e \u003cp\u003eThe PS2, PS3, and PS4 Prompts 264\u003c\/p\u003e \u003cp\u003eAliases 265\u003c\/p\u003e \u003cp\u003eTimesavers 265\u003c\/p\u003e \u003cp\u003eModifying Behaviors 265\u003c\/p\u003e \u003cp\u003eHistory 266\u003c\/p\u003e \u003cp\u003eRecalling Commands 267\u003c\/p\u003e \u003cp\u003eSearching History 267\u003c\/p\u003e \u003cp\u003eTimestamps 268\u003c\/p\u003e \u003cp\u003eTab Completion 269\u003c\/p\u003e \u003cp\u003eksh 269\u003c\/p\u003e \u003cp\u003etcsh 270\u003c\/p\u003e \u003cp\u003ezsh 270\u003c\/p\u003e \u003cp\u003ebash 271\u003c\/p\u003e \u003cp\u003eForeground, Background, and Job Control 272\u003c\/p\u003e \u003cp\u003eBackgrounding Processes 272\u003c\/p\u003e \u003cp\u003eJob Control 273\u003c\/p\u003e \u003cp\u003enohup and disown 275\u003c\/p\u003e \u003cp\u003eSummary 276\u003c\/p\u003e \u003cp\u003e\u003cb\u003ePart II: Recipes For Using and Extending System Tools\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 12: File Manipulation 279\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003estat 279\u003c\/p\u003e \u003cp\u003ecat 281\u003c\/p\u003e \u003cp\u003eNumbering Lines 282\u003c\/p\u003e \u003cp\u003eDealing with Blank Lines 282\u003c\/p\u003e \u003cp\u003eNon-Printing Characters 283\u003c\/p\u003e \u003cp\u003ecat Backwards is tac 284\u003c\/p\u003e \u003cp\u003eRedirection 285\u003c\/p\u003e \u003cp\u003eRedirecting Output: The Single Greater-Than Arrow (\u0026gt;) 285\u003c\/p\u003e \u003cp\u003eAppending: The Double Greater-Than Arrow (\u0026gt;\u0026gt;) 286\u003c\/p\u003e \u003cp\u003eInput Redirection: The Single Less-Than Arrow (\u0026lt;) 288\u003c\/p\u003e \u003cp\u003eHere Documents: The Double Less-Than Arrow (\u0026lt;\u0026lt; EOF) 290\u003c\/p\u003e \u003cp\u003edd 292\u003c\/p\u003e \u003cp\u003edf 294\u003c\/p\u003e \u003cp\u003emktemp 295\u003c\/p\u003e \u003cp\u003ejoin 297\u003c\/p\u003e \u003cp\u003einstall 298\u003c\/p\u003e \u003cp\u003egrep 300\u003c\/p\u003e \u003cp\u003egrep Flags 300\u003c\/p\u003e \u003cp\u003egrep Regular Expressions 301\u003c\/p\u003e \u003cp\u003esplit 303\u003c\/p\u003e \u003cp\u003etee 304\u003c\/p\u003e \u003cp\u003etouch 306\u003c\/p\u003e \u003cp\u003efind 307\u003c\/p\u003e \u003cp\u003efind-exec 310\u003c\/p\u003e \u003cp\u003eSummary 313\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 13: Text Manipulation 315\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003ecut 315\u003c\/p\u003e \u003cp\u003eecho 316\u003c\/p\u003e \u003cp\u003edial1 316\u003c\/p\u003e \u003cp\u003edial2 319\u003c\/p\u003e \u003cp\u003efmt 320\u003c\/p\u003e \u003cp\u003ehead and tail 323\u003c\/p\u003e \u003cp\u003ePrizes 323\u003c\/p\u003e \u003cp\u003eWorld Cup 324\u003c\/p\u003e \u003cp\u003eod 328\u003c\/p\u003e \u003cp\u003epaste 331\u003c\/p\u003e \u003cp\u003epr 334\u003c\/p\u003e \u003cp\u003eprintf 335\u003c\/p\u003e \u003cp\u003eshuf 337\u003c\/p\u003e \u003cp\u003eDice Thrower 337\u003c\/p\u003e \u003cp\u003eCard Dealer 338\u003c\/p\u003e \u003cp\u003eTravel Planner 340\u003c\/p\u003e \u003cp\u003esort 341\u003c\/p\u003e \u003cp\u003eSorting on Keys 342\u003c\/p\u003e \u003cp\u003eSorting Log Files by Date and Time 344\u003c\/p\u003e \u003cp\u003eSorting Human-Readable Numbers 345\u003c\/p\u003e \u003cp\u003etr 346\u003c\/p\u003e \u003cp\u003euniq 350\u003c\/p\u003e \u003cp\u003ewc 351\u003c\/p\u003e \u003cp\u003eSummary 352\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 14: Tools For Systems Administration 353\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003ebasename 353\u003c\/p\u003e \u003cp\u003edate 355\u003c\/p\u003e \u003cp\u003eTypical Uses of date 355\u003c\/p\u003e \u003cp\u003eMore Interesting Uses of date 359\u003c\/p\u003e \u003cp\u003edirname 360\u003c\/p\u003e \u003cp\u003efactor 362\u003c\/p\u003e \u003cp\u003eidentity, groups, and getent 364\u003c\/p\u003e \u003cp\u003elogger 367\u003c\/p\u003e \u003cp\u003emd5sum 368\u003c\/p\u003e \u003cp\u003emkfi fo 370\u003c\/p\u003e \u003cp\u003eMaster and Minions 371\u003c\/p\u003e \u003cp\u003eReversing the Order 373\u003c\/p\u003e \u003cp\u003eNetworking 375\u003c\/p\u003e \u003cp\u003etelnet 376\u003c\/p\u003e \u003cp\u003enetcat 376\u003c\/p\u003e \u003cp\u003eping 378\u003c\/p\u003e \u003cp\u003eScripting ssh and scp 381\u003c\/p\u003e \u003cp\u003eOpenSSL 383\u003c\/p\u003e \u003cp\u003enohup 390\u003c\/p\u003e \u003cp\u003eseq 391\u003c\/p\u003e \u003cp\u003eInteger Sequences 391\u003c\/p\u003e \u003cp\u003eFloating Point Sequences 393\u003c\/p\u003e \u003cp\u003esleep 394\u003c\/p\u003e \u003cp\u003etimeout 394\u003c\/p\u003e \u003cp\u003eShutdown Script 396\u003c\/p\u003e \u003cp\u003eNetwork Timeout 399\u003c\/p\u003e \u003cp\u003euname 400\u003c\/p\u003e \u003cp\u003euuencode 401\u003c\/p\u003e \u003cp\u003exargs 402\u003c\/p\u003e \u003cp\u003eyes 405\u003c\/p\u003e \u003cp\u003eSummary 406\u003c\/p\u003e \u003cp\u003e\u003cb\u003ePart III: Recipes For Systems Administration\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 15: Shell Features 409\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eRecipe 15-1: Installing Init Scripts 409\u003c\/p\u003e \u003cp\u003eTechnologies Used 410\u003c\/p\u003e \u003cp\u003eConcepts 410\u003c\/p\u003e \u003cp\u003ePotential Pitfalls 410\u003c\/p\u003e \u003cp\u003eStructure 410\u003c\/p\u003e \u003cp\u003eRecipe 412\u003c\/p\u003e \u003cp\u003eInvocation 414\u003c\/p\u003e \u003cp\u003eSummary 414\u003c\/p\u003e \u003cp\u003eRecipe 15-2: RPM Report 414\u003c\/p\u003e \u003cp\u003eTechnologies Used 415\u003c\/p\u003e \u003cp\u003eConcepts 415\u003c\/p\u003e \u003cp\u003ePotential Pitfalls 415\u003c\/p\u003e \u003cp\u003eStructure 415\u003c\/p\u003e \u003cp\u003eRecipe 417\u003c\/p\u003e \u003cp\u003eInvocation 419\u003c\/p\u003e \u003cp\u003eSummary 420\u003c\/p\u003e \u003cp\u003eRecipe 15-3: Postinstall Scripts 421\u003c\/p\u003e \u003cp\u003eTechnologies Used 421\u003c\/p\u003e \u003cp\u003eConcepts 421\u003c\/p\u003e \u003cp\u003ePotential Pitfalls 422\u003c\/p\u003e \u003cp\u003eStructure 422\u003c\/p\u003e \u003cp\u003eRecipe 423\u003c\/p\u003e \u003cp\u003eInvocation 425\u003c\/p\u003e \u003cp\u003eSummary 426\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 16: Systems Administration 427\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eRecipe 16-1: init Scripts 427\u003c\/p\u003e \u003cp\u003eTechnologies Used 428\u003c\/p\u003e \u003cp\u003eConcepts 428\u003c\/p\u003e \u003cp\u003ePotential Pitfalls 429\u003c\/p\u003e \u003cp\u003eStructure 430\u003c\/p\u003e \u003cp\u003eRecipe 431\u003c\/p\u003e \u003cp\u003eInvocation 432\u003c\/p\u003e \u003cp\u003eSummary 433\u003c\/p\u003e \u003cp\u003eRecipe 16-2: CGI Scripts 433\u003c\/p\u003e \u003cp\u003eTechnologies Used 433\u003c\/p\u003e \u003cp\u003eConcepts 434\u003c\/p\u003e \u003cp\u003ePotential Pitfalls 434\u003c\/p\u003e \u003cp\u003eStructure 435\u003c\/p\u003e \u003cp\u003eRecipe 438\u003c\/p\u003e \u003cp\u003eInvocation 441\u003c\/p\u003e \u003cp\u003eSummary 445\u003c\/p\u003e \u003cp\u003eRecipe 16-3: Configuration Files 445\u003c\/p\u003e \u003cp\u003eTechnologies Used 445\u003c\/p\u003e \u003cp\u003eConcepts 445\u003c\/p\u003e \u003cp\u003ePotential Pitfalls 446\u003c\/p\u003e \u003cp\u003eStructure 446\u003c\/p\u003e \u003cp\u003eRecipe 446\u003c\/p\u003e \u003cp\u003eInvocation 447\u003c\/p\u003e \u003cp\u003eSummary 448\u003c\/p\u003e \u003cp\u003eRecipe 16-4: Locks 448\u003c\/p\u003e \u003cp\u003eTechnologies Used 448\u003c\/p\u003e \u003cp\u003eConcepts 448\u003c\/p\u003e \u003cp\u003ePotential Pitfalls 449\u003c\/p\u003e \u003cp\u003eStructure 450\u003c\/p\u003e \u003cp\u003eRecipe 453\u003c\/p\u003e \u003cp\u003eInvocation 455\u003c\/p\u003e \u003cp\u003eSummary 458\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 17: Presentation 459\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eRecipe 17-1: Space Game 459\u003c\/p\u003e \u003cp\u003eTechnologies Used 459\u003c\/p\u003e \u003cp\u003eConcepts 460\u003c\/p\u003e \u003cp\u003ePotential Pitfalls 462\u003c\/p\u003e \u003cp\u003eStructure 462\u003c\/p\u003e \u003cp\u003eRecipe 464\u003c\/p\u003e \u003cp\u003eInvocation 469\u003c\/p\u003e \u003cp\u003eSummary 470\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 18: Data Storage and Retrieval 471\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eRecipe 18-1: Parsing HTML 471\u003c\/p\u003e \u003cp\u003eTechnologies Used 471\u003c\/p\u003e \u003cp\u003eConcepts 472\u003c\/p\u003e \u003cp\u003ePotential Pitfalls 472\u003c\/p\u003e \u003cp\u003eStructure 472\u003c\/p\u003e \u003cp\u003eRecipe 473\u003c\/p\u003e \u003cp\u003eInvocation 474\u003c\/p\u003e \u003cp\u003eSummary 476\u003c\/p\u003e \u003cp\u003eRecipe 18-2: CSV Formatting 476\u003c\/p\u003e \u003cp\u003eTechnologies Used 476\u003c\/p\u003e \u003cp\u003eConcepts 476\u003c\/p\u003e \u003cp\u003ePotential Pitfalls 477\u003c\/p\u003e \u003cp\u003eStructure 477\u003c\/p\u003e \u003cp\u003eRecipe 478\u003c\/p\u003e \u003cp\u003eInvocation 480\u003c\/p\u003e \u003cp\u003eSummary 481\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 19: Numbers 483\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eRecipe 19-1: The Fibonacci Sequence 483\u003c\/p\u003e \u003cp\u003eTechnologies Used 483\u003c\/p\u003e \u003cp\u003eConcepts 484\u003c\/p\u003e \u003cp\u003ePotential Pitfalls 484\u003c\/p\u003e \u003cp\u003eStructure for Method 1 485\u003c\/p\u003e \u003cp\u003eRecipe for Method 1 486\u003c\/p\u003e \u003cp\u003eInvocation of Method 1 486\u003c\/p\u003e \u003cp\u003eStructure for Method 2 487\u003c\/p\u003e \u003cp\u003eRecipes for Method 2 488\u003c\/p\u003e \u003cp\u003eInvocations of Method 2 489\u003c\/p\u003e \u003cp\u003eStructure for Method 3 490\u003c\/p\u003e \u003cp\u003eRecipe for Method 3 490\u003c\/p\u003e \u003cp\u003eInvocation of Method 3 491\u003c\/p\u003e \u003cp\u003eSummary 492\u003c\/p\u003e \u003cp\u003eRecipe 19-2: PXE Booting 492\u003c\/p\u003e \u003cp\u003eTechnologies Used 492\u003c\/p\u003e \u003cp\u003eConcepts 493\u003c\/p\u003e \u003cp\u003ePotential Pitfalls 493\u003c\/p\u003e \u003cp\u003eStructure 493\u003c\/p\u003e \u003cp\u003eRecipe 494\u003c\/p\u003e \u003cp\u003eInvocation 497\u003c\/p\u003e \u003cp\u003eSummary 499\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 20: Processes 501\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eRecipe 20-1: Process Control 501\u003c\/p\u003e \u003cp\u003eTechnologies Used 501\u003c\/p\u003e \u003cp\u003eConcepts 502\u003c\/p\u003e \u003cp\u003ePotential Pitfalls 503\u003c\/p\u003e \u003cp\u003eStructure 503\u003c\/p\u003e \u003cp\u003eRecipe 506\u003c\/p\u003e \u003cp\u003eInvocation 511\u003c\/p\u003e \u003cp\u003eSummary 516\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 21: Internationalization 517\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eRecipe 21-1: Internationalization 517\u003c\/p\u003e \u003cp\u003eTechnologies Used 518\u003c\/p\u003e \u003cp\u003eConcepts 518\u003c\/p\u003e \u003cp\u003ePotential Pitfalls 519\u003c\/p\u003e \u003cp\u003eStructure 520\u003c\/p\u003e \u003cp\u003eRecipe 521\u003c\/p\u003e \u003cp\u003eInvocation 525\u003c\/p\u003e \u003cp\u003eSummary 526\u003c\/p\u003e \u003cp\u003e\u003cb\u003ePart IV: Reference\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eAppendix: Further Reading 529\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eShell Tutorials and Documentation 529\u003c\/p\u003e \u003cp\u003eArrays 530\u003c\/p\u003e \u003cp\u003eTools 530\u003c\/p\u003e \u003cp\u003eUnix Flavors 531\u003c\/p\u003e \u003cp\u003eShell Services 531\u003c\/p\u003e \u003cp\u003eGlossary 533\u003c\/p\u003e \u003cp\u003eIndex 539\u003c\/p\u003e\u003c\/font\u003e\u003c\/p\u003e\r\n\r\n\u003cp\u003e\u003cfont size=\"3\"\u003eSubject Areas: Computer hardware [\u003ca title=\"See our other books on Computer hardware\" href=\"https:\/\/freshlyprintedbooks.co.uk\/search?q=%22Computer%20hardware%20%5BUK%5D%22\"\u003eUK\u003c\/a\u003e]\u003c\/font\u003e\u003c\/p\u003e\r\n\r\n\r\n\u003c\/font\u003e","brand":"Wrox","offers":[{"title":"Brand New","offer_id":52503004184856,"sku":"9781118024485","price":29.66,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0730\/2037\/5320\/files\/9781118024485.jpg?v=1786323250","url":"https:\/\/freshlyprintedbooks.co.uk\/products\/shell-scripting-expert-recipes-for-linux-bash-and-more-paperback-softback-9781118024485","provider":"Freshly Printed Books","version":"1.0","type":"link"}