如何系统地学习Shell编程? 学习Linux必须要学习shell编程吗?

\u5982\u4f55\u5b66\u597dlinux\u4e2d\u7684shell\u7f16\u7a0b?

1\u3001\u9996\u5148\u5efa\u7acb\u4e00\u4e2a\u5185\u5bb9\u5982\u4e0b\u7684\u6587\u4ef6\uff0c\u540d\u5b57\u4e3adate,\u5c06\u5176\u5b58\u653e\u5728\u76ee\u5f55\u4e0b\u7684bin\u5b50\u76ee\u5f55\u4e2d\u3002

\u3000\u3000#Program date

\u3000\u3000#usageto ::show the date in this way (\u6ce8\u91ca)

\u3000\u3000echo \u201cMr.$USER,Today is:\u201d

\u3000\u3000echo date \u201c+%B%d%A\u201d

\u3000\u3000echo \u201cWhish you a lucky day !\u201d

\u3000\u30002\u3001\u7f16\u8f91\u5b8c\u8be5\u6587\u4ef6\u4e4b\u540e\u5b83\u8fd8\u4e0d\u80fd\u6267\u884c\uff0c\u6211\u4eec\u9700\u8981\u7ed9\u5b83\u8bbe\u7f6e\u53ef\u6267\u884c\u6743\u9650\u3002\u4f7f\u7528\u5982\u4e0b\u547d\u4ee4\uff1a

\u3000\u3000chmod +x date

\u3000\u3000\u901a\u8fc7\u4ee5\u4e0a\u8fc7\u7a0b\u4e4b\u540e\uff0c\u6211\u4eec\u5c31\u53ef\u4ee5\u50cf\u4f7f\u7528ls\u547d\u4ee4\u4e00\u6837\u6267\u884c\u8fd9\u4e2ashell\u7a0b\u5e8f.

\u3000\u3000[beichen@localhost bin]$ date

\u3000\u3000Mr.beichen,Today is:

\u3000\u3000January 13 Friday

\u3000\u3000Whish you a lucky day !

\u3000\u3000\u4e3a\u4e86\u5728\u4efb\u4f55\u76ee\u5f55\u91cc\u90fd\u53ef\u4ee5\u6267\u884c\u8fd9\u4e2a\u7a0b\u5e8f\uff0c\u53ef\u4ee5\u5c06bin\u7684\u8fd9\u4e2a\u76ee\u5f55\u6dfb\u52a0\u5230\u8def\u5f84\u4e2d\u53bb\u3002

\u3000\u3000[beichen@localhost bin]$ PATH=$PATH:$HOME/bin

\u3000\u3000(\u6ce8\uff1a\u8fd9\u91cc\u7684$HOME\u4ee3\u66ff\u7684\u662f/home/beichen,\u800cbin\u76ee\u5f55\u662f\u81ea\u5df1\u5efa\u7684\u4e00\u4e2a\u76ee\u5f55)

\u3000\u3000\u53e6\u5916\u4e00\u79cd\u6267\u884cdate\u7684\u65b9\u6cd5\u5c31\u662f\u628a\u5b83\u4f5c\u4e3a\u4e00\u4e2a\u53c2\u6570\u4f20\u7ed9shell\u547d\u4ee4:

\u3000\u3000[beichen@localhost /]$ bash date

\u3000\u3000Mr.beichen,Today is:

\u3000\u3000January 13 Friday

\u3000\u3000Whish you a lucky day !

\u3000\u3000\u5c3d\u7ba1\u5728\u524d\u9762\u6211\u4eec\u4f7f\u7528chmod +x date\u5c06date\u8bbe\u7f6e\u4e3a\u53ef\u6267\u884c\uff0c\u5176\u5b9e\u4e0d\u8bbe\u7f6e\u4e5f\u6ca1\u6709\u5173\u7cfb\uff0c\u4f46\u5728Linux\u91cc\u6267\u884c\u5b83\uff0c\u9700\u8981\u5148\u544a\u8bc9\u7cfb\u7edf\u5b83\u662f\u4e00\u4e2a\u53ef\u6267\u884c\u7684\u811a\u672c\u3002

\u3000\u3000[beichen@localhost /]$ .date

\u3000\u3000Mr.beichen,Today is:

\u3000\u3000January 13 Friday

\u3000\u3000Whish you a lucky day !

\u3000\u3000\u5373\u5728date\u524d\u9762\u52a0\u4e0a\u4e00\u4e2a\u70b9\u201d.\u201d\uff0c\u5e76\u4e14\u7528\u7a7a\u683c\u4e0e\u540e\u9762\u7684shell\u811a\u672c\u7684\u6587\u4ef6\u540d\u9694\u5f00\u3002\u5f53\u7136\uff0c\u4e0d\u63a8\u8350\u8fd9\u6837\u505a\u3002

\u3000\u3000\u4e8c\u3001shell\u53c2\u6570

\u3000\u3000\u5982\u540cls \u547d\u4ee4\u53ef\u4ee5\u63a5\u53d7\u76ee\u5f55\u7b49\u4f5c\u4e3a\u5b83\u7684\u53c2\u6570\u4e00\u6837\uff0c\u5728shell\u7f16\u7a0b\u65f6\u540c\u6837\u53ef\u4ee5\u4f7f\u7528\u53c2\u6570\u3002Shell\u6709\u4f4d\u7f6e\u53c2\u6570\u548c\u5185\u90e8\u53c2\u6570\u3002

\u3000\u30001\u3001 \u4f4d\u7f6e\u53c2\u6570

\u3000\u3000\u7531\u7cfb\u7edf\u63d0\u4f9b\u7684\u53c2\u6570\u79f0\u4e3a\u4f4d\u7f6e\u53c2\u6570\u3002\u4f4d\u7f6e\u53c2\u6570\u7684\u503c\u53ef\u4ee5\u7528$N\u5f97\u5230\uff0cN\u662f\u4e00\u4e2a\u6570\u5b57\uff0c\u5982\u679c\u4e3a1\uff0c\u5373$1.\u7c7b\u4f3cC\u8bed\u8a00\u4e2d\u7684\u6570\u7ec4\uff0cLinux\u4f1a\u628a\u8f93\u5165\u7684\u547d\u4ee4\u5b57\u7b26\u4e32\u5206\u6bb5\u5e76\u7ed9\u6bcf\u6bb5\u8fdb\u884c\u6807\u53f7\uff0c\u6807\u53f7\u4ece0\u5f00\u59cb\u3002\u7b2c0\u53f7\u4e3a\u7a0b\u5e8f\u540d\u5b57\uff0c\u4ece1\u5f00\u59cb\u5c31\u8868\u793a\u4f20\u9012\u7ed9\u7a0b\u5e8f\u7684\u53c2\u6570\u3002\u5982$0\u8868\u793a\u7a0b\u5e8f\u7684\u540d\u5b57\uff0c$1\u8868\u793a\u4f20\u9012\u7ed9\u7a0b\u5e8f\u7684\u7b2c\u4e00\u4e2a\u53c2\u6570\uff0c\u4ee5\u6b64\u7c7b\u63a8\u3002

\u3000\u30002\u3001 \u5185\u90e8\u53c2\u6570

\u3000\u3000\u4e0a\u8ff0\u8fc7\u7a0b\u4e2d\u7684$0\u662f\u4e00\u4e2a\u5185\u90e8\u53d8\u91cf\uff0c\u5b83\u662f\u5fc5\u987b\u7684\uff0c\u800c$1\u5219\u53ef\u6709\u53ef\u65e0\u3002\u548c$0\u4e00\u6837\u7684\u5185\u90e8\u53d8\u91cf\u8fd8\u6709\u4ee5\u4e0b\u51e0\u4e2a\u3002

\u3000\u3000$# ----\u4f20\u9012\u7ed9\u7a0b\u5e8f\u7684\u603b\u7684\u53c2\u6570\u6570\u76ee

\u3000\u3000$? ----\u4e0a\u4e00\u4e2a\u4ee3\u7801\u6216\u8005shell\u7a0b\u5e8f\u5728shell\u4e2d\u9000\u51fa\u7684\u60c5\u51b5\uff0c\u5982\u679c\u6b63\u5e38\u9000\u51fa\u5219\u8fd4\u56de0\uff0c\u53cd\u4e4b\u4e3a\u975e0\u503c\u3002

\u3000\u3000$* ----\u4f20\u9012\u7ed9\u7a0b\u5e8f\u7684\u6240\u6709\u53c2\u6570\u7ec4\u6210\u7684\u5b57\u7b26\u4e32\u3002

\u3000\u3000\u4e0b\u9762\u4e3e\u4f8b\u8fdb\u884c\u8bf4\u660e\uff1a

\u3000\u3000\u5efa\u7acb\u4e00\u4e2a\u5185\u5bb9\u4e3a\u5982\u4e0b\u7684\u7a0b\u5e8fP1:

\u3000\u3000echo \u201cProgram name is $0\u201d

\u3000\u3000echo \u201cThere are totally $# parameters passed to this program\u201d

\u3000\u3000echo \u201cThe last is $?\u201d

\u3000\u3000echo \u201cThe parameters are $*\u201d

\u3000\u3000\u6267\u884c\u540e\u7684\u7ed3\u679c\u5982\u4e0b\uff1a

\u3000\u3000[beichen@localhost bin]$ P1 this is a test program //\u4f20\u90125\u4e2a\u53c2\u6570

\u3000\u3000Program name is /home/beichen/bin/P1 //\u7ed9\u51fa\u7a0b\u5e8f\u7684\u5b8c\u6574\u8def\u5f84\u548c\u540d\u5b57

\u3000\u3000There are totally 5 parameters passed to this program //\u53c2\u6570\u7684\u603b\u6570

\u3000\u3000The last is 0 //\u7a0b\u5e8f\u6267\u884c\u7ed3\u679c

\u3000\u3000The parameters are this is a test program //\u8fd4\u56de\u6709\u53c2\u6570\u7ec4\u6210\u7684\u5b57\u7b26\u4e32
\u4e0b\u9762\u6211\u4eec\u5229\u7528\u5185\u90e8\u53d8\u91cf\u548c\u4f4d\u7f6e\u53c2\u6570\u7f16\u5199\u4e00\u4e2a\u540d\u4e3adel\u7684\u7b80\u5355\u5220\u9664\u7a0b\u5e8f\uff1a

\u3000\u3000#name: del

\u3000\u3000#author: liangnian

\u3000\u3000#this program to compress a file to the dustbin

\u3000\u3000if test $# -eq 0

\u3000\u3000then

\u3000\u3000echo \u201cPlease specify a file!\u201d

\u3000\u3000else

\u3000\u3000gzip $1 //\u5148\u5bf9\u6587\u4ef6\u8fdb\u884c\u538b\u7f29

\u3000\u3000mv $1.gz $HOME/dustbin //\u79fb\u52a8\u5230\u56de\u6536\u7ad9

\u3000\u3000echo \u201cFile $1 is deleted !\u201d

\u3000\u3000fi

\u3000\u3000\u4e09\u3001\u53d8\u91cf\u8868\u8fbe\u5f0f

\u3000\u3000\u5728\u4e0a\u9762\u6211\u4eec\u7f16\u5199\u7684\u5c0f\u7a0b\u5e8f\u4e2d\u6211\u4eec\u7528\u5230\u4e86\u4e00\u4e2a\u5173\u952e\u5b57test\uff0c\u5176\u5b9e\u5b83\u662fshell\u7a0b\u5e8f\u4e2d\u7684\u4e00\u4e2a\u8868\u8fbe\u5f0f?D?D\u6bd4\u8f83(test)\u3002\u901a\u8fc7\u548cshell\u63d0\u4f9b\u7684if\u7b49\u6761\u4ef6\u8bed\u53e5(\u540e\u9762\u6211\u4eec\u4f1a\u4ecb\u7ecd)\u76f8\u7ed3\u5408\u6211\u4eec\u53ef\u4ee5\u65b9\u4fbf\u7684\u5b8c\u5224\u65ad\u3002

\u3000\u3000\u5176\u7528\u6cd5\u5982\u4e0b\uff1a

\u3000\u3000test \u8868\u8fbe\u5f0f

\u3000\u3000\u8868\u8fbe\u5f0f\u6240\u4ee3\u8868\u7684\u64cd\u4f5c\u7b26\u6709\u5b57\u7b26\u4e32\u64cd\u4f5c\u7b26\u3001\u6570\u5b57\u64cd\u4f5c\u7b26\u3001\u903b\u8f91\u64cd\u4f5c\u7b26\u4ee5\u53ca\u6587\u4ef6\u64cd\u4f5c\u7b26\u3002\u5176\u4e2d\u6587\u4ef6\u64cd\u4f5c\u7b26\u662f\u4e00\u79cdshell\u72ec\u7279\u7684\u64cd\u4f5c\u7b26\uff0c\u56e0\u4e3ashell\u91cc\u7684\u53d8\u91cf\u90fd\u662f\u5b57\u7b26\u4e32\uff0c\u4e3a\u4e86\u8fbe\u5230\u5bf9\u6587\u4ef6\u8fdb\u884c\u64cd\u4f5c\u7684\u76ee\u7684\uff0c\u4e8e\u662f\u624d\u63d0\u4f9b\u4e86\u8fd9\u6837\u7684\u4e00\u79cd\u64cd\u4f5c\u7b26\u3002

\u3000\u30001\u3001 \u5b57\u7b26\u4e32\u6bd4\u8f83

\u3000\u3000\u4f5c\u7528\uff1a\u6d4b\u8bd5\u5b57\u7b26\u4e32\u662f\u5426\u76f8\u7b49\u3001\u957f\u5ea6\u662f\u5426\u4e3a\u96f6\uff0c\u5b57\u7b26\u4e32\u662f\u5426\u4e3aNULL(\u6ce8\uff1abash\u533a\u5206\u96f6\u957f\u5ea6\u5b57\u7b26\u4e32\u548c\u7a7a\u5b57\u7b26\u4e32)

\u3000\u3000\u5e38\u7528\u7684\u5b57\u7b26\u7a7f\u64cd\u4f5c\u7b26\u6709\uff1a

\u3000\u3000= \u6bd4\u8f83\u4e24\u4e2a\u5b57\u7b26\u4e32\u662f\u5426\u76f8\u540c\uff0c\u540c\u5219\u4e3a\u201c\u662f\u201d!= \u6bd4\u8f83\u4e24\u4e2a\u5b57\u7b26\u4e32\u662f\u5426\u76f8\u540c\uff0c\u4e0d\u540c\u5219\u4e3a\u201c\u662f\u201d

\u3000\u3000-n \u6bd4\u8f83\u5b57\u7b26\u4e32\u957f\u5ea6\u662f\u5426\u5927\u4e8e\u96f6\uff0c\u5982\u679c\u5927\u4e8e\u96f6\u5219\u4e3a\u201c\u662f\u201d

\u3000\u3000-z \u6bd4\u8f83\u5b57\u7b26\u4e32\u7684\u7a7f\u5ea6\u662f\u5426\u7b49\u4e8e\u96f6\uff0c\u5982\u679c\u7b49\u4e8e\u5219\u4e3a\u201c\u662f\u201d

\u3000\u30002\u3001 \u6570\u5b57\u6bd4\u8f83

\u3000\u3000\u8fd9\u91cc\u533a\u522b\u4e8e\u5176\u4ed6\u7f16\u7a0b\u8bed\u8a00\uff0ctest\u8bed\u53e5\u4e0d\u4f7f\u7528>?\u7c7b\u4f3c\u7684\u7b26\u53f7\u6765\u8868\u8fbe\u5927\u5c0f\u7684\u6bd4\u8f83\uff0c\u800c\u662f\u7528\u6574\u6570\u5f0f\u6765\u8868\u793a\u8fd9\u4e9b\u3002

\u3000\u3000-eq \u76f8\u7b49

\u3000\u3000-ge \u5927\u4e8e\u7b49\u4e8e

\u3000\u3000-le \u5c0f\u4e8e\u7b49\u4e8e

\u3000\u3000-ne \u4e0d\u7b49\u4e8e

\u3000\u3000-gt \u5927\u4e8e

\u3000\u3000-lt \u5c0f\u4e8e

\u3000\u30003\u3001 \u903b\u8f91\u64cd\u4f5c! \u53cd\uff1a\u4e0e\u4e00\u4e2a\u903b\u8f91\u503c\u76f8\u53cd\u7684\u903b\u8f91\u503c

\u3000\u3000-a \u4e0e(and)\uff1a\u4e24\u4e2a\u903b\u8f91\u503c\u4e3a\u201c\u662f\u201d\u8fd4\u56de\u503c\u624d\u4e3a\u201c\u662f\u201d\uff0c\u53cd\u4e4b\u4e3a\u201c\u5426\u201d

\u3000\u3000-o \u6216(or)\uff1a\u4e24\u4e2a\u903b\u8f91\u503c\u6709\u4e00\u4e2a\u4e3a\u201c\u662f\u201d\uff0c\u8fd4\u56de\u503c\u5c31\u4e3a\u201c\u662f\u201d

\u3000\u30004\u3001 \u6587\u4ef6\u64cd\u4f5c

\u3000\u3000\u6587\u4ef6\u6d4b\u8bd5\u8868\u8fbe\u5f0f\u901a\u5e38\u662f\u4e3a\u4e86\u6d4b\u8bd5\u6587\u4ef6\u7684\u4fe1\u606f\uff0c\u4e00\u822c\u7531\u811a\u672c\u6765\u51b3\u5b9a\u6587\u4ef6\u662f\u5426\u5e94\u8be5\u5907\u4efd\u3001\u590d\u5236\u6216\u5220\u9664\u3002\u7531\u4e8etest\u5173\u4e8e\u6587\u4ef6\u7684\u64cd\u4f5c\u7b26\u6709\u5f88\u591a\uff0c\u6211\u4eec\u53ea\u5217\u4e3e\u4e00\u4e9b\u5e38\u7528\u7684\u3002

\u3000\u3000-d \u5bf9\u8c61\u5b58\u5728\u4e14\u4e3a\u76ee\u5f55\u8fd4\u56de\u503c\u4e3a\u201c\u662f\u201d

\u3000\u3000-f \u5bf9\u8c61\u5b58\u5728\u4e14\u4e3a\u6587\u4ef6\u8fd4\u56de\u503c\u4e3a\u201c\u662f\u201d

\u3000\u3000-L \u5bf9\u8c61\u5b58\u5728\u4e14\u4e3a\u7b26\u53f7\u8fde\u63a5\u8fd4\u56de\u503c\u4e3a\u201c\u662f\u201d

\u3000\u3000-r \u5bf9\u8c61\u5b58\u5728\u4e14\u53ef\u8bfb\u5219\u8fd4\u56de\u503c\u4e3a\u201c\u662f\u201d

\u3000\u3000-s \u5bf9\u8c61\u5b58\u5728\u4e14\u957f\u5ea6\u975e\u96f6\u5219\u8fd4\u56de\u503c\u4e3a\u201c\u662f\u201d

\u3000\u3000-w \u5bf9\u8c61\u5b58\u5728\u4e14\u53ef\u5199\u5219\u8fd4\u56de\u503c\u4e3a\u201c\u662f\u201d

\u3000\u3000-x \u5bf9\u8c61\u5b58\u5728\u4e14\u53ef\u6267\u884c\u5219\u8fd4\u56de\u503c\u4e3a\u201c\u662f\u201d

\u3000\u3000file1 ?Cnt(-ot) file2 \u6587\u4ef61\u6bd4\u6587\u4ef62\u65b0(\u65e7)

\u3000\u3000\u56db\u3001\u5faa\u73af\u7ed3\u6784\u8bed\u53e5

\u3000\u3000shell\u5e38\u89c1\u7684\u5faa\u73af\u8bed\u53e5\u6709for\u5faa\u73af\u3001while\u5faa\u73af\u3001until\u5faa\u73af

\u3000\u3000for \u5faa\u73af

\u3000\u3000\u8bed\u6cd5\uff1afor \u53d8\u91cf in \u5217\u8868

\u3000\u3000do

\u3000\u3000\u64cd\u4f5c

\u3000\u3000done

\u3000\u3000\u6ce8\uff1a\u53d8\u91cf\u662f\u8981\u5728\u5faa\u73af\u5185\u90e8\u7528\u6765\u6307\u4ee3\u5f53\u524d\u6240\u6307\u4ee3\u7684\u5217\u8868\u4e2d\u7684\u90a3\u4e2a\u5bf9\u8c61\u7684\u3002

\u3000\u3000\u5217\u8868\u662f\u5728for \u5faa\u73af\u7684\u5185\u90e8\u8981\u64cd\u4f5c\u7684\u5bf9\u8c61\uff0c\u53ef\u4ee5\u662f\u5b57\u7b26\u4e32\u4e5f\u53ef\u4ee5\u662f\u6587\u4ef6\uff0c\u5982\u679c\u662f\u6587\u4ef6\u5219\u4e3a\u6587\u4ef6\u540d\u3002

\u3000\u3000\u4f8b\uff1a\u5220\u9664\u5783\u573e\u7bb1\u4e2d\u7684\u6240\u6709.gz\u6587\u4ef6

\u3000\u3000#delete all file with extension of \u201cgz\u201d in the dustbin

\u3000\u3000for I in $HOME/dustbin/*.gz

\u3000\u3000do

\u3000\u3000rm ?Cf $i

\u3000\u3000echo \u201c$i has been deleted!\u201d

\u3000\u3000done

\u3000\u3000\u6267\u884c\u7ed3\u679c\u5982\u4e0b\uff1a

\u3000\u3000[beichen@localhost bin]$.f_rmgz

\u3000\u3000/home/beichen/dustbin/nessus-4.0.0.2.tar.gz has been deleted!

\u3000\u3000/home/beichen/dustbin/gftp-2.2.1.tar.gz has been deleted!

\u8fd9\u4e2a\u4e0d\u4e00\u5b9a\uff0c\u770b\u4f60\u5177\u4f53\u60f3\u505a\u4ec0\u4e48\uff0c\u4f60\u5982\u679c\u61c2\u5176\u4ed6ruby,python\u6216\u8005perl\u4e4b\u7c7b\u7684\u8bed\u8a00\u5b8c\u5168\u53ef\u4ee5\u4ee3\u66ffshell\u7f16\u7a0b\u3002

步骤/方法
数据库管理系统(DBMSes)
  诸如PostgreSQL、 Oracle、Microsoft SQL Server,以及Informix这种专业、耐用的数据库管理系统通过存储过程或存储函数提供了脚本功能。最受广泛认可的语言选项也许是Microsoft SQL Server和Sybase所使用的TransactSQL,以及Oracle所使用的PL/SQL。 PostgreSQL提供了一个名为PL/pgSQL的类PL/SQL的程序扩展到SQL里,但它也提供了包括PL/Perl、PL/Python、PL/Ruby和 PL/Tcl在内的其他语言的选择范围。
  这种编程机会虽然限定于一组特定的问题领域,但如果你是一名DBA(数据库管理员)或你的工作涉及数据库开发报告,将会亲身体验到这是非常有用的。
插件
   许多新的电脑游戏提供了编写和加载插件的功能。例如,“魔兽世界(World of Warcraft)”提供了一个使用Lua脚本语言的插件系统。随着Firefox声名鹊起和广泛使用,现代网页浏览器往往也提供灵活的插件系统;在最简单的情况下,Firefox的插件都是用JavaScript编写的。开放源码的浏览器在插件开发方面往往比封闭源代码的浏览器更具吸引力,并且Chromium浏览器的插件系统,很可能成为插件开发者们的第二大目标,这是因为谷歌Chrome浏览器高调的营销策略以及不设限的许可证(permissive licensing)政策。
  其他许多应用程序具有插件和扩展系统,可以提供充分的机会来培养这些迅速发展的编码技能,甚至包括一些终端仿真器(terminal emulators)和基于控制台的文本编辑器,如Vim。(透露一点好消息:我贡献了一点代码到urlpicker项目。)
实践问题
  您可以尝试解决代码任务中的通用清单所提供的问题,代码任务是特别为了给程序员提供实习机会而专业设计的。欧拉(Project Euler)是一个比较流行的、不论编程语言的项目,包括“一系列具有挑战性的数学/计算机编程问题”。欧拉项目收集了上百个问题,这些问题一般从易到难,足以让你忙碌很长一段时间。
  其他例子包括RubyQuiz,它多年来一直在ruby-talk的邮件列表中广受欢迎。另外还有CodeKata,它是Dave Thomas的一个规模较小、寿命较短的项目。Dave Thomas是《The Pragmatic Programmer(程序员修炼之道)》一书的合著者之一。
  这些选项不适合用作自我激励型探索性学习的任务,因为它们会让人挠破头皮,但如果发现其中的乐趣,它们可以和其它方法一样用于编程实践教育。
智能手机(Smartphones)
  应用程序开发行业中最大的新热潮是智能手机的应用程序。这种装置通常需要开发人员使用一种可将装置的功能发挥到极至的特定语言作为应用平台,至少要以官方认可的方式进行。
  智能手机开发体系的一个新兴产业正在崛起,即允许开发人员用非智能手机平台原生的其它语言编写自己的代码,然后转化为原生语言的应用程序。 因为不需要学习任何特定的智能手机平台的官方应用程序开发语言,Web应用程序也沾了光,成为智能手机应用程序开发的一种方法。选择语言甚于平台的另一个方案是使用像诺基亚的N900这样的设备,它运行Debian发行的Linux系统,可以运行的软件范围很宽——包括很多不是为智能手机设计的软件。
  侧重于多种方法开发智能手机应用程序的书籍和在线教程纷纷出现,特别是Android和iPhone的设备。一些第三方框架将可以从HTML + JavaScript 到 Ruby 或 Python编写的代码“编译”为多种平台的“本地”应用程序,有时不仅包括智能电话平台,而且包括桌面系统。对这种情况也许最令人兴奋的是,这些框架和相关的IDE不倾向于试图解决所有的编程问题,这与同样出色的编程方式的主要框架,如Visual Studio和.NET框架有所不同。这使得人们有可能通过缩小选项至一个易于管理的问题领域来显著地简化开发过程。其结果是软件开发风格令初学者感到非常易于接受。
  不足之处是,在学习如何编程时,你可能很难每天都编写新的智能手机应用程序。但是,如果您的智能手机的操作系统是类Unix系统(如N900的),同样的小工具开发项目在工作站和服务器中都非常有用。
电子表格
  如果使用了附带强大宏系统的电子表格程序,你将拥有一个快速的方法来阅读其他人(或物)代码,并编写自己的代码。首先,将你执行次数多、通常需要采取数个繁琐步骤的任务记录成一个宏。接下来,打开宏的源代码,阅读并进行编辑,使之更适合于一般用途。这是一个非常有限的方法,不会带来多大的长进,但可能会帮助你上路,自然地喜欢上简单的脚本代码。
  使用此类脚本的最常见的电子表格程序可能是微软Excel。Excel所使用的VBA是一种贫乏的语言,但是如果你在日常工作中大量使用Excel,这可能是无论如何你都该掌握的一种技能。OpenOffice.org使用了类似的宏系统,使用方法大致相同,LibreOffice也像微软Office一样,提供了学习代码的机会。
  在任何情况下,编写程序的门坎都比编写简单的命令行shell脚本代码稍高,因为菜单选项和按钮需要点击才能启用。入门的成本类似于用市场上的一种主要IDE开始一个新项目,但是一个大幅缩水的“项目”。这会是一个不错的主意,可以确保这不仅仅是在日常开发环境中编写脚本的机会,甚至是加以利用就会很有帮助的。
Unix
  如果你定期使用一些类UNIX系统,在寻找锻炼初期编程技能的方式时就具有巨大的优势。UNIX在简单脚本自动化方面提供了比任何其他家庭通用操作系统的更多的使用机会,这要感谢平台上管理脚本的极大灵活性。在最不复杂的情况下,一个管理脚本可能只不过是将一系列shell命令保存到一个文件中。在此基础上,可以利用简单的循环和条件结构、输入输出处理、文件读写、计划任务来进行扩展。
  通过编写简单shell脚本爽过一把后,花一段时间来学习如何用Perl、Python和Ruby编写管理脚本对任何一个Unix系统管理员都是值得的。在Unix环境使用这些语言的关键技能包括通过UNIX管道和重定向访问文本流,处理命令行选项,读写文件,使用正则表达式搜索和操作文本。管理员也想知道编程的公共基础知识,比如处理输出,循环(或在某些情况下递归),以明确界定的标准为基础,通过使用条件判断结构编程来作出决策。
  编写Unix命令行工具是一块沃土,有许多机会将脚本语言的巨大能力用于编程。由于管理脚本开发的灵活性和简约性要求,编写工具的范围可以从一些有用工具的最简例子到强大的服务器进程,甚至大规模并行任务自动化,负载平衡,启发式过滤,和一些其他有趣的问题解决作业,这些问题激起了世界上最好的程序员的兴趣。
  虽然几乎所有通用操作系统都具有一些使用管理脚本的能力,其中相当一部分用途比较窄,另一些操作系统则比较均衡。Unix在管理脚本的适用条件方面高人一等,因为诸如主要Linux发行版和BSD Unix系统等Unix类系统共享相同的基本运行环境设计,他们都可以从管理脚本和脚本平台之间的可移植性中受益 - 只要你按可移植性要求来写这些脚本(如通过使用sh或Perl而不是bash,选择系统标准sysctl值而不是数据源的proc文件系统)。
  这些工作也适用于除开非常高级,动态,解释型语言之外的其它语言。C,C++,Haskell,Objective-C,Objective Caml,以及大量其他选项正好合适各类简单Unix工具的编写任务。对于其中的许多语言,即使要完成像小型管理工具的这样简单的工程项目,也必须学会更广泛的技能,这一要求比Perl,Ruby和Bourne shell的这样的语言高。但这些任务与GUI应用程序开发、系统编程、其它经常使用(特别是在其他平台上的)的任务比起来,其艰巨性对编程初学者来说要小得多。
  实际上,鉴于Unix哲学多年来提供了大量常用工具,这些工具严格分工(大部分),并工作良好,类UNIX环境对编程新手的价值中有一部分是充分利用Unix命令行环境力量,鼓励用户像程序员那样去思考,而非观众。
Web网页
  这是一个危险的建议,通过玩JavaScript来学习编程。这不是因为JavaScript是一种不好的语言,而是因为追求动态用户体验的缘故,网页已经被不加限制地滥用JavaSciprt弄得乱七八糟,因而在网页上放纵程序员新手可能会被认为是不负责任的。在网页中JavaScript也有一些积极用法,而且可以让新手们对编写在浏览器中运行的桌面应用程序的想法愈来愈感兴趣,这给了我们在程序员职业生涯中尽早开始学习JavaScript的很多理由。
  事实上,JavaScript是一种最常见的、单独的客户端网页脚本,这也意味着JavaScript可能是最简单的语言,通过阅读别人的代码就能学习。找到具有客户端动态元素的任何网页,然后右键单击并选择查看页面源代码的选项,你就会发现它布满了JavaScript的散落片段。对于更复杂的动态页面,(X)HTML的网页甚至可能引用一个纯代码的单独.js文件。
在把代码上传到公共访问的Web服务器前要细心检查;确保它是好的。如果你想让更多的有用脚本以本地方式来启动,浏览器扩展性可以让你将任意脚本应用到你查看的网页上——而且只适用于你个人的浏览体验。Firefox的Greasemonkey是一个例子。

  • shell缂栫▼(蹇熷叆闂ㄥ拰瀹炴垬鎶宸)
    绛旓細閿欒澶勭悊鏄竴绉嶅鐞嗗懡浠ゆ墽琛岄敊璇殑鏂瑰紡銆傚湪Shell缂栫▼涓紝鍙互浣跨敤set-e鍛戒护灏嗚剼鏈缃负鍦ㄥ嚭鐜伴敊璇椂閫鍑恒備緥濡傦紝浠ヤ笅浠g爜灏嗚缃剼鏈湪鍑虹幇閿欒鏃堕鍑猴細set-e 璋冭瘯 璋冭瘯鏄竴绉嶆煡鎵惧拰淇鑴氭湰閿欒鐨勬柟寮忋傚湪Shell缂栫▼涓紝鍙互浣跨敤set-x鍛戒护灏嗚剼鏈缃负杈撳嚭姣忎釜鍛戒护鐨勬墽琛岀粨鏋溿備緥濡傦紝浠ヤ笅浠g爜灏嗚缃剼鏈緭鍑...
  • Shell缂栫▼缂栫▼姝ラ
    绛旓細棣栧厛锛屾墦寮Visual C++6.0寮鍙戠幆澧冿紝鍒涘缓涓涓柊鐨刉in32搴旂敤绋嬪簭椤圭洰锛屾垜浠皢鍏跺懡鍚嶄负"Shell"锛岃繖灏嗕綔涓烘垜浠悗缁缂栫▼鐨勫熀纭骞冲彴銆傛帴涓嬫潵锛屼负浜嗘彁鍗囩▼搴忕殑鐢ㄦ埛鐣岄潰锛屾垜浠渶瑕佷负椤圭洰娣诲姞涓や釜璧勬簮锛氫竴涓槸搴旂敤绋嬪簭鍥炬爣APP_ICON锛岀‘淇濆畠鑳戒唬琛ㄥ拰璇嗗埆浣犵殑绋嬪簭锛涘彟涓涓槸瀵硅瘽妗嗚祫婧怐LG_MAIN锛屾牴鎹浘涓鐨勮璁★紝绮...
  • 濡備綍绯荤粺鍦板涔燬hell缂栫▼?
    绛旓細涓浜涚涓夋柟妗嗘灦灏嗗彲浠ヤ粠HTML + JavaScript 鍒 Ruby 鎴 Python缂栧啓鐨勪唬鐮佲滅紪璇戔濅负澶氱骞冲彴鐨勨滄湰鍦扳濆簲鐢ㄧ▼搴,鏈夋椂涓嶄粎鍖呮嫭鏅鸿兘鐢佃瘽骞冲彴,鑰屼笖鍖呮嫭妗岄潰绯荤粺銆傚杩欑鎯呭喌涔熻鏈浠や汉鍏村鐨勬槸,杩欎簺妗嗘灦鍜岀浉鍏崇殑IDE涓嶅惧悜浜庤瘯鍥捐В鍐虫墍鏈夌殑缂栫▼闂,杩欎笌鍚屾牱鍑鸿壊鐨勭紪绋嬫柟寮忕殑涓昏妗嗘灦,濡俈isual Studio鍜.NET妗嗘灦鏈夋墍涓嶅悓銆
  • linuxshell缂栫▼
    绛旓細4.Shell娴佺▼鎺у埗 Shell娴佺▼鎺у埗鐢ㄤ簬鎺у埗鑴氭湰鐨勬墽琛屾祦绋嬶紝甯哥敤鐨勬祦绋嬫帶鍒惰鍙ユ湁if-else銆乫or銆亀hile绛夈備互涓嬫槸涓涓ず渚嬶細```foriin$(seq110)do echo$i done ```浠ヤ笂浠g爜灏嗚緭鍑1鍒10鐨勬暟瀛椼備簩銆Shell缂栫▼瀹炴垬 1.瀹炵幇鏂囦欢澶囦唤 鏂囦欢澶囦唤鏄竴椤瑰父瑙佺殑鎿嶄綔锛屽彲浠ラ氳繃Shell鑴氭湰鏉ュ疄鐜般備互涓嬫槸涓涓畝鍗曠殑鏂...
  • 鍏充簬濡備綍瀛︿範shell鑴氭湰,璇鎬庝箞鍐
    绛旓細绗﹀彿#!鐢ㄦ潵鍛婅瘔绯荤粺瀹冨悗闈㈢殑鍙傛暟鏄敤鏉ユ墽琛岃鏂囦欢鐨勭▼搴忋傚湪杩欎釜渚嬪瓙涓垜浠娇鐢/bin/sh鏉ユ墽琛岀▼搴忋傚綋缂栬緫濂借剼鏈椂,濡傛灉瑕佹墽琛岃鑴氭湰,杩樺繀椤讳娇鍏跺彲鎵ц銆傝浣胯剼鏈彲鎵ц:缂栬瘧chmod +x filename 杩欐牱鎵嶈兘鐢./filename 鏉ヨ繍琛1.1.2 娉ㄩ噴鍦ㄨ繘琛shell缂栫▼鏃,浠#寮澶寸殑鍙ュ瓙琛ㄧず娉ㄩ噴,鐩村埌杩欎竴琛岀殑缁撴潫銆傛垜浠湡璇氬湴寤鸿...
  • Linux Shell缂栫▼浠庡垵瀛﹀埌绮鹃氬熀鏈俊鎭
    绛旓細鏃犺浣犳槸瀵筁inux绯荤粺鎿嶄綔鏈夊叴瓒o紝杩樻槸甯屾湜鎻愬崌鑷繁鐨勭紪绋嬫妧鑳斤紝杩欐湰涔﹂兘鏄竴鎶婃墦寮Linux Shell缂栫▼涓栫晫澶ч棬鐨勯挜鍖欙紝鑳藉甯姪浣犱粠鍩虹鎿嶄綔寮濮嬶紝閫愭鎺屾彙楂樼骇鎶宸э紝鐩磋嚦杈惧埌绮鹃氱殑姘村钩銆傞氳繃闃呰杩欐湰涔︼紝浣犱笉浠呰兘瀛︿範鍒癝hell鍛戒护鐨勪娇鐢紝杩樹細鐞嗚В鍏惰儗鍚庣殑鍘熺悊锛屽Linux鐜鏈夋洿娣辩殑鐞嗚В銆
  • Linux Shell 鏁欑▼鈥斺旀兂鐜╄浆linux灏辫涓鐩寸湅涓嬪幓
    绛旓細Shell 缂栫▼璺 JavaScript銆乸hp 缂栫▼涓鏍凤紝鍙鏈変竴涓兘缂栧啓浠g爜鐨勬枃鏈紪杈戝櫒鍜屼竴涓兘瑙i噴鎵ц鐨勮剼鏈В閲婂櫒灏卞彲浠ヤ簡銆侺inux 鐨 Shell 绉嶇被浼楀锛屽父瑙佺殑鏈夛細鍦ㄤ竴鑸儏鍐典笅锛屼汉浠苟涓嶅尯鍒 Bourne Shell 鍜 Bourne Again Shell锛屾墍浠ワ紝鍍 #!/bin/sh 锛屽畠鍚屾牱涔熷彲浠ユ敼涓 #!/bin/bash 銆!
  • Linux Shell缂栫▼浠庡垵瀛﹀埌绮鹃氱洰褰
    绛旓細16.1 璋冭瘯姒傝堪16.2 璋冭瘯鏂规硶:16.2.1 trap鍛戒护16.2.2 tee鍛戒护16.2.3 璋冭瘯閽╁瓙16.2.4 shell閫夐」16.3 鏈珷灏忕粨16.4 涓婃満瀹炶返...瀹屾暣鍐呭鍖呭惈17涓珷鑺傦紝璇︾粏浠嬬粛浜哃inux Shell鐨勫熀纭鐭ヨ瘑銆佽剼鏈缂栫▼銆佹枃浠绯荤粺鎿嶄綔銆佹鍒欒〃杈惧紡銆乻ed鍜宎wk缂栫▼銆佹枃浠跺鐞嗐佸彉閲忓拰寮曠敤銆侀昏緫鍒ゆ柇銆佸惊鐜侀珮绾у彉閲忕敤娉...
  • Linux Shell缂栫▼浠庡垵瀛﹀埌绮鹃氬唴瀹圭畝浠
    绛旓細Shell鏄疞inux绯荤粺涓嚦鍏抽噸瑕佺殑鎺ュ彛锛屽挨鍏舵槸bash shell锛屼互鍏剁畝娲侀珮鏁堢殑鐗圭偣娣卞彈绋嬪簭鍛樺拰绯荤粺绠$悊鍛樼殑鍠滅埍銆傘奓inux Shell缂栫▼浠庡垵瀛﹀埌绮鹃氥嬫槸涓鏈繁鍏ユ祬鍑虹殑鏁欑▼锛岃缁嗕粙缁嶄簡bash shell鑴氭湰缂栫▼鐨勬柟鏂归潰闈傝涔︽兜鐩栦簡bash shell鐨勫熀鏈娉曘佸父鐢ㄥ懡浠ゃ佸疄鐢ㄦ妧宸у拰璋冭瘯鏂规硶锛岄氳繃涓板瘜鐨勫疄渚嬭瀛︿範鑰呴愭鎺屾彙...
  • 濡備綍缂栧啓涓涓shell鑴氭湰
    绛旓細绛夋潵缂栧啓鎴戜滑鐨shell绋嬪簭銆 绋嬪簭蹇呴』浠ヤ笅闈㈢殑琛屽紑濮(蹇呴』鏂瑰湪鏂囦欢鐨勭涓琛): #!/bin/sh 绗﹀彿#!鐢ㄦ潵鍛婅瘔绯荤粺瀹冨悗闈㈢殑鍙傛暟鏄敤鏉ユ墽琛岃鏂囦欢鐨勭▼搴忋傚湪杩欎釜渚嬪瓙涓垜浠娇鐢/bin/sh鏉ユ墽琛岀▼搴忋 褰撶紪杈戝ソ鑴氭湰鏃,濡傛灉瑕佹墽琛岃鑴氭湰,杩樺繀椤讳娇鍏跺彲鎵ц銆 瑕佷娇鑴氭湰鍙墽琛: chmod +x filename 鐒跺悗,鎮ㄥ彲浠ラ氳繃杈撳叆: ...
  • 本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网