SlideShare ist ein Scribd-Unternehmen logo
1 von 43
Downloaden Sie, um offline zu lesen
@ma$hewhaworth
SSH@ma$hewhaworth
Make use of SSH
conïŹg
@ma$hewhaworth
SSH ConïŹg ïŹle
# ~/.ssh/config
Host myclient-dev
HostName dev.example.com
Port 2020
User myclientu
IdentityFile ~/.ssh/id_rsa
@ma$hewhaworth
SSH ConïŹg ïŹle
# ~/.ssh/config
Host myclient-dev
HostName dev.example.com
Port 2020
User myclientu
IdentityFile ~/.ssh/id_rsa
$ ssh myclient-dev
@ma$hewhaworth
Use screen
@ma$hewhaworth
screen
Start terminal sessions that you can
disconnect from and resume at any
3me.
@ma$hewhaworth
Screen Cheatsheet
# Create and name a new screen session
$ screen -S <name>
# Detach from screen (but keep it alive)
$ Ctrl+a d
# Resume a named session
$ screen -r <name>
# List active sessions
$ screen -ls
# Catch all (use existing, or create new)
$ screen -dRR
@ma$hewhaworth
Escape a dead
SSH connec-on
@ma$hewhaworth
Enter ~ .
Kills a dead SSH session and lets you
keep your terminal
@ma$hewhaworth
Files@ma$hewhaworth
Tricks to ge,ng
around
@ma$hewhaworth
This makes me want to kill you
$ cd app
$ cd code
$ cd MyVendor
$ cd MyModule
$ cd etc
$ cd ../../..
$ cd ..
$ cd ..
@ma$hewhaworth
This is much nicer
$ cd app/code/MyVendor/MyModule/etc
$ cd -
@ma$hewhaworth
Using tar for archiving and compression
@ma$hewhaworth
Tar
tar czf myarchive.tar.gz <files>
c - Create new archive
z - Zip
f - Filename
@ma$hewhaworth
@ma$hewhaworth
T-arghh!
$ tar czf magento_backup.tar.gz <files>
c - Create
z - Ze
f - Files
@ma$hewhaworth
T-arghh!
$ tar czf magento_backup.tar.gz <files>
c - Create
z - Ze
f - Files
$ tar xzf magento_backup.tar.gz
x - eXtract
z - Ze
f - Files
@ma$hewhaworth
A bit more on tar
# Extract to specific directory
$ tar xf magento_ce.tar.gz -C myDirectory
# Only extract a particular file
$ tar xf magento_ce.tar.gz magento
@ma$hewhaworth
mkdir magic
@ma$hewhaworth
mkdir magic
-p allows you to create children and parents at the
same 4me
# Verbose
$ mkdir app && mkdir app/code && mkdir app/code/MyModule
# Better
$ mkdir -p app/code/MyModule
@ma$hewhaworth
mkdir magic
Using {} allows you to create mul4ple directories at
once
$ mkdir -p app/code/MHCommerce/{ShippingMethods,Checkout}/{Block,Model,etc}
└── app
└── code
└── MHCommerce
├── Checkout
│   ├── Block
│   ├── Model
│   └── etc
└── ShippingMethods
├── Block
├── Model
└── etc
@ma$hewhaworth
tree
$ brew install tree
$ tree
└── app
└── code
└── MHCommerce
├── Checkout
│   ├── Block
│   ├── Model
│   └── etc
└── ShippingMethods
├── Block
├── Model
└── etc
@ma$hewhaworth
Keeping an eye on ïŹles
@ma$hewhaworth
less and Shift + F
Browse ïŹle and s-ck to the bo3om
$ less var/log/system.log
[Shift + F]
@ma$hewhaworth
tail -f
Print end of ïŹle to standard out
# Prints last ten lines to standard out
$ tail var/log/system.log
# Prints the end of the file continuously
$ tail -f var/log/system.log
# Print last x lines
$ tail -f -n20 var/log/system.log
@ma$hewhaworth
watch
Con$nuously execute a command
$ brew install watch
$ watch -n[update_interval] "[command]"
$ watch -n1 "cat var/log/system.log"
$ watch -n0.1 "ls -lsah"
@ma$hewhaworth
Other useful ïŹle based commands
- grep - Filter lines in a file
- sed - Find and replace on a file
- awk - More complex text manipulation
@ma$hewhaworth
Processes
@ma$hewhaworth
Keeping processes
quiet
@ma$hewhaworth
Background Processes with &
$ tar czf backup.tar.gz magento &
[1] 13281
$ jobs
[1] + running tar czf backup.tar.gz magento
# some time later ...
[1] + 13281 done tar czf backup.tar.gz magento
@ma$hewhaworth
Hal$ng Processes
$ tar czf backup.tar.gz magento
[Ctrl + z]
[1] + 13552 suspended tar czf backup.tar.gz magento
$ bg
[1] + 13552 continued tar czf backup.tar.gz magento
$ jobs
[1] + running tar czf backup.tar.gz magento
$ fg
[1] + 13613 running tar czf backup.tar.gz magento
@ma$hewhaworth
Hal$ng SSH
SSH is just another process, it can be halted and
resumed in the same way
$ ssh my-client-staging
my-client-staging $
Enter + ~ then [Ctrl + z]
[1] + 13702 suspended ssh my-client-staging
$ fg
[1] + 13702 continued ssh my-client-staging
my-client-staging $ ls #...
@ma$hewhaworth
Pipe viewer
View the progress of pipe'd input
$ brew install pv
$ pv db.sql | mysql -uroot my_client_db
178MiB 0:00:38 [17.9MiB/s] [==========> ] 60% ETA 0:00:28
@ma$hewhaworth
Other useful process based commands
- top - See a process list
- htop - See a colourful and more interactive process list
- ps - Print out processes to std out, use `ps aux`
- kill - Kill a process by id
- killall - Kill all processes with a certain name
@ma$hewhaworth
Shortcuts
@ma$hewhaworth
Forgot sudo? Lazy?
$ service mysql restart
Permission denied
$ sudo !!
MySQL restarted
# equivalent to...
$ sudo service mysql restart
MySQL restarted
@ma$hewhaworth
Already wri+en a ïŹle path once? Lazy?
$ ls -lash app/etc/env.php
$ vim !$
# equivalent to...
$ vim app/etc/env.php
@ma$hewhaworth
Want to pull in a command from history?
$ history
...
1028 ls -lash
1029 vim app/etc/local.xml
1030 rm app/etc/local.xml
# Re-run command 1028
$ !1028
OR
[Ctrl + r] allows you to search through previous commands
@ma$hewhaworth
Wri$en a command that's star1ng to
get too long?
[Ctrl + x] [Ctrl + e]
This will open a text editor containing the command
you currently have wri7en on the command line
@ma$hewhaworth
Further Reading
Mac users
---------
- https://brew.sh/ - Homebrew
- https://github.com/robbyrussell/oh-my-zsh
All Unix
--------
- http://www.commandlinefu.com/
- https://github.com/learnbyexample/
@ma$hewhaworth
Thank you!
SpeciïŹcally those who suïŹ€ered my prac5ce runs...
Sam Beckingham-Cook: @SamboBeckingham
Lee Frankland: @leefrankland
Lissie Cox: @LissieCox
Phil Turner: @FlipTurner
Vinai Kopp: @VinaiKopp
@ma$hewhaworth

Weitere Àhnliche Inhalte

Was ist angesagt?

Simple php backdoor_by_dk
Simple php backdoor_by_dkSimple php backdoor_by_dk
Simple php backdoor_by_dk
Stan Adrian
 
Asynchronous I/O in PHP
Asynchronous I/O in PHPAsynchronous I/O in PHP
Asynchronous I/O in PHP
Thomas Weinert
 

Was ist angesagt? (20)

Web Apps in Perl - HTTP 101
Web Apps in Perl - HTTP 101Web Apps in Perl - HTTP 101
Web Apps in Perl - HTTP 101
 
Ruby 1.9
Ruby 1.9Ruby 1.9
Ruby 1.9
 
Writing Modular Command-line Apps with App::Cmd
Writing Modular Command-line Apps with App::CmdWriting Modular Command-line Apps with App::Cmd
Writing Modular Command-line Apps with App::Cmd
 
Simple php backdoor_by_dk
Simple php backdoor_by_dkSimple php backdoor_by_dk
Simple php backdoor_by_dk
 
Cis 216 – shell scripting
Cis 216 – shell scriptingCis 216 – shell scripting
Cis 216 – shell scripting
 
Bash Scripting Workshop
Bash Scripting WorkshopBash Scripting Workshop
Bash Scripting Workshop
 
Process monitoring in UNIX shell scripting
Process monitoring in UNIX shell scriptingProcess monitoring in UNIX shell scripting
Process monitoring in UNIX shell scripting
 
Simple tricks to speed you up on the command line
Simple tricks to speed you up on the command lineSimple tricks to speed you up on the command line
Simple tricks to speed you up on the command line
 
Bash Scripting
Bash ScriptingBash Scripting
Bash Scripting
 
clonehd01
clonehd01clonehd01
clonehd01
 
React PHP: the NodeJS challenger
React PHP: the NodeJS challengerReact PHP: the NodeJS challenger
React PHP: the NodeJS challenger
 
Tres Gemas De Ruby
Tres Gemas De RubyTres Gemas De Ruby
Tres Gemas De Ruby
 
The promise of asynchronous PHP
The promise of asynchronous PHPThe promise of asynchronous PHP
The promise of asynchronous PHP
 
Mojo as a_client
Mojo as a_clientMojo as a_client
Mojo as a_client
 
ZeroMQ Is The Answer
ZeroMQ Is The AnswerZeroMQ Is The Answer
ZeroMQ Is The Answer
 
Paexec -- distributed tasks over network or cpus
Paexec -- distributed tasks over network or cpusPaexec -- distributed tasks over network or cpus
Paexec -- distributed tasks over network or cpus
 
Asynchronous I/O in PHP
Asynchronous I/O in PHPAsynchronous I/O in PHP
Asynchronous I/O in PHP
 
Unix 5 en
Unix 5 enUnix 5 en
Unix 5 en
 
Module 03 Programming on Linux
Module 03 Programming on LinuxModule 03 Programming on Linux
Module 03 Programming on Linux
 
Tempos modernos com fabric
Tempos modernos com fabricTempos modernos com fabric
Tempos modernos com fabric
 

Ähnlich wie Using the Command Line with Magento

Linuxserver harden
Linuxserver hardenLinuxserver harden
Linuxserver harden
Gregory Hanis
 

Ähnlich wie Using the Command Line with Magento (20)

Really useful linux commands
Really useful linux commandsReally useful linux commands
Really useful linux commands
 
A journey through the years of UNIX and Linux service management
A journey through the years of UNIX and Linux service managementA journey through the years of UNIX and Linux service management
A journey through the years of UNIX and Linux service management
 
NYPHP March 2009 Presentation
NYPHP March 2009 PresentationNYPHP March 2009 Presentation
NYPHP March 2009 Presentation
 
Puppet @ Seat
Puppet @ SeatPuppet @ Seat
Puppet @ Seat
 
Session Server - Maintaing State between several Servers
Session Server - Maintaing State between several ServersSession Server - Maintaing State between several Servers
Session Server - Maintaing State between several Servers
 
Introduction to WP-CLI: Manage WordPress from the command line
Introduction to WP-CLI: Manage WordPress from the command lineIntroduction to WP-CLI: Manage WordPress from the command line
Introduction to WP-CLI: Manage WordPress from the command line
 
How we used ruby to build locaweb's cloud (http://presentations.pothix.com/ru...
How we used ruby to build locaweb's cloud (http://presentations.pothix.com/ru...How we used ruby to build locaweb's cloud (http://presentations.pothix.com/ru...
How we used ruby to build locaweb's cloud (http://presentations.pothix.com/ru...
 
lec4.docx
lec4.docxlec4.docx
lec4.docx
 
Ssh cookbook v2
Ssh cookbook v2Ssh cookbook v2
Ssh cookbook v2
 
Ssh cookbook
Ssh cookbookSsh cookbook
Ssh cookbook
 
EC2
EC2EC2
EC2
 
My sql administration
My sql administrationMy sql administration
My sql administration
 
Linuxserver harden
Linuxserver hardenLinuxserver harden
Linuxserver harden
 
Ubic
UbicUbic
Ubic
 
Ubic-public
Ubic-publicUbic-public
Ubic-public
 
Ultimate Unix Meetup Presentation
Ultimate Unix Meetup PresentationUltimate Unix Meetup Presentation
Ultimate Unix Meetup Presentation
 
screen and tmux
screen and tmuxscreen and tmux
screen and tmux
 
Dtalk shell
Dtalk shellDtalk shell
Dtalk shell
 
FreeBSD: Dev to Prod
FreeBSD: Dev to ProdFreeBSD: Dev to Prod
FreeBSD: Dev to Prod
 
Capital onehadoopclass
Capital onehadoopclassCapital onehadoopclass
Capital onehadoopclass
 

KĂŒrzlich hochgeladen

+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎+971_581248768%)**%*]'#abortion pills for sale in dubai@
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 

KĂŒrzlich hochgeladen (20)

Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 

Using the Command Line with Magento

  • 3. Make use of SSH conïŹg @ma$hewhaworth
  • 4. SSH ConïŹg ïŹle # ~/.ssh/config Host myclient-dev HostName dev.example.com Port 2020 User myclientu IdentityFile ~/.ssh/id_rsa @ma$hewhaworth
  • 5. SSH ConïŹg ïŹle # ~/.ssh/config Host myclient-dev HostName dev.example.com Port 2020 User myclientu IdentityFile ~/.ssh/id_rsa $ ssh myclient-dev @ma$hewhaworth
  • 7. screen Start terminal sessions that you can disconnect from and resume at any 3me. @ma$hewhaworth
  • 8. Screen Cheatsheet # Create and name a new screen session $ screen -S <name> # Detach from screen (but keep it alive) $ Ctrl+a d # Resume a named session $ screen -r <name> # List active sessions $ screen -ls # Catch all (use existing, or create new) $ screen -dRR @ma$hewhaworth
  • 9. Escape a dead SSH connec-on @ma$hewhaworth
  • 10. Enter ~ . Kills a dead SSH session and lets you keep your terminal @ma$hewhaworth
  • 13. This makes me want to kill you $ cd app $ cd code $ cd MyVendor $ cd MyModule $ cd etc $ cd ../../.. $ cd .. $ cd .. @ma$hewhaworth
  • 14. This is much nicer $ cd app/code/MyVendor/MyModule/etc $ cd - @ma$hewhaworth
  • 15. Using tar for archiving and compression @ma$hewhaworth
  • 16. Tar tar czf myarchive.tar.gz <files> c - Create new archive z - Zip f - Filename @ma$hewhaworth
  • 18. T-arghh! $ tar czf magento_backup.tar.gz <files> c - Create z - Ze f - Files @ma$hewhaworth
  • 19. T-arghh! $ tar czf magento_backup.tar.gz <files> c - Create z - Ze f - Files $ tar xzf magento_backup.tar.gz x - eXtract z - Ze f - Files @ma$hewhaworth
  • 20. A bit more on tar # Extract to specific directory $ tar xf magento_ce.tar.gz -C myDirectory # Only extract a particular file $ tar xf magento_ce.tar.gz magento @ma$hewhaworth
  • 22. mkdir magic -p allows you to create children and parents at the same 4me # Verbose $ mkdir app && mkdir app/code && mkdir app/code/MyModule # Better $ mkdir -p app/code/MyModule @ma$hewhaworth
  • 23. mkdir magic Using {} allows you to create mul4ple directories at once $ mkdir -p app/code/MHCommerce/{ShippingMethods,Checkout}/{Block,Model,etc} └── app └── code └── MHCommerce ├── Checkout │   ├── Block │   ├── Model │   └── etc └── ShippingMethods ├── Block ├── Model └── etc @ma$hewhaworth
  • 24. tree $ brew install tree $ tree └── app └── code └── MHCommerce ├── Checkout │   ├── Block │   ├── Model │   └── etc └── ShippingMethods ├── Block ├── Model └── etc @ma$hewhaworth
  • 25. Keeping an eye on ïŹles @ma$hewhaworth
  • 26. less and Shift + F Browse ïŹle and s-ck to the bo3om $ less var/log/system.log [Shift + F] @ma$hewhaworth
  • 27. tail -f Print end of ïŹle to standard out # Prints last ten lines to standard out $ tail var/log/system.log # Prints the end of the file continuously $ tail -f var/log/system.log # Print last x lines $ tail -f -n20 var/log/system.log @ma$hewhaworth
  • 28. watch Con$nuously execute a command $ brew install watch $ watch -n[update_interval] "[command]" $ watch -n1 "cat var/log/system.log" $ watch -n0.1 "ls -lsah" @ma$hewhaworth
  • 29. Other useful ïŹle based commands - grep - Filter lines in a file - sed - Find and replace on a file - awk - More complex text manipulation @ma$hewhaworth
  • 32. Background Processes with & $ tar czf backup.tar.gz magento & [1] 13281 $ jobs [1] + running tar czf backup.tar.gz magento # some time later ... [1] + 13281 done tar czf backup.tar.gz magento @ma$hewhaworth
  • 33. Hal$ng Processes $ tar czf backup.tar.gz magento [Ctrl + z] [1] + 13552 suspended tar czf backup.tar.gz magento $ bg [1] + 13552 continued tar czf backup.tar.gz magento $ jobs [1] + running tar czf backup.tar.gz magento $ fg [1] + 13613 running tar czf backup.tar.gz magento @ma$hewhaworth
  • 34. Hal$ng SSH SSH is just another process, it can be halted and resumed in the same way $ ssh my-client-staging my-client-staging $ Enter + ~ then [Ctrl + z] [1] + 13702 suspended ssh my-client-staging $ fg [1] + 13702 continued ssh my-client-staging my-client-staging $ ls #... @ma$hewhaworth
  • 35. Pipe viewer View the progress of pipe'd input $ brew install pv $ pv db.sql | mysql -uroot my_client_db 178MiB 0:00:38 [17.9MiB/s] [==========> ] 60% ETA 0:00:28 @ma$hewhaworth
  • 36. Other useful process based commands - top - See a process list - htop - See a colourful and more interactive process list - ps - Print out processes to std out, use `ps aux` - kill - Kill a process by id - killall - Kill all processes with a certain name @ma$hewhaworth
  • 38. Forgot sudo? Lazy? $ service mysql restart Permission denied $ sudo !! MySQL restarted # equivalent to... $ sudo service mysql restart MySQL restarted @ma$hewhaworth
  • 39. Already wri+en a ïŹle path once? Lazy? $ ls -lash app/etc/env.php $ vim !$ # equivalent to... $ vim app/etc/env.php @ma$hewhaworth
  • 40. Want to pull in a command from history? $ history ... 1028 ls -lash 1029 vim app/etc/local.xml 1030 rm app/etc/local.xml # Re-run command 1028 $ !1028 OR [Ctrl + r] allows you to search through previous commands @ma$hewhaworth
  • 41. Wri$en a command that's star1ng to get too long? [Ctrl + x] [Ctrl + e] This will open a text editor containing the command you currently have wri7en on the command line @ma$hewhaworth
  • 42. Further Reading Mac users --------- - https://brew.sh/ - Homebrew - https://github.com/robbyrussell/oh-my-zsh All Unix -------- - http://www.commandlinefu.com/ - https://github.com/learnbyexample/ @ma$hewhaworth
  • 43. Thank you! SpeciïŹcally those who suïŹ€ered my prac5ce runs... Sam Beckingham-Cook: @SamboBeckingham Lee Frankland: @leefrankland Lissie Cox: @LissieCox Phil Turner: @FlipTurner Vinai Kopp: @VinaiKopp @ma$hewhaworth