Linux常用命令与工具简介

758 views

Published on

Published in: Education, Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
758
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
4
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Linux常用命令与工具简介

  1. 1. *NUX 常用命令与工具 何伟 2011.10.19
  2. 2. 内容概要 <ul><li>热身 </li></ul><ul><ul><li>*NIX 简介 </li></ul></ul><ul><ul><li>*NIX@STKM </li></ul></ul><ul><ul><li>首次登录 </li></ul></ul><ul><ul><li>Hello, world! </li></ul></ul><ul><li>命令 </li></ul><ul><ul><li>常用命令 </li></ul></ul><ul><ul><li>循环分支 </li></ul></ul><ul><ul><li>一个完整的三角形程序测试脚本 </li></ul></ul><ul><li>工具 </li></ul><ul><ul><li>服务器工具 </li></ul></ul><ul><ul><li>编译器与编程环境 </li></ul></ul><ul><ul><li>测试工具 </li></ul></ul><ul><li>更多 </li></ul>
  3. 3. 内容概要 <ul><li>热身 </li></ul><ul><ul><li>*NIX 简介 </li></ul></ul><ul><ul><li>*NIX@STKM </li></ul></ul><ul><ul><ul><li>Solaris 工作站 </li></ul></ul></ul><ul><ul><ul><li>CentOS 服务器 </li></ul></ul></ul><ul><ul><li>首次登录 </li></ul></ul><ul><ul><ul><li>重设登录密码 </li></ul></ul></ul><ul><ul><li>Hello, world! </li></ul></ul><ul><ul><ul><li>第一个 Bash 脚本 </li></ul></ul></ul><ul><li>命令 </li></ul><ul><li>工具 </li></ul><ul><li>更多 </li></ul>
  4. 4. *NIX 简介 <ul><li>*NIX——UNIX 衍生操作系统 </li></ul><ul><ul><li>UNIX: HP HP-UX / IBM AIX / Sun OS(Solaris) </li></ul></ul><ul><ul><li>BSD </li></ul></ul><ul><ul><li>Mac OS </li></ul></ul><ul><ul><li>Minix / Linux(Red Hat 系、 Suse 系、 Debian 系… ) </li></ul></ul><ul><ul><ul><ul><li>Fedora </li></ul></ul></ul></ul><ul><ul><ul><ul><li>CentOS </li></ul></ul></ul></ul><ul><ul><ul><ul><li>RHEL/OEL </li></ul></ul></ul></ul>
  5. 5. *NIX 简介 <ul><li>System calls ( 例如: sbrk) </li></ul><ul><li>Library functions ( 例如: malloc) </li></ul><ul><li>Shell </li></ul>
  6. 6. *NIX@STKM <ul><li>SUN Blade 2500 Workstation </li></ul><ul><ul><li>CPU: 1.6GHz * 2 </li></ul></ul><ul><ul><ul><li>/usr/sbin/psrinfo -v </li></ul></ul></ul><ul><ul><li>Memory: 2GB </li></ul></ul><ul><ul><ul><li>/usr/sbin/prtconf | grep Mem </li></ul></ul></ul><ul><ul><li>Hard Disk: 160G </li></ul></ul><ul><ul><ul><li>df -h </li></ul></ul></ul><ul><li>HP ProLiant DL180 Server </li></ul><ul><ul><li>CPU: 2.4GHz * 4 </li></ul></ul><ul><ul><ul><li>vim /proc/cpuinfo </li></ul></ul></ul><ul><ul><li>Memory: 4GB * 6 </li></ul></ul><ul><ul><ul><li>free </li></ul></ul></ul><ul><ul><li>Hard Disk: 450G * 4 </li></ul></ul><ul><ul><ul><li>df -h </li></ul></ul></ul>
  7. 7. 首次登录 <ul><li>远程登录终端 </li></ul><ul><ul><li>Win CLI + cygwin </li></ul></ul><ul><ul><li>Putty </li></ul></ul><ul><ul><li>XShell </li></ul></ul><ul><ul><li>FTerm </li></ul></ul><ul><ul><li>… </li></ul></ul><ul><li>终端配置 </li></ul><ul><ul><li>ssh </li></ul></ul><ul><ul><li>用户名:何伟 weihe( 名姓全拼 ) ,朱丽娜 lnzhu (名首字姓全拼) </li></ul></ul><ul><ul><li>默认密码: 000000 ( 6 个零) </li></ul></ul><ul><ul><li>编码 UTF-8 </li></ul></ul><ul><ul><li>首次登录重设密码 </li></ul></ul><ul><ul><ul><li>passwd </li></ul></ul></ul>
  8. 8. HELLO, WORLD! <ul><li>vim hello.sh </li></ul><ul><li>(i) </li></ul><ul><li>-------------------------- </li></ul><ul><li>#!/bin/bash </li></ul><ul><li>echo hello, world! </li></ul><ul><li>exit 0 </li></ul><ul><li>--------------------------- </li></ul><ul><li>(:wq) </li></ul><ul><li>chmod u+x hello.sh </li></ul><ul><li>./hello.sh </li></ul>
  9. 9. 内容概要 <ul><li>热身 </li></ul><ul><li>命令 </li></ul><ul><ul><li>常用命令 </li></ul></ul><ul><ul><ul><li>快捷键 </li></ul></ul></ul><ul><ul><ul><li>帮助信息 </li></ul></ul></ul><ul><ul><ul><li>文件操作 </li></ul></ul></ul><ul><ul><ul><li>日常管理 </li></ul></ul></ul><ul><ul><ul><li>网络连接 </li></ul></ul></ul><ul><ul><ul><li>数学运算 </li></ul></ul></ul><ul><ul><ul><li>输入输出与 IO 重定向 </li></ul></ul></ul><ul><ul><ul><li>管道 </li></ul></ul></ul><ul><ul><li>循环分支 </li></ul></ul><ul><ul><ul><li>Test </li></ul></ul></ul><ul><ul><ul><li>循环 </li></ul></ul></ul><ul><ul><ul><li>分支 </li></ul></ul></ul><ul><ul><li>一个完整的三角形程序测试脚本 </li></ul></ul><ul><li>工具 </li></ul><ul><li>更多 </li></ul>
  10. 10. 快捷键 <ul><li>Tab 命令或文件名自动完成 </li></ul><ul><li>  </li></ul><ul><li>Ctrl+H 删一个字符 </li></ul><ul><li>Ctrl+W 删一个单词 </li></ul><ul><li>Ctrl+U 删一个命令 </li></ul><ul><li>  </li></ul><ul><li>Ctrl+L 挂起当前 任务 </li></ul><ul><li>Ctrl+C 退出当前任务 </li></ul><ul><li>Ctrl+D 退出登录 (exit) </li></ul>
  11. 11. 帮助信息 <ul><li>man cmd </li></ul><ul><li>info cmd </li></ul><ul><li>help buildin </li></ul><ul><li>apropos word # 通过关键字查帮助 =man -k </li></ul><ul><li>whatis cmd </li></ul><ul><li>which cmd # 当前 cmd 命令所在存储位置(第一个) </li></ul><ul><li>whereis cmd # 全部 cmd 命令所在存储位置(全部) </li></ul>
  12. 12. 文件操作 (1) <ul><li>文件夹 </li></ul><ul><ul><li>pwd/cd/mkdir/rmdir/rm –r/cp –r/mv </li></ul></ul><ul><ul><li>cd . / cd .. / cd ~ / cd / </li></ul></ul><ul><ul><li>dirname/basename </li></ul></ul>
  13. 13. 文件操作 (2) <ul><li>文件 </li></ul><ul><ul><li>ls/stat/touch/cat/tac/head/tail/more/less/rm/cp/mv </li></ul></ul><ul><ul><li>sort/uniq/rev/wc/nl/tr </li></ul></ul><ul><ul><li>cat >filename/script/gedit/nano/vim/emacs </li></ul></ul><ul><ul><li>find/xargs/locate/diff/diff3/cmp/grep/egrep/fgrep/awk/sed </li></ul></ul><ul><ul><li>cut/paste/join </li></ul></ul><ul><ul><li>ln/ln –s/readlink </li></ul></ul>
  14. 14. 文件操作 (3) <ul><li>文件打包解包 & 压缩解压缩 </li></ul><ul><ul><li>tar –cjvf –xjvf / –czvf –xzvf / –cZvf –xZvf </li></ul></ul><ul><ul><li>file </li></ul></ul><ul><ul><li>bzip2/bunzip2/bzcat/bzip2recover </li></ul></ul><ul><ul><li>gzip/gunzip/zcat </li></ul></ul><ul><ul><li>compress/uncompress </li></ul></ul><ul><ul><li>zip/unzip </li></ul></ul><ul><ul><li>rar a/rar x </li></ul></ul>
  15. 15. 日常管理 (1) <ul><li>安装软件 </li></ul><ul><ul><li>rpm </li></ul></ul><ul><ul><li>yum </li></ul></ul><ul><ul><li>configure/make/make install </li></ul></ul><ul><li>日期时间 </li></ul><ul><ul><li>date </li></ul></ul><ul><ul><li>time/times </li></ul></ul><ul><li>清屏 </li></ul><ul><ul><li>clear </li></ul></ul><ul><li>环境变量 </li></ul><ul><ul><li>env/set/export </li></ul></ul><ul><ul><li>. / source (将子进程环境变量带到父进程) </li></ul></ul>
  16. 16. 日常管理 (2) <ul><li>设备管理 </li></ul><ul><ul><li>uname/arch/free/du/df/vmstat </li></ul></ul><ul><li>用户管理 </li></ul><ul><ul><li>whoami/id/ </li></ul></ul><ul><ul><li>users/useradd/userdel/usermod </li></ul></ul><ul><ul><li>groups/groupadd/groupdel/groupmod </li></ul></ul><ul><ul><li>chmod/chown/chgrp/ </li></ul></ul><ul><li>任务管理 </li></ul><ul><ul><li>jobs/pidof/fg/bg/&/nohup/wait/sleep/unsleep/watch/nice </li></ul></ul><ul><li>进程管理 </li></ul><ul><ul><li>ps/pstree/pgrep/fuser/kill//pkill/top/at/batch </li></ul></ul><ul><li>系统管理 </li></ul><ul><ul><li>exit </li></ul></ul><ul><ul><li>halt/shutdown/reboot </li></ul></ul>
  17. 17. 网络连接 <ul><li>网络配置 </li></ul><ul><ul><li>host/hostname </li></ul></ul><ul><ul><li>ping/ifconfig/netstat/route/chkconfig/tcpdump </li></ul></ul><ul><li>网上邻居 </li></ul><ul><ul><li>w/who/whois/finger </li></ul></ul><ul><li>简单通信 </li></ul><ul><ul><li>write/mesg/wall/talk </li></ul></ul>
  18. 18. 数学运算 <ul><li>变量赋值 </li></ul><ul><ul><li>let/set/unset </li></ul></ul><ul><li>数学运算 </li></ul><ul><ul><li>let </li></ul></ul><ul><ul><li>expr </li></ul></ul><ul><ul><li>bc/dc </li></ul></ul><ul><ul><li>(()) </li></ul></ul><ul><ul><li>factor </li></ul></ul><ul><ul><li>seq </li></ul></ul>
  19. 19. 输入输出与 IO 重定向 <ul><li>输入输出 </li></ul><ul><ul><li>read/echo/printf </li></ul></ul><ul><li>文件重定向 </li></ul><ul><ul><li>stdin: 0, stdout: 1, stderr: 2, stdout+stderr: & </li></ul></ul><ul><ul><li>< 从文件输入 </li></ul></ul><ul><ul><ul><li>0<filename, <filename </li></ul></ul></ul><ul><ul><li>> 输出到新建文件 </li></ul></ul><ul><ul><ul><li>cmd>filename </li></ul></ul></ul><ul><ul><ul><li>:>filename, /dev/null > filename </li></ul></ul></ul><ul><ul><ul><li>1>filename, 2>filename, &>filename (both stdout and stderr) </li></ul></ul></ul><ul><ul><ul><li>2>&1 </li></ul></ul></ul><ul><ul><ul><li>i>&j </li></ul></ul></ul><ul><ul><ul><li>>&j 等价于 1>&j </li></ul></ul></ul><ul><ul><ul><li>j<>filename </li></ul></ul></ul><ul><ul><li>>> 输出追加到文件 </li></ul></ul><ul><li>关闭 </li></ul><ul><ul><li>n<&- 关闭输入文件描述符 n. </li></ul></ul><ul><ul><li>0<&- , <&- 关闭 stdin. </li></ul></ul><ul><ul><li>n>&- 关闭输出文件描述符 n. </li></ul></ul><ul><ul><li>1>&- , >&- 关闭 stdout. </li></ul></ul>
  20. 20. 管道 <ul><li>单向管道 </li></ul><ul><ul><li>| </li></ul></ul><ul><li>T 型管道 </li></ul><ul><ul><li>tee </li></ul></ul>
  21. 21. TEST(1) <ul><li>[ ] 或 [[ ]] </li></ul><ul><li>表达式测试 </li></ul><ul><ul><li>EXPRESSION </li></ul></ul><ul><ul><li>! EXPRESSION </li></ul></ul><ul><ul><li>EXPRESSION1 -a EXPRESSION2 </li></ul></ul><ul><ul><li>EXPRESSION1 -o EXPRESSION2 </li></ul></ul>
  22. 22. TEST(2) <ul><li>字符串测试 </li></ul><ul><ul><li>-n STRING , STRING </li></ul></ul><ul><ul><ul><li># the length of STRING is nonzero </li></ul></ul></ul><ul><ul><li>-z STRING </li></ul></ul><ul><ul><ul><li># the length of STRING is zero </li></ul></ul></ul><ul><ul><li>STRING1 = STRING2 </li></ul></ul><ul><ul><ul><li># the strings are equal </li></ul></ul></ul><ul><ul><li>STRING1 != STRING2 </li></ul></ul><ul><ul><ul><li># the strings are not equal </li></ul></ul></ul>
  23. 23. TEST(3) <ul><li>数值测试 </li></ul><ul><ul><li>INTEGER1 -eq INTEGER2 </li></ul></ul><ul><ul><ul><li># INTEGER1 is equal to INTEGER2 </li></ul></ul></ul><ul><ul><li>INTEGER1 -ne INTEGER2 </li></ul></ul><ul><ul><ul><li># INTEGER1 is not equal to INTEGER2 </li></ul></ul></ul><ul><ul><li>INTEGER1 -ge INTEGER2 </li></ul></ul><ul><ul><ul><li># INTEGER1 is greater than or equal to INTEGER2 </li></ul></ul></ul><ul><ul><li>INTEGER1 -gt INTEGER2 </li></ul></ul><ul><ul><ul><li># INTEGER1 is greater than INTEGER2 </li></ul></ul></ul><ul><ul><li>INTEGER1 -le INTEGER2 </li></ul></ul><ul><ul><ul><li># INTEGER1 is less than or equal to INTEGER2 </li></ul></ul></ul><ul><ul><li>INTEGER1 -lt INTEGER2 </li></ul></ul><ul><ul><ul><li># INTEGER1 is less than INTEGER2 </li></ul></ul></ul>
  24. 24. TEST(4) <ul><li>文件测试 </li></ul><ul><ul><li>-d FILE # FILE exists and is a directory </li></ul></ul><ul><ul><li>-e FILE # FILE exists </li></ul></ul><ul><ul><li>-f FILE # FILE exists and is a regular file </li></ul></ul><ul><ul><li>-h FILE # FILE exists and is a symbolic link (same as -L) </li></ul></ul><ul><ul><li>-L FILE # FILE exists and is a symbolic link (same as -h) </li></ul></ul><ul><ul><li>-r FILE # FILE exists and read permission is granted </li></ul></ul><ul><ul><li>-w FILE # FILE exists and write permission is granted </li></ul></ul><ul><ul><li>-x FILE # FILE exists and execute permission is granted </li></ul></ul><ul><ul><li>-s FILE # FILE exists and has a size greater than zero </li></ul></ul>
  25. 25. TEST(4) <ul><li>文件测试 </li></ul><ul><ul><li>FILE1 -ef FILE2 # FILE1 and FILE2 have the same device and inode numbers </li></ul></ul><ul><ul><li>FILE1 -nt FILE2 # FILE1 is newer (modification date) than FILE2 </li></ul></ul><ul><ul><li>FILE1 -ot FILE2 # FILE1 is older than FILE2 </li></ul></ul>
  26. 26. 循环结构 (1) <ul><li>for arg in [ list ]; do </li></ul><ul><li>command(s)... </li></ul><ul><li>done </li></ul><ul><li>注意 : 在循环的每次执行中 ,arg 将顺序的存取 list 中列出的变量 . </li></ul><ul><li>for arg in &quot;$var1&quot; &quot;$var2&quot; &quot;$var3&quot; ... &quot;$varN&quot; </li></ul><ul><li># 在第 1 次循环中 , arg = $var1 </li></ul><ul><li># 在第 2 次循环中 , arg = $var2 </li></ul><ul><li># 在第 3 次循环中 , arg = $var3 </li></ul><ul><li># ... </li></ul><ul><li># 在第 n 次循环中 , arg = $varN </li></ul>
  27. 27. 循环结构 (2) <ul><li>for arg in `seq (FIRST) (INCREMENT) LAST` </li></ul><ul><li>for number in `echo $NUMBERS ` 或 for number in $(echo $NUMBERS) # 使用命令替换来产生 for 循环的 [list] ;事先声明 NUMBERS </li></ul><ul><li>或 ((a=1; a <= LIMIT ; a++)) # C 风格的 for 循环 </li></ul><ul><li>for file in $FILES # 事先声明 FILES </li></ul><ul><li>for file in * # 文件名扩展(当前目录) </li></ul><ul><li>for arg # 忽略 [list] 的话 , 将会使循环操作 $@( 从命令行传递给脚本的参数列表 ) </li></ul>
  28. 28. 循环结构 (3) <ul><li>while [ condition ]; do </li></ul><ul><li>command(s)... </li></ul><ul><li>done </li></ul><ul><li>while (( a <= LIMIT )) # while 循环也可通过 (()) 来使用 C 风格语法 </li></ul><ul><li>while read VAR1 VAR2 ...; do </li></ul><ul><li>command(s)... </li></ul><ul><li>done < filename </li></ul>
  29. 29. 循环结构 (4) <ul><li>until [condition-is-true]; do </li></ul><ul><li>command(s)... </li></ul><ul><li>done </li></ul><ul><li>break </li></ul><ul><li>continue </li></ul>
  30. 30. 分支结构 (1) <ul><li>if [[ condition1 ]]; then </li></ul><ul><li>command(s)... </li></ul><ul><li>elif [[ condition2 ]]; then </li></ul><ul><li>command(s)... </li></ul><ul><li>else </li></ul><ul><li>command(s)... </li></ul><ul><li>fi </li></ul><ul><li>(( a <= LIMIT )) </li></ul><ul><li>commands(s)... </li></ul><ul><li># 也可通过 (()) 来使用 C 风格语法, (()) 结构扩展并计算一个算术表达式的结果 </li></ul>
  31. 31. 分支结构 (2) <ul><li>case &quot;$variable&quot; in </li></ul><ul><li>&quot;$condition1&quot;) </li></ul><ul><li>command(s)... </li></ul><ul><li>;; </li></ul><ul><li>&quot;$condition2&quot;) </li></ul><ul><li>command(s)... </li></ul><ul><li>;; </li></ul><ul><li>esac </li></ul>
  32. 32. 分支结构 (3) <ul><li>select variable [in list] </li></ul><ul><li>do </li></ul><ul><li>command(s)... </li></ul><ul><li>break </li></ul><ul><li>done </li></ul><ul><li># 如果忽略[ in list ]列表 那么 select 命令将使用传递到脚本的命令行参数或者是函数参数 前提是将 select 写到这个函数中 </li></ul>
  33. 33. 一个完整的三角形程序测试脚本 <ul><li>演示 </li></ul>
  34. 34. 内容概要 <ul><li>热身 </li></ul><ul><li>命令 </li></ul><ul><li>工具 </li></ul><ul><ul><li>服务器工具 </li></ul></ul><ul><ul><ul><li>http/ftp/svn </li></ul></ul></ul><ul><ul><li>编译器与编程环境 </li></ul></ul><ul><ul><ul><li>gcc/g++/gdb/trace/make </li></ul></ul></ul><ul><ul><ul><li>awk/sed </li></ul></ul></ul><ul><ul><ul><li>python </li></ul></ul></ul><ul><ul><ul><li>perl </li></ul></ul></ul><ul><ul><ul><li>java </li></ul></ul></ul><ul><ul><ul><li>vim/emacs </li></ul></ul></ul><ul><ul><ul><li>Eclipse/CodeBlocks </li></ul></ul></ul><ul><ul><li>测试工具 </li></ul></ul><ul><ul><ul><li>Cobertura </li></ul></ul></ul><ul><ul><ul><li>Emma </li></ul></ul></ul><ul><li>更多 </li></ul>
  35. 35. 工具 <ul><li>演示 </li></ul>
  36. 36. 更多 <ul><li>鸟哥的 Linux 私房菜 . </li></ul><ul><li>A Practical Guide To Linux Commands Editors And Shell Programming , Mark G. Sobell. </li></ul><ul><li>Advanced Bash-Scripting Guide , Mendel Cooper. </li></ul><ul><li>Shell_12P, Shell_13Q. </li></ul><ul><li>Learning the vi and Vim Editors (7 th ), Arnold Robbins et al. </li></ul><ul><li>Computer Systems: A Programmer’s Perspective, Randal E. Bryant and David R. O’Hallaron. </li></ul><ul><li>The C Programming Language, K&R. </li></ul><ul><li>用 GDB 调试程序 </li></ul><ul><li>跟我一起写 makefile </li></ul><ul><li>APUE (2 nd )/UNP/TCPIP_Illustrated, Richard Stevens. </li></ul>
  37. 37. <ul><li>Q&R </li></ul><ul><li>何伟 </li></ul><ul><li> 2011.10.19 </li></ul>

×