Ittcl

From LibrePlanet
Jump to: navigation, search


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.

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://wyatttechcourses.com/

http://jbwyatt4.com

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)
Getting Started p.8 - 12
Beginning Syntax p.12 - 15
Moving Around p.16 - 20

PROPOSED CHANGES ...
introduce Grep earlier, as a simple way to search
BASICS
COMMANDS

starts on p.21 (13 pages total for this chapter)
Basic Commands p.21 - 27
Standard Files p.27 - 29
Cut Down on Typing p.30 - 31
SuperUsers p.31 - 32
Redirection p.32 - 33

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)
Multiple Files p.34 - 45
Searching for Files p.46 - 48
Piping p.49 - 54
Processes p.55 - 57
File Structure p.58 - 59
Command History p.60 - 65

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)
Permissions p.66 - 71
Interactive Editing p.72 - 77
Checking Exit p.78 - 82
Sub-Commands p.83 - 85
Moving Again p.85 - 87
Customisation p.87 - 99
Parameter Substitution p.100 - 101
GNUScreen p. 101 - 105
SSH p.106 - 109
Git (listed in contents, but no written pages)
Installing Software p.109 - 115
Making Your Own Interpreter p.115 - 120

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)
Text Editors p.121 - 123
Nano p.124 - 126
Vim p.126 - 131
Emacs p.132 - 135
KEdit p.136 - 139
GEdit p.140 - 142

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)
Scripting p.142 - 149
Maintaining Scripts p.149 -160
Other Languages p.161 - 161
Sed p.162 - 168
Awk p.169 - 172
Regular Expressions p.172 - 180

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)
Perl p.181 - 183
Python p.183 - 186
Ruby p.186 - 188
GNU Octave p.188 - 192

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
  • Managing file permissions
  • Managing groups and users
  • Background on the root user and sudo
  • Visudo
  • Passwordless ssh using private/public key pairs
  • Encryption with gpg
  • Removing sensitive files with shred
  • Managing passwords: e.g. `pass` - https://www.passwordstore.org)...
APPENDICES

starts on p.192 (70 pages in this chapter)
Glossary p.192 - 206
Command Quickie p.207 - 229
Outline p.229 - 236
Credits p.236 - 261

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