A Beginner's Introduction to BASH Shell Scripting

Поделиться
HTML-код
  • Опубликовано: 9 фев 2025

Комментарии • 226

  • @Sarahelizabeth_
    @Sarahelizabeth_ 3 года назад +40

    I love that you include your mistakes and show how you go about fixing them, super helpful 😁

    • @EzeeLinux
      @EzeeLinux  2 года назад

      It tells the shell that it's a script and tells it what command interpreter to use. #! = script, /binbash = the cli to use.

  • @git_t0v
    @git_t0v 4 года назад +38

    as soon as he said that he was a late bloomer to linux/bash scripting i was hooked because i am too.
    Thank you!

    • @scootergirl3662
      @scootergirl3662 3 года назад

      Same here - I am kicking myself for not learning it earlier, but oh well

    • @tylerstevens9022
      @tylerstevens9022 3 года назад

      as soon as i read this comment he said that lol

    • @anthonydrew9437
      @anthonydrew9437 3 года назад

      Instablaster

  • @christinashupa5851
    @christinashupa5851 6 лет назад +85

    Thank you, I've been using Linux Mint for a year or so. I'm just starting to play with different commands in terminal and want to learn to use them. Beginners tutorials like this for writing useful scripts is what I was looking for. Thank you again

  • @philippe6724
    @philippe6724 Год назад +1

    Joe, you're just a master at teaching Unix! Thank you for your precious time!

  • @ianlong4704
    @ianlong4704 6 лет назад +15

    You were reading my mind today. I needed a simple script this morning and had no idea how to make it.

  • @MdShamimRahman
    @MdShamimRahman 2 года назад +2

    Much details in everything. People shouldn't fear Linux system if they come to Joe's channel.

  • @Jegan_Kanthasamy
    @Jegan_Kanthasamy Год назад +1

    This video is an eye opener for me, I always though Shell scripting is very tough. but after watching your video, It feels easy for me, So I'm gonna give it a try.

  • @PedroDominguez15
    @PedroDominguez15 3 года назад +2

    Watching this in 2021 and all I can say is that you sir have inspired me to embark on my forgotten IT Journey. If I make to the big leagues Joe Collins will receive credit. Much appreciated !!

  • @goku14139268520
    @goku14139268520 6 лет назад +25

    There's something about your scripting videos that I really enjoy.
    I'm a hobiest programmer, and I've written many'a script to make repetitive tasks easier, so I'm no stranger to bash. But even though this video is aimed toward beginner to intermediate users, I find myself drawn in.
    Also, I find the sound of your keyboard kinda relaxing. Almost like ASMR. Lol

    • @Atman89
      @Atman89 2 года назад +1

      Sounds like you find the sound of his keyboard relaxing.

    • @omarflux1580
      @omarflux1580 2 года назад +1

      @@Atman89 lol 😂 he just said that

  • @eyes1719
    @eyes1719 2 года назад +3

    great video for beginners... and loved how you showed mistakes and how to fix them... look forward to seeing more of your videos

  • @banjoperator
    @banjoperator 6 лет назад +4

    for me Mr. Collins.. your goal has been accomplished... another door opened, the light bulb switch flipped on.. .. awesome.. now there is another direcrion to go... who ever would have though that at 57, understanding operating systems and pc's could be fun,,,lol..well done vid as per usual..

    • @asdfghjklasdfghjkl2548
      @asdfghjklasdfghjkl2548 6 лет назад +1

      57 and switched to linux??? What not to like here ☺ Welcome to linux my friend 😉

  • @bunman2353
    @bunman2353 2 года назад +1

    you are awesome. Don't be afraid of making mistakes

  • @ericc461
    @ericc461 4 года назад +2

    Thanks again. Not too fast, not too long. A good review for me.

  • @Hevander75
    @Hevander75 5 лет назад +3

    hey man I really appreciate you for taking the time to make this video

  • @pullrequest1481
    @pullrequest1481 Год назад

    God! I just find a gem. Following this with my nokia n900. Thank you ❤

  • @AndrewAHayes
    @AndrewAHayes 6 лет назад +3

    I used to use the shell in Amiga-Dos on the Amiga and Xtree in MS-DOS quite a bit, a very long time ago and enjoyed the control I had over the system, I have done a little bit of scripting on Raspians shell on the Raspberry Pi, this has inspired me to take it further!
    Thanks for the video Joe and the book recommendation which I will download and print if it's not too large.

  • @eznix
    @eznix 6 лет назад

    Cool video. I started writing scripts about 4 months ago knowing nothing. Google was my best friend. Every time I had an idea, I just googled the question and it got me started. Every question that came up, I googled it and got the answer. Now I am ready for a book, but Google got me started. Thanks.

  • @alf.2929
    @alf.2929 6 лет назад +23

    Thanks Joe. Just what I needed.

  • @ophawku
    @ophawku 6 лет назад +4

    Thanks Joe! Good info and glad to see you back in the groove.

  • @yankeesouth
    @yankeesouth 3 года назад +1

    your honesty and candor just got a subscribe from me. Thank you for making this content. I learned from your video.

  • @humanbeing_
    @humanbeing_ 6 лет назад +13

    YES!!!!!! 👍👍👍👍 THANKS JOE! I've been waiting for more BASH & Scripting videos from you. The subject matter is interesting and actually incredibly FUN to me!
    And when you went (somewhat) in-depth on several points of your top 5 reasons you love LINUX video yesterday, I thought to myself "hopefully he'll release more BASH / Terminal videos".
    Love that you're back doing *more* LINUX uploads. And you sound happy as well (as a side note) so hopefully your time off served you well 😬
    Cheers!
    H.B.

  • @Bit930
    @Bit930 4 года назад

    I made my first script to run a command on startup for my raspberry pi after watching your video . Thanks keep them videos coming

  • @huckleberry582
    @huckleberry582 6 лет назад +1

    Glad to see you back at what you do so well. Teach on...

  • @jeffreynunes2508
    @jeffreynunes2508 6 лет назад +1

    Joe clearly you truly belive in in what linux stands for. Free and open!! And so should knowlage!! A great video. And Cleary explained. Thanks for your work!!!

  • @davonuk1
    @davonuk1 6 лет назад +4

    Coming from an programming environment, this all makes logical sense to me.
    It is just a matter of learning the proper syntax for bash.

  • @mcnits
    @mcnits 2 года назад +1

    Man this is so beautiful! You explain this so well. Thank you so much

  • @ArSaSixNine
    @ArSaSixNine 4 года назад +2

    Just saw this other video in which the guy said something like: Oh! It doesn't matter as long as you put .sh at the end.
    For one reason or another, I trust that she bang a lot better than the .sh
    Very cool video, one can tell that you actually have fun doing this kind of thing, at the very least, I know I am.

  • @savantskie
    @savantskie 6 лет назад +8

    Dude, Joe, this was the video that's gotten a fire under my ass! I've been wanting to learn to code, for a long time, and I've been wanting to dig deeper into using the CLI. I followed the entire video, and created the two scripts you did, following the entire way. Now I'm looking for more resources, because I GOTTA learn more! Thank you for helping me get off my dead ass and do something!

  • @rabinotieno6553
    @rabinotieno6553 2 года назад +1

    the tutorial was enlighting I wanna know more about scripting

  • @Seattlefan77
    @Seattlefan77 6 лет назад +5

    This is great. I spent hours perfecting syntax through about an hours worth of videos but had no idea I could run regular terminal commands as scripts. Wow, linux boggles my mind once again. I aways had a group of four or so commands I ran together whenever I booted up, but not more! Im only (what feels like) 1 minute in so I hope to see if this video includes ways to 'trigger(?)' at different times like on startup or just at time increments.
    Ive already watched and liked a few of your videos like shell basics but this little snippet I didnt get from anywhere else boggled my mind. There was another video on bash scripting that demanded I first learn vim, apparently its more powerful than poor 'lil Geany and Sweet Granny Nano. But I don''t need that power right now, drowning men don't need a yacht when a log will do. I could write this stuff with proper 1/2cm indentations on a piece of paper and scan it onto my computer at this point.
    Subscribed thrice over, i'm eating this shit up like i've been starving Cuh

    • @KhadijahCelestine
      @KhadijahCelestine 5 лет назад

      have you found crons, which will help you "trigger" your scripts.

  • @otdefence4169
    @otdefence4169 4 года назад +1

    @Joe
    Very good video's you making.
    Nice video and audio quality.
    Nicely done!

  • @BumbleBeeTF
    @BumbleBeeTF 2 года назад +1

    Wow! Thank you! So much great information and you explain it extremely well! Thank You!

  • @MarzJonp
    @MarzJonp 5 лет назад +1

    I found this tutorial very comprehensive and a good jump off point to do some research. Thank you.

  • @CayoBuay
    @CayoBuay 9 месяцев назад

    I've been using GNU/Linux for decades and still mess up even on prompt so .....
    Imposter syndrome is real tho, I suffered that for a really long time at the start then realized even seasoned engineers make mistakes and have to look things up.
    Thanks for including your mistakes and keeping it real.

  • @declanmoran1894
    @declanmoran1894 6 лет назад +2

    Awesome Joe ! Thanks , I like to see the mechanics of how it all works .

  • @jeremyfeather
    @jeremyfeather 6 лет назад +11

    Joe thanks so much, this is spot on! Even the mistakes help in the learning process! keep up the great work!!!

  • @kamranabid5557
    @kamranabid5557 4 года назад

    Thanks for uploading this i have a practical assessment due soon and needed to research and learn how to script in bash! This has been extremely helpful!

  • @wisdomchoice2721
    @wisdomchoice2721 5 месяцев назад

    Sharp and clear ,Thank you.

  • @skytale35
    @skytale35 5 лет назад

    leaning VIM (VI) is painful, but wow, once you start getting it . . . it is worth the price of admission. If you're aspiring to program, learning VIM is a bonus. VIM commands are available on pretty much every major text editor, and VIM is pretty much like a plague, it is everywhere. I pretty much equate learning VIM to learning scales on a guitar, you can learn to play songs without it, but knowing it makes it easier to learn songs. You should learn it, if for no other reason than you are relatively gifted as a teacher, and if you want to program knowing vim makes you more valuable imho.

  • @G0USL
    @G0USL 6 лет назад +1

    OUTSTANDING video, Cheers, The book is VERY well written. Even I am getting it!! Thanks again

  • @therickestpicklerick
    @therickestpicklerick 3 года назад +2

    Not lazy... just working efficiently :)

  • @robertcrawford4009
    @robertcrawford4009 6 лет назад +2

    Great Video. I have alias that runs the Sudo apt update && Sudo apt dist-upgrade. I named it "updates".

  • @l.elizabethaldana4985
    @l.elizabethaldana4985 4 года назад +1

    Excellent! easy to understand and follow up; great job!

  • @lovinglife3675
    @lovinglife3675 4 года назад +1

    Hey Joe , great tutorial mate ... made my life with daily system admin more efficient and effective ..... Thanks again and keep up the great vids.. regards

  • @ZFox57
    @ZFox57 6 лет назад +4

    so cool you keep putting out content man keep it up!

  • @brokebk514
    @brokebk514 2 года назад +1

    thank you so much joe. this is super helpful!!!

  • @mikediaz9033
    @mikediaz9033 2 года назад

    You're a good Man.
    Software is so Simple.
    I have Mastered Computer Hardware & Architecture. 25 + yrs.
    Memory is extremely important.
    Memory storage and allocation "Structure", is so important.

  • @nateriver1662
    @nateriver1662 4 года назад +1

    thank you, man. Love your videos.

  • @CARLOSPH36
    @CARLOSPH36 3 года назад +1

    Excelente!. Gracias Joe.

  • @paulstaf
    @paulstaf 2 года назад

    Using bash scripting, I wrote a whole home alarm system program that uses cheap Chinese sensors to read doors, windows, leaks under sinks, can trigger a relay that sounds a siren, and if someone presses my doorbell, it takes pictures from all my security cameras and emails them to my phone along with SMS messages. All this using BASH scripting on a Raspberry PI.

  • @seanparry4048
    @seanparry4048 5 лет назад +1

    Very good a great help. Which got me out of Jam ! and resolved a problem for me !

  • @gilsantiago3
    @gilsantiago3 3 года назад

    gracias, English is not my first language and I understood every concept

  • @ronaldallanquilao7689
    @ronaldallanquilao7689 6 лет назад +3

    Thank You so much for sharing your knowledge. i find this very helpful

  • @BillFlann9
    @BillFlann9 4 года назад +1

    Nice Video Joe! Thanks for posting, you're a mensch!

  • @MonBureauLinux
    @MonBureauLinux 6 лет назад +2

    Thanks Joe ! Time to me to create my own bash script :) and bip up for the share

  • @Hexbyte965
    @Hexbyte965 6 лет назад +1

    Bravo..Bravo...Nice Video Joe. Keep -em coming.

  • @seansean7653
    @seansean7653 Год назад

    Any video on how the pipe work?

  • @johns4195
    @johns4195 6 лет назад +12

    you're the man.. thanks mate..

  • @561Aloha
    @561Aloha 2 года назад +1

    Love this! So helpful

  • @Lyunpaw
    @Lyunpaw 3 года назад +1

    Wonderful information.

  • @georgewinchester6403
    @georgewinchester6403 4 года назад +1

    Thank you for putting the effort in creating this video, but you have left a fair amount of things unexplained here (for a beginner tutorial of course)

  • @jamesbrinn9701
    @jamesbrinn9701 3 года назад

    I Miss yiur Linux videos

  • @brianhiggins4614
    @brianhiggins4614 2 года назад

    How did you save the script? ^6:42

  • @chronos.2763
    @chronos.2763 2 года назад

    If you are using the terminal in Ubuntu, you can also use 'gedit' instead of 'nano'.

  • @gauravrai2736
    @gauravrai2736 Год назад

    Hi I'm struggling to understand the syntax and elements used in shell scripting. Eg, when to use (()), {{}}, or what is the meaning of the special characters like -z, -n, ! etc. Seems like most expect you to know this already. How do I go about learning this? Is there any book you recommend?

    • @EzeeLinux
      @EzeeLinux  Год назад

      linuxcommand.org/tlcl.php

  • @nkushgaur
    @nkushgaur 3 года назад

    Lovely explanation

  • @yavuzerkal2551
    @yavuzerkal2551 2 месяца назад

    amazing video, thanks

  • @txg8878
    @txg8878 6 лет назад

    This was a great tutorial! Thanks for posting it. I've been using Linux since 1997 and never really dove into bash, but now I will. Thanks again.

    • @somedude3203
      @somedude3203 6 лет назад

      Texas Gambler how did you manage to use Linux for over 20 years but never use Bash? Did you use a different shell?

  • @shellgenius
    @shellgenius 4 года назад

    It's be simple to tell anyone can understand thank u for this make video

  • @codezero6023
    @codezero6023 6 лет назад

    Thanks Joe! Wow, I learned how to do block text without using echo

  • @marklambert2777
    @marklambert2777 4 года назад

    Gosh, "cat

  • @devondecenzo2658
    @devondecenzo2658 2 года назад

    Hi on the creating a bin fold in your home dir, is it "touch bin"? Any help on this would be great!!

  • @HazyJ28
    @HazyJ28 2 года назад

    What is the purpose of a sha-bang and why is it necessary when scripting?

  • @Perciwell
    @Perciwell 4 года назад

    As far as I can figure out currently there is no option "-yy", only the option "-y". I have not found "-yy" in the man pages. But apt does work also correct if you use the option "-y", even if you have written "apt -yyyy install …".
    PS: I'm not sure if "-yy" is an alias for "--force-yes" or was it in former versions of apt-get.
    apt get knows two yes-options: "--allow-yes" and "--force-yes", the second means "yes in every case, and do not ask me", but "--allow-yes" stops the process in some critical cases. You have to read the man pages for exact details.

    • @EzeeLinux
      @EzeeLinux  4 года назад +1

      It's not in the documentation... I found it on some page about scripting in bash. It originally applies to apt-get. What it does is essentially ask yes to two questions that might be answered when an install is going on. The first is "Do you want to install?" and the second is "Do you really want to install?" I guess... :)

    • @Perciwell
      @Perciwell 4 года назад

      @@EzeeLinux Ok. Thanks for your answer!
      Honestly I've had a nebulous rememberance, that I might have read and even used this -yy once a long time ago, but I have not found any info about it again in man pages or in the www.
      BTW: I've written a variation of your up script, it's ready. I just have to complete the README files. I've changed many details, and will publish it at my GitHub account by mentioning you and your pages.

  • @immenseTie
    @immenseTie 5 лет назад

    excellent video. ive subscibed you that good. hello from west australia. your voice is perfect to follow

  • @prasunbanerjee284
    @prasunbanerjee284 2 года назад

    someone please help me with this, how to create our own bin folder? like in 12:11 I can see there is a "~/home/joe/bin/ " folder... so i also went to my home directory and created a bin folder and then putted a script there... but it is not getting executed and it's not even showing when i am giving "echo $PATH" :(

    • @EzeeLinux
      @EzeeLinux  2 года назад

      Robbot. If that doesn't help then add this to the end if your .bashrc file:
      # set PATH so it includes user's private bin if it exists
      if [ -d "$HOME/bin" ] ; then
      PATH="$HOME/bin:$PATH"
      fi

    • @Henry-sv3wv
      @Henry-sv3wv Год назад

      the system doesn't care if you call it "~/home/joe/bin/" or "~/home/joe/mycoolscriptfolder/
      the important thing is you must add it to the $PATH variable in .bashrc

  • @soccerfan5908
    @soccerfan5908 2 года назад

    Does somebody get "no command found " when trying to run the file(sys-check)? Despite doing the exact same steps as the video.

    • @EzeeLinux
      @EzeeLinux  2 года назад +1

      Make sure the file has permissions set to be executable. If it's not in a place where the system normally looks for executable files run it with ./ in front of it to tell the system where it is.

  • @amanpandia7912
    @amanpandia7912 2 года назад

    my uptime command is showing me 0 users are logged in, can someone advise me on this, thanks

  • @Kor1134
    @Kor1134 4 года назад

    My bash scripting expertise is intermediate at best, but...
    32:00 why not use _getopts_ and a _case_ block (or just a _case_ block) to parse your command line input?
    37:30 putting double quotes around *$@* will break your loop, concatenates each argument into one. (you'll get "file1 file2 file3" instead of "file1" "file2" "file3")

    • @EzeeLinux
      @EzeeLinux  4 года назад

      That's a lot of extra code to deal with. I keep it simple. :)

    • @Kor1134
      @Kor1134 4 года назад

      @@EzeeLinux fair enough

  • @fahtfakcarl7695
    @fahtfakcarl7695 4 года назад +2

    Thank you for this, very informative

  • @poparab
    @poparab 3 года назад

    i have an idea for you,
    Bash scripts they was makes menus for different sigle action with scripting
    File managent. How we scan 2 different folders. Folder 1 is a Storage folder (sample: on the NAS). The other is on PC or workstation. We can synchronize the NAS folder with the Download folder. After that we delete the files in the download folder.
    My abbo is safe

  • @hippolytus2993
    @hippolytus2993 4 года назад +1

    Great video!!!!

  • @lightningvini
    @lightningvini 3 года назад

    Love the video Joe,
    I'm on arch and the bin folder doesn't seem to get detected, what do i have to do? Logging out doesn't work

    • @EzeeLinux
      @EzeeLinux  3 года назад

      You'll need to add these lines to the end of your .bashrc file:
      # set PATH so it includes user's private bin if it exists
      if [ -d "$HOME/.local/bin" ] ; then
      PATH="$HOME/.local/bin:$PATH"
      fi

  • @alextlima
    @alextlima 2 года назад

    I have discovered your Channel few days ago. Congratulations Collins! So I would like to ask you about how can I plan a programm or a script. Is there a method to follow? Other question: do you have suggestions about free labs to practice this knowedge?

    • @EzeeLinux
      @EzeeLinux  2 года назад

      Here's very good place to start: linuxcommand.org/tlcl.php

  • @NicatZadeh
    @NicatZadeh Год назад

    Bro, please help me ... history -c and history -d not working 🫤 why ?

  • @abiyeye
    @abiyeye Год назад

  • @appalachianpatriot7364
    @appalachianpatriot7364 4 года назад

    At 18:06, you said "This time I am actually going to put this in my bin folder". What is the reason/ advantage of putting it in the bin folder again? I know you mentioned it earlier in the video, but I didn't understand what you meant. Thanks for the reply!

    • @EzeeLinux
      @EzeeLinux  4 года назад +1

      The local ~/bin is where you store personal scripts and programs. All you have to do is create it on Ubuntu based systems and it will automatically be added to the path that the system takes to find programs.

  • @AfreenKhan-zg4oo
    @AfreenKhan-zg4oo 4 года назад

    Hi Joe! This is very helpful but I couldn't move the sys-check file to bin. When I put the command it says no-file in directory and also using ls when I check the directory, while all folders appear blue, bin appears green. Is that why this is happening and how can I fix it?

    • @EzeeLinux
      @EzeeLinux  4 года назад

      I don't have a clue... If you're talking about a bin directory you created in you personal home directory, it may be that it doesn't have the right permissions set. Delete it and try again. If you're talking about bin anywhere else on the system then you need to be careful but use sudo to copy the file there.

  • @talzO9
    @talzO9 4 года назад

    when i run free it says command not found :( also the -h for du doesn't seem to work as I get a long list that is definitely not what you got

  • @eatyourspinachtomperez8700
    @eatyourspinachtomperez8700 2 года назад +1

    Thank you for this. :)

  • @uniquechannelnames
    @uniquechannelnames 3 года назад

    Just wondering if writing a script, is each seperate line treated as if there's a "&&" or ";' command between each line?
    IOW does a command need to execute seccessfully for the next to execute? If an 'apt update' cmd fails for some reason, will the 'apt upgrade' cmd after it not go forward/will the script stop?

    • @EzeeLinux
      @EzeeLinux  3 года назад

      It depends on the way you write the script. There are several ways to test for the exit status of any command and then figure out what to do whether it was successful or not. :)

  • @VernesMisadventures
    @VernesMisadventures 6 лет назад +1

    Great video, Joe! Thanks!

  • @stephanc7192
    @stephanc7192 3 года назад

    Great video

  • @engelberthk
    @engelberthk 6 лет назад

    Where should I place the script? I got error : bad interpreter: No such file or directory, any realtion to path or rights. I have done the chmod +x command. Thanks

    • @EzeeLinux
      @EzeeLinux  6 лет назад

      Make sure you have #!/bin/bash at the beginning of the script. The shell can;'t figure out what to do with your for some reason. You can place a script in /home/username/bin or home/username/.local/bin or /usr/local/bin if you want everyone who sues the computer to have access to it. :}

  • @strato5135
    @strato5135 4 года назад

    simple... informative... easy.

  • @agnesswakio7362
    @agnesswakio7362 2 года назад

    i now understand. thank you

  • @sumitthapa001
    @sumitthapa001 3 года назад +1

    Very nice tutorial thank you. Thank you for the book recommendation too

  • @tonyndefrufrachaha1595
    @tonyndefrufrachaha1595 3 года назад

    Thank U Joe!

  • @ThirdEyeGoat369
    @ThirdEyeGoat369 6 лет назад +4

    Thanks for the video!

  • @ejay4032
    @ejay4032 4 года назад

    I believe best practises say you use [[ ]] instead of [ ] for conditionals?
    What are your thoughts on this?

    • @EzeeLinux
      @EzeeLinux  4 года назад

      I don't care as long as it works.

    • @ejay4032
      @ejay4032 4 года назад

      @@EzeeLinux Awesome, Wahala ti e niyen.