常见的linux命令

我最近在学linux,涉及到修改安卓模拟器的goldfish内核,现在已经可以做到重新编译内核,并且动态添加自己的内核模块了。我把最近经常用到的linux命令总结了下,供大家参考。

1.sudo uname --m //查看当前的Linux版本,64位还是32位
2.:q     //用来退出文本编辑模式
3.vim编辑文本的时候,初始进去的是命令行模式,按“i”进入插入模式。
4.您目前处于「插入模式(Insert mode)」,您就只能一直输入文字,如果您发现输错了字!想用光标键往回移动,将该字删除,就要先按一下「ESC」键转到「命令行模式(command mode)」再删除文字
5. 退出vi及保存文件在「命令行模式(command mode)」下,按一下「:」冒号键进入「Last line mode」,例如:
: w filename (输入 「w filename」将文章以指定的文件名filename保存)
: wq (输入「wq」,存盘并退出vi)
: q! (输入q!, 不存盘强制退出vi)
:wq! (强制保存并退出)
6.sudo gedit /var/log/syslog   //查看系统日志
7./usr/local/eclipse/eclipse   //eclipse启动命令
8.sudo find -name avd      //查找avd
9. ls -al                //可看到该目录下所有文件
10.grep  //命令用于查找文件中包含有指定字符串的行
11.sdk 代理服务器:mirrors.neusoft.edu.cn 端口号:80
12.gedit //文本编辑器
13.gedit ~/.profile  //编辑用户个人的环境变量
14.source ~/.profile  //在当前bash环境下读取并执行~/.profile中的命令
15.ubuntu截屏快捷键   "printscreen"
16.cd //改变目录位置至用户登录时的工作目录
17.cd ~  //改变目录位置至用户登录时的工作目录
18.ll    //命令以长格形式列出当前目录下的所有文件
19.less  //命令分屏查看文件profile的内容,注意“q”键用于退出less命令
20.export //将自定义变量设定为系统幻镜变量(当前shell有效)
21.git clone https://android.googlesource.com/kernel/goldfish.git //以https方式克隆到本地,可以读写。
22.git branch -a  //查看全部的版本file/dir to devi
23.git checkout -b "branchname"  //创建并切换到该分区,相当于以下两个命令:
   git branch "branchname"     //创建分支
   git checkout "branchname"   //切换到分区
24.make  //编译命令
25.makefile  //定义了一系列的规则来制定文件的编译顺序,可以自动化编译。
26.cat  /xx/xx  //一次显示整个文件
27.cat file1 file2>file   //将几个文件合并位一个文件
28.cat > filename   //创建一个文件,在控制台编辑完文件之后,按"回车键"会自动保存文件,ctrl+z会退出当前的编辑模式。
29.export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_40
   export JAVA_HOME=~/java/jdk1.6.0_45
   export JRE_HOME=${JAVA_HOME}/jre
   export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
   export PATH=${JAVA_HOME}/bin:$PATH
30.系统设置--export 功能说明:设置或显示环境变量。
31.source //在当前bash环境下读取并执行FileName中的命令,该filename文件可以无"执行权限"
32.sh/bash   //打开一个子shell来读取并执行FileName中命令,该filename文件可以无"执行权限"
33../FileName  //打开一个子shell来读取并执行FileName中命令,该filename文件需要"执行权限"
34.make   //编译、链接、执行工程
35.vim /etc/profile  //配置环境变量
export ANDROID_HOME=/home/nijian/software/adt-bundle-linux-x86-20131030/sdk+= 等号后面的.o后缀文件则是由该目录下的对应名称的.c文件编译而来。
export PATH=$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools:$PATH
export JAVA_HOME=~/java/jdk1.6.0_45
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$JAVA_HOME/bin
36.cp file1 file2 //用于文件的复制
37.cp -R folder1 folder2  //用于文件夹的复制
38.mv //移动文件或者文件夹,会删除原来的文件复制到另一个位置
39.ln –s 源文件 目标文件  //ln是linux中又一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个同步的链接
40.make -f makefilename  //告诉make用哪个makefile,如果不使用这个选项,make将搜索当前目录下第一个名为makefile的文件
41.   .c只是简单的文本文件  .o是编译之后的二进制文make -件
42.touch filename  //创建一个不存在的文件
43.gcc test.c -o test //用来编译.C源文件,-O用来生成目标文件
44.gcc -E test.c  //gcc的-E选项,可以让编译器在预处理后停止,并输出预处理结果
45.gcc -S test.i -o test.s  //gcc的-S选项,表示在程序编译期间,在生成汇编代码后,停止,-o输出汇编代码文件
46.gcc -c test.s -o test.o  //只编译不链接,产生.o文件,就是obj文件,不产生执行文件
47.  ./test  //在命令行窗口中,执行./test, 让它说HelloWorld吧,执行当前的可执行文件
48.gcc test1.c test2.c -o test  //同时编译两个.c源文件,生成可执行文件
49.  .a  //UNIX下,是Archive File,也就是 .a 文件,代表.o文件的集合
50.makefile规则  target ... : prerequisites ...
                     command  //target也就是一个目标文件,可以是Object File,也可以是执行文件。还可以是一个标签(Label)。prerequisites就是,要生成那个target所需要的文件或是目标。command也就是make需要执行的命令。(任意的Shell命令)这是一个文件的依赖关系,也就是说,target这一个或多个的目标文件依赖于prerequisites中的文件,其生成规则定义在command中。说白一点就是说,prerequisites中如果有一个以上的文件比target文件要新的话,command所定义的命令就会被执行。这就是Makefile的规则。也就是Makefile中最核心的内容
51.make clean  //如果要删除执行文件和所有的中间目标文件,那么,只要简单地执行一下“make clean”就可以了
52.$(xxxx)  //代表取出xxx代表的值,有点想jquery的dom操作。
53.obj-y += XXX.o //中的y表示编译进内核,+=标识具体的内核模块或者具体的变量值,+= 等号后面的.o后缀文件则是由该目录下的对应名称的.c文件编译而来
54.obj-$(CONFIG_BUTTONS_LEDS)  //中CONFIG_BUTTONS_LEDS则表示一个变量
55.obj-y   obj-n   obj-m   //y表示编译进内核,而m则表示以模块的方式进行编译,n表示不编译进内核
56.lsmod  //是一个小程序,用来显示文件、proc/modules的信息,也就是显示当前内核模块装载的模块
57.insmod  //动态载入模块
58.   .ko   //代表内核模块
59.rmmod  //移除内核模块
60.x:=foo  //用变量来定义变量
61.$(var:a=b)  //变量“var”中所有以“a”字串“结尾”的“a”替换成“b”字串
62.objects = main.o foo.o bar.o utils.o
   objects += another.o  //代表变量值的追加,$(objects)值变成:“main.o foo.o bar.o utils.o another.o”(another.o被追加进去了)
63.obj-m  //则表示该文件作为模块编译.
64../emulator -avd nijian81 -kernel ~/android-kernel/goldfish/arch/arm/boot/zImage
65.lsmod   //列出来系统的内核信息
66.adb push /mymodule/XXX.ko  /data/XXX.ko  //将内核模块从本地位置复制到目的位置
67.make -C xxx  //切换到指定目录再执行 make 过程,makefile 在这个指定目录里面
68.modinof hello.ko  //查看模块的信息
69..so  //为共享库,是shared object,用于动态连接的,和dll差不多
70.uname -a  //查看当前shell下运行的linux内核版本是多少
71. make goldfish_defconfig
    make goldfish_armv7_defconfig
    make menuconfig
    make -j8  //编译goldfish源码需要的指令
72./proc/kmsg  //这个文件用于检索用printk生成的内核消息
73.dmesg   //dmesg用来显示开机信息
74.printk()  //打印内核消息

75.rmmod hello.ko  //动态卸载模块
76.asmlinkage  //函数定义前加宏asmlinkage ,表示这些函数通过堆栈而不是通过寄存器传递参数
77.void *   //为“无类型指针”,void *可以指向任何类型的数据
78.gcc -pedantic hello.c -o hello  //用于输出gcc编译过程中的警告信息
79.gcc -Wall  hello.c -o hello    //尽可能多的输出gcc编译过程中的警告信息
80.gcc -Wall -Werror  hello.c -o hello    //输出警告消息,gcc在产生警告的地方停止编译
81.clean:  
       rm -rf *.o .cmd *.ko *.mod.c .tmp_versions *.order *.symvers //Makefile文件中的clean,用于执行make clean时删除对应格式的文件
82.rm   //删除文件命令
83.$(shell pwd)  //表示当前Makefile所在的路径
84.Makefile中“M=”选项的作用是,当用户需要以某个内核为基础编译一个外部模块的话,需要在make modules 命令中加入“M=dir”,程序会自动到你所指定的dir目录中查找模块源码,将其编译,生成KO文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值