UNIXTOOLBOX
4GHRCNBTLDMSHR@BNKKDBSHNMNE5MHW,HMTW3$BNLL@MCR@MCS@RJRVGHBG@QDTRDETKENQ)4VNQJ
NQENQ@CU@MBDCTRDQR4GHRHR@OQ@BSHB@KFTHCDVHSGBNMBHRDDWOK@M@SHNMR
GNVDUDQSGDQD@CDQHR
RTOONRDCSNJMNVVG@SRGDHRCNHMF
3XRSDL
0QNBDRRDR
HKD3XRSDL
.DSVNQJ
33(3#0
60.VHSG33(
239.#
35$/
%MBQXOSHKDR
%MBQXOS0@QSHSHNMR
33,#DQSHEHB@SDR
#63
36.
5RDETK#NLL@MCR
)MRS@KK3NESV@QD
#NMUDQS-DCH@
0QHMSHMF
$@S@A@RDR
$HRJ1TNS@
3GDKKR
3BQHOSHMF
0QNFQ@LLHMF
/MKHMD(DKO
5MHW4NNKANWQDUHRHNM
4GDK@SDRSUDQRHNMNESGHRCNBTLDMSB@MADENTMC@SGSSOBAUTTMHWSNNKANWWGSLK2DOK@BDWGSLK
NMSGDKHMJVHSGOCEENQSGD0$UDQRHNM@MCVHSGANNJOCEENQSGDANNJKDSUDQRHNM/M@CTOKDW
OQHMSDQSGDANNJKDSVHKKBQD@SD@RL@KKANNJQD@CXSNAHMC3DD@KRNSGD@ANTSO@FD
%QQNQQDONQSR@MCBNLLDMSR@QDLNRSVDKBNLD
BBAUT#NKHM@QRBGDK
1SYSTEM
(@QCV@QDO	[3S@SHRSHBRO	[5RDQRO	[,HLHSRO	[2TMKDUDKRO	[QNNSO@RRVNQCO	[
#NLOHKDJDQMDKO	[2DO@HQFQTAO	[-HRBO	
2TMMHMFJDQMDK@MCRXRSDLHMENQL@SHNM
#uname-a#Getthekernelversion(andBSDversion)
#lsb_release-a#FullreleaseinfoofanyLSBdistribution
#cat/etc/SuSE-release#GetSuSEversion
#cat/etc/debian_version#GetDebianversion
5RDDSBDISTR
QDKD@RDVHSGDISTR=KRA5ATMST
QDCG@S
FDMSNN
L@MCQ@JD
RTM3NK@QHR
@MCRN
NM3DD@KRN/etc/issue
#uptime#Showhowlongthesystemhasbeenrunning+load
#hostname#system'shostname
#hostname-i#DisplaytheIPaddressofthehost.(Linuxonly)
#manhier#Descriptionofthefilesystemhierarchy
#lastreboot#Showsystemreboothistory
1.1HardwareInformations
+DQMDKCDSDBSDCG@QCV@QD
#dmesg#Detectedhardwareandbootmessages
#lsdev#informationaboutinstalledhardware
#ddif=/dev/membs=1kskip=768count=2562/dev/null|strings-n8#ReadBIOS
Linux
#cat/proc/cpuinfo#CPUmodel
#cat/proc/meminfo#Hardwarememory
#grepMemTotal/proc/meminfo#Displaythephysicalmemory
#watch-n1'cat/proc/interrupts'#Watchchangeableinterruptscontinuously
#free-m#Usedandfreememory(-mforMB)
#cat/proc/devices#Configureddevices
#lspci-tv#ShowPCIdevices
#lsusb-tv#ShowUSBdevices
#lshal#Showalistofalldeviceswiththeirproperties
#dmidecode#ShowDMI/SMBIOS:hwinfofromtheBIOS
FreeBSD
#sysctlhw.model#CPUmodel
#sysctlhw#Givesalotofhardwareinformation
#sysctlhw.ncpu#numberofactiveCPUsinstalled
#sysctlvm#Memoryusage
#sysctlhw.realmem#Hardwarememory
#sysctl-a|grepmem#Kernelmemorysettingsandinfo
#sysctldev#Configureddevices
#pciconf-l-cv#ShowPCIdevices
#usbdevs-v#ShowUSBdevices
#atacontrollist#ShowATAdevices
#camcontroldevlist-v#ShowSCSIdevices
1.2Load,statisticsandmessages
4GDENKKNVHMFBNLL@MCR@QDTRDETKSNEHMCNTSVG@SHRFNHMFNMNMSGDRXRSDL
#top#displayandupdatethetopcpuprocesses
#mpstat1#displayprocessorsrelatedstatistics
#vmstat2#displayvirtualmemorystatistics
#iostat2#displayI/Ostatistics(2sintervals)
#systat-vmstat1#BSDsummaryofsystemstatistics(1sintervals)
#systat-tcp1#BSDtcpconnections(tryalso-ip)
#systat-netstat1#BSDactivenetworkconnections
#systat-ifstat1#BSDnetworktrafficthroughactiveinterfaces
c3XRSDLc
3GNQS,HMTWQDEDQDMBDVVVOHWDKAD@SNQFBLCKHMDGSLK
,HSSKDBNLL@MCKHMDFNNCHDRVVVRGDKK
ETNQF
4G@SR@KKENKJR
4GHRCNBTLDMS5MHW4NNKANWQDUHRHNMHRKHBDMRDCTMCDQ@#QD@SHUD#NLLNMR,HBDMBD
;!SSQHATSHNM
3G@QD!KHJD=b#NKHM@QRBGDK
3NLDQHFGSRQDRDQUDC
c/MKHMD(DKOc

#systat-iostat1#BSDCPUandanddiskthroughput
#ipcs-a#informationonSystemVinterprocess
#tail-n500/var/log/messages#Last500kernel/syslogmessages
#tail/var/log/warn#Systemwarningsmessagesseesyslog.conf
1.3Users
#id#Showtheactiveuseridwithloginandgroup
#last#Showlastloginsonthesystem
#who#Showwhoisloggedonthesystem
#groupaddadmin#Addgroupadminandusercolin(Linux/Solaris)
#useradd-cColinBarschel-gadmin-mcolin
#usermod-a-Ggroupuser#Addexistingusertogroup(Debian)
#groupmod-Ausergroup#Addexistingusertogroup(SuSE)
#userdelcolin#Deleteusercolin(Linux/Solaris)
#adduserjoe#FreeBSDadduserjoe(interactive)
#rmuserjoe#FreeBSDdeleteuserjoe(interactive)
#pwgroupaddadmin#UsepwonFreeBSD
#pwgroupmodadmin-mnewmember#Addanewmembertoagroup
#pwuseraddcolin-cColinBarschel-gadmin-m-s/bin/tcsh
#pwuserdelcolin;pwgroupdeladmin
%MBQXOSDCO@RRVNQCR@QDRSNQDCHMDSBRG@CNVENQ,HMTW@MC3NK@QHR@MCDSBL@RSDQO@RRVCNM
QDD3$)ESGDL@RSDQO@RRVCHRLNCHEHDCL@MT@KKXR@XSNCDKDSD@O@RRVNQC
QTM#pwd_mkdb
-pmaster.passwdSNQDATHKCSGDC@S@A@RD
4NSDLONQ@QHKXOQDUDMSKNFHMRRXRSDLVHCDENQ@KKTRDQRATSQNNS	TRDMNKNFHM4GDLDRR@FDHM
MNKNFHMVHKKADCHROK@XDCLHFGSMNSVNQJVHSGRRGOQD
RG@QDCJDXR	
#echoSorrynologinnow/etc/nologin#(Linux)
#echoSorrynologinnow/var/run/nologin#(FreeBSD)
1.4Limits
3NLD@OOKHB@SHNMQDPTHQDGHFGDQKHLHSRNMNODMEHKDR@MCRNBJDSRKHJD@OQNWXVDARDQUDQ
C@S@A@RD	4GDCDE@TKSKHLHSR@QDTRT@KKXSNNKNV
Linux
Pershell/script
4GDRGDKKKHLHSR@QDFNUDQMDCAXulimit4GDRS@STRHRBGDBJDCVHSGulimit-aNQDW@LOKDSN
BG@MFDSGDNODMEHKDRKHLHSEQNLSNCN
#ulimit-n10240#Thisisonlyvalidwithintheshell
4GDulimitBNLL@MCB@MADTRDCHM@RBQHOSSNBG@MFDSGDKHLHSRENQSGDRBQHOSNMKX
Peruser/process
,NFHMTRDQR@MC@OOKHB@SHNMRB@MADBNMEHFTQDCHM/etc/security/limits.confNQDW@LOKD
#cat/etc/security/limits.conf
*hardnproc250#Limituserprocesses
asteriskhardnofile409600#Limitapplicationopenfiles
Systemwide
+DQMDKKHLHSR@QDRDSVHSGRXRBSK0DQL@MDMSKHLHSR@QDRDSHM/etc/sysctl.conf
#sysctl-a#Viewallsystemlimits
#sysctlfs.file-max#Viewmaxopenfileslimit
#sysctlfs.file-max=102400#Changemaxopenfileslimit
#echo102450000/proc/sys/net/ipv4/ip_local_port_range#portrange
#cat/etc/sysctl.conf
fs.file-max=102400#Permanententryinsysctl.conf
#cat/proc/sys/fs/file-nr#Howmanyfiledescriptorsareinuse
c3XRSDLc
FreeBSD
Pershell/script
5RDSGDBNLL@MClimitsHMBRGNQSBRGNQ@RHM,HMTW
TRDulimitHM@MRGNQA@RGRGDKK
Peruser/process
4GDCDE@TKSKHLHSRNMKNFHM@QDRDSHM/etc/login.conf!MTMKHLHSDCU@KTDHRRSHKKKHLHSDCAXSGD
RXRSDLL@WHL@KU@KTD
Systemwide
+DQMDKKHLHSR@QD@KRNRDSVHSGRXRBSK0DQL@MDMSKHLHSR@QDRDSHM/etc/sysctl.confNQ/boot/
loader.conf4GDRXMS@WHRSGDR@LD@R,HMTWATSSGDJDXR@QDCHEEDQDMS
#sysctl-a#Viewallsystemlimits
#sysctlkern.maxfiles=XXXX#maximumnumberoffiledescriptors
kern.ipc.nmbclusters=32768#Permanententryin/etc/sysctl.conf
kern.maxfiles=65536#TypicalvaluesforSquid
kern.maxfilesperproc=32768
kern.ipc.somaxconn=8192#TCPqueue.Betterforapache/sendmail
#sysctlkern.openfiles#Howmanyfiledescriptorsareinuse
#sysctlkern.ipc.numopensockets#Howmanyopensocketsareinuse
#sysctlnet.inet.ip.portrange.last=50000#Defaultis1024-5000
#netstat-m#networkmemorybuffersstatistics
3DD4GDQDD3$G@MCANNJ#G@OSDQ
ENQCDS@HKR!MC@KRNQDD3$ODQENQL@MBDSTMHMF
Solaris
4GDENKKNVHMFU@KTDRHM/etc/systemVHKKHMBQD@RDSGDL@WHLTLEHKDCDRBQHOSNQRODQOQNB
setrlim_fd_max=4096#Hardlimitonfiledescriptorsforasingleproc
setrlim_fd_cur=1024#Softlimitonfiledescriptorsforasingleproc
1.5Runlevels
Linux
/MBDANNSDC
SGDJDQMDKRS@QSRinitVGHBGSGDMRS@QSRrcVGHBGRS@QSR@KKRBQHOSRADKNMFHMFSN@
QTMKDUDK4GDRBQHOSR@QDRSNQDCHMDSBHMHSC@MC@QDKHMJDCHMSNDSBQBCQB.CVHSG.SGDQTMKDUDK
MTLADQ
4GDCDE@TKSQTMKDUDKHRBNMEHFTQDCHMDSBHMHSS@A)SHRTRT@KKXNQ
#grepdefault:/etc/inittab
id:3:initdefault:
4GD@BST@KQTMKDUDKB@MADBG@MFDCVHSGinitNQDW@LOKDSNFNEQNLSN
#init5#Entersrunlevel5
3GTSCNVM@MCG@KS
3HMFKD
5RDQLNCD@KRN3	
-TKSH
TRDQVHSGNTSMDSVNQJ
-TKSH
TRDQVHSGMDSVNQJ
-TKSH
TRDQVHSG8
2DANNS
5RDchkconfigSNBNMEHFTQDSGDOQNFQ@LRSG@SVHKKADRS@QSDC@SANNSHM@QTMKDUDK
#chkconfig--list#Listallinitscripts
#chkconfig--listsshd#Reportthestatusofsshd
#chkconfigsshd--level35on#Configuresshdforlevels3and5
#chkconfigsshdoff#Disablesshdforallrunlevels
$DAH@M@MC$DAH@MA@RDCCHRSQHATSHNMRKHJD5ATMSTNQ+MNOOHWTRDSGDBNLL@MCupdate-rc.dSN
L@M@FDSGDQTMKDUDKRRBQHOSR$DE@TKSHRSNRS@QSHM
@MC@MCRGTSCNVMHM
@MC
GSSOVVVEQDDARCNQFG@MCANNJBNMEHFSTMHMF
JDQMDK
KHLHSRGSLK
GSSORDQUDQE@TKSBNLPTDRSHNMREQDDARC
ODQENQL@MBD
STMHMF
RXRBSKR
KN@CDQ
BNME
JDQMDK
c3XRSDLc

Theprogramsimplecpp.cpp
#includeIPv4.h
#includeiostream
#includestring
usingnamespacestd;
intmain(intargc,char*argv[]){
stringipstr;//definevariables
unsignedlongipint=1347861486;//TheIPinintegerform
GenericUtils::IPv4iputils;//createanobjectoftheclass
ipstr=iputils.IPint_to_IPquad(ipint);//calltheclassmember
coutipint=ipstrendl;//printtheresult
return0;
}
#NLOHKD@MCDWDBTSDVHSG
#g++-cIPv4.cppsimplecpp.cpp#Compileinobjects
#g++IPv4.osimplecpp.o-osimplecpp.exe#Linktheobjectstofinalexecutable
#./simplecpp.exe
1347861486=80.86.187.238
5RDlddSNBGDBJVGHBGKHAQ@QHDR@QDTRDCAXSGDDWDBTS@AKD@MCVGDQDSGDX@QDKNB@SDC!KRNTRDC
SNBGDBJHE@RG@QDCKHAQ@QXHRLHRRHMFNQHESGDDWDBTS@AKDHRRS@SHB
#ldd/sbin/ifconfig#listdynamicobjectdependencies
#arrcsstaticlib.a*.o#createstaticarchive
#artstaticlib.a#printtheobjectslistfromthearchive
#arx/usr/lib/libc.aversion.o#extractanobjectfilefromthearchive
#nmversion.o#showfunctionmembersprovidedbyobject
22.5SimpleMakefile
4GDLHMHL@K-@JDEHKDENQSGDLTKSH
RNTQBDOQNFQ@LHRRGNVMADKNV4GDKHMDRVHSGHMRSQTBSHNMRmust
beginwithatab4GDA@BJRK@RGB@MADTRDCSNBTSKNMFKHMDR
CC=g++
CFLAGS=-O
OBJS=IPv4.osimplecpp.o
simplecpp:${OBJS}
${CC}-osimplecpp${CFLAGS}${OBJS}
clean:
rm-f${TARGET}${OBJS}
23ONLINEHELP
23.1Documentation
,HMTW$NBTLDMS@SHNMDMSKCONQF
,HMTW-@M0@FDRVVVKHMTWL@MO@FDRBNL
,HMTWBNLL@MCRCHQDBSNQXVVVNQDHKKXMDSBNLKHMTWBLC
,HMTWCNBL@MGNVSNRKHMTWCHDMDS
QDD3$(@MCANNJVVVEQDDARCNQFG@MCANNJ
QDD3$-@M0@FDRVVVEQDDARCNQFBFHL@MBFH
QDD3$TRDQVHJHVVVEQDDARCVHJHMDS
3NK@QHR-@M0@FDRCNBRRTMBNL@OOCNBRBNKK
23.2OtherUnix/Linuxreferences
2NRDSS@3SNMDENQ5MHWAG@LHBNLQNRDSS@GSLK@5MHWBNLL@MCSQ@MRK@SNQ	
5MHWFTHCDBQNRRQDEDQDMBDTMHWFTHCDMDSTMHWFTHCDRGSLK
,HMTWBNLL@MCRKHMDKHRSVVVKHMTWBLCNQF
c/MKHMD(DKOc
#gccsimple.c-osimple
#./simple
Theansweris42
22.3C++basics
*pointer//Objectpointedtobypointer
obj//Addressofobjectobj
obj.x//Memberxofclassobj(objectobj)
pobj-x//Memberxofclasspointedtobypobj
//(*pobj).xandpobj-xarethesame
22.4C++example
!R@RKHFGSKXLNQDQD@KHRSHBOQNFQ@LHM#@BK@RRHMHSRNVMGD@CDQ)0UG	@MCHLOKDLDMS@SHNM
)0UBOO	@MC@OQNFQ@LVGHBGTRDRSGDBK@RRETMBSHNM@KHSX4GDBK@RRBNMUDQSR@M)0@CCQDRRHM
HMSDFDQENQL@SSNSGDJMNVMPT@CENQL@S
IPv4class
IPv4.h:
#ifndefIPV4_H
#defineIPV4_H
#includestring
namespaceGenericUtils{//createanamespace
classIPv4{//classdefinition
public:
IPv4();~IPv4();
std::stringIPint_to_IPquad(unsignedlongip);//memberinterface
};
}//namespaceGenericUtils
#endif//IPV4_H
IPv4.cpp:
#includeIPv4.h
#includestring
#includesstream
usingnamespacestd;//usethenamespaces
usingnamespaceGenericUtils;
IPv4::IPv4(){}//defaultconstructor/destructor
IPv4::~IPv4(){}
stringIPv4::IPint_to_IPquad(unsignedlongip){//memberimplementation
ostringstreamipstr;//useastringstream
ipstr((ip0xff000000)24)//Bitwiserightshift
.((ip0x00ff0000)16)
.((ip0x0000ff00)8)
.((ip0x000000ff));
returnipstr.str();
}
c0QNFQ@LLHMFc

#update-rc.dsshddefaults#Activatesshdwiththedefaultrunlevels
#update-rc.dsshdstart202345.stop20016.#Withexplicitarguments
#update-rc.d-fsshdremove#Disablesshdforallrunlevels
#shutdown-hnow(or#poweroff)#Shutdownandhaltthesystem
FreeBSD
4GD3$ANNS@OOQN@BGHRCHEEDQDMSEQNLSGD3XR6
SGDQD@QDMNQTMKDUDKR4GDEHM@KANNSRS@SD
RHMFKDTRDQ
VHSGNQVHSGNTS8	HRBNMEHFTQDCHM/etc/ttys!KK/3RBQHOSR@QDKNB@SDCHM/etc/
rc.d/@MCHM/usr/local/etc/rc.d/ENQSGHQC
O@QSX@OOKHB@SHNMR4GD@BSHU@SHNMNESGDRDQUHBDHR
BNMEHFTQDCHM/etc/rc.conf@MC/etc/rc.conf.local4GDCDE@TKSADG@UHNQHRBNMEHFTQDCHM/etc/
defaults/rc.conf4GDRBQHOSRQDRONMCR@SKD@RSSNRS@QS[RSNO[RS@STR
#/etc/rc.d/sshdstatus
sshdisrunningaspid552.
#shutdownnow#Gointosingle-usermode
#exit#Gobacktomulti-usermode
#shutdown-pnow#Shutdownandhaltthesystem
#shutdown-rnow#Reboot
4GDOQNBDRRinitB@M@KRNADTRDCSNQD@BGNMDNESGDENKKNVHMFRS@SDRKDUDKNQDW@LOKD#init
6ENQQDANNS
(@KS@MCSTQMSGDONVDQNEERHFM@KUSR2	
'NSNRHMFKD
TRDQLNCDRHFM@KTERM	
2DANNSSGDL@BGHMDRHFM@KINT	
BKNBJETQSGDQKNFHMRRHFM@KTSTP	
P2DRB@MSGDSSXR	EHKDRHFM@KHUP	
Windows
3S@QS@MCRSNO@RDQUHBDVHSGDHSGDQSGDservicenameNQservicedescriptionRGNVMHMSGD
3DQUHBDR#NMSQNK0@MDK	@RENKKNVR
netstopWSearch
netstartWSearch#startsearchservice
netstopWindowsSearch
netstartWindowsSearch#sameasaboveusingdescr.
1.6Resetrootpassword
Linuxmethod1
!SSGDANNSKN@CDQKHKNNQFQTA
DMSDQSGDENKKNVHMFANNSNOSHNM
init=/bin/sh
4GDJDQMDKVHKKLNTMSSGDQNNSO@QSHSHNM@MCinitVHKKRS@QSSGDANTQMDRGDKKHMRSD@CNErc@MCSGDM@
QTMKDUDK5RDSGDBNLL@MCpasswd@SSGDOQNLOSSNBG@MFDSGDO@RRVNQC@MCSGDMQDANNSNQFDS
SGDRHMFKDTRDQLNCD@RXNTMDDCSGDO@RRVNQCENQSG@S
)E
@ESDQANNSHMF
SGDQNNSO@QSHSHNMHRLNTMSDCQD@CNMKX
QDLNTMSHSQV
#mount-oremount,rw/
#passwd#ordeletetherootpassword(/etc/shadow)
#sync;mount-oremount,ro/#syncbeforetoremountreadonly
#reboot
FreeBSDmethod1
/MQDD3$
ANNSHMRHMFKDTRDQLNCD
QDLNTMSQV@MCTRDO@RRVC9NTB@MRDKDBSSGDRHMFKD
TRDQLNCDNMSGDANNSLDMTNOSHNM	VGHBGHRCHROK@XDCENQRDBNMCR@SRS@QSTO4GDRHMFKD
TRDQLNCDVHKKFHUDXNT@QNNSRGDKKNMSGDO@QSHSHNM
#mount-u/;mount-a#willmount/rw
#passwd
#reboot
c3XRSDLc
UnixesandFreeBSDandLinuxmethod2
/SGDQ5MHWDRLHFGSMNSKDSXNTFN@V@XVHSGSGDRHLOKDHMHSSQHBJ4GDRNKTSHNMHRSNLNTMSSGDQNNS
O@QSHSHNMEQNL@MNSGDQ/3KHJD@QDRBTD#$	@MCBG@MFDSGDO@RRVNQCNMSGDCHRJ
aNNS@KHUD#$NQHMRS@KK@SHNM#$HMSN@QDRBTDLNCDVGHBGVHKKFHUDXNT@RGDKK
aHMCSGDQNNSO@QSHSHNMVHSGECHRJDFECHRJCDURC@
a-NTMSHS@MCTRDBGQNNS
#mount-orw/dev/ad4s3a/mnt
#chroot/mnt#chrootinto/mnt
#passwd
#reboot
1.7Kernelmodules
Linux
#lsmod#Listallmodulesloadedinthekernel
#modprobeisdn#Toloadamodule(hereisdn)
FreeBSD
#kldstat#Listallmodulesloadedinthekernel
#kldloadcrypto#Toloadamodule(herecrypto)
1.8CompileKernel
Linux
#cd/usr/src/linux
#makemrproper#Cleaneverything,includingconfigfiles
#makeoldconfig#Reusetheold.configifexistent
#makemenuconfig#orxconfig(Qt)orgconfig(GTK)
#make#Createacompressedkernelimage
#makemodules#Compilethemodules
#makemodules_install#Installthemodules
#makeinstall#Installthekernel
#reboot
FreeBSD
/OSHNM@KKXTOC@SDSGDRNTQBDSQDDHM/usr/src	VHSGBRTO@RNEQDD3$NQK@SDQ	
#csupsupfile
)TRDSGDENKKNVHMFRTOEHKD
*defaulthost=cvsup5.FreeBSD.org#www.freebsd.org/handbook/cvsup.html#CVSUP-MIRRORS
*defaultprefix=/usr
*defaultbase=/var/db
*defaultrelease=cvsdeletetag=RELENG_7
src-all
4NLNCHEX@MCQDATHKCSGDJDQMDK
BNOXSGDFDMDQHBBNMEHFTQ@SHNMEHKDSN@MDVM@LD@MCDCHSHS@R
MDDCDCXNTB@M@KRNDCHSSGDEHKDGENERICCHQDBSKX	4NQDRS@QSSGDATHKC@ESDQ@MHMSDQQTOSHNM
@CC
SGDNOSHNMNO_CLEAN=YESSNSGDL@JDBNLL@MCSN@UNHCBKD@MHMFSGDNAIDBSR@KQD@CXATHKC
#cd/usr/src/sys/i386/conf/
#cpGENERICMYKERNEL
#cd/usr/src
#makebuildkernelKERNCONF=MYKERNEL
#makeinstallkernelKERNCONF=MYKERNEL
4NQDATHKCSGDETKK/3
#makebuildworld#BuildthefullOSbutnotthekernel
#makebuildkernel#UseKERNCONFasaboveifappropriate
#makeinstallkernel
#reboot
#mergemaster-p#Comparesonlyfilesknowntobeessential
c3XRSDLc

[^$.|?*+()#specialcharactersanyotherwillmatchthemselves
#escapesspecialcharactersandtreatasliteral
*#repeatthepreviousitemzeroormoretimes
.#singlecharacterexceptlinebreakcharacters
.*#matchzeroormorecharacters
^#matchatthestartofaline/string
$#matchattheendofaline/string
.$#matchasinglecharacterattheendofline/string
^$#matchlinewithasinglespace
[^A-Z]#matchanylinebeginningwithanycharfromAtoZ
21.6Someusefulcommands
4GDENKKNVHMFBNLL@MCR@QDTRDETKSNHMBKTCDHM@RBQHOSNQ@RNMDKHMDQR
sort-t.-k1,1n-k2,2n-k3,3n-k4,4n#SortIPv4ipaddresses
echo'Test'|tr'[:lower:]''[:upper:]'#Caseconversion
echofoo.bar|cut-d.-f1#Returnsfoo
PID=$(ps|grepscript.sh|grepbin|awk'{print$1}')#PIDofarunningscript
PID=$(psaxww|grep[p]ing|awk'{print$1}')#PIDofping(w/ogreppid)
IP=$(ifconfig$INTERFACE|sed'/.*inetaddr:/!d;s///;s/.*//')#Linux
IP=$(ifconfig$INTERFACE|sed'/.*inet/!d;s///;s/.*//')#FreeBSD
if[`difffile1file2|wc-l`!=0];then[...]fi#Filechanged?
cat/etc/master.passwd|grep-vroot|grep-v*:|awk-F:#Createhttppasswd
'{printf(%s:%sn,$1,$2)}'/usr/local/etc/apache2/passwd
testuser=$(cat/usr/local/etc/apache2/passwd|grep-v#Checkuserinpasswd
root|grep-v*:|awk-F:'{printf(%sn,$1)}'|grep^user$)
:(){:|:};:#bashforkbomb.Willkillyourmachine
tail+2filefile2#removethefirstlinefromfile
)TRDSGHRKHSSKDSQHBJSNBG@MFDSGDEHKDDWSDMRHNMENQL@MXEHKDR@SNMBDNQDW@LOKDEQNLBWWSN
BOO4DRSHSEHQRSVHSGNTSSGD|sh@SSGDDMC9NTB@M@KRNCNSGHRVHSGSGDBNLL@MCrenameHE
HMRS@KKDC/QVHSGA@RGATHKSHMR
#ls*.cxx|awk-F.'{printmv$0$1.cpp}'|sh
#ls*.c|seds/.*/cp.$(date+%Y%m%d)/|sh#e.g.copy*.cto*.c.20080401
#rename.cxx.cpp*.cxx#Renameall.cxxtocpp
#foriin*.cxx;domv$i${i%%.cxx}.cpp;done#withbashbuiltins
22PROGRAMMING
22.1Cbasics
strcpy(newstr,str)/*copystrtonewstr*/
expr1?expr2:expr3/*if(expr1)expr2elseexpr3*/
x=(yz)?y:z;/*if(yz)x=y;elsex=z;*/
inta[]={0,1,2};/*Initializedarray(ora[3]={0,1,2};*/
inta[2][3]={{1,2,3},{4,5,6}};/*Arrayofarrayofints*/
inti=12345;/*Convertinitocharstr*/
charstr[10];
sprintf(str,%d,i);
22.2Cexample
!LHMHL@KBOQNFQ@LRHLOKDB
#includestdio.h
main(){
intnumber=42;
printf(Theansweris%in,number);
}
#NLOHKDVHSG
c0QNFQ@LLHMFc
Generateafile
MYHOME=/home/colin
cattesthome.sh_EOF
#Allofthisgoesintothefiletesthome.sh
if[-d$MYHOME];then
echo$MYHOMEexists
else
echo$MYHOMEdoesnotexist
fi
_EOF
shtesthome.sh
21.2Bournescriptexample
!R@RL@KKDW@LOKD
SGDRBQHOSTRDCSNBQD@SD@0$ANNJKDSEQNLSGHRWGSLKCNBTLDMS
#!/bin/sh
#Thisscriptcreatesabookinpdfformatreadytoprintonaduplexprinter
if[$#-ne1];then#Checktheargument
echo12Usage:$0HtmlFile
exit1#nonzeroexitiferror
fi
file=$1#Assignthefilename
fname=${file%.*}#Getthenameofthefileonly
fext=${file#*.}#Gettheextensionofthefile
prince$file-o$fname.pdf#fromwww.princexml.com
pdftops-paperA4-noshrink$fname.pdf$fname.ps#createpostscriptbooklet
cat$fname.ps|psbook|psnup-Pa4-2|pstops-b2:0,1U(21cm,29.7cm)$fname.book.ps
ps2pdf13-sPAPERSIZE=a4-sAutoRotatePages=None$fname.book.ps$fname.book.pdf
#use#a4and#NoneonWindows!
exit0#exit0meanssuccessful
21.3Someawkcommands
!VJHRTRDETKENQEHDKCRSQHOOHMF

unixtoolbox.book