$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Learn you some shell for your own good
Search
Mattia Gheda
July 03, 2014
Technology
4
210
Learn you some shell for your own good
A Shell introduction for the Ember/Web Developer
Mattia Gheda
July 03, 2014
Tweet
Share
More Decks by Mattia Gheda
See All by Mattia Gheda
un-uploader-demo
ghedamat
1
4.4k
Other Decks in Technology
See All in Technology
AlmaLinux + KVM + Cockpit で始めるお手軽仮想化基盤 ~ 開発環境などでの利用を想定して ~
koedoyoshida
0
110
WordPress は終わったのか ~今のWordPress の制作手法ってなにがあんねん?~ / Is WordPress Over? How We Build with WordPress Today
tbshiki
2
820
Reinforcement Fine-tuning 基礎〜実践まで
ch6noota
0
190
寫了幾年 Code,然後呢?軟體工程師必須重新認識的 DevOps
cheng_wei_chen
1
1.5k
シニアソフトウェアエンジニアになるためには
kworkdev
PRO
3
180
GitHub Copilotを使いこなす 実例に学ぶAIコーディング活用術
74th
3
3.5k
生成AI時代におけるグローバル戦略思考
taka_aki
0
200
S3を正しく理解するための内部構造の読解
nrinetcom
PRO
2
170
AIの長期記憶と短期記憶の違いについてAgentCoreを例に深掘ってみた
yakumo
4
440
30分であなたをOmniのファンにしてみせます~分析画面のクリック操作をそのままコード化できるAI-ReadyなBIツール~
sagara
0
180
20251219 OpenIDファウンデーション・ジャパン紹介 / OpenID Foundation Japan Intro
oidfj
0
160
チーリンについて
hirotomotaguchi
6
2.1k
Featured
See All Featured
We Are The Robots
honzajavorek
0
110
Amusing Abliteration
ianozsvald
0
60
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
Making Projects Easy
brettharned
120
6.5k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.6k
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
0
81
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
110
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.5k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.1k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.6k
Transcript
$ Learn you some shell for your own good (A
shell introduction* for Ember developers) * absolutely non exhaustive ** some concepts might be simplified
@ghedamat @unspace
Let’s talk about ember
Let’s talk about ember
Let’s talk about the shell #!/bin/bash sh — shell, the
standard command language interpreter (source $man shell)
What is it and why should I care? * Main
interface to the OS * It’s everywhere * You use it every day * Not just a task runner
There’s not only one * sh - the beginning *
bash (Bourne Again SHell) * zsh - it’s good * commands (like cd, ls, cp…)are separate * some commands can differ between Linux/OSX/bsd
Part 1 - Commands Do one thing and do it
well
$ man displays manual pages for commands (yes you can
do $ man man)
$ cd change (working) directory (if no directory given go
to $HOME) ($HOME is your usually /home/user) ($HOME is aliased to ~)
$ cd - go to previous directory every `cd` sets
$OLDPWD to the last visited directory
$ pwd print working directory in case you’re lost
$ ls list directory contents * -lh (list nicely and
human readable sizes) * -a (shows hidden files) * -t (sort by most recent)
$ cp copy files (cp -r mydir destdir/) * -r
recursive * copies mydir into destdir * beware OSX (cp mydir/ destdir/ copies content of mydir)
$ mv move files * no need for -r
$ which shows the path of a command * which
ls /bin/ls
$ watch executes a command periodically * useful to “watch”
for operations * watch ls -lh filename
$ cat concatenate files and print * get the content
of a file immediately * useful for scripting * `dog` is a valid alternative (no kidding)
$ less quickly read through a file * scroll around
with keyboard * vim keys * less - opposite of more (from the man)
$ tail output last part of a file * -n
lines from end of file * -f keep waiting for updates * --pid=ID stops watching when pid dies
$ touch change file timestamp (or create it)
$ df $ du monitor space usage of disk or
directory * -h is your friend
$ find find files * find PATH -name PATTERN
$ grep print lines matching a pattern * -r grep
in files recursively * -i case insensitive (slow)
$ ack $ ag grep for code * much better
use <TAB> tab completion is awesome * configure it properly
* completion for command’s options
$ pushd/popd - dirs change directory by using a stack
* pushd `cd` and pushes it onto the stack * popd pops the first one and `cd` to i * dirs shows the current stack * cd +N -N
There are MANY more rm, cut, tail, head, dd, echo...
1: Learn some commands just pick one and try to
use it
Part 2 - Navigation Don’t use the arrows (mostly emacs
navigation)
ctrl-f ctrl-b move to next/previous char on the line $
alt-a | alt-e moves by word
ctrl-a ctrl-e beginning/end of line
ctrl-s ctrl-r search forward/backward * you always have a command
history * $ cat ~/.bash_history
ctrl-p ctrl-n previous/next command in the history
2: Don’t use the arrows shortcuts are faster * tip:
remap CAPS to CTRL
Part 3 - Editing change the line
ctrl-u kill line * kill means delete
kill until end of line ctrl-k
* kill prev word * kill prev char * kill
next char ctrl-w ctrl-h ctrl-d
enter current line ctrl-o
clear screen * same as `clear` ctrl-l
switch chars * useful for typos * sl -> ls
ctrl-t
edit current line in $EDITOR * you can set a
default editor for the terminal * great for complex commands ctrl-x ctrl-e
3: Edit the line it’s ok to make mistakes *
psss: there’s a vim mode too...
Part 4 - Processes to kill or to sleep (ask
me about signals later)
kills current process * easy way out * sends SIGINT
* (it’s actually way more complicated than that) ctrl-c
suspend current process * returns you to the shell *
process is “on-hold” * sends SIGTSTP ctrl-z
sends <command> to the background * you can also suspend
and then call ‘bg’ $ <command> &
jobs: list jobs and their statuses fg [N]: resumes a
job $ jobs $ fg
$ ps $ top know your processes * ps aux
| print list of processes * top | interactive interface * htop | fancier top
4: Multitask you can do a lot in one shell
Summary 1: Learn some commands 2: Don’t use the arrows
3: Edit the line 4: Multitask
That’s it?
Not at all...
..but I’ll stop...
...for now :)
Thanks! @ghedamat (Unspace)
...
None
Extras:
Part 5 - Redirects & Pipes in and out
> redirect output to file * >> redirects and appends
to file * cat filename >> otherfile
< redirect input from file * sets the stdin for
a command * cat < filename
| “pipe” the output of a program into the input
of another $ ls -l | grep -i name
Part 6 - Replace change is good
$ cp file{.txt,.meow} bash string manipulation * can do MUCH
more than this
$ sed transform text * sed -i -r ‘s/wow/meow/g’ *
good for scripts
Part 7 - Tools add good stuff
get a shortcut opening a terminal should be FAST *
alt+x is my favorite
$ autojump $ fast remember where you cd gets you
there fast * j fuzzymatchagainstpath
$ screen $ tmux multiplex your terminal * great for
servers * even better for development * tiling is good
$ tmuxinator predefined tmux configurations * quickly boot a project
(webserver, test runner, logs, editor)
$ tmate tmux based pairing env * insanely good *
(you need to use a terminal editor)
Ok, Enough...
...but feel free to ask more!
Thanks!! @ghedamat (Unspace)