快乐成长


每天进步一点点



把学习变为一种快乐,快乐长能长久,才能坚持,才能降低学习成本,带给您学习乐趣。 每天进步点点, 一直是我们的愿望,欢迎您光临!!

为了给您增加学习乐趣,并且学到有意思,简单高效的,有用的学习,为零基础的朋友们录制了趣味编程视频,欢迎您浏览,谢谢!

月度归档:2019年07月

linux常用命令50个

下面是从网络上搜索到一个介绍linux中最常用的命令的 文章,

并且我在这里面挑选了一些非常重要且常用的, 做了标记

其中红色区域的 **号的多少代表本人的认为的重要程度, *多重要度提升

另外, 特别注意  就是里面双引号都要是英文才行, 文章里面在编写时,经常被编辑软件替换为中文的双引号,因此当您拷贝代码到linux中时要特别考虑, 英文双引号才行。

 

*****1. find 基本语法参数如下:

find [PATH] [option] [action]

# 与时间有关的参数:
-mtime n : n为数字,意思为在n天之前的“一天内”被更改过的文件;
-mtime +n : 列出在n天之前(不含n天本身)被更改过的文件名;
-mtime -n : 列出在n天之内(含n天本身)被更改过的文件名;
-newer file : 列出比file还要新的文件名
# 例如:
find /root -mtime 0 # 在当前目录下查找今天之内有改动的文件

# 与用户或用户组名有关的参数:
-user name : 列出文件所有者为name的文件
-group name : 列出文件所属用户组为name的文件
-uid n : 列出文件所有者为用户ID为n的文件
-gid n : 列出文件所属用户组为用户组ID为n的文件
# 例如:
find /home/hadoop -user hadoop # 在目录/home/hadoop中找出所有者为hadoop的文件

# 与文件权限及名称有关的参数:
-name filename :找出文件名为filename的文件
-size [+-]SIZE :找出比SIZE还要大(+)或小(-)的文件
-tpye TYPE :查找文件的类型为TYPE的文件,TYPE的值主要有:一般文件(f)、设备文件(b、c)、
             目录(d)、连接文件(l)、socket(s)、FIFO管道文件(p);
-perm mode :查找文件权限刚好等于mode的文件,mode用数字表示,如0755;
-perm -mode :查找文件权限必须要全部包括mode权限的文件,mode用数字表示
-perm +mode :查找文件权限包含任一mode的权限的文件,mode用数字表示
# 例如:
find / -name passwd # 查找文件名为passwd的文件
find . -perm 0755 # 查找当前目录中文件权限的0755的文件
find . -size +12k # 查找当前目录中大于12KB的文件,注意c表示byte

使用截图:

 

*********2. ls 命令,展示文件夹内内容,参数如下:

-a :全部的档案,连同隐藏档( 开头为 . 的档案) 一起列出来~ 
-A :全部的档案,连同隐藏档,但不包括 . 与 .. 这两个目录,一起列出来~ 
-d :仅列出目录本身,而不是列出目录内的档案数据 
-f :直接列出结果,而不进行排序 (ls 预设会以档名排序!) 
-F :根据档案、目录等信息,给予附加数据结构,例如: 
*:代表可执行档; /:代表目录; =:代表 socket 档案; |:代表 FIFO 档案; 
-h :将档案容量以人类较易读的方式(例如 GB, KB 等等)列出来; 
-i :列出 inode 位置,而非列出档案属性; 
-l :长数据串行出,包含档案的属性等等数据; 
-n :列出 UID 与 GID 而非使用者与群组的名称 (UID与GID会在账号管理提到!) 
-r :将排序结果反向输出,例如:原本档名由小到大,反向则为由大到小; 
-R :连同子目录内容一起列出来; 
-S :以档案容量大小排序! 
-t :依时间排序 
--color=never :不要依据档案特性给予颜色显示; 
--color=always :显示颜色 
--color=auto :让系统自行依据设定来判断是否给予颜色 
--full-time :以完整时间模式 (包含年、月、日、时、分) 输出 
--time={atime,ctime} :输出 access 时间或 改变权限属性时间 (ctime) 
而非内容变更时间 (modification time)  
   
例如:
ls [-aAdfFhilRS] 目录名称 
ls [--color={none,auto,always}] 目录名称 
ls [--full-time] 目录名称
使用截图:

********3. cd 命令:

cd /root/Docements # 切换到目录/root/Docements
cd ./path          # 切换到当前目录下的path目录中,“.”表示当前目录  
cd ../path         # 切换到上层目录中的path目录中,“..”表示上一层目录

 

***4. tree命令,显示树形的层级目录结构,非原生命令,需要安装tree

使用示例:

 

*********5. cp 命令,作用复制,参数如下:

-a :将文件的特性一起复制
-p :连同文件的属性一起复制,而非使用默认方式,与-a相似,常用于备份
-i :若目标文件已经存在时,在覆盖时会先询问操作的进行
-r :递归持续复制,用于目录的复制行为
-u :目标文件与源文件有差异时才会复制

编辑示例:

 

*********6. rm命令作用为删除,参数:

-f :就是force的意思,忽略不存在的文件,不会出现警告消息
-i :互动模式,在删除前会询问用户是否操作
-r :递归删除,最常用于目录删除,它是一个非常危险的参数

使用示例:

 

******7. mv命令作用为移动文件:

-f :force强制的意思,如果目标文件已经存在,不会询问而直接覆盖
-i :若目标文件已经存在,就会询问是否覆盖
-u :若目标文件已经存在,且比目标文件新,才会更新

 

*****8. pwd命令,作用为查看”当前工作目录“的完整路径

pwd -P # 显示出实际路径,而非使用连接(link)路径;pwd显示的是连接路径

使用截图:

 

9. tar命令,用于压缩解压:

-c :新建打包文件
-t :查看打包文件的内容含有哪些文件名
-x :解打包或解压缩的功能,可以搭配-C(大写)指定解压的目录,注意-c,-t,-x不能同时出现在同一条命令中
-j :通过bzip2的支持进行压缩/解压缩
-z :通过gzip的支持进行压缩/解压缩
-v :在压缩/解压缩过程中,将正在处理的文件名显示出来
-f filename :filename为要处理的文件
-C dir :指定压缩/解压缩的目录dir

缩略版...

压缩:tar -jcv -f filename.tar.bz2 要被处理的文件或目录名称
查询:tar -jtv -f filename.tar.bz2
解压:tar -jxv -f filename.tar.bz2 -C 欲解压缩的目录

 

***10. mkdir命令创建目录:

mkdir [选项]... 目录... 
 -m, --mode=模式,设定权限<模式> (类似 chmod),而不是 rwxrwxrwx 减 umask
 -p, --parents  可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录; 
 -v, --verbose  每次创建新目录都显示信息

 

11. rmdir 命令删除目录:

rmdir [选项]... 目录...
-p 递归删除目录dirname,当子目录删除后其父目录为空时,也一同被删除。如果整个路径被删除或者由于某种原因保留部分路径,则系统在标准输出上显示相应的信息。 
-v --verbose  显示指令执行过程

使用示例:

 

12. gzip 命令压缩文件或文件夹为 .gz文件:

 gzip[参数][文件或者目录]
-a or --ascii  使用ASCII文字模式。 
-c or --stdout or --to-stdout  把压缩后的文件输出到标准输出设备,不去更动原始文件。 
-d or --decompress or ----uncompress  解开压缩文件。 
-f or --force  强行压缩文件。不理会文件名称 or 硬连接是否存在以及该文件是否为符号连接。 
-h or --help  在线帮助。 
-l or --list  列出压缩文件的相关信息。 
-L or --license  显示版本与版权信息。 
-n or --no-name  压缩文件时,不保存原来的文件名称及时间戳记。 
-N or --name  压缩文件时,保存原来的文件名称及时间戳记。 
-q or --quiet  不显示警告信息。 
-r or --recursive  递归处理,将指定目录下的所有文件及子目录一并处理。 
-S<压缩字尾字符串> or ----suffix<压缩字尾字符串>  更改压缩字尾字符串。 
-t or --test  测试压缩文件是否正确无误。 
-v or --verbose  显示指令执行过程。 
-V or --version  显示版本信息。 
-num 用指定的数字num调整压缩的速度,-1 or --fast表示最快压缩方法(低压缩比),-9 or --best表示最慢压缩方法(高压缩比)。系统缺省值为6。

使用示例:

 

二. 进程相关命令:

*******13.  ps 命令显示运行的进程,还会显示进程的一些信息如pid, cpu和内存使用情况等:

-A :所有的进程均显示出来
-a :不与terminal有关的所有进程
-u :有效用户的相关进程
-x :一般与a参数一起使用,可列出较完整的信息
-l :较长,较详细地将PID的信息列出

使用示例:

 

***14. kill 命令用于终止进程,参数:

kill -signal PID

1:SIGHUP,启动被终止的进程
2:SIGINT,相当于输入ctrl+c,中断一个程序的进行
9:SIGKILL,强制中断一个进程的进行
15:SIGTERM,以正常的结束进程方式来终止进程
17:SIGSTOP,相当于输入ctrl+z,暂停一个进程的进行

使用示例:

 

***15. killall 命令和参数:

killall [-iIe] [command name]

-i :交互式的意思,若需要删除时,会询问用户
-e :表示后面接的command name要一致,但command name不能超过15个字符
-I :命令名称忽略大小写
# 例如:
killall -SIGHUP syslogd # 重新启动syslogd

使用示例:

 

16. crontab命令是启动linux定时任务的服务

service cron start # 启动cronjob
service cron stop # 停止cronjob
service cron restart #  重启cronjob
crontab -e # 编辑cronjob任务

使用示例:打开crontab -e后通过vi方式编辑任务列表

 

17.  free 命令用于显示Linux系统中空闲的、已用的物理内存及swap内存,及被内核使用的buffer:

free [参数]
-b  以Byte为单位显示内存使用情况。 
-k  以KB为单位显示内存使用情况。 
-m  以MB为单位显示内存使用情况。
-g   以GB为单位显示内存使用情况。 
-o  不显示缓冲区调节列。 
-s<间隔秒数>  持续观察内存使用状况。 
-t  显示内存总和列。 
-V  显示版本信息。

使用示例:

 

******18. top 命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器:

top [参数]
-b 批处理
-c 显示完整的治命令
-I 忽略失效过程
-s 保密模式
-S 累积模式
-i<时间> 设置间隔时间
-u<用户名> 指定用户名
-p<进程号> 指定进程
-n<次数> 循环显示的次数

使用示例:

 

三. 权限相关命令:

*****19. chmod命令:

chmod [-R] xyz 文件或目录
-R:进行递归的持续更改,即连同子目录下的所有文件都会更改
#同时,chmod还可以使用u(user)、g(group)、o(other)、a(all)和+(加入)、-(删除)、=(设置)跟rwx搭配来对文件的权限进行更改,编号是各种权限的数字代码,示例:
chmod 0755 file # 把file的文件权限改变为-rxwr-xr-x
chmod g+w file # 向file的文件权限中加入用户组可写权限

使用示例:

 

*****20. chown命令改变文件所有者

chown [para]... [owner][:[group]] file...

  -c 显示更改的部分的信息

 -f 忽略错误信息

 -h 修复符号链接

 -R 处理指定目录以及其子目录下的所有文件

 -v 显示详细的处理信息

 -deference 作用于符号链接的指向,而不是链接文件本身

使用示例:

 

21. chgrp命令,改变文件所属组:

-c 当发生改变时输出调试信息
-f 不显示错误信息
-R 处理指定目录以及其子目录下的所有文件
-v 运行时显示详细的处理信息
--dereference 作用于符号链接的指向,而不是符号链接本身
--no-dereference 作用于符号链接本身

使用示例:

 

22. useradd 命令建立用户账号:

useradd [-mMnr][-c <备注>][-d <登入目录>][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-s ][-u ][用户帐号] 

    -c #<备注>  加上备注文字。备注文字会保存在passwd的备注栏位中。 
  -d #<登入目录>  指定用户登入时的启始目录。
  -D # 变更预设值.
  -e # <有效期限>  指定帐号的有效期限。
  -f # <缓冲天数>  指定在密码过期后多少天即关闭该帐号。
  -g # <群组>  指定用户所属的群组。
  -G # <群组>  指定用户所属的附加群组。
  -m # 自动建立用户的登入目录。
  -M # 不要自动建立用户的登入目录。
  -n # 取消建立以用户名称为名的群组.
  -r # 建立系统帐号。
  -s # 指定用户登入后所使用的shell。
  -u # 指定用户ID。

使用示例:

 

23. usermod 修改用户信息

usermod -h
usermod [options] LOGIN

-c #后面接账号的说明,即/etc/passwd第五栏的说明栏,可以加入一些账号的说明
-d #后面接账号的家目录,即修改/etc/passwd的第六栏
-e #后面接日期,格式是YYYY-MM-DD也就是在/etc/shadow内的第八栏
-f #后面接天数,修改shadow的第七栏
-g #后面接主群组,修改/etc/passwd的第四个字段,即是GID的字段
-G #后面接附加群组,修改这个使用者能够支持的群组,修改的是/etc/group
-a #与 -G 合用,可增加附加群组的支持而非设定
-l #后面接账号名称。修改账号名称,/etc/passwd的第一栏
-s #后面接Shell的文件,例如/bin/bash或/bin/csh等等
-u #后面接 UID 数字,修改用户的UID /etc/passwd第三栏
-L #暂时将用户的密码冻结,让他无法登入。其实就是在/etc/shadow的密码栏前面加上了“!”
-U #将/etc/shadow 密码栏的“!”去掉

使用示例:

 

24. userdel 删除用户:

userdel [options] LOGIN
-f # 强制删除,包括用户的一切相关内容,这个参数是危险的参数,不建议大家使用。详细说明看MAN
-r # 删除用户的家目录和用户的邮件池

 

25. groupadd 命令用于将新组加入系统:

groupadd [-g gid] [-o]] [-r] [-f] groupname

-g gid:指定组ID号。
-o:允许组ID号,不必惟一。
-r:加入组ID号,低于499系统账号。
-f:加入已经有的组时,发展程序退出。

使用示例:

26. groupdel 命令删除组:

# 用于删除不再需要的组,如果指定的组中包含用户,则必须先删除组里面的用户>以后,才能删除组
groupdel [options] GROUP

使用示例:

 

**27. sudo 用来以其他身份来执行命令,预设的身份为root:

sudo(选项)(参数)

-b:在后台执行指令;
-h:显示帮助;
-H:将HOME环境变量设为新身份的HOME环境变量;
-k:结束密码的有效期限,也就是下次再执行sudo时便需要输入密码;。
-l:列出目前用户可执行与无法执行的指令;
-p:改变询问密码的提示符号;
-s:执行指定的shell;
-u<用户>:以指定的用户作为新的身份。若不加上此参数,则预设以root作为新的身份;
-v:延长密码有效期限5分钟;
-V :显示版本信息。

使用示例:

 

***28. passwd 设置用户的密码:

passwd [OPTION...] <accountName>
-k, --keep-tokens       keep non-expired authentication tokens
-d, --delete            delete the password for the named account (root only)
-l, --lock              lock the named account (root only)
-u, --unlock            unlock the named account (root only)
-f, --force             force operation
-x, --maximum=DAYS      maximum password lifetime (root only)
-n, --minimum=DAYS      minimum password lifetime (root only)
-w, --warning=DAYS      number of days warning users receives before password expiration (root only)
-i, --inactive=DAYS     number of days after password expiration when an account becomes disabled (root only)
-S, --status            report password status on the named account (root)

 

29. groups 显示用户所属组:

groups # 默认显示当前用户的组

groups hadoop2 # 显示hadoop2用户的组

使用示例:

 

四. 文本查看编辑等命令

***30. vi/vim 是使用vi编辑器的命令:

vi /var/log/aa.log # 打开 /var/log/aa.log文件并编辑

使用示例:

vi的操作命令比较复杂,就不在这里详细展开了。

 

******31. cat 用途是连接文件或标准输入并打印。这个命令常用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入读取内容并显示,它常与重定向符号配合使用。

 cat [选项] [文件]...
-A, --show-all           等价于 -vET
-b, --number-nonblank    对非空输出行编号
-e                       等价于 -vE
-E, --show-ends          在每行结束处显示 $
-n, --number     对输出的所有行编号,由1开始对所有输出的行数编号
-s, --squeeze-blank  有连续两行以上的空白行,就代换为一行的空白行 
-t                       与 -vT 等价
-T, --show-tabs          将跳格字符显示为 ^I
-u                       (被忽略)
-v, --show-nonprinting   使用 ^ 和 M- 引用,除了 LFD 和 TAB 之外

使用示例:

 

******32. more 命令和cat的功能一样都是查看文件里的内容,但有所不同的是more可以按页来查看文件的内容,还支持直接跳转行等功能

more [-dlfpcsu ] [-num ] [+/ pattern] [+ linenum] [file ... ] 
命令参数:
+n 从笫n行开始显示
-n 定义屏幕大小为n行
+/pattern 在每个档案显示前搜寻该字串(pattern),然后从该字串前两行之后开始显示 
-c 从顶部清屏,然后显示
-d 提示“Press space to continue,’q’ to quit(按空格键继续,按q键退出)”,禁用响铃功能
-l 忽略Ctrl+l(换页)字符
-p 通过清除窗口而不是滚屏来对文件进行换页,与-c选项相似
-s 把连续的多个空行显示为一行
-u 把文件内容中的下画线去掉
常用操作命令:
Enter 向下n行,需要定义。默认为1行
Ctrl+F 向下滚动一屏
空格键 向下滚动一屏
Ctrl+B 返回上一屏
= 输出当前行的行号
:f 输出文件名和当前行的行号
V 调用vi编辑器
!命令 调用Shell,并执行命令 
q 退出more

使用示例:

 

*******33. less 命令用法比起 more 更加的有弹性。在 more 的时候,我们并没有办法向前面翻, 只能往后面看,但若使用了 less 时,就可以使用 [pageup] [pagedown] 等按键的功能来往前往后翻看文件,更容易用来查看一个文件的内容!除此之外,在 less 里头可以拥有更多的搜索功能,不止可以向下搜,也可以向上搜。

 less [参数]  文件 
-b <缓冲区大小> 设置缓冲区的大小
-e 当文件显示结束后,自动离开
-f 强迫打开特殊文件,例如外围设备代号、目录和二进制文件
-g 只标志最后搜索的关键词
-i 忽略搜索时的大小写
-m 显示类似more命令的百分比
-N 显示每行的行号
-o <文件名> 将less 输出的内容在指定文件中保存起来
-Q 不使用警告音
-s 显示连续空行为一行
-S 行过长时间将超出部分舍弃
-x <数字> 将“tab”键显示为规定的数字空格
/字符串:向下搜索“字符串”的功能
?字符串:向上搜索“字符串”的功能
n:重复前一个搜索(与 / 或 ? 有关)
N:反向重复前一个搜索(与 / 或 ? 有关)
b 向后翻一页
d 向后翻半页
h 显示帮助界面
Q 退出less 命令
u 向前滚动半页
y 向前滚动一行
空格键 滚动一行
回车键 滚动一页
[pagedown]: 向下翻动一页
[pageup]: 向上翻动一页

使用示例:

 

*****34. tail 命令

#从指定点开始将文件写到标准输出.使用tail命令的-f选项可以方便的查阅正在改变的日志文件,tail -f filename会把filename里最尾部的内容显示在屏幕上,并且不但刷新,使你看到最新的文件内容. 
tail[必要参数][选择参数][文件]   

-f 循环读取
-q 不显示处理信息
-v 显示详细的处理信息
-c<数目> 显示的字节数
-n<行数> 显示行数
--pid=PID 与-f合用,表示在进程ID,PID死掉之后结束. 
-q, --quiet, --silent 从不输出给出文件名的首部 
-s, --sleep-interval=S 与-f合用,表示在每次反复的间隔休眠S秒

使用示例:

 

35. head 命令用于显示档案的开头至标准输出中,默认head命令打印其相应文件的开头10行:

head [参数]... [文件]...  
-q 隐藏文件名
-v 显示文件名
-c<字节> 显示字节数
-n<行数> 显示的行数

使用示例:

 

36. diff 命令用于比较两个文件或目录的不同:

 diff[参数][文件1或目录1][文件2或目录2]

# diff命令能比较单个文件或者目录内容。如果指定比较的是文件,则只有当输入为文本文件时才有效。以逐行的方式,比较文本文件的异同处。如果指定比较的是目录的的时候,diff 命令会比较两个目录下名字相同的
# 文本文件。列出不同的二进制文件、公共子目录和只在一个目录出现的文件。

-a or --text  #diff预设只会逐行比较文本文件。
-b or --ignore-space-change  #不检查空格字符的不同。
-B or --ignore-blank-lines  #不检查空白行。
-c  #显示全部内文,并标出不同之处。
-C or --context  #与执行"-c-"指令相同。
-d or --minimal  #使用不同的演算法,以较小的单位来做比较。
-D or ifdef  #此参数的输出格式可用于前置处理器巨集。
-e or --ed  #此参数的输出格式可用于ed的script文件。
-f or -forward-ed  #输出的格式类似ed的script文件,但按照原来文件的顺序来显示不同处。
-H or --speed-large-files  #比较大文件时,可加快速度。
-l or --ignore-matching-lines  #若两个文件在某几行有所不同,而这几行同时都包含了选项中指定的字符 or 字符串,则不显示这两个文件的差异。
-i or --ignore-case  #不检查大小写的不同。
-l or --paginate  #将结果交由pr程序来分页。
-n or --rcs  #将比较结果以RCS的格式来显示。
-N or --new-file  #在比较目录时,若文件A仅出现在某个目录中,预设会显示:Only in目录:文件A若使用-N参数,则diff会将文件A与一个空白的文件比较。
-p  #若比较的文件为C语言的程序码文件时,显示差异所在的函数名称。
-P or --unidirectional-new-file  #与-N类似,但只有当第二个目录包含了一个第一个目录所没有的文件时,才会将这个文件与空白的文件做比较。
-q or --brief  #仅显示有无差异,不显示详细的信息。
-r or --recursive  #比较子目录中的文件。
-s or --report-identical-files  #若没有发现任何差异,仍然显示信息。
-S or --starting-file  #在比较目录时,从指定的文件开始比较。
-t or --expand-tabs  #在输出时,将tab字符展开。
-T or --initial-tab  #在每行前面加上tab字符以便对齐。
-u,-U or --unified=  #以合并的方式来显示文件内容的不同。
-v or --version  #显示版本信息。
-w or --ignore-all-space  #忽略全部的空格字符。
-W or --width  #在使用-y参数时,指定栏宽。
-x or --exclude  #不比较选项中所指定的文件 or 目录。
-X or --exclude-from  #您可以将文件 or 目录类型存成文本文件,然后在=中指定此文本文件。
-y or --side-by-side  #以并列的方式显示文件的异同之处。

使用示例:

 

网络相关命令:

***37. ping 用于确定主机与外部连接状态:

ping [参数] [主机名或IP地址]
-d 使用Socket的SO_DEBUG功能。
-f  极限检测。大量且快速地送网络封包给一台机器,看它的回应。
-n 只输出数值。
-q 不显示任何传送封包的信息,只显示最后的结果。
-r 忽略普通的Routing Table,直接将数据包送到远端主机上。通常是查看本机的网络接口是否有问题。
-R 记录路由过程。
-v 详细显示指令的执行过程。
<p>-c 数目:在发送指定数目的包后停止。
-i 秒数:设定间隔几秒送一个网络封包给一台机器,预设值是一秒送一次。
-I 网络界面:使用指定的网络界面送出数据包。
-l 前置载入:设置在送出要求信息之前,先行发出的数据包。
-p 范本样式:设置填满数据包的范本样式。
-s 字节数:指定发送的数据字节数,预设值是56,加上8字节的ICMP头,一共是64ICMP数据字节。
-t 存活数值:设置存活数值TTL的大小。

使用示例:

 

38. ssh 命令用于远程登录上Linux主机:

ssh [-l login_name] [-p port] [user@]hostname

使用示例:

 

**39. scp 命令是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的:

scp [参数] [原路径] [目标路径]

-1 强制scp命令使用协议ssh1 
-2 强制scp命令使用协议ssh2 
-4 强制scp命令只使用IPv4寻址 
-6 强制scp命令只使用IPv6寻址 
-B 使用批处理模式(传输过程中不询问传输口令或短语) 
-C 允许压缩。(将-C标志传递给ssh,从而打开压缩功能) 
-p 保留原文件的修改时间,访问时间和访问权限。 
-q 不显示传输进度条。 
-r 递归复制整个目录。 
-v 详细方式显示输出。scp和ssh(1)会显示出整个过程的调试信息。这些信息用于调试连接,验证和配置问题。 
-c cipher 以cipher将数据传输进行加密,这个选项将直接传递给ssh。 
-F ssh_config 指定一个替代的ssh配置文件,此参数直接传递给ssh。 
-i identity_file 从指定文件中读取传输时使用的密钥文件,此参数直接传递给ssh。 
-l limit 限定用户所能使用的带宽,以Kbit/s为单位。 
-o ssh_option 如果习惯于使用ssh_config(5)中的参数传递方式, 
-P port 注意是大写的P, port是指定数据传输用到的端口号 
-S program 指定加密传输时所使用的程序。此程序必须能够理解ssh(1)的选项。

使用示例:

 

**40. telnet 命令用来远程登录操作:

 telnet[参数][主机]

-8 允许使用8位字符资料,包括输入与输出。
-a 尝试自动登入远端系统。
-b<主机别名> 使用别名指定远端主机名称。
-c 不读取用户专属目录里的.telnetrc文件。
-d 启动排错模式。
-e<脱离字符> 设置脱离字符。
-E 滤除脱离字符。
-f 此参数的效果和指定"-F"参数相同。
-F 使用Kerberos V5认证时,加上此参数可把本地主机的认证数据上传到远端主机。
-k<域名> 使用Kerberos认证时,加上此参数让远端主机采用指定的领域名,而非该主机的域名。
-K 不自动登入远端主机。
-l<用户名称> 指定要登入远端主机的用户名称。
-L 允许输出8位字符资料。
-n<记录文件> 指定文件记录相关信息。
-r 使用类似rlogin指令的用户界面。
-S<服务类型> 设置telnet连线所需的IP TOS信息。
-x 假设主机有支持数据加密的功能,就使用它。
-X<认证形态> 关闭指定的认证形态。

使用示例:

 

******41. wget 是从远程下载的工具:

wget [参数] [URL地址]

启动参数:
-V, –version 显示wget的版本后退出
-h, –help 打印语法帮助
-b, –background 启动后转入后台执行
-e, –execute=COMMAND 执行`.wgetrc’格式的命令,wgetrc格式参见/etc/wgetrc或~/.wgetrc

记录和输入文件参数:
-o, –output-file=FILE 把记录写到FILE文件中
-a, –append-output=FILE 把记录追加到FILE文件中
-d, –debug 打印调试输出
-q, –quiet 安静模式(没有输出)
-v, –verbose 冗长模式(这是缺省设置)
-nv, –non-verbose 关掉冗长模式,但不是安静模式
-i, –input-file=FILE 下载在FILE文件中出现的URLs
-F, –force-html 把输入文件当作HTML格式文件对待
-B, –base=URL 将URL作为在-F -i参数指定的文件中出现的相对链接的前缀
–sslcertfile=FILE 可选客户端证书
–sslcertkey=KEYFILE 可选客户端证书的KEYFILE
–egd-file=FILE 指定EGD socket的文件名

下载参数:
–bind-address=ADDRESS 指定本地使用地址(主机名或IP,当本地有多个IP或名字时使用)
-t, –tries=NUMBER 设定最大尝试链接次数(0 表示无限制).
-O –output-document=FILE 把文档写到FILE文件中
-nc, –no-clobber 不要覆盖存在的文件或使用.#前缀
-c, –continue 接着下载没下载完的文件
–progress=TYPE 设定进程条标记
-N, –timestamping 不要重新下载文件除非比本地文件新
-S, –server-response 打印服务器的回应
–spider 不下载任何东西
-T, –timeout=SECONDS 设定响应超时的秒数
-w, –wait=SECONDS 两次尝试之间间隔SECONDS秒
–waitretry=SECONDS 在重新链接之间等待1…SECONDS秒
–random-wait 在下载之间等待0…2*WAIT秒
-Y, –proxy=on/off 打开或关闭代理
-Q, –quota=NUMBER 设置下载的容量限制
–limit-rate=RATE 限定下载输率

目录参数:
-nd –no-directories 不创建目录
-x, –force-directories 强制创建目录
-nH, –no-host-directories 不创建主机目录
-P, –directory-prefix=PREFIX 将文件保存到目录 PREFIX/…
–cut-dirs=NUMBER 忽略 NUMBER层远程目录

HTTP 选项参数:
–http-user=USER 设定HTTP用户名为 USER.
–http-passwd=PASS 设定http密码为 PASS
-C, –cache=on/off 允许/不允许服务器端的数据缓存 (一般情况下允许)
-E, –html-extension 将所有text/html文档以.html扩展名保存
–ignore-length 忽略 `Content-Length’头域
–header=STRING 在headers中插入字符串 STRING
–proxy-user=USER 设定代理的用户名为 USER
–proxy-passwd=PASS 设定代理的密码为 PASS
–referer=URL 在HTTP请求中包含 `Referer: URL’头
-s, –save-headers 保存HTTP头到文件
-U, –user-agent=AGENT 设定代理的名称为 AGENT而不是 Wget/VERSION
–no-http-keep-alive 关闭 HTTP活动链接 (永远链接)
–cookies=off 不使用 cookies
–load-cookies=FILE 在开始会话前从文件 FILE中加载cookie
–save-cookies=FILE 在会话结束后将 cookies保存到 FILE文件中

FTP 选项参数:
-nr, –dont-remove-listing 不移走 `.listing’文件
-g, –glob=on/off 打开或关闭文件名的 globbing机制
–passive-ftp 使用被动传输模式 (缺省值).
–active-ftp 使用主动传输模式
–retr-symlinks 在递归的时候,将链接指向文件(而不是目录)

递归下载参数:
-r, –recursive 递归下载--慎用!
-l, –level=NUMBER 最大递归深度 (inf 或 0 代表无穷)
–delete-after 在现在完毕后局部删除文件
-k, –convert-links 转换非相对链接为相对链接
-K, –backup-converted 在转换文件X之前,将之备份为 X.orig
-m, –mirror 等价于 -r -N -l inf -nr
-p, –page-requisites 下载显示HTML文件的所有图片

递归下载中的包含和不包含(accept/reject):
-A, –accept=LIST 分号分隔的被接受扩展名的列表
-R, –reject=LIST 分号分隔的不被接受的扩展名的列表
-D, –domains=LIST 分号分隔的被接受域的列表
–exclude-domains=LIST 分号分隔的不被接受的域的列表
–follow-ftp 跟踪HTML文档中的FTP链接
–follow-tags=LIST 分号分隔的被跟踪的HTML标签的列表
-G, –ignore-tags=LIST 分号分隔的被忽略的HTML标签的列表
-H, –span-hosts 当递归时转到外部主机
-L, –relative 仅仅跟踪相对链接
-I, –include-directories=LIST 允许目录的列表
-X, –exclude-directories=LIST 不被包含目录的列表
-np, –no-parent 不要追溯到父目录
wget -S –spider url 不下载只显示过程

使用示例:

 

******42. ifconfig 命令用来查看和配置网络设备。当网络环境发生改变时可通过此命令对网络进行相应的配置:

 ifconfig [网络设备] [参数]

up 启动指定网络设备/网卡。
down 关闭指定网络设备/网卡。该参数可以有效地阻止通过指定接口的IP信息流,如果想永久地关闭一个接口,我们还需要从核心路由表中将该接口的路由信息全部删除。
arp 设置指定网卡是否支持ARP协议。
-promisc 设置是否支持网卡的promiscuous模式,如果选择此参数,网卡将接收网络中发给它所有的数据包
-allmulti 设置是否支持多播模式,如果选择此参数,网卡将接收网络中所有的多播数据包
-a 显示全部接口信息
-s 显示摘要信息(类似于 netstat -i)
add 给指定网卡配置IPv6地址
del 删除指定网卡的IPv6地址
<硬件地址> 配置网卡最大的传输单元
mtu<字节数> 设置网卡的最大传输单元 (bytes)
netmask<子网掩码> 设置网卡的子网掩码。掩码可以是有前缀0x的32位十六进制数,也可以是用点分开的4个十进制数。如果不打算将网络分成子网,可以不管这一选项;如果要使用子网,那么请记住,网络中每一个系统必须有相同子网掩码。
tunel 建立隧道
dstaddr 设定一个远端地址,建立点对点通信
-broadcast<地址> 为指定网卡设置广播协议
-pointtopoint<地址> 为网卡设置点对点通讯协议
multicast 为网卡设置组播标志
address 为网卡设置IPv4地址
txqueuelen<长度> 为网卡设置传输列队的长度

使用示例:

 

43. route

 route [-f] [-p] [Command [Destination] [mask Netmask] [Gateway] [metric Metric]] [if Interface]] 
-c  # 显示更多信息
-n  # 不解析名字
-v  # 显示详细的处理信息
-F  # 显示发送信息
-C # 显示路由缓存
-f  # 清除所有网关入口的路由表。 
-p # 与 add 命令一起使用时使路由具有永久性。

使用示例:

 

五. 搜索文件:

44. whereis 命令:

# whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。和find相比,whereis查找的速度非常快,这是因为linux系统会将 系统内的所有文件都记录在一个数据库文件中,当使用whereis和locate时,会从数据库中查找数据,而不是像find命令那样,通过遍历硬盘来查找,效率自然会很高。 但是该数据库文件并不是实时更新,默认情况下时一星期更新一次,因此,我们在用whereis和locate 查找文件时,有时会找到已经被删除的数据,或者刚刚建立文件,却无法查找到,原因就是因为数据库文件没有被更新。 

 whereis [-bmsu] [BMS 目录名 -f ] 文件名

-b 定位可执行文件。
-m 定位帮助文件。
-s 定位源代码文件。
-u 搜索默认路径下除可执行文件、源代码文件、帮助文件以外的其它文件。
-B 指定搜索可执行文件的路径。
-M 指定搜索帮助文件的路径。
-S 指定搜索源代码文件的路径。

使用示例:

 

45. locate 命令

# locate命令可以在搜寻数据库时快速找到档案,数据库由updatedb程序来更新,updatedb是由cron daemon周期性建立的,locate命令在搜寻数据库时比由整个由硬盘资料来搜寻资料来得快,但较差劲的是locate所找到的档案若是最近才建立或 刚更名的,可能会找不到,在内定值中,updatedb每天会跑一次,可以由修改crontab来更新设定值。(etc/crontab)

Locate [选择参数] [样式]
-e   将排除在寻找的范围之外。
-1  如果 是 1.则启动安全模式。在安全模式下,使用者不会看到权限无法看到 的档案。这会始速度减慢,因为 locate 必须至实际的档案系统中取得档案的 权限资料。
-f   将特定的档案系统排除在外,例如我们没有到理要把 proc 档案系统中的档案 放在资料库中。
-q  安静模式,不会显示任何错误讯息。
-n 至多显示 n个输出。
-r 使用正规运算式 做寻找的条件。
-o 指定资料库存的名称。
-d 指定资料库的路径
-h 显示辅助讯息
-V 显示程式的版本讯息

使用示例:

 

46. which 会在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果:

which 可执行文件名称 
-n  指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名。
-p  与-n参数相同,但此处的包括了文件的路径。
-w  指定输出时栏位的宽度。
-V  显示版本信息

使用示例:

 

六. 其他:

******47. grep命令

该命令常用于分析一行的信息,若当中有我们所需要的信息,就将该行显示出来,该命令通常与管道命令一起使用,用于对一些命令的输出进行筛选加工等等,比如可以加在ps, tail, cat后面

它的简单语法为

grep [-acinv] [--color=auto] '查找字符串' filename

使用示例:

 

***48. clear 命令用于清除终端屏幕上现有的文字内容,将之上滚:

额,这条不需要啥示例,非常简单...用了以后就没有了...

 

49. date 命令用于显示或设定时间

date [参数]... [+格式]

必要参数:
%H 小时(以00-23来表示)。 
%I 小时(以01-12来表示)。 
%K 小时(以0-23来表示)。 
%l 小时(以0-12来表示)。 
%M 分钟(以00-59来表示)。 
%P AM或PM。 
%r 时间(含时分秒,小时以12小时AM/PM来表示)。 
%s 总秒数。起算时间为1970-01-01 00:00:00 UTC。 
%S 秒(以本地的惯用法来表示)。 
%T 时间(含时分秒,小时以24小时制来表示)。 
%X 时间(以本地的惯用法来表示)。 
%Z 市区。 
%a 星期的缩写。 
%A 星期的完整名称。 

%b 月份英文名的缩写。 
%B 月份的完整英文名称。 
%c 日期与时间。只输入date指令也会显示同样的结果。 
%d 日期(以01-31来表示)。 
%D 日期(含年月日)。 
%j 该年中的第几天。 
%m 月份(以01-12来表示)。 
%U 该年中的周数。 
%w 该周的天数,0代表周日,1代表周一,异词类推。 
%x 日期(以本地的惯用法来表示)。 
%y 年份(以00-99来表示)。 
%Y 年份(以四位数来表示)。 
%n 在显示时,插入新的一行。 
%t 在显示时,插入tab。 
MM 月份(必要) 
DD 日期(必要) 
hh 小时(必要) 
mm 分钟(必要)
ss 秒(选择性) 

选择参数:
-d<字符串>  显示字符串所指的日期与时间。字符串前后必须加上双引号。 
-s<字符串>  根据字符串来设置日期与时间。字符串前后必须加上双引号。 
-u  显示GMT。

使用示例:

 

50. ln 命令是为某一个文件在另外一个位置建立一个同步的链接

Linux文件系统中,有所谓的链接(link),我们可以将其视为档案的别名,而链接又可分为两种 : 硬链接(hard link)与软链接(symbolic link),硬链接的意思是一个档案可以有多个名称,而软链接的方式则是产生一个特殊的档案,该档案的内容是指向另一个档案的位置。硬链接是存在同一个文件系统中,而软链接却可以跨越不同的文件系统。

软链接:
1.软链接,以路径的形式存在。类似于Windows操作系统中的快捷方式
2.软链接可以 跨文件系统 ,硬链接不可以
3.软链接可以对一个不存在的文件名进行链接
4.软链接可以对目录进行链接

硬链接:
1.硬链接,以文件副本的形式存在。但不占用实际空间。
2.不允许给目录创建硬链接
3.硬链接只有在同一个文件系统中才能创建

ln [参数][源文件或目录][目标文件或目录]

必要参数:
-b 删除,覆盖以前建立的链接
-d 允许超级用户制作目录的硬链接
-f 强制执行
-i 交互模式,文件存在则提示用户是否覆盖
-n 把符号链接视为一般目录
-s 软链接(符号链接)
-v 显示详细的处理过程

选择参数:
-S “-S<字尾备份字符串> ”或 “--suffix=<字尾备份字符串>”
-V “-V<备份方式>”或“--version-control=<备份方式>”

使用示例:

来源: https://www.cnblogs.com/xuxinstyle/p/9609551.html

CodeBlock使用技巧

CodeBlock是一款采用C++编写的完全开源、功能强大的IDE,工欲善其事必先利其器,为了更加方便后期的开发调试,下面先就网上的一些

官方主页地址为:    http://www.codeblocks.org/

Cppcheck下载地址:http://cppcheck.sourceforge.net/

安装要点

1. 下载安装CodeBlock时,安装路径绝对不能含有中文字符或者空格字符,否则调试工具就无法使用。

安装时候务必选择 custom安装,选中全部插件进行安装。

2. CodeBlock组织项目是分层次的,最高层为一个Workspace,这个工作空间下面,可以多有个工程,但一次只能有一个活动工程,

每个工程下面是具体的文件组织,按照文件结构基本组织的话,分为Sources目录和Headers目录。

 

对于每个新建工程,例如工程名字为C++_test, CB会自动生成对于名称的目录(C++_test),该目录下面,有如下的文件排布

image

bin目录为最终生成的可执行文件路径

obj目录为编译过程中的临时文件路径

cbp文件为CB的工程项目文件

layout文件为CB的工程配置文件

depend文件为CB的项目头文件依赖文件

最终编译生成的有Debug版和Release版,

 

日常编辑

  •     1. 按住Ctrl+滚轮,可以随时调整代码的文字大小

2. Ctrl+Shift+C  注释掉当前行或者选中快 Ctrl+Shift+x 解除注释

3. Tab 缩进当前行,Shift+Tab 减小缩进

4. F2 显示和隐藏下方的 Logs & others    Shift+F2 显示和隐藏左边的Management栏

5. 自动代码完成 Setting—> Editor—> Code Completion,配置如下:

image

 

 

导航相关

1. Ctrl+G  到达指定行

2. Ctrl+B 添加书签 Alt+PageUp,跳到上一个书签中去 Alt+Pagedown 跳到下一个书签

3. Ctrl+Shift+B 找到匹配的括号

4. 及时备份 C:\Users\【用户名】\AppData\Roaming\CodeBlocks\Default.conf 如遇重装,将其放置在codeblocks.exe所在的目录,这样就不会丢失你的配置

 

编译器配置,建议选上

image

在编辑C++时,CB可以结合Cppcheck工具来检查C++代码有效性和正确性。

Cppcheck插件下载地址:使用:

在网上查阅了 许多关于Cppcheck使用的,结合自己的CodeBlock,下面来讲述使用方法。

在Environment--->Settings-->Cppcheck配置选项里面,

image

配置好后,在Plugins--->Cppcheck里面就可以看到

image

为了便于使用,配置快捷键,一键执行Cppcheck。

Setting--->Editor--->KeyBoard shortCuts ---> 配置Cppcheck的快捷键为 F7.

这下就可以快乐的使用CppCheck了

 

帮助文档的添加,Setting--->Environment--->Help file 添加对于语言的帮助文档,当在编程中,遇到疑惑的函数时,鼠标选中函数,点击F1,然后回车,就可以看到详细的帮助文档。

 

编译快捷键

编译           Ctrl+F9

编译并且运行  F9

执行cppcheck检查  F7(自定义)

在工具中添加自定义功能,比如下述为添加 功能,打开当前文件所在目录。

image

作者:浩天之家
出处: http://www.cnblogs.com/cherishui/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.

Codeblocks实用快捷键技巧汇总 (全)

1.编辑部分:

按住Ctrl,滚动鼠标滚轮,放大或缩小字体。

Ctrl+Shift+C注释掉当前行或选中部分,Ctrl+Shift+X解除注释。

Ctrl+T 和上一行交换位置。

按住Ctrl再拖动选中内容,则将这部分内容在新位置复制一遍。

按住Alt再方向键上下移动,则将这行上下移动。

Tab:缩进当前行或选中块。

Shift+Tab:减少缩进。

写完关键词(如:if,for,while)后,按Ctrl+J自动补全格式。(格式和关键词可以自己去编辑器里设置)

Ctrl+Z:撤销。

Ctrl+Shift+Z:反悔撤销。

Ctrl+C:复制。

Ctrl+V:粘贴。

Ctrl+X:剪切。

Ctrl+A:全选。

2.编译与运行部分
Ctrl + F9:编译
Ctrl + F10:运行上次成功编译后的程序
Ctrl + Shift + F9:编译当前文件(而不是当前打开的工程项目)
F9:编译并运行当前代码(如果编译错误会提示错误而不会运行)
F8:debug
F10:全屏
Ctrl + C:终止正在运行的程序
Ctrl + Z:终止输入

3.调试部分:

F5:在当前光标所在行设置断点

F4:运行到光标所在行

F8:开始调试

Shift + F8:停止调试

F7:下一行代码

Shift + F7:进入下一行代码

4.界面部分
F2和Shift+F2分别可以显隐下方Logs& others栏和左方的Management栏

FunctionShortcut Key
Undo last actionCtrl + Z
Redo last actionCtrl + Shift + Z
Cut selected textCtrl + X
Copy selected textCtrl + C
Paste text from clipboardCtrl + V
Select all textCtrl + A
Swap header / sourceF11
Comment highlighted codeCtrl + Shift + C
Uncomment highlighted codeCtrl + Shift + X
Duplicate line caret is onCtrl + D
Auto-complete / AbbreviationsCtrl + Space / Ctrl + J
Show call tipCtrl + Shift + Space
Swap line caret is on with line above itCtrl + T
Toggle bookmarkCtrl + B
Goto previous bookmarkAlt + PgUp
Goto next bookmarkAlt + PgDown
Toggle current block foldingF12
Toggle all foldsShift + F12

This is a list of shortcuts provided by the Code::Blocks' editor component. These shortcuts cannot be rebound.

FunctionShortcut Key
Magnify text size.Ctrl + Keypad "+"
Reduce text size.Ctrl + Keypad "-"
Restore text size to normal.Ctrl + Keypad "/"
Cycle through recent files.Ctrl + Tab
Indent block.Tab
Dedent block.Shift + Tab
Delete to start of word.Ctrl + BackSpace
Delete to end of word.Ctrl + Delete
Delete to start of line.Ctrl + Shift + BackSpace
Delete to end of line.Ctrl + Shift + Delete
Go to start of document.Ctrl + Home
Extend selection to start of document.Ctrl + Shift + Home
Go to start of display line.Alt + Home
Extend selection to start of display line.Alt + Shift + Home
Go to end of document.Ctrl + End
Extend selection to end of document.Ctrl + Shift + End
Go to end of display line.Alt + End
Extend selection to end of display line.Alt + Shift + End
Expand or contract a fold point.Ctrl + Keypad "*"
Create or delete a bookmark.Ctrl + F2
Go to next bookmark.F2
Select to next bookmark.Alt + F2
Find selection.Ctrl + F3
Find selection backwards.Ctrl + Shift + F3
Scroll up.Ctrl + Up
Scroll down.Ctrl + Down
Line cut.Ctrl + L
Line copy.Ctrl + Shift + T
Line delete.Ctrl + Shift + L
Line transpose with previous.Ctrl + T
Line duplicate.Ctrl + D
Find matching preprocessor conditional, skipping nested ones.Ctrl + K
Select to matching preprocessor conditional.Ctrl + Shift + K
Find matching preprocessor conditional backwards, skipping nested ones.Ctrl + J
Select to matching preprocessor conditional backwards.Ctrl + Shift + J
Previous paragraph. Shift extends selection.Ctrl + [
Next paragraph. Shift extends selection.Ctrl + ]
Previous word. Shift extends selection.Ctrl + Left
Next word. Shift extends selection.Ctrl + Right
Previous word part. Shift extends selection.Ctrl + /
Next word part. Shift extends selection.Ctrl + \

5.Files

FunctionShortcut Key
New file or projectCtrl + N
Open existing file or projectCtrl + O
Save current fileCtrl + S
Save all filesCtrl + Shift + S
Close current fileCtrl + F4 / Ctrl + W
Close all filesCtrl + Shift + F4 / Ctrl + Shift + W

This is a list of shortcuts provided by the Code::Blocks' tab component. These shortcuts cannot be rebound.

FunctionShortcut Key
Activate next open fileCtrl + Tab
Activate previous open fileCtrl + Shift + Tab

 

6.View

FunctionShortcut Key
Show / hide Messages paneF2
Show / hide Management paneShift + F2
Move project up (in Project tree)Ctrl + Shift + Up
Move project down (in Project tree)Ctrl + Shift + Down
Activate prior (in Project tree)Alt + F5
Activate next (in Project tree)Alt + F6
Zoom in / outCtrl + Roll Mouse Wheel
Focus editorCTRL + Alt + E

 

7.Search

FunctionShortcut Key
FindCtrl + F
Find nextF3
Find previousShift + F3
Find in filesCrtl + Shift + F
ReplaceCtrl + R
Replace in filesCtrl + Shift + R
Goto lineCtrl + G
Goto next changed lineCtrl + F3
Goto previous changed lineCtrl + Shift + F3
Goto fileAlt + G
Goto functionCtrl + Alt + G
Goto previous functionCtrl + PgUp
Goto next functionCtrl + PgDn
Goto declarationCtrl + Shift + .
Goto implementationCtrl + .
Open include fileCtrl + Alt + .

8.Build

FunctionShortcut Key
BuildCtrl + F9
Compile current fileCtrl + Shift + F9
RunCtrl + F10
Build and RunF9
RebuildCtrl + F11

 

9.Debug

FunctionShortcut Key
DebugF8
Continue debuggingCtrl + F7
Step over a code blockF7
Step into a code blockShift + F7
Step out of a code blockCtrl + Shift + F7
Toggle breakpointF5
Run to cursorF4
Previous errorAlt + F1
Next errorAlt + F2

二.技巧

1、在CodeBlocks中对齐代码

 

在Visual C++6.0中使用ALT+F8便可以轻松的使代码自动对齐,那么在Codeblocks中能不能办到呢?答案是肯定可以的,那么下面我们就来讲一下如何实现在CodeBlocks中按ALT+F8来对齐代码

在CodeBlocks菜单中有个Plugins菜单,该菜单下有个Source code formatter (AStyle)命令,点击这个命令便可以实现代码的自动对齐了,但是每次都这样也很麻烦,有没有更简单的方法呢?比如我现在就要用ALT+F8来实现这个功能。当然可以,CodeBlocks的设计是很人性化的,下面便讲操作步骤:

点击Settings菜单找到Editor...命令,在弹出的对话框中下拉左侧的滚动条找到Keyboard shortcuts菜单,单击一下在右侧的Commands:一栏中找到Plugins单击加号展开。找到Source code formatter (AStyle)命令,然后单击New shortcut:下的文本条,按ALT+F8,然后单击Add按钮就完成了快捷键的设置

 

2.Ctrl+D是个神奇的快捷键,可复制当前行或选中块,直接贴,等于Ctrl C+ Ctrl V。

 

3.自动代码格式化

 

在代码框里点右键,按Format use Astyle就会自动代码格式化了

但是它默认的风格是大括号另起一行,很不习惯,实际上是可以改的

1.Setting->Editor->Source Formatter->style->Bracket style 修改成Java

2.Setting->Editor->Source Format    ter->Formatting->Insert space padding around operators 打勾

 

4.批量注释与对齐

 

Ctrl+Shift+C 批量注释

Ctrl+shift+X 批量取消注释

Click Settings->Editor->KeyboardShortcuts (in the left of dialog box)->Plugins->Source code formatter(Astyle)

 

 

 

5.比较杂...就放一起咯~

 

1)以下需要设置的地方均在Settings->Editor...弹出的对话框中。

2)不少命令都可针对当前行或选中的代码块,下文简称当前行或选中块。

==日常编辑==

• 按住Ctrl滚滚轮,代码的字体会随你心意变大变小,对保护视力特别有好处。
• 在编辑区按住右键可拖动代码,省去拉(尤其是横向)滚动条之麻烦;相关设置:Mouse Drag Scrolling。
• Ctrl+Shift+C注释掉当前行或选中块,Ctrl+Shift+X则解除注释。
• Tab缩进当前行或选中块,Shift+Tab减少缩进。
• 可拖动选中块使其移动到新位置,按住Ctrl则为复制到新位置。
• 按下Atl,再拖动鼠标,可以实现部分选择(即只选中一个区域内的字符,而不会包含它们所在行的其他字符)。
• 需要更大编辑空间时,F2和Shift+F2分别可以显隐下方Logs & others栏和左方的Management栏。
==自动完成与缩写==

1)优化代码自动完成功能:在Code-completion and symbol browser中,
• 将Automatically launch when typed # letter中的4改成2,这样打两个字母就会有提示了。
• 将Keyword sets to additionally include中1到9都勾上(可在Syntax highlighting 的keywords...中设置,

其中1是C++关键字,3是Doxygen关键字;我曾将wxWidgets的类名都加入7并设置相应的字体(粗黑体),

看代码时特别爽)
• 将Delay for auto-kick-in when typing [.::->]拉到 200ms,这样快点出来提示
• 选中Case-sensitive match,防止一些无关的东西干扰,如果你想它帮你纠正大小写,那就去掉勾
• 在Keyboard short-cuts中将Edit->Code complete的快捷键由Ctrl+Space改为Alt+/,因为前者与中文输

入法切换冲突,该快捷键为已经输入的(不是正在输入的)词提供自动完成。

2)看Abbreviation一栏,里面定义了许多缩写(还可以自定义),只要输入这些缩写,并按Ctrl+J,就可以

自动完成常用的代码框架,并将光标放在恰当的地方(自定义时用|表达)。常用的有:guard、class、

switch等。

3)如果你声明了一个类,你可以在cpp文件中右击,Insert->All class methods without

implementation...来插入你还没定义的方法的定义(省去不少打字的功夫哦),

也可使用Insert->Class Method declaration/

implementation...来插入一个方法的声明或定义。
==导航相关==

• Ctrl+G 到达指定行,ALT+G 到达指定文件,Ctrl+Alt+G 到达指定函数(支持头文件中的函数定义),

F11 切换源文件与头文件。

• Ctrl+PageUp 到达上一个函数,Ctrl+PageDown 到达下一个函数。
• Ctrl+B 添加书签,Alt+PageUp和Alt+PageDown可以切换书签。
• Ctrl+Shift+B可找到匹配的括号。
• 看长代码时,可右击,Folding->Fold All,然后慢慢展开来看,也可充分利用左方Management

栏的Symbol浏览器。

• 在一个变量、函数或宏上右击,三个以Find开头的菜单项,分别可以为你转到它的声明、定义和

找到所有出现的地方(按F2在下方Thread Search那里查看)。

 

==日常编辑==

 

1、需要更大编辑空间时,F2和Shift+F2分别可以显隐下方Logs& others栏和左方的Management栏。

2、在编辑区按住右键可拖动代码,省去拉(尤其是横向)滚动条之麻烦;相关设置:Mouse Drag Scrolling。

3、 Ctrl+D可复制当前行或选中块。

4、 Ctrl+Shift+C注释掉当前行或选中块,Ctrl+Shift+X则解除注释。

5、Tab缩进当前行或选中块,Shift+Tab减少缩进。

6、可拖动选中块使其移动到新位置,按住Ctrl则为复制到新位置。

7、按下Atl,再拖动鼠标,可以实现部分选择(即只选中一个区域内的字符,而不会包含它们所在行的其他字符)。

8、shift + f11 全屏

 

==导航==

1、 Ctrl+G到达指定行,ALT+G 到达指定文件,Ctrl+Alt+G 到达指定函数(支持头文件中的函数定义),F11 切换源文件与头文件。

2、 Ctrl+PageUp到达上一个函数,Ctrl+PageDown 到达下一个函数。

3、 Ctrl+B添加书签,Alt+PageUp和Alt+PageDown可以切换书签。

4、 Ctrl+Shift+B可找到匹配的括号。

5、 看长代码时,可右击,Folding->Fold All,然后慢慢展开来看,也可充分利用左方Management栏的Symbol浏览器。

6、ctrl + . 可以从函数声明处找到函数定义

7、F3用于寻找下一个所选中的语句块

 

==文件操作==

1、创建控制台工程时的main.cpp或是main.c文件可以找到codeblocks安装路径后,依次找到
G:\code blocks\CodeBlocks\share\CodeBlocks\templates\wizard\console\cpp(以我的为例),将里面的main.cpp文件打开进行修改即可
将烦人的hello world去掉就行了,还可以加上一些常用的头文件。

2、单独创建文件时可以在打开codeblocks之后找到settings->editor->Default Code ,在里面的空白处添加上常用的头文件以及主函数名即可

以我的为例

3、代码颜色的更改:找到settings->editor->Syntax  highlighting,选择你喜欢的颜色就可以了,最主要的是注释的颜色优点不明显
可以修改comment颜色即可,但是注意不要和其他代码的颜色冲突。

 

4、快捷键的更改:找到settings->editor->keyboard shortcuts,可对一些功能的快捷键进行更改,
不过不要与系统本身设置好的冲突(还好冲突时会有提示),更改时要按住相应的快捷键进行过添加,而不是将快捷键名称打出来。

来源: https://blog.csdn.net/lxt_Lucia/article/details/79572829

Code::Blocks 使用技巧总结

因为自己做Android开发的缘故,之前在Eclipse上配置CDT进行开发,但是始终存在各种各样奇葩的问题,诸如include目录不对、控制台输出找不到、调试困难等等,不一而足。无奈之下准备安装另一个备用IDE,但是嫌VS太过于庞大(我只是需要一些简单的C++环境就好),因此选择了CodeBlocks。

CodeBlocks是一款开源跨平台的免费C、C++、Fortran IDE。其官网是这里,如果因为某些原因无法下载,可以去51CTO下载中心,这里我上传了一个13.12版本:http://down.51cto.com/data/1886707。

刚刚接触CodeBlocks的时候很不顺手,因为其使用习惯几乎跟Eclipse完全不沾边。因此这里总结下CodeBlocks的各种使用技巧,并持续更新,在温故知新的同时希望也能对大家有所帮助。

编码问题

设置文件默认编码

settings->Editor->gernal settings->other settings

use encoding when opening files表示打开文件的编码格式,第一次保存文件的时候也会用这个格式。

选中下面的as default encoding才会设置为默认。注意:编码格式的设置并不会影响已经保存过的文件,因此最好在一开始就设置好。

修改编译器对源文件解释编码格式和生成执行文件执行时候采用的编码格式
settings->compiler->Global compiler settings

选择对应的GCC编译器,在other options里面加入:

    -finput-charset=charset    
    -fexec-charset=charset

第一个参数表示编译的时候输入文件的编码解释格式,第二参数表示生成的执行文件执行的时候显示用的编码格式。这些参数如果和实际不吻合,必然产生乱码。只要吻合,就不会乱码了。

常用快捷键

Ctrl + Z 撤销(Undo)

Ctrl + Shift + Z 重做(Redo)【Ctrl+Y也可以用】

Ctrl + F   查找
F3         查找下一个

Shift+F3   查找前一个

Ctrl + R   替换

Ctrl + PageUp     从当前函数跳到上一个函数的开始

Ctrl + PageDown   从当前函数跳到下一个函数的开始

Alt + N 符号重命名(重构)

Shift + Space 自动补全

Ctrl + L     剪切一行

Ctrl + J     自动代码段(只可意会不可言传)

Ctrl + Shift + C  注释一行

Ctrl + Shift + X   取消一行注释

如何实战开发一款小游戏

如何快速开发一款火爆的小游戏?“火爆”是一个偏运营的词,今天介绍的内容可能更倾向于技术方面,即如何利用微信的开放能力开发一款小游戏。小游戏上线120天时发布了几个重要的消息,其中有几个数字可以用来描述“火爆”这个词。微信小游戏正式允许第三方开发者发布的时间是在3月3日,而现在几款小游戏的用户已经过亿,安卓月流水过千万的也有数款小游戏,大家应该已经体会到了微信小游戏的火爆程度。

与火爆相关的两个知识,一个就是如何开发?首先要利用好微信的社交相关性,微信去中心化的情景下社交分享互动是非常重要的,因为没有传统流量分发的总入口。第二个是操作的简便性,我们根据游戏成为爆款游戏后的数据才能推出这两个结论,并不是说具备这两个特性就一定能开发出一款火爆的游戏。

什么是小游戏?

首先为大家介绍一下什么是小游戏:小游戏特指微信小游戏,是小程序的一个子类目,可在微信内被便捷地获取和传播,即点即玩,具备出色的用户体验。在开发的视角来看,小游戏是一个基于Canvas/WebGL + 微信社交开放能力的新平台。在框架上看分为三层,是一个典型的分层架构。微信中有一个小游戏的Runtime去运行小游戏,而OS本身可能会涉及到不同类的设备。

什么是小游戏

如果放大小游戏的Runtime可以看到很多的细节,第一就是游戏逻辑,也就是与平台无关的游戏逻辑的开发。第二部分是游戏引擎,大部分会用到一些引擎的工作流、一些各种系统封装好的高层的API。第三部分是weapp,小游戏的框架是参考了webview的框架,但其实它的底层不是webview,而是webview精简优化过的平台,小游戏有的只是与核心相关的一些渲染的API。这里的weapp-adaper是把小游戏的能力适配到与webview更接近的环境,让更上层的游戏或引擎本身能够更快速地集入到平台中。

小游戏Runtime

微信的Runtime对外暴露的都是微信的API,所有的能力都是通过微信API发布出去的。底层最基本的能力是渲染相关的,即Canvas 2d和WebGL。其他一些微信相关的能力是另外一部,所以小游戏在架构上和小程序是有差别的,但用户体验起来没有太大的区别。小游戏是没有页面概念的,在实现上也不完全是webview,其中不必要的部分已经被去掉了。

总的来说小游戏的入口为game.js,游戏可以利用底层的一些能力将游戏的整个界面绘制出来。配置文件为game.json主要用来配置小游戏是横屏还是竖屏,小游戏的全局对象game Gobal类似于webview中的window对象,同时支持javascript语言。但是小游戏有一个重要的一个限制是禁止动态执行代码,开发者必须先提交审核,在审核通过后才可以上架给普通用户。另外,小游戏包括引擎的代码量比较大,所以限制大小比小程序要大,首包限制大小为4M。

下面来说一下Webview Adapter,它的初衷是为了让游戏开发者更好地熟悉我们的平台,所以我们的平台在能力上会尽可能地与webview做一些适配,其实这个适配也是很简单的一层。比如说我们在浏览器里面使用image对象创建一个图片,而在小游戏里是通过wx.createimage来创建的,在代码中需要做一个简单的适配。比如说Canvas、Document都是在Adapter中实现的,大家可以研究链接中的代码。其中有一些优化的版本,之后官方不会继续维系这个Adapter,因为我们会更专注于底层能力的建设。如果大家已经比较熟悉这个平台的话,就会比较容易地开发游戏。比如Document这个对象在小游戏框架本身中跟普通对象是没有区别的,它是Adapter做的一个简单的适配。

Webview Adapter

下图是小游戏能力的概览,最近小游戏能力的迭代比较快,部分能力还没有罗列出来。比如最近刚发布的游戏圈、健康系统相关的一些接口,都还没有列进去。我们先看一下基础能力,在渲染这部分WebGL1.0和Canvas 2D都是支持的,这里的Canvas更接近于浏览器里面的标准。同时,这里提到的可控帧率的概念,如果小游戏在后台运行的话,可以尽量将帧率降低。在多媒体部分,小游戏还不能像小程序一样实现实时的音频视频流,这是我们在后续要进一步支持的。网络IO的部分与小程序也是类似的,我们也提供了一些UI的组件,比如说拉起键盘,模态对话框等。

小游戏能力概览

小游戏的社交开放能力现在已经对外开放了。其中最重要的一个能力是开放域,将微信的好友关系列开放出去,给开发者一起使用,但也存在着一些限制。因为小游戏去中心化的特点,分享这一部分也是非常重要的,开发者要考虑如何将这个能力利用起来。在代码方面,因为首包限制是4兆,但部分小游戏的代码量可能比较大。我们最近也在规划一个分包的能力,异步加载代码,但这个代码是一定要经过我们审核的。

如何开发一款小游戏?

那么如何开发一款小游戏?因为我本人也只是开发过一些简单的游戏,并不是专业进行游戏开发,所以接下来我会更多地介绍一下如何利用微信的能力来开发小游戏。

选择小游戏引擎

首先在开发游戏时要选择引擎,我们与引擎商也有着比较密切的合作,开发小游戏的引擎一定要是适配的。比如在底层,一开始引擎可能只支持原生的游戏,在微信小游戏上就要做一些适配,依赖浏览器特有的能力。Cocos Creator、Egret Engine、LayaAir Engine这三个引擎已经支持了小游戏的开发,网上也有相应的文章介绍如何发布到微信小游戏的平台。

设备/环境适配

有关设备管理的适配,小游戏会有API提供获取屏幕的宽高、设备像素比等能力。在小游戏开发完成后,在开发者工具也可以发起真机测试的请求,微信提供了不同设备的测试集群,帮助开发者提前去发现问题。基础库提供的wx API本身是一个不断迭代更新的过程,对于使用了新能力的小游戏,需要做低版本兼容。比如在检测到不支持新 API的低版本允许有损服务用户。同时,如果某个低版本的用户占比较少,可以考虑在管理后台直接配置小游戏要求的基础库最低版本,当然也意味着这一部分用户在接触到这个小游戏时,微信客户端会弹出一个要求用户更新到微信新版本才可使用该小游戏的提示,如果不更新可能就会失去这个用户。

设备/环境适配

微信登录

小游戏的登陆过程与小程序类似,需要用户自定义登录状态。appsecret/session_key代表的是小游戏开发者和微信平台之间的一种信任约定,比如支付、上报托管数据,平台方需要验证 access_token,和用户相关的还要验证session_key的签名,才能保证请求来自于小游戏开发者或用户。access_token是一种应用态的 access_token,与用户无关,需要保证全局维护一份,应该有一个中控的模块去保证 access_token有效,同时在有效期内直接使用本地 cache的 access_token,而不是每次使用都去生成新的 access_token,否则可能遇到调用频率限制的错误而影响服务。切记 appsecret/session_key不要放到前端代码中去,否则可能会被恶意利用从而损坏小游戏开发者或用户的权益。

微信登录

缓存

缓存类型包括数据缓存和文件缓存两种。数据缓存即key-value存储,适合结构化类型的小数据存储,上限为 10MB。文件缓存提供了一个完整的文件系统 API,包括目录 /文件的增删改读,适合针对经常使用的网络资源做本地缓存,上限是50MB。

和浏览器不同的是,微信只提供了基本的存储管理能力,并不对存储什么以及存储满时删除什么做一些操作。开发者自行灵活定义缓存及淘汰策略,比如对经常访问的资源存储到文件系统以及在文件存储满时,清理一些最近不常访问的文件。

缓存

开放数据域

我们来说一下开发数据域,也就是在保护用户隐私的前提下把用户的数据开放给小游戏。这是一个封闭、独立的javascript作用域,开放数据域是一个独立的目录,其入口文件是index.js。目前的限制在于仅支持2d渲染模式,数据只进不出。比如说一个排行榜,它的目的肯定是用来给用户看的。

我们简单看一下它的实现方案,左边是主域。用户拿到这些数据后实现排行榜其实也是一个Canvas。它的区别在于Canvas不能把数据取出来,无法分析其中的数据是什么。主域里面有一个Canvas,在微信里上屏Canvas跟屏幕关联,后面都是离线的Canvas,离线的Canvas可以自己根据需求使用的。一旦开放数据以后,上屏Canvas不能把里面的数据取出来,下一个Canvas也不能取出来,保证了数据的安全性。

开放数据域

因为我们的数据在开发数据域中,用户没有办法进行开发。所以要求开发者在开发时将需要的数据托管到我们这里,与用户关联起来。这样就可以在开发数据域里面取到相关数据,其应用场景有好友排行、群排行榜、超越好友提示等。用户在输入的时候,重复用户的所有操作,在上屏的Canvas和离屏的Canvas上就得到了用户的所有输入,不会有开放数据渗透进去。

开放数据域

分享

如果用户在游戏中达到了很高的分数,可以与好友PK一下。在自定义转发的窗口,标题和图片都可以自定义。但是现在有很多小游戏非常骚扰用户,他们做了很多一定需要分享,才能允许玩游戏的设定。这是大家需要思考的部分,如何既不影响用户的体验,又能够促进小游戏的互动,在这里需要找到一个合适的平衡点。同时,在分享数据后将小游戏与这个群聊关联起来,我们就可以看到一个小游戏平台。

分享

支付

小游戏是支持虚拟支付的,但目前仅适用于安卓系统中。且它的方式目前只有一种,即货币托管的方式。主要分为两个流程,一是用户花钱购买游戏币,这与游戏的服务端是没有关系的。发起支付时微信客户端会生成一个订单,让用户确认支付,这是异步的。平台负责把用户RMB兑换成对应的游戏币,存储到用户对应的游戏帐号上。二是使用游戏币购买道具,开发者可以扣除对应的游戏币,给用户发放游戏内道具,扣除游戏币的过程需要有一定的事务机制,保证在网络异常的情况下交易正常。扣除游戏币的接口支持根据订单ID去重,意味着在网络超时等情况下,开发者可用同样的订单ID去重试扣除,直至返回明确的响应。

支付

性能

小游戏常见的性能问题,一般是内存造成的。如果内存占用太多会被微信客户端主动关闭,因此开发者在用户游戏过程中要及时释放不再使用的内存,特别是Canvas和Image类的大型对象,同时可以主动调用wx.triggerGC触发底层回收对应资源。对于和游戏逻辑相对独立的工作,可以考虑在worker中去实现,小游戏提供了独立的worker线程执行js逻辑的能力。

性能

版本更新机制

小游戏有热启动和冷启动之分,冷启动是指内存中无该小游戏的运行实例的情况下,启动小游戏的过程;热启动是指小游戏的运行实例在内存中还存在,只是暂时切换到了后台,这时用户再次触发小游戏回到前台的过程。在如果用户点击启动之后,游戏运行时会加载出来这款游戏。在点击右上角的菜单时,按纽只是挂后台,在一定的时间内再启动时,它会立即恢复,这时内存将会释放。

小游戏会在冷启动时检查小游戏的版本,如有新版本,在下载回本地后,下一次冷启动即可使用最新版。当然,我们也提供了 API可以供开发者决策在有版本可用时,是否需要强制更新,应用最新的版本。

版本更新机制

运维

管理端提供了发布、回滚、停服等能力,开发者可以充分利用平台的能力。比如在后台操作中,js可能会报错。脚本错误主要由运行过程中未捕获的异常触发,该类异常可能会导致用户小游戏前端的js逻辑暂停执行。同时,平台也提供了完善的数据分析服务,可以通过小游戏使用助手进行数据分析。

该资讯来源于小程序资讯,更多开发教程请关注小程序开发教程

来源: https://blog.csdn.net/Joychen404/article/details/80604971

十大开源游戏引擎深入比较

在国内外,业界盛传有十大开源游戏引擎,分别是OGRE、Irrlicht、Panda3D、Crystal Space、jME、Blender Game Engine、Reality Factory、The Nebula Device 2、RealmForge、OpenScene- Graph。我们对这十款开源游戏引擎深入进行分析。

(1) OGRE是面向对象图形渲染引擎(Object-Oriented Graphics Rendering Engine)的缩写,采用C++开发,以MIT许可证发布,可以在Windows、Linux、Mac上运行。OGRE自己也说明本身不是游戏引擎。

其主要特征如下:

面向对象,插件扩展架构,具有文档支持。

支持脚本。可以通过脚本管理材质资产并进行多路渲染。

支持物理碰撞检测。

支持顶点灯光、像素灯光、灯光映射。

支持阴影映射、三维阴影。

支持多纹理、凹凸贴图、多重材质贴图、立体投影。

支持顶点、像素、高级着色。

支持场景管理,具有多种数据结构。

支持逆向运动动画、骨架动画、变形动画、混合动画及姿态动画。

支持网格加载、皮肤、渐进网格。

支持环境映射、镜头眩光、公告牌、粒子、运动模糊、天空、水、雾、丝带轨迹、透明对象。

支持XML文件转换。

引擎特性全面( ),稳定性好( ),支持全面( ),不容易上手和使用( )。

(2) Irrlicht采用C++开发,以zlib/libpng许可证发布,可以在Windows、Linux、Mac、Solaris、FreeBSD、Xbox上运行。Irrlicht自己也说明本身不是游戏引擎。

其主要特征如下:

面向对象,插件扩展架构,具有文档支持。

支持内建场景、灯光、GUI编辑器。

支持物理碰撞检测。

支持顶点灯光、像素灯光、灯光映射。

支持阴影映射、三维阴影、模板缓冲区阴影。

支持多纹理、凹凸贴图、多重材质贴图、立体投影。

支持顶点、像素、高级着色。

支持场景管理,具有多种数据结构,允许无缝集成室内及室外场景。

支持骨架动画、变形动画及混合动画。

支持网格加载。

支持环境映射、公告牌、粒子、天空、水、雾。

支持地形渲染。

引擎特性全面( ),稳定性好( ),支持全面( ),容易上手和使用( )。

(3) Panda3D采用C++和Python开发,以BSD许可证发布,可以在Windows、Linux、Mac、SunOS上使用。Panda3D是一个完整的游戏引擎。

其主要特征如下:

面向对象,脚本扩展架构,具有文档支持。

支持内建场景、粒子、关卡编辑器。

支持物理碰撞检测,可以用于运动物体。

支持顶点灯光、像素灯光、灯光映射。

支持阴影映射、三维阴影、模板缓冲区阴影。

支持多纹理、凹凸贴图、多重材质贴图、立体投影。

支持顶点、像素、高级着色。

支持场景管理,具有多种数据结构。

支持骨架动画。

支持网格加载及皮肤。

支持环境映射、公告牌、粒子、雾、火。

支持地形渲染。

支持“客户端/服务器”网络模式。

支持2D、3D和流音效。

支持有限状态机、人工智能。

引擎特性全面( ),稳定性很好( ),支持很全面( ),很容易上手和使用( )。

(4) Crystal Space采用C++开发,以LGPL许可证发布,可以在Windows、Linux、Mac上使用。Crystal Space是一个完整的游戏引擎。

其主要特征如下:

面向对象,组件扩展架构,具有文档支持。

支持内建场景、灯光、GUI编辑器。

支持物理碰撞检测,可以用于运动物体。

支持顶点灯光、灯光映射。

支持阴影映射、三维阴影。

支持多纹理、多重材质贴图。

支持顶点、像素着色。

支持场景管理,具有多种数据结构。

支持骨架动画、帧动画、变形动画。

支持网格加载、渐进网格。

支持环境映射、镜头眩光、公告牌、粒子、天空、镜像。

支持地形渲染。

支持2D、3D音效。

支持游戏世界管理。

通过有限状态机、行为树、神经网络、遗传算法支持人工智能。

引擎特性很全面( ),稳定性好( ),支持很全面( ),不容易上手和使用( )。

(5) jME是jMonkey Engine的缩写,采用Java开发,以BSD许可证发布,可以在Windows、Linux、Mac上使用。JME的目标是提供一个Java语言3D游戏引擎,但业界目前也有人认为jME还不是一个游戏引擎。

其主要特征如下:

面向对象,插件扩展架构,具有文档支持。

支持内建游戏世界编辑器。

支持物理碰撞检测。

支持顶点灯光、灯光映射。

支持三维阴影。

支持多纹理、多重材质贴图。

支持顶点、像素、高级着色。

支持场景管理,具有多种数据结构。

支持骨架动画、帧动画。

支持网格加载及皮肤。

支持环境映射、镜头眩光、公告牌、粒子、天空、水、火、爆炸、雾。

支持地形渲染。

支持3D音效。

引擎特性全面( ),稳定性好( ),支持很全面( ),容易上手和使用( )。

(6) Blender游戏引擎是采用C++和Python开发,以GPL许可证发布,可以在Windows、Linux、Mac、Solaris、FreeBSD、Irix上使用。Blender是一个完整的游戏引擎。

其主要特征如下:

面向对象,插件及脚本扩展架构,具有文档支持。

支持内建工作流、GUI、数据库、角色等编辑器。

支持物理碰撞检测,可以用于运动物体。

支持顶点灯光、像素灯光。

支持阴影映射。

支持多纹理、凹凸贴图。

支持顶点、像素着色。

支持场景管理,具有多种数据结构。

支持逆向运动动画、帧动画。

支持网格加载及皮肤。

支持环境映射、粒子、天空、水、雾。

支持地形渲染。

支持“客户端/服务器”网络模式。

支持2D及3D音效。

通过脚本方式支持人工智能。

引擎特性基本全面( ),稳定性基本不错( ),支持全面( ),不容易上手和使用( )。

(7) Reality Factory是采用C++开发,以MIT许可证发布,可以在Windows上使用。Reality Factory自称游戏无需编程。

其主要特征如下:

面向对象,脚本扩展架构,具有文档支持。

支持内建几何形体编辑器。

支持物理碰撞检测。

支持顶点灯光、像素灯光、辐射灯光、三维灯光。

支持阴影映射。

支持多纹理、凹凸贴图、多重材质贴图、投影。

支持顶点、像素着色。

支持场景管理,具有多种数据结构。

支持骨架动画、帧动画及混合动画。

支持网格加载及皮肤。

支持环境映射、公告牌、粒子、天空、水、火、爆炸、雾、贴花、天气、镜像。

支持地形渲染。

支持“客户端/服务器”网络模式。

支持3D及流音效。

通过路径查找、决策及脚本方式支持人工智能。

引擎特性基本全面( ),稳定性基本不错( ),支持基本全面( ),容易上手和使用( )。

(8) The Nebula Device 2是采用C++开发,以MIT许可证发布,可以在Windows、Linux上使用。Nebula Device是一个完整的游戏引擎。

其主要特征如下:

面向对象,插件及脚本扩展架构,具有文档支持。

支持内建几何形体编辑器。

支持物理碰撞检测。

支持顶点灯光、像素灯光、灯光映射、光泽映射。

支持阴影映射。

支持多纹理、凹凸贴图、多重材质贴图、投影。

支持顶点、像素、高级着色。

支持场景管理,具有多种数据结构。

支持骨架动画、帧动画、变形动画及混合动画。

支持网格加载及皮肤。

支持环境映射、镜头眩光、公告牌、粒子、天空。

支持地形渲染。

支持“客户端/服务器”、P2P网络模式。

支持2D、3D及流音效。

通过脚本方式支持人工智能。

引擎特性全面( ),稳定性好( ),支持基本全面( ),不容易上手和使用( )。

(9) RealmForge是采用C#在OGRE上开发,以LGPL许可证发布,可以在Windows、Linux、Mac、Solaris、HP/UX、FreeBSD上使用。RealmForge是一个完整的游戏引擎,现在已经转入商业化运作。

其主要特征如下:

面向对象,插件及脚本扩展架构,具有文档支持。

支持内建游戏编辑器。

支持物理碰撞检测,可以用于运动物体。

支持顶点灯光、像素灯光、灯光映射。

支持阴影映射、投影面、立体投影。

支持多纹理、凹凸贴图、多重材质贴图、投影。

支持顶点、像素、高级着色。

支持场景管理,具有多种数据结构。

支持骨架动画、帧动画、面部动画及混合动画。

支持网格加载、皮肤及渐进网格。

支持环境映射、镜头眩光、公告牌、粒子、天空、水、火、爆炸、贴花、雾、天气、镜像。

支持地形渲染。

支持“客户端/服务器”、P2P网络、主控服务器模式。

支持3D及流音效。

通过路径查找、决策、优先状态机、脚本、神经网络等方式支持人工智能。

引擎特性全面( ),稳定性基本不错( ),支持基本全面( ),不容易上手和使用( )。

(10) OpenSceneGraph是采用C++开发,以LGPL许可证发布,可以在Windows、Linux、Mac、Solaris、SunOS、FreeBSD、Irix、Playstation上使用。OpenSceneGraph是一个完整的游戏引擎。

其主要特征如下:

面向对象,插件及脚本扩展架构,具有文档支持。

支持内建场景编辑器。

支持物理碰撞检测。

支持顶点灯光、各向异性灯光。

支持投影面、立体投影。

支持多纹理、多重材质贴图、投影。

支持顶点、像素、高级着色。

支持场景管理,具有多种数据结构。

支持骨架动画、帧动画及混合动画。

支持网格加载及皮肤。

支持环境映射、公告牌、粒子、镜像。

支持地形渲染。

支持“客户端/服务器”、P2P网络、主控服务器模式。

支持2D、3D及流音效。

引擎特性全面( ),稳定性好( ),支持还可以( ),上手和使用比较难( )。

一般说来,选择开源游戏引擎一定需要获取源码、好的文档及开放式支持。稳定性对于商业化运作是一个双刃剑,利于产品的开发运营,但需要有效引入新的游戏技术革新。引擎涵盖特性是一个积累过程,可以不断添加和改进。上手和使用性也反映了设计开发游戏引擎的团队的内在价值取向——以技术为主,还是以应用为主。

游戏开发商都希望研制、运营一个万众瞩目的游戏产品,但是,使用按照不同许可证发布的游戏引擎开发的游戏产品需要遵循相应的知识产权法规。因此,游戏引擎的软件许可证成为选择时的一个极其重要的考虑因素。

 

来源:https://blog.csdn.net/caoshangpa/article/details/73610662

从锦囊妙计想到的31–让您的图形上下动起来

前面30中, 我们做到了让程序动起来, 但是他仅仅是动了, 我们了解了动的原理, 今天我们让程序更进一步动起来, 先从上下移, 移动到最下面后, 在像是移动, 彼此往返

一。 创建一个项目, 输出一个三角形, 如下图

完整参考代码如下:

#include <stdio.h>
#include <stdlib.h>
// 演示程序中三角形上下移动

#include <windows.h>

// 定义一个输出三角形的函数, lineCount为三角形具有的行数
int shuSanJiaoXing(int lineCount)
{
for(int i = 0; i < lineCount; i++){
shuChuHang(i);
}

// 输出倒三角形的部分代码
for(int i = 1; i < lineCount; i++)
{
shuChuHang(lineCount - i - 1);
}
}

// 输出一行的星号
int shuChuHang(int xingCount)
{
for(int i = 0; i < xingCount; i++)
{
printf("*");
}
printf("\n");
}

int main()
{
printf("Hello world!\n");

shuSanJiaoXing(5);
return 0;
}

 

二。 让图形从上向下移动

如下图

111

参考代码如下:

#include <stdio.h>
#include <stdlib.h>
// 演示程序中三角形上下移动

#include <windows.h>

// 定义一个输出三角形的函数, lineCount为三角形具有的行数
int shuSanJiaoXing(int lineCount)
{
for(int i = 0; i < lineCount; i++){
shuChuHang(i);
}

// 输出倒三角形的部分代码
for(int i = 1; i < lineCount; i++)
{
shuChuHang(lineCount - i - 1);
}
}

// 输出一行的星号
int shuChuHang(int xingCount)
{
for(int i = 0; i < xingCount; i++)
{
printf("*");
}
printf("\n");
}

int movieLine(int line)
{
for(int i = 0; i < line; i++)
{
printf("\n");
}
}

int main()
{
printf("Hello world!\n");

for(int i = 5; i < 15; i++){
system("cls");
movieLine(i);
shuSanJiaoXing(5);
Sleep(1000);
}

return 0;
}

重点代码解释如下:

 

三。让图形上下移动

添加一些使图形向下移动的代码,最终效果如下:

shangxia

参考代码如下:

#include <stdio.h>
#include <stdlib.h>
// 演示程序中三角形上下移动

#include <windows.h>

// 定义一个输出三角形的函数, lineCount为三角形具有的行数
int shuSanJiaoXing(int lineCount)
{
 for(int i = 0; i < lineCount; i++){
 shuChuHang(i);
 }

 // 输出倒三角形的部分代码
 for(int i = 1; i < lineCount; i++)
 {
 shuChuHang(lineCount - i - 1);
 }
}

// 输出一行的星号
int shuChuHang(int xingCount)
{
 for(int i = 0; i < xingCount; i++)
 {
 printf("*");
 }
 printf("\n");
}

int movieLine(int line)
{
 for(int i = 0; i < line; i++)
 {
 printf("\n");
 }
}

int main()
{
 printf("Hello world!\n");

 // 向下移动
 for(int i = 1; i < 15; i++){
 system("cls");
 movieLine(i);
 shuSanJiaoXing(5);
 Sleep(1000);
 }

 Sleep(1000);

 // 向上移动
 for(int i = 15; i > 0; i--){
 system("cls");
 movieLine(i);
 shuSanJiaoXing(5);
 Sleep(1000);
 }

 return 0;
}

上面代码中已经添加了注释部分,一部分包括向上移动的代码, 另外一部分是向下移动的代码

 四。想象中的事物和逻辑代码

对于程序就是一些列代码, 他能执行, 但是能动吗, 他一直在计算机里面,没出来过。 那么动的是什么?

是人看到了三角形, 看到了三角形先向下动,  然后三角形 向上动。

非常显然 , 对于人来说, 看到的主体是 三角形,   三角形的运动是主体的行为。

那么代码中, 有体现三角形的东西吗?   有体现主体的行为的东西吗?若是没有那么代码空间, 同我们的思维空间中的东西, 就有点 怪怪的!

 五。代码改造, 参照想象中的对象, 改造代码,尽量符合一致

1. 首先我们定义一个主体  就是三角形, 其实就是绘制三角形, 这个似乎已经有了

2. 专门有个功能是 三角形移动

3. 对三角形移动做出细分, 分为向上移动, 以及向下移动

4. 在细分一下, 向下移动多少后, 停止移动

5. 停止移动多少后, 开始向上移动

 

 

相关文章

计算机介绍                                  从锦囊妙计想到的01

流程图(分支结构)介绍          从锦囊妙计想到的02

线程介绍                                     从锦囊妙计想到的03

循环结构介绍                             从锦囊妙计想到的05

流程线程总结                             从锦囊妙计想到的06

cpu和线程定义、开始               从锦囊妙计想到的07

分布式计算                                  从锦囊妙计想到的08

分布式中事件和计数                 从锦囊妙计想到的09

内容总结                                     从锦囊妙计想到的10

数据类型,变量简介                从锦囊妙计想到的11

函数和参数                                从锦囊妙计想到的12

用户交互与数据输入输出       从锦囊妙计想到的13

人机交互界面                            从锦囊妙计想到的15 

过程与对象                                从锦囊妙计想到的16

同步和异步                                从锦囊妙计想到的17

顺序打印                                    从锦囊妙计想到的18

数据输入输出                            从锦囊妙计想到的19

屏幕坐标和打印                        从锦囊妙计想到的20

java函数控制输出                     从锦囊妙计想到的21

逐步细化解决复杂问题           从锦囊妙计想到的22

java入门                                    从锦囊妙计想到的23

java复杂过程分析                   从锦囊妙计想到的25

中间辅助功能解决问题          从锦囊妙计想到的26

叠加操作输出复杂图形          从锦囊妙计想到的27

时间和空间                               从锦囊妙计想到的28

编写边测解决问题                  从锦囊妙计想到的29

让程序动起来                          从锦囊妙计想到的30

程序往复运动                           从锦囊妙计想到的31