← Back
Mischa Vandenburg August 8, 2024 10m

I switched back to zsh

Read full transcript 7 segments
  1. I'm switching back to Zell there I said I'm switching back to Zell there I said it if you've been following me for a it if you've been following me for a it if you've been following me for a while you've probably seen my devops while you've probably seen my devops while you've probably seen my devops workflow on Mac OS video and in that workflow on Mac OS video and in that workflow on Mac OS video and in that video I made quite a spicy take on using video I made quite a spicy take on using video I made quite a spicy take on using zshell or bash and in this video I'm zshell or bash and in this video I'm zshell or bash and in this video I'm going to explain to you why I switched going to explain to you why I switched going to explain to you why I switched back and also just highlight the back and also just highlight the back and also just highlight the differences and why I why this caused me differences and why I why this caused me differences and why I why this caused me to change to change to change so on January 8th 2023 I wrote this so on January 8th 2023 I wrote this so on January 8th 2023 I wrote this article about leaving zshell for now at article about leaving zshell for now at article about leaving zshell for now at that point I have been using Zell for that point I have been using Zell for that point I have been using Zell for nearly two years and in this article I nearly two years and in this article I nearly two years and in this article I you can find on my website I sort of you can find on my website I sort of you can find on my website I sort of explained the reasons why the biggest explained the reasons why the biggest explained the reasons why the biggest one is auto completion so I notic I've one is auto completion so I notic I've one is auto completion so I notic I've gotten used to Zell's excellent Auto gotten used to Zell's excellent Auto gotten used to Zell's excellent Auto completion and menu navigation when I completion and menu navigation when I completion and menu navigation when I log into servers at work there's always log into servers at work there's always log into servers at work there's always this little moment of oh I don't have this little moment of oh I don't have this little moment of oh I don't have that here I want to get better at bash that here I want to get better at bash that here I want to get better at bash so I'm not dependent on these external so I'm not dependent on these external so I'm not dependent on these external crutches anymore at this point I had crutches anymore at this point I had crutches anymore at this point I had this really fancy prompt this really fancy prompt this really fancy prompt in zshell and I had a very elaborate in zshell and I had a very elaborate in zshell and I had a very elaborate configuration and it was quite a up configuration and it was quite a up configuration and it was quite a up upsetting moment every time I needed to upsetting moment every time I needed to upsetting moment every time I needed to log into a remote system because that log into a remote system because that log into a remote system because that was what I was doing at the time I was was what I was doing at the time I was was what I was doing at the time I was working as a Linux system administrator working as a Linux system administrator working as a Linux system administrator and I was logging into virtual machines and I was logging into virtual machines and I was logging into virtual machines all day long so every time I all day long so every time I all day long so every time I was having this moment of oh I don't was having this moment of oh I don't was having this moment of oh I don't have my auto completion here it actually have my auto completion here it actually have my auto completion here it actually broke up the flow and as I'm more broke up the flow and as I'm more broke up the flow and as I'm more getting more and more competent at my getting more and more competent at my getting more and more competent at my work and staying in flow States and

  2. work and staying in flow States and work and staying in flow States and becoming more and more efficient and becoming more and more efficient and becoming more and more efficient and productive these little things actually productive these little things actually productive these little things actually make a big difference so I switch to make a big difference so I switch to make a big difference so I switch to bash and I don't regret it I still think bash and I don't regret it I still think bash and I don't regret it I still think that you should use bash for a long time that you should use bash for a long time that you should use bash for a long time before you use Zell if your workflow before you use Zell if your workflow before you use Zell if your workflow contains situations where you are likely contains situations where you are likely contains situations where you are likely to encounter bash and one way you are to encounter bash and one way you are to encounter bash and one way you are likely to encounter bash is in likely to encounter bash is in likely to encounter bash is in containers now let me just show you why containers now let me just show you why containers now let me just show you why I changed or how I changed or how I changed or how I let let me put it differently I didn't I let let me put it differently I didn't I let let me put it differently I didn't miss zshell at all during this whole miss zshell at all during this whole miss zshell at all during this whole time like there was seriously maybe time like there was seriously maybe time like there was seriously maybe after a week I didn't realize I was after a week I didn't realize I was after a week I didn't realize I was missing anything at all there everything missing anything at all there everything missing anything at all there everything that I needed was already available in that I needed was already available in that I needed was already available in bash to me bash to me bash to me so up until so up until so up until recently I never realized I even recently I never realized I even recently I never realized I even switched switched switched basically apart from that my environment basically apart from that my environment basically apart from that my environment was consistent everywhere the reason why was consistent everywhere the reason why was consistent everywhere the reason why I re I noticed that there was a I re I noticed that there was a I re I noticed that there was a difference is because I started writing difference is because I started writing difference is because I started writing my own CLI I have written this very my own CLI I have written this very my own CLI I have written this very simple ZK CLI where I can do ZK new and simple ZK CLI where I can do ZK new and simple ZK CLI where I can do ZK new and then it will prompt me for a name of the then it will prompt me for a name of the then it will prompt me for a name of the note or I can give it as an argument and note or I can give it as an argument and note or I can give it as an argument and then I would say uh test demo video and then I would say uh test demo video and then I would say uh test demo video and now it opens a new note with this title now it opens a new note with this title now it opens a new note with this title in my zettle cast and when I then run ZK in my zettle cast and when I then run ZK in my zettle cast and when I then run ZK day it will run it will show you that it

  3. day it will run it will show you that it day it will run it will show you that it has added this note title to the Daily has added this note title to the Daily has added this note title to the Daily note in my system and that's something note in my system and that's something note in my system and that's something that I wanted to do with a a CLI that I that I wanted to do with a a CLI that I that I wanted to do with a a CLI that I wrote myself wrote myself wrote myself now when I do that you see when I've now when I do that you see when I've now when I do that you see when I've written when I was writing that I was written when I was writing that I was written when I was writing that I was using the the typer um framework in in using the the typer um framework in in using the the typer um framework in in Python and in the docs they had this Python and in the docs they had this Python and in the docs they had this very beautiful very beautiful very beautiful they have very very good documentation I they have very very good documentation I they have very very good documentation I highly recommend it but they had these highly recommend it but they had these highly recommend it but they had these beautiful examples of completions in the beautiful examples of completions in the beautiful examples of completions in the CI that also had descriptions based on CI that also had descriptions based on CI that also had descriptions based on the doc strings that you give to the the doc strings that you give to the the doc strings that you give to the functions functions functions now this looks really nice and my bash now this looks really nice and my bash now this looks really nice and my bash shell did not have this so let me shell did not have this so let me shell did not have this so let me quickly demonstrate what it looks like quickly demonstrate what it looks like quickly demonstrate what it looks like in bash so I will just Docker run uh it in bash so I will just Docker run uh it in bash so I will just Docker run uh it Ubuntu now I have a fresh Ubuntu system Ubuntu now I have a fresh Ubuntu system Ubuntu now I have a fresh Ubuntu system system I do apt update to update the system I do apt update to update the system I do apt update to update the packages packages packages and when that is done I will run apt and when that is done I will run apt and when that is done I will run apt install bash install bash install bash completion and pip X I'll just use pip X completion and pip X I'll just use pip X completion and pip X I'll just use pip X as an example because here if as an example because here if as an example because here if I if I run pip I if I run pip I if I run pip X this is how the the completion looks X this is how the the completion looks X this is how the the completion looks like in zshell I I look I I have have like in zshell I I look I I have have like in zshell I I look I I have have this menu that I can tab through and it this menu that I can tab through and it this menu that I can tab through and it has all of the descriptions on the side has all of the descriptions on the side has all of the descriptions on the side now when I do the same with Pip X now I

  4. now when I do the same with Pip X now I now when I do the same with Pip X now I have Pip X installed which pip X if I have Pip X installed which pip X if I have Pip X installed which pip X if I then run pip X then run pip X then run pip X completions it's going to show me how I completions it's going to show me how I completions it's going to show me how I can uh enable completion so I'll just can uh enable completion so I'll just can uh enable completion so I'll just copy that and paste that so now I have copy that and paste that so now I have copy that and paste that so now I have completions for bash in my pipx so pip X completions for bash in my pipx so pip X completions for bash in my pipx so pip X tab tab and here you see it shows me the tab tab and here you see it shows me the tab tab and here you see it shows me the help quiet verbose completions help quiet verbose completions help quiet verbose completions environment it lists all of the options environment it lists all of the options environment it lists all of the options very well no very well no very well no problem I press tab tab but the problem I press tab tab but the problem I press tab tab but the difference is it just poops out all of difference is it just poops out all of difference is it just poops out all of the options to the screen and then it's the options to the screen and then it's the options to the screen and then it's up to you to complete it further and up to you to complete it further and up to you to complete it further and this works fine I mean I didn't miss any this works fine I mean I didn't miss any this works fine I mean I didn't miss any other way of other way of other way of completion for well what is it one and a completion for well what is it one and a completion for well what is it one and a half years since I wrote that article I half years since I wrote that article I half years since I wrote that article I just do pip X completions tab tab and just do pip X completions tab tab and just do pip X completions tab tab and then I see all of the the options so it then I see all of the the options so it then I see all of the the options so it works fine but when I started writing my works fine but when I started writing my works fine but when I started writing my own CLI and when I started noticing that own CLI and when I started noticing that own CLI and when I started noticing that actually there are these descriptions actually there are these descriptions actually there are these descriptions next to the options because I was next to the options because I was next to the options because I was writing them myself then I felt huh that writing them myself then I felt huh that writing them myself then I felt huh that is actually really good that in a way is actually really good that in a way is actually really good that in a way this might even be more conducive to my this might even be more conducive to my this might even be more conducive to my workflow than having a consistent bash workflow than having a consistent bash workflow than having a consistent bash environment mostly because I am not a environment mostly because I am not a environment mostly because I am not a virtual machine administrator anymore I virtual machine administrator anymore I virtual machine administrator anymore I rarely log into virtual machines anymore rarely log into virtual machines anymore rarely log into virtual machines anymore I I don't do that very often any longer I I don't do that very often any longer I I don't do that very often any longer I am mostly on my own system or in Dev

  5. I am mostly on my own system or in Dev I am mostly on my own system or in Dev containers and there comes my next containers and there comes my next containers and there comes my next point so just a quick note if you are point so just a quick note if you are point so just a quick note if you are interested in this kind of stuff if you interested in this kind of stuff if you interested in this kind of stuff if you want to get better at the command line want to get better at the command line want to get better at the command line you might want to check out my school you might want to check out my school you might want to check out my school Community we are now 340 members and we Community we are now 340 members and we Community we are now 340 members and we are constantly sharing knowledge are constantly sharing knowledge are constantly sharing knowledge everybody is CLI focused and wants to everybody is CLI focused and wants to everybody is CLI focused and wants to learn more about this we're constantly learn more about this we're constantly learn more about this we're constantly sharing tips and and new discoveries sharing tips and and new discoveries sharing tips and and new discoveries it's a really great community and you it's a really great community and you it's a really great community and you can either follow my courses here about can either follow my courses here about can either follow my courses here about no taking settle castom method you get no taking settle castom method you get no taking settle castom method you get unlimited access to 25 hours of courses unlimited access to 25 hours of courses unlimited access to 25 hours of courses and you can ask me questions directly by and you can ask me questions directly by and you can ask me questions directly by making posts or by joining one of the making posts or by joining one of the making posts or by joining one of the community calls that we have all right community calls that we have all right community calls that we have all right let's get back to the video I most of my let's get back to the video I most of my let's get back to the video I most of my de most if not all of my development is de most if not all of my development is de most if not all of my development is either happening or is going to happen either happening or is going to happen either happening or is going to happen in Dev containers if you don't know what in Dev containers if you don't know what in Dev containers if you don't know what they are they are um I'll post a link they are they are um I'll post a link they are they are um I'll post a link down below with a video about def down below with a video about def down below with a video about def containers that I made but if you search containers that I made but if you search containers that I made but if you search for def containers images then there is for def containers images then there is for def containers images then there is this repo this repo this repo here that has the pre-built Dev here that has the pre-built Dev here that has the pre-built Dev container images these are the images container images these are the images container images these are the images that are included in vs code and this is that are included in vs code and this is that are included in vs code and this is also very likely that you're going to be also very likely that you're going to be also very likely that you're going to be encountering these images in your work encountering these images in your work encountering these images in your work work in your workflow as a devops work in your workflow as a devops work in your workflow as a devops engineer as you're building environments engineer as you're building environments engineer as you're building environments for other developers for other developers for other developers so I would rather have a workflow that so I would rather have a workflow that so I would rather have a workflow that is compatible with these images so I go

  6. is compatible with these images so I go is compatible with these images so I go to a python image and if I check out the to a python image and if I check out the to a python image and if I check out the spec of this python spec of this python spec of this python image we see that in image we see that in image we see that in here there's the dev container spec and here there's the dev container spec and here there's the dev container spec and it installs the common it installs the common it installs the common utils and here it says install zshell utils and here it says install zshell utils and here it says install zshell true true true so every time a developer creates a pro so every time a developer creates a pro so every time a developer creates a pro project in vs code and they set up a Dev project in vs code and they set up a Dev project in vs code and they set up a Dev container for it it it's likely that container for it it it's likely that container for it it it's likely that they're going to use the Microsoft base they're going to use the Microsoft base they're going to use the Microsoft base image for it if they're not creating image for it if they're not creating image for it if they're not creating them their own and that image is going them their own and that image is going them their own and that image is going to include to include to include zshell zshell zshell so I am now in a situation where zshell so I am now in a situation where zshell so I am now in a situation where zshell is actually going to be available is actually going to be available is actually going to be available wherever I am practically I'm not wherever I am practically I'm not wherever I am practically I'm not managing VMS anymore I'm mostly working managing VMS anymore I'm mostly working managing VMS anymore I'm mostly working in Dev containers or on my own system in Dev containers or on my own system in Dev containers or on my own system and yeah that I that means that I have and yeah that I that means that I have and yeah that I that means that I have zshell everywhere there is no need for zshell everywhere there is no need for zshell everywhere there is no need for this context switch to happen anymore this context switch to happen anymore this context switch to happen anymore and besides that I have now gained one and besides that I have now gained one and besides that I have now gained one and a half years of pure bash experience and a half years of pure bash experience and a half years of pure bash experience and I feel I'm fluent in Bash Das I know and I feel I'm fluent in Bash Das I know and I feel I'm fluent in Bash Das I know how to debug it I know how to solve how to debug it I know how to solve how to debug it I know how to solve problems that I have I know it well so problems that I have I know it well so problems that I have I know it well so now it's time for me to move move on and now it's time for me to move move on and now it's time for me to move move on and now I feel competent enough with the CLI now I feel competent enough with the CLI now I feel competent enough with the CLI that I can actually understand the that I can actually understand the that I can actually understand the differences between bash and Zell and I

  7. differences between bash and Zell and I differences between bash and Zell and I can make an intelligent decision on what can make an intelligent decision on what can make an intelligent decision on what I prefer and at this point again having I prefer and at this point again having I prefer and at this point again having these options here available to me is these options here available to me is these options here available to me is actually actually actually preferable it will actually help me to preferable it will actually help me to preferable it will actually help me to uh work through clis quicker so in this uh work through clis quicker so in this uh work through clis quicker so in this sense it's going to be an an improvement sense it's going to be an an improvement sense it's going to be an an improvement to my workflow rather than um sticking to my workflow rather than um sticking to my workflow rather than um sticking to to to bash so yeah there you have it that's bash so yeah there you have it that's bash so yeah there you have it that's why I switched better Auto completion why I switched better Auto completion why I switched better Auto completion and because my zshell is going to Bea and because my zshell is going to Bea and because my zshell is going to Bea available in the environments that I'm available in the environments that I'm available in the environments that I'm going to be working in and note that going to be working in and note that going to be working in and note that before I used to have this very fancy before I used to have this very fancy before I used to have this very fancy prompt and all my Z sh I don't need all prompt and all my Z sh I don't need all prompt and all my Z sh I don't need all that bloat I have a very simple prompt that bloat I have a very simple prompt that bloat I have a very simple prompt here and if I go to a repo for example here and if I go to a repo for example here and if I go to a repo for example if I go to my DOT files repo it will if I go to my DOT files repo it will if I go to my DOT files repo it will print the the the path that I'm in and print the the the path that I'm in and print the the the path that I'm in and whether there are changes on my Branch whether there are changes on my Branch whether there are changes on my Branch that's it that's the only fanciness that that's it that's the only fanciness that that's it that's the only fanciness that I need in my in my prompt and I'm not I need in my in my prompt and I'm not I need in my in my prompt and I'm not going to be customizing it much further going to be customizing it much further going to be customizing it much further than that it's all clean and minimal I than that it's all clean and minimal I than that it's all clean and minimal I don't use all my zshell everything is don't use all my zshell everything is don't use all my zshell everything is going everything is configured in my going everything is configured in my going everything is configured in my zshell RC zshell RC zshell RC that is available in my do files repo that is available in my do files repo that is available in my do files repo and I'll create a full walkthrough of and I'll create a full walkthrough of and I'll create a full walkthrough of that file in the next video all right that file in the next video all right that file in the next video all right guys thank you so much for watching see guys thank you so much for watching see guys thank you so much for watching see you in the next one

Summary

The speaker discusses their return to using Zsh after a period with Bash, driven by the need for Zsh's superior auto-completion and menu navigation. They highlight how these features were crucial for their Linux system administrator role, aiding them in maintaining flow and efficiency when working across various remote systems. The practical takeaway is to prioritize shell environments that enhance workflow and consistency, especially in diverse computing situations like containerized environments.

View original episode ↗