16
The Command Line

Missouri State University - The Command Linecourses.missouristate.edu/anthonyclark/333/lectures/05... · 2020-02-27 · For Reference: Customizing Bash ~/.bash_profile should be super-simple

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Missouri State University - The Command Linecourses.missouristate.edu/anthonyclark/333/lectures/05... · 2020-02-27 · For Reference: Customizing Bash ~/.bash_profile should be super-simple

The Command Line

Page 2: Missouri State University - The Command Linecourses.missouristate.edu/anthonyclark/333/lectures/05... · 2020-02-27 · For Reference: Customizing Bash ~/.bash_profile should be super-simple

Unix

• Function over form (as opposed to Windows form over function)• In Unix, “a word is worth a thousand mouse clicks.”• More efficiency and quicker (once you get some experience)• Can automate many tasks

• Examples: OS X and Ubuntu

Page 3: Missouri State University - The Command Linecourses.missouristate.edu/anthonyclark/333/lectures/05... · 2020-02-27 · For Reference: Customizing Bash ~/.bash_profile should be super-simple

Learning Resources

• http://matt.might.net/articles/basic-unix/• http://matt.might.net/articles/settling-into-unix/• https://unix.stackexchange.com/• https://www.udacity.com/course/linux-command-line-basics--ud595

Page 4: Missouri State University - The Command Linecourses.missouristate.edu/anthonyclark/333/lectures/05... · 2020-02-27 · For Reference: Customizing Bash ~/.bash_profile should be super-simple

Copying Remote Files

• rsync is my preferred command

• But scp is available with Git-Bash• scp local_file aclark@grok:~/• scp aclark@grok:~/remote_file .

Page 5: Missouri State University - The Command Linecourses.missouristate.edu/anthonyclark/333/lectures/05... · 2020-02-27 · For Reference: Customizing Bash ~/.bash_profile should be super-simple

Basic Commands

cd : change to a different directory (., .., ../..)ls : list files and directories in the current working directorypwd : print the current working directorycat : easy way to print a file (does quite a bit more though)less : read through a longer file (press q to quit)vim : pretty powerful command-line text editor (or nano or emacs)man : a command for accessing the manual of different commandsgrep : search for text inside files (ripgrep is better)find : search for files by name (fd is better)ssh : secure shell to remotely control a different computer

Page 6: Missouri State University - The Command Linecourses.missouristate.edu/anthonyclark/333/lectures/05... · 2020-02-27 · For Reference: Customizing Bash ~/.bash_profile should be super-simple

File Permissions

Every file and directory has:• An owner, • A group, and• A set of permissions

chmod : change file modes (permissions)chown : change the owner of a filechgrp : change the group of a file

Page 7: Missouri State University - The Command Linecourses.missouristate.edu/anthonyclark/333/lectures/05... · 2020-02-27 · For Reference: Customizing Bash ~/.bash_profile should be super-simple

Pipes, Redirection, and Flags/Options

• Most commands take input from STDIN• Most commands write output to STDOUT• Most commands write errors to STDERR• Input and output act as if you were interacting with a Python program• You can redirect STDIN and STDOUT using < and >• You can use a pipe one program’s STDOUT to another’s STDIN

• Many commands take flags to change the output• For example: ls -lah

Page 8: Missouri State University - The Command Linecourses.missouristate.edu/anthonyclark/333/lectures/05... · 2020-02-27 · For Reference: Customizing Bash ~/.bash_profile should be super-simple

Glob Matching

• You can use a * to match any number of unknown characters (*.py)• You can use a ? To match exactly one unknown character (*.c??)• You can use […] to match a set of characters (*.c[px][px])

Page 9: Missouri State University - The Command Linecourses.missouristate.edu/anthonyclark/333/lectures/05... · 2020-02-27 · For Reference: Customizing Bash ~/.bash_profile should be super-simple

Environment Variables and PATH

• Run env to see all environment variables• Available to all programs run in the shell

• PATH is a list of directories in which the shell will look for programs

Page 10: Missouri State University - The Command Linecourses.missouristate.edu/anthonyclark/333/lectures/05... · 2020-02-27 · For Reference: Customizing Bash ~/.bash_profile should be super-simple

Terminals and Consoles (or Konsole)

• tty: teletype, dating back to the late 1800s• Interfacing with computers (a terminal or a physical console)• These are terms for things you use to interact with a computer• Examples: iterm, iterm2, konsole, xterm, etc.

• Now, when you hear terminal it is an emulated input/output device• It is more or less just a GUI (or a windowed program) that acts like the

old physical terminals/consoles

Page 11: Missouri State University - The Command Linecourses.missouristate.edu/anthonyclark/333/lectures/05... · 2020-02-27 · For Reference: Customizing Bash ~/.bash_profile should be super-simple

Shell

• A shell is the software that a user interacts with

• It interprets user commands and starts/runs/monitors other programs

• Examples: bash, fish, zsh

• Users can also write scripts in a language provided by the shell

Page 12: Missouri State University - The Command Linecourses.missouristate.edu/anthonyclark/333/lectures/05... · 2020-02-27 · For Reference: Customizing Bash ~/.bash_profile should be super-simple

Terminal or Shell?

Terminal• Handles key and turns them into

control sequences

• Scroll-back history

• Acts on display commands

Shell• Handles control sequences

• Command history, tab-completion, etc.

• Sets display info (color, text, etc.)• Manages the prompt

Page 13: Missouri State University - The Command Linecourses.missouristate.edu/anthonyclark/333/lectures/05... · 2020-02-27 · For Reference: Customizing Bash ~/.bash_profile should be super-simple

Options on Windows

1. PuTTY: is a free implementation of SSH and Telnet for Windows and Unix platforms, along with an xterm terminal emulator.

2. Linux on Windows: enabled by Windows Subsystem for Linux

3. Git for Windows: Git for Windows provides a BASH emulation used to run Git from the command line. It is essentially a Cygwin-derived shell using a terminal called mintty.

4. Cygwin: a set of Unix tools that have been patched and compiled for Windows.

Page 14: Missouri State University - The Command Linecourses.missouristate.edu/anthonyclark/333/lectures/05... · 2020-02-27 · For Reference: Customizing Bash ~/.bash_profile should be super-simple

Cygwin vs WSL

• You can think of Cygwin as a set of libraries that help you port code from POSIX to the Win API

• The WSL, on the other hand, let’s you run ELF binaries directly on windows without porting

• It does this by effectively translating POSIX system calls to WIN system calls on the fly

• Wine is the opposite of Cygwin

Page 15: Missouri State University - The Command Linecourses.missouristate.edu/anthonyclark/333/lectures/05... · 2020-02-27 · For Reference: Customizing Bash ~/.bash_profile should be super-simple

For Reference: Customizing Bash~/.bash_profile should be super-simple and just load .profile and .bashrc (in that order)

~/.profile has the stuff NOT specifically related to bash, such as environment variables (PATH and friends)

~/.bashrc has anything you'd want at an interactive command line. Command prompt, EDITOR variable, bash aliases for my use

A few other notes:

• Anything that should be available to graphical applications OR to sh (or bash invoked as sh) MUST be in ~/.profile

• ~/.bashrc should not output anything

• Anything that should be available only to login shells should go in ~/.profile

• Ensure that ~/.bash_login does not exist.

Page 16: Missouri State University - The Command Linecourses.missouristate.edu/anthonyclark/333/lectures/05... · 2020-02-27 · For Reference: Customizing Bash ~/.bash_profile should be super-simple

https://blog.flowblok.id.au/2013-02/shell-startup-scripts.html