Ittcl
Introduction to the Command Line (2nd ed.)
Introduction to the Command Line is a popular free book (released under the GPL version 2) that introduces the use of standard Unix and GNU command-line tools to people who are new to the command line. The Bash shell, editors, simple text manipulation, and basic programming are discussed. The book was written in the mid-2000s and needs an update for the way people are working today.
The Free Software Foundation (FSF), in conjunction with FLOSS Manuals, wrote this book originally and is now coordinating the update. This wiki discusses how volunteers can help, and lists proposed changes we are considering in the second edition.
Contents
Writers
Please add yourself here if you want to write new material. Include:
- Your name
- Topic you want to write about (Python, Git, or other)
- Two or three sentences about your expertise
- Summary of writing or teaching experience in the area you want to write about
- Pointers to other relevant information, such as your code repository, curriculum vitae, or web page
We need only one person per topic because collaborations rarely work well. We will vote on writers on our mailing list.
Writer | Topics of Interest | Git | Python |
---|---|---|---|
Astika Nehra | Python for numpy, matplotlid, panda; Sentiment Analysis using "tweepy"; Unix Commands for Security Audits, Network Status (ifconfig, ping, tracert, whois, nslookup, dig) | ||
Patrick Geahan | Any of the Basics, Commands, Advancd-ish or Advanced sections; Nano editor; Bash scripting | ||
John B. Wyatt IV | Bash, Bash scripting, Git, Automation | ✔ | https://libreplanet.org/wiki/Ittcl |
Severino Tessarin | Python, Vim, regex | ✔
|
|
Vicente Eduardo Ribeiro Marçal | Python | ✔ | |
Akul Vohra | Python, Jupyter | ✔ | |
Muhammad Raza | Python, Git, Jupyter, Unix Commandline | ✔ | ✔ |
Sarah Masud | Python and/or Juypter | ✔ | |
Barett McGavock | Git | ✔ | |
Paula de la Hoz Garrido | Security | ||
troy | Any topic or issue that needs attention. | ||
Alexander Tolios | Any. flexible (preferences: git, vim, ssh, system administration, general cli usage), basically anything from the chapters 'basic', 'commands', 'advanced-ish', 'advanced' (except the 'interpreters'-subchapter) and 'editors' would be fine by me. | ✔ | |
Dave Rowson | General command-line usage, Vim, ssh and rsync | ||
Pablo Correa Gomez | General command-line usage, Emacs, Git, scripting | ✔ | |
Nikhil Reddy | Python, coreutils, network tools, text processing, Vim/Emacs. | ✔
|
- Your name
Astika Nehra
- username: astika
- Topic you want to write about (Python, Git, Jupyter, or other)
Python and Jupyter for - numpy, matplotlib, panda - Twitter Sentiment Analysis using "tweepy" Unix Commands for Security Audits, Network Status (ifconfig, ping, tracert, whois, nslookup, dig).
- Two or three sentences about your expertise
I am 2nd year B.Tech(Computer Science) student at Indira Gandhi Delhi Technical University for Women, New Delhi, India
- Summary of writing or teaching experience in the area you want to write about
This assignment will be my first work in technical writing. I have studied python for last 3 years during college as well as school. I am also studying C/C++, Machine Learning using Python, App Development using Android Studio, Networking. (2018-19)
- Pointers to other relevant information, such as your code repository, curriculum vitae, or web page
https://github.com/AstikaNehra/ https://www.hackerrank.com/astika_nehra School Projects: - Project work using C programming in Ardiuno Uno, Servo Motor, Ultrasonic Sensors for creating SONAR. (2017-18) - Shop Inventory management system in Python with SQLite database (2017-18)
- Name:
Patrick Geahan(pmgeahan)
- Topics:
Any of the Basics, Commands, Advancd-ish or Advanced sections; Nano editor; Bash scripting
- Writing and Teaching Experience
Professional educator, including instructional design for beginning and advanced computing courses Designer of two courses drawing on and expanding this manual
- Education
BS/Computer Science, 2000; MS, Computer Security, 2016. CISSP, GCIH, GSEC
- Publicly Availble Work
Due to the classification of much of my work, it is not publicly available.
Username: jbwyatt4 for Wiki, LibreBook, & GitLab.com
- Your name
John B. Wyatt IV
- Topic you want to write about (Python, Git, Jupyter, or other)
Bash, Bash scripting, Git, automation
- Two or three sentences about your expertise
Owner/Operator of WyattTechCourses.com (written in Rails).
Published author.
Bachelor's in Computer Science & Engineering, UC Merced.
- Summary of writing or teaching experience in the area you want to write about
Published two books and a course on server automation (Chef).
Have taught/tutored with GNU/Linux, C/C++, Ruby, and JavaScript.
- Pointers to other relevant information, such as your code repository, curriculum vitae, or web page
https://stackoverflow.com/users/story/1613327
My Dotfile Manager Tutorial, written in Chef. Listed on GitHub's list of dotfile managers & tutorials.
https://gitlab.com/jbwyatt4/chef_dotfile_manager_tutorial
- Your name
Severino Tessarin
- Topic you want to write about
Python,Vim,regex
- Two or three sentences about your expertise
I am a creative programmer with years of experience in several programming languages for applications related to information technology, science, and engineering. Currently developing a personalized application server entirely based on a python micro-framework (http://tessarinseve.pythonanywhere.com/).
- Summary of writing or teaching experience in the area you want to write about
Live coding talks and tutorials for beginners and professional data scientists.
- Pointers to other relevant information, such as your code repository, curriculum vitae, or web page
- Web Site :https://tessarinseve.pythonanywhere.com/]
- Blog:https://tessarinseve.pythonanywhere.com/shared/index.html
- Linkedin: https://www.linkedin.com/in/tessarinseve/
- Your name
Vicente Eduardo Ribeiro Marçal
- Topic you want to write about (Python, Git, Jupyter, or other)
Python
- Two or three sentences about your expertise
I'm a philosopher and logician. I work with Python to solve my daily problems. I teach Python in my free time!
- Summary of writing or teaching experience in the area you want to write about
I work with development and teach. I have 10 years how a professor and 3 years how a developer.
- Pointers to other relevant information, such as your code repository, curriculum vitae, or web page
https://github.com/Riverfount https://vicentemarcal.com
- Your name
Akul Vohra
- Topic you want to write about (Python, Git, Jupyter, or other)
Python, Jupyter
- Two or three sentences about your expertise
I work on personal projects and development usually in the field of data science.
- Summary of writing or teaching experience in the area you want to write about
Taught Python + Jupyter at a low level.
- Pointers to other relevant information, such as your code repository, curriculum vitae, or web page
https://akul.org https://github.com/akulvohra
- Your name
Muhammad Raza
- Topic you want to write about (Python, Git, Jupyter, or other)
Python,Git,Jupyter,Unix Commandline
- Two or three sentences about your expertise
I have 2 years of experience working in Python
- Summary of writing or teaching experience in the area you want to write about
I have taught JavaScript,Python,ExpressJS,Flask at a club in my college.
- Pointers to other relevant information, such as your code repository, curriculum vitae, or web page
I write about technology on my website https://muhammadraza.me/ https://github.com/mraza007/Python-for-beginners https://github.com/mraza007
- Your name
Sarah Masud
- Topic you want to write about (Python, Git, Jupyter, or other)
Python and or Juypter
- Two or three sentences about your expertise
Working in Python and ML for 2.5 years now.
- Summary of writing or teaching experience in the area you want to write about
Teaching experience: Conducted sessions(online and offline) on Python, ML in Python.
- Pointers to other relevant information, such as your code repository, curriculum vitae, or web page
- Github- https://github.com/sara-02
- Website- https://themessier.wordpress.com
- CV- https://themessier.wordpress.com/about/#CV
- Talk Demo- https://www.youtube.com/watch?v=XZW3mMkQzSg
- Your name
Barett McGavock
- Topic you want to write about (Python, Git, Jupyter, or other)
git
- Two or three sentences about your expertise
I have over 20 years of professional software engineering experience. This includes extensive use of both distributed and non-distributed source control systems (cvs, svn, p4, mercurial, git, Team Foundation, and several proprietary SCS systems). My broad background allows me to write more easily about the general things someone would want to accomplish with git. I have over 6 years of experience with git itself and have helped move multiple companies and departments from svn to git.
- Summary of writing or teaching experience in the area you want to write about
I write technical documentation including the developers' guide and environment setup guides at work. I have good writing skills, and am a native English speaker.
- Pointers to other relevant information, such as your code repository, curriculum vitae, or web page
I write code for REI.com, an outdoor retailer. I also volunteer to do IT administration work for a local softball organization. https://www.rei.com/ https://www.emeraldcitysoftball.org/
- Your name
Paula de la Hoz Garrido
- Topic you want to write about (Python, Git, Jupyter, or other)
Security
- Two or three sentences about your expertise
I'm a 23 years old cybersecurity analyst based in Spain. I've worked as pentester, analyst and auditor in different cybersecurity areas. I've founded a digital rights awareness association in Spain called Interferencias.
- Summary of writing or teaching experience in the area you want to write about
I gave several speeches in Spain, Belgium and Vienna, I as well have taught git/programming/security/robotics to different kind of students: kids, teens, post-graduate, highschool teachers and fine art students at the University of Granada, University of Valencia and private academies. I write articles in Spanish, English and Japanese in dev.to/terceranexus6. I've also collaborated with other Spanish websites (Polikracia) and got interviewed in national papers (El pais, 20 minutos). I run a section in a local radio of Madrid (Radio Vallekas) about technology.
- Pointers to other relevant information, such as your code repository, curriculum vitae, or web page
https://github.com/Terceranexus6 https://dev.to/terceranexus6 https://terceranexus6.github.io
- YOUR NAME
troy
- TOPIC YOU WANT TO WRITE ABOUT (Python, Git, Jupyter, or other)
will work on any topic or issue that needs attention
- TWO OR THREE SENTENCES ABOUT YOUR EXPERTISE
long time user of the command line on several different systems
- SUMMARY OF WRITING OR TEACHING EXPERIENCE (in the area you want to write about)
lots of technical and related writing as part different technical contract jobs i've held over the past 10 years. i've worked and written for really big tech companies writing to some very niche-y topics, but i've also done writing for tiny little start-ups, even one where i was their first employee and they had almost no documentation. just imagine how many acronyms i had to create by myself! i've written install docs, and configuration docs, and usage type docs for systems dudes and development gals and even for technical management folks, too. of some relevance may be the writing i've done on-boarding new customers to systems or for big, hairy (rawr!) multi-tier apps they've never used before. i also write a lot of email. and short notes to myself about things i need to do.
- POINTERS TO OTHER RELEVANT INFORMATION (such as your code repository, curriculum vitae, or web page)
no public pointers, sorry.
Alexander Tolios
- username: al.t
- topic to write about: flexible (preferences: git, vim, ssh, system administration, general cli usage), basically anything from the chapters 'basic', 'commands', 'advanced-ish', 'advanced' (except the 'interpreters'-subchapter) and 'editors' would be fine by me.
- about me: PhD-student, MSc in bioinformatics, primary focus in data analysis and automatization, several years of experience in system administration (although not professionally)
- teaching experience: courses on data science and analysis as well as general Linux usage for biologists (and other non-CS-folks)
- pointers: e.g. https://cfp.linuxwochen.at/de/LWW19/public/events/853 (talk was in German but presentation was written in English)
Dave Rowson (username: row44k)
- Topics to write about: General command-line usage, vim, ssh and rsync.
- I am a long-term, self taught, Linux user. I have used Linux personally for approximately 20 years and have installed, configured and maintained Linux servers in a school and office environment.
- I have no relevant teaching experience or pointers. Sorry!
Pablo Correa Gomez (username: pabloyoyoista)
- Topics to write about: General command-line usage, emacs, git, scripting.
- I am a seft-taught Linux user and system administration with a Bachelor in Engineering Physics. I am currently working as a professional system administrator for a Data Science department and have great expertise in scripting, configuring computer systems and setting git-based development strategies.
- I have organized workshops at my current jobs to teach and educate colleges on a proper use of git.
- I have no relevant pointers. Sorry!
- Your name
Nikhil Reddy
- username: nikhilp
- Topic you want to write about (Python, Git, Emacs, Vim, Unix Commands)
- Python for: Scripting and automation.
Also consuming APIs and building your own commandline tools.
- Unix Coreutils. - Grep/Sed/Awk.
- Two or three sentences about your expertise
I am Junior Undergrad studying Chemical Engineering at IIT Hyderabad, India. I do web development (including maintaining college websites) and simulations in Python. I also have an interest in Text Processing in Python. I've worked on backend using Go and used Rust for embedded systems. I do some sysadmining for college websites and hence have some familiarity with nagios, nmap,rsync.
- Summary of teaching or writing experience
I've written some guides for the students of my college on MicroPython and Arduino. I'm currently teaching at a Python bootcamp for college students; I've had audiences completely new to programming and those already with a CS background.
- Pointers to other relevant information, such as your code repository, curriculum vitae, or web page
https://github.com/thenarcissist
You won't really find much there. Sorry about that.
What to do
The current draft is on the FLOSS Manuals site. Contact Andy Oram (andyo at praxagora.com) to offer your help as a writer or reviewer.
Volunteers are coordinating their work on this wiki page. You can sign up for an account at the LibrePlanet wiki page and join the discussion.
The FSF recommends these guidelines for discussion.
Things to do to help include:
- Read parts of the book
- Try out parts on your computer and write notes in the book or on this page about problems such as:
- Outdated instructions, where better methods exist to accomplish the same goal.
- Important missing topics. (But remember that this book is only an introduction, and we want to keep it short by avoiding complex, advanced topics.)
- Errors.
- Confusing text.
- Add new topics to this wiki for the book. Again, please remember that we want to keep the book's length about the same. You can also suggest topics in the book that we could remove.
And tell your friends about this project!
Current Chapter and Section Listing of v.1
See Current Chapter and Section Listing of v.1 (first edition section and chapter listing with page numbers and page counts) or Content Inventory for an alternative view of first edition contents.
Version 1 versus Version 2, Tables
Version 1 | Proposed Changes | Version 2 |
---|---|---|
INTRODUCTION starts on p.1 (7 pages total for this chapter) Introduction p.1 - 5 About this Manual p.5 - 7 |
PROPOSED CHANGES ... Motivate the reader with common tasks; how command line can solve these tasks discuss making mention of Other Vendors' broadening support of Command line/Bash/other Unix tools . Microsoft, with Windows 10 command line and Debian in its App Store for example . Google, now supports Gnu/Linux tools natively in their 2019 Chromebooks |
INTRODUCTION |
BASICS starts on p.8 (13 pages total for this chapter) |
PROPOSED CHANGES ... introduce Grep earlier, as a simple way to search |
BASICS |
COMMANDS starts on p.21 (13 pages total for this chapter) |
PROPOSED CHANGES ... discuss adding Visual Bash remove file descriptors beyond 0, 1, 2 (too advanced for this book) consider moving "Cut Down on Typing" into Basics section. consider changing the name of this chapter to Beginning (as part of the series Beginning, Intermediate, Advanced) |
COMMANDS |
ADVANCED-ISH starts on p.34 (32 pages total for this chapter) |
PROPOSED CHANGES ... Add the <(command) feature as an alternative to piping something on Performance measurement something on Security considering changing the name of this chapter to Intermediate (as part of the series Beginning, Intermediate, Advanced) |
ADVANCED-ISH |
ADVANCED starts on p.66 (55 pages total for this chapter) |
PROPOSED CHANGES ... discuss making mention of FTP and Rsync, relatives of Telnet discuss making mention of Tmux and Byobu, near Screen Add a one-page quick-ref sheet to chapters on key tools Add explanation on difference between $(command) and (command) Remove section on 'Making Your Own Interpreter' (Seve: I am in favor of keeping this subsection, if possible) |
ADVANCED |
TEXT EDITORS starts on p.121 (22 pages in this chapter) |
PROPOSED CHANGES ... choose one or two: Nano Vim Emacs GEdit discuss where to add Markdown Add a one-page quick-ref sheet to chapters on key tools |
TEXT EDITORS |
SCRIPTING starts on p.142 (39 pages in this chapter) |
PROPOSED CHANGES ... Add a one-page quick-ref sheet to chapters on key tools |
SCRIPTING |
SCRIPTING LANGUAGES starts on p.180 (12 pages in this chapter) |
PROPOSED CHANGES ... Perl (Remove) Ruby (Remove) GNUOctave (Remove) Python (Add Chapter) Git (Add Chapter) discuss Making mention of IDEs discuss Data Science Project/ Data Manipulation project Add a one-page quick-ref sheet to chapters on key tools |
|
SECURITY | With minimal references to system-specific tools
|
|
APPENDICES starts on p.192 (70 pages in this chapter) |
PROPOSED CHANGES ... discuss the merits of keeping the Command Quickie section here if we are adding Quick Ref sheets to each chapter |
APPENDICES |
OS-specific commands
The following apply to the Unix/Linux family of systems, or subsets within that family. The trend in our discussions has been to avoid system-specific tools. But they are collected here so the ideas aren't forgotten.
- systemd (viewing/ starting/ stopping services etc)
- systemd journal (viewing entries/ errors)
- Boot times (systemd-analyze)
- Memory usage (free/ top)
- Disk usage/ mount points and options/ filetypes (fdisk/ lsblk/ mount)
- Networking/ connections (ip/ ping/ traceroute)
- Identifying listening services (ss)
- Basic system security
- File permissions (moved from section 17) + noexec/ nosuid
- SELinux/ Apparmor/ PAM (?)
- Firewall rules
Content Inventory Based on First Edition
Content inventory based on the first edition of Introduction to the Command Line provides an alternate view of the book's structure and content. Inventory assumes that some previously discussed changes (e.g., eliminating various chapters) will occur, so it is not an exact representation of the first edition. (Also includes the chapter on Git which was added after the first edition.)
Markdown version with images
A markdown version of the "Introduction to the Command Line" is available on this wiki. It was created from the epub version available at https://archive.flossmanuals.net/_booki/command-line/command-line.epub.
Source files
Source files, albeit imperfect, are available here https://static.fsf.org/nosvn/gnu-press/source-files/books/Intro-to-Command-Line.zip