Bash Tips and Tricks

Posted by: sinetific

Bash Tips and Tricks - 02/19/04 04:00 PM

Post your favorite tips and tricks that help make your life in the shell easier.

for i in ls *gz ; do tar -zxvf $i ; done

decompresses all the archives in a directory.
Posted by: Gremelin

Re: Bash Tips and Tricks - 02/19/04 11:59 PM

ls = list files
ls -a = list all files, including hidden
ls -hal = list all files, including hidden, with details in a human readable format

rm = remove, for removing a file
rmdir = remove, for removing a directory
rm -rf [directory]/ = remove and format, for removing a directory with data.
Posted by: Gremelin

Re: Bash Tips and Tricks - 02/20/04 12:18 AM

-Ar -u[user] -p --auto-repair = have MySQL repair all databases.

service [service] restart = Restart specifide sevice
service [service] stop = Stop specifide service
service [service] start = Start specifide service

du -h --max-depth=1 = Check (by directory) where all your space is at.

su = change user
make && make install = install script

cd /home/virtual;for c in site*;do cat $c/info/current/ipinfo|grep ipaddrs;done = Check what IP's are linked to what user accounts (I work for a webhost, I have to know it)

EditVirtDomain -c ipinfo,namebased=0,ipaddrs=[] -D = Change name based domain to IP based.

EditVirtDomain -c ipinfo,namebased=1,ipaddrs=[] -D = Change IP based site to Name Based.

ntpdate = Sync time with Microsoft

If you have subdomain issues or need to add one their located in /etc/httpd/conf/subdomains.conf
Posted by: Gremelin

Re: Bash Tips and Tricks - 02/20/04 12:24 AM

If user is having an issue with Perl or PHP interpreters within the ensim service do the following:

sitelookup -s [username]
sitelookup -d [domainname]

(be sure they match up, we're compairing the server validations of where the username belongs and where the domain name belongs to be sure we aren't working with the wrong account)

cd /home/virtual/[username]/fst/var/www

(we're trying to see if the interpreters directory exists, which it should, otherwise skip this step and the next step's RM)

ls interpreters

(If interpreters show up then there isn't a problem, if not, continue)

rmdir interpreters
DisableVirtDomain [domain]
EnableVirtDomain [domain]

(Here you tell the system to remove the interpreters directory, disable the account on the system, enable the account on the system. Re-enabling causes the Ensim service to rebuild all data).

ls interpreters

(interpreters should now exist, user account should now be able to use their account once again)
Posted by: Gremelin

Re: Bash Tips and Tricks - 02/20/04 12:25 AM

tar -cvzf [archivename].tgz /path/to/archive/ = Archive path to a .tgz file.

tar -cvzf [archivename].tgz /path/to/archive/ --exclude=/path/to/archive/yet/leave/out/ = Archive path to a .tgz file BUT leave out second path of files.
Posted by: Gremelin

Re: Bash Tips and Tricks - 02/20/04 01:53 AM

./end sysadmin guide

lol, I have to memorise pretty much all of that for work ;-x...
Posted by: Shinobi

Re: Bash Tips and Tricks - 02/20/04 02:53 AM

su and sudo ....they are the biggest time savers in the universe
Posted by: Gremelin

Re: Bash Tips and Tricks - 02/20/04 03:04 AM

su [username] = change usernames. Some systems don't allow direct login to the root user so you need to su to the username.

sudo = used for giving users access to commands without actually giving them access to commands... Example: "sudo su -" can be set to log the user as root without needing password :glares at drak:
Posted by: sinetific

Re: Bash Tips and Tricks - 02/20/04 03:25 AM

ok I wasnt really looking for a description of bash commands... more like combinations of them.
I think there is already a post here containing basic bash commands.
*rm -rf = remove recurisive and force

dmesg | grep [device name]

outputs boot hardware information about a specific device useful for troubleshooting kernel problems. If the device is CD it will spit out info about your CD roms if you use hd as the device it will tell you about your harddrives

cat /var/log/XFree86.0.log | grep EE

outputs any errors from your xconfig log. makes troubleshooting X hella easier or switch EE with WW to view warnings.
Posted by: Gollum

Re: Bash Tips and Tricks - 03/02/04 02:02 AM

i always find myself using "locate [file] | grep [bin|png]" or whatever file i'm looking for
usually either when i'm looking for icons to use i'll do like "locate ethereal | grep png" or when trying to find where a program runs from, "locate mysql | grep bin"
enormous timesavers just b/c i don't pay as much attention as i should when i install stuff. well, i make sure i install it right, but about 4 hours later i forget where that was, lol
and of course, ps -aux | grep [program name]
speaking of which, i'm trying to find a way to pipe a process id into kill....but i can't figure it out. kill always comes back with an error everytime i try. i figure it'd be a huge timesaver if i can just write up a shell script where i just type in like "slackill [program]" and by going through ps and grep and cut and'll kill the process for me//
Posted by: §intå×

Re: Bash Tips and Tricks - 03/02/04 09:23 AM

Okay this may soud ignorant, How do I restart my system from the commandline. I got rid of my GUI on my webserver and I just use bash now.
Posted by: Gremelin

Re: Bash Tips and Tricks - 03/02/04 09:58 AM

restart :x
Posted by: Infinite

Re: Bash Tips and Tricks - 03/02/04 03:33 PM


# reboot


# shutdown -r now
Posted by: §intå×

Re: Bash Tips and Tricks - 03/02/04 05:18 PM

shutdown -r now

that is the one I was thinking of. Thanx
Posted by: pergesu

Re: Bash Tips and Tricks - 03/02/04 06:57 PM

just be careful...I did

shutdown now -r

once, and it shut down the server in Denver. My boss wasn't happy
Posted by: Gremelin

Re: Bash Tips and Tricks - 03/02/04 07:02 PM

hahaha, don't execute shutdown, it shuts down... note that you have to have autologin setup if you're maintianing the server remotely, otherwise when it boots it'll ask for the root user to login
Posted by: sinetific

Re: Bash Tips and Tricks - 03/02/04 08:30 PM

Gollum try using pidof [process] instead of ps
Posted by: §intå×

Re: Bash Tips and Tricks - 03/03/04 05:03 AM

Your shiting me. lol. Well I have a stand alone server.
Posted by: Gremelin

Re: Bash Tips and Tricks - 03/03/04 06:50 AM

Yeh well I have 18 rackmounts ... all with autologin though heh...
Posted by: pergesu

Re: Bash Tips and Tricks - 03/03/04 11:01 AM

What? No, you can just ssh in. It doesn't need to automatically login. It just needs to start up whatever services you want, including ssh, and then you can connect and control it remotely.
Posted by: Gollum

Re: Bash Tips and Tricks - 03/20/04 06:06 AM

just a question on the first one. doing:
for i in ls *gz
wouldn't that use 'ls' as a value for i.
i think the correct way would to leave out the ls and just do
for i in *gz
that should load all files in the current directory for i, as the for command looks for files anyway. thus the ls should not be needed.//
Posted by: Gollum

Re: Bash Tips and Tricks - 03/21/04 09:46 PM

these are shell scripts i had to write:

used this one when after converting rtf files to html, i had to move and rename them. well i didn't have to rename them, but i did b/c it made me feel better. the filenames were .rtf.html, and i wanted just .html
moving multiple files and renaming them:

for x in *.rtf.html #lists all converted html files in current directory
i=$(ls $x | cut -d. -f 1) #displays the filename up to the first period.
#for most files (in my case all of them) this will be the filename minus the extension
echo "Moving $i..."
mv $i.rtf.html /www/htdocs/$i.html #copy (or move, if you'd like to do that instead) all files to another directory and rename them

this second one i used to automatically generate a page of links to the files i just copied:

rm index.html
for x in *.html
i=$(ls $x | cut -d. -f 1)
echo "$i
" >> index.html

pretty self explanatory. note that x is the full filename, and i is the filename without the extension.

i was setting up a large text section on my website, and so i used these two scripts in a cron job while having another program converting lots and lots of rtf files to html. it took a fairly long time, and so i set these up, so ppl could read the texts as they were generated and not have to wait for all of them to complete. speaking of which. does anyone know a really good rtf to html converter. i downloaded one that uses php. and yes it works. but it bloats the files big time. some of them end up being like 400-500k when all they need is 100k or so. needless to say very inefficient, especially when hosting from a cable connection. so if anyone has had any good results with certain conversion utilities, feel free to let me know.//
Posted by: sinetific

Re: Bash Tips and Tricks - 05/21/04 09:46 PM

Process Control

Something I find really useful especially logging in remotely is process controll. I might be explaining the ctrl-alt-del of unix here, but it was something I didnt figure out for like a year into my *nix life.

ctrl-c - kills a process
ctrl-z - stops or pauses a process and puts it in the background
& - launches a process into the background when it follows the command. ie: 'tail /var/log/apache/accesslog &' will write out new entries to the log file to your term window while you use it for other things
fg - places a stopped task into the foreground
bg - places a stopped task into the background

I find this usefull on bitchx or other command line irc clients that i can stop them, work in my shell, then resume chatting on irc. I also find & usefull for compiling programs. Send:
./configure && make && make install &
into the background as a background process and free up your term while it compiles and installs.
Posted by: Wi1d

Re: Bash Tips and Tricks - 05/28/04 06:27 AM

Gollum try using pidof [process] instead of ps
Thanks, that worked nicely sinetific.
bye=`pidof xscreensaver` && kill $bye && echo proccess dies || echo no such process
One of my favorites about bash is aliases.
# emerge aliases
alias emask="echo `$1` /etc/portage/package.keywords"
alias es="emerge -s"                                                   
alias ep="emerge -pv"
alias e="sudo emerge"
alias emerge='sudo emerge'
# directory aliases                                                    
alias ..='cd ..'                                                       
alias ...='cd ../..'                                                   
alias ....='cd ../../..'                                               
alias c="clear"
alias cb="bash_issue"
alias ls="ls --color=always"
alias ll="ls --color -l"                                               
# misc aliases
alias grep='grep --colour=auto'                                        
alias killwine="killall -9 wine; killall -9 wineserver"                
alias recal="history | grep `$1`"                                      
alias lock='xscreensaver-command -lock'                                
alias r00t='sudo -s -H'  
alias svi='sudo vim'
alias smv='sudo mv'
alias vi="vim"                                                         
alias nat="nautilus --no-desktop"                                      
alias 3d="sudo 3ddeskd  --acquire 700 2>1&"                            
alias screengrab="import -window root ~/screen.jpg"                    
alias lvim='vim -c "normal '\''0"'                                     
alias mkisofs="mkisofs -rJV"
alias torrget=" --minport 50555 --maxport 65500"    
alias cal2="cal -3; echo -e Todays date is `date +%B\ %d`"             
alias scr="screen -r"
alias scl="screen -list"
alias nm="nmap -sS -O -PI -PT"
alias icq="screen -S icq centericq"
alias irc="screen -S irc irssi"
alias mp3="cd ~/music/full-albums/ && screen -S mp3 cplay"
alias get="cd ~/download/torrent-files/ && screen -S get"