(创建于2017/8/13)
system命令(命令行)
1.calc 打开计算器
2.control 打开控制面板
3.system("start calc");//执行打开计算器的动作(这些命令都可以这样调用)
4.%x 代表用十六进制打印整数
5.gcc -o b a.c -o用于指定文件名,执行后生成的文件名为b
6.POSIC 编译规范,windows和linus同样代码编译结果可能不同,导致程序移植问题,所以
用linux系统,代码移植性良好
7.c语言编译过程
预编译 .c文件
编译
链接 可执行程序
gcc -E -o a.e a.c -E预编译a.c文件生成名字为a.e的文件 E表示预编译
预编译的功能
1把头文件内容原封不动包含进来,同时将代码中没用的部分删除
8.使用头文件
\#include<XX>表示让编译器去系统目录下找头文件,调用系统头文件
\#include“XX”表示让编译器去当前目录下找头文件,调用自己写的头文件
9.gcc -S -o a.e a.c -S表示汇编 将c语言转化为汇编语言
c语言代码
int a;
int b;
int c;
a=1;
b=2;
c=a+b;
转换为汇编语言就是
__asm
{
mov a,1; //把1放入a
mov b,2; //把2放入b
mov eax,a; //把a值放入cpu寄存器中
mov eax,b;//把b值放入cpu寄存器中和a值相加后继续放入寄存器中
mov c,eax; //把寄存器中值放入c
}
10. gcc -c -o a.e a.c -c表示编译,将代码编译为二进制的机器指令
11. gcc没有任何参数,代表就是链接,将库和目标文件打包
12.RISC :精简指令集
CISC :复杂指令集
x86架构的cpu都是复杂指令的 Linux就是基于x86的操作系统
20%的指令为常用指令,在一个程序执行的时候会调用比例达到80%
但80%指令为不常用指令,在一个程序执行的时候调用比例为20%
文件管理
1)查看文件信息 ls
ls -a :a就是all的简写,这样会打印出所有文件包括隐藏文件.xx
ls -h :h是human的简写,意思就是以人类可读的方式打印,通常只文件大小的显示格式,比如加上-h会以KB的形式显示而不是可读性差的字节显示
ls -l :l是list的简写,指以列表的形式显示文件信息
ls和通配符结合使用可以指定查找条件
ls ?.c :显示当前文件夹下所有以.c为结尾,前边只有一个字符的文件,?表示一个字符
ls [1-9].c :表示查找.c结尾,前边只有一个数字并且这个数字是1到9之间任意数字的文件
2)输出重定向>,一般和其他文件操作命令结合使用
ls > a.txt:表示将当前目录文件信息输出到a.txt文件中,如果文件存在,覆盖原有文件中的内容,如果文件不存在,则创建文件
ls >> a.txt: 和单个>的区别在于,这个操作不会覆盖原有文件内容,而是追加在后边
3)more 分屏显示
查看文件内容时,在信息过长无法在一屏上显示时,会出现快速滚屏
,导致无法看清文件,使用more命令,每次只显示一页,按下空格键
可以显示下一页,按q键退出显示,按h键可以获取帮助
如查看index.html文件
more index.html
- 管道 |:一个命令的输出通过管道作为另一个命令的输入,通俗来说,可以理解为管子,在管子的一头放入东西,在另一头取出来使用
ls | grep std :命令表示将当前目录的文件信息放入管道,另一端对这些
信息进行筛选,得到列出来以std开头的文件,std不是命令,只是筛选
关键字
5)清屏:clear
clear作用为清楚终端上的显示,类似dos的cls清屏功能,也可以使用快捷键:Ctrl+l(l是字母L不是1)
6)切换目录cd
cd /home :进入根目录home,前边加/表示根目录,绝对路径
cd home:进入当前目录中的home文件夹,相对路径
cd 直接输入cd什么都不加,会切换到当前用户主目录,用户登陆的时候默认的目录就是用户主目录
cd ~ 也是切换到用户的主目录
cd . 切换到当前目录
cd .. 切换到上级目录
cd - 进入上一个进入的目录
7)当前目录pwd
输入pwd会打印出当前路径
8)创建目录 mkdir
mkdir ren 在当前目录创建文件夹ren
mkdir ren/ren 注意这样写必须是当前目录下已经有了一个ren,然后才可以在这个ren里边创建一个ren,如果当前目录没有ren会创建失败,这时候可以使用-p递归创建目录
mkdir -p ren/ren
9)删除目录rmdir,只能删文件夹
rmdir ren 注意如果ren不是个空目录则会删除失败
10)rm删除,可以删文件或者文件夹
rm -i ren.txt 以进行交互的方式执行删除命令,会有提示
rm -f ren.txt 强制删除,忽略不存在的文件,无需提示
rm -r ren 递归的删除目录下的内容,删除文件夹必须加-r标志
rm * -rf 这是一个非常危险的命令,会删除所有的东西并且没有提示,注意小心使用
11)建立链接文件:ln
Linux链接文件相当于Windows下的快捷方式
软链接:
1.类似Windows的快捷方式,软链接依赖于源文件存在
2.如果源文件删除,软链接没有意义
硬链接:
1.给某个文件拷贝一份,这两个文件独立占用内存,
2.改变其中一个文件,会影响到另一个文件
3.删除某一个硬链接文件,不会影响另一个
ln 源文件 链接文件(硬链接)
ln ren.txt a.txt
ln -s 源文件 链接文件(软链接)
ln -s ren.txt a.txt
12)cat 文件名 查看一个文件内容
cat ren.txt 会显示ren.txt中的内容
13)grep 文本搜索(在一个文本中搜索关键字),查找过滤
grep a ren.txt 从ren.txt文件中查找含有a的东西,比如单词句子等,列出来,这样是大小写敏感的
grep a ren.txt -i 大小写不敏感,会将大小写都查出来
grep '1 2 3' ren.txt -ni 把1 2 3当作一个整体查找,显示行号,大小写敏感,如果不加引号,不会把它当作整体
14)find 查找文件,在一个目录中查找文件的名字
find ./ -name ren.txt :./表示当前目录 -name表示查找文件名
find ./ -name '*.txt' :查找当前目录下所有后缀为.txt的文件
(目前在mac上尝试的结果是搜索的关键词加上‘’或者“”和不加引号的效果是差别非常大的
不加引号,会搜索当前同一目录下符合条件的文件,但是如果加上单引号或者双引号,会
搜索党当前目录下和当前目录下的子目录下的所有符合条件的文件,会遍历所有的文件)
find ./ -name "[A-Z]*" :查找当前目录下所有大写字母开头的文件
find /tmp -size 2M :查找tmp目录下等于2M的文件
find /tmp -size +2M :查找tmp目录下大于2M的文件
find /tmp -size -2M :查找tmp目录下小于2M的文件
find /tmp -size +4k -size -5M :查找tmp目录下大于4k小于5M的文件(k是小写,M是大写)
find ./ -perm 0777 :查找当前目录下权限为777 的文件或目录(0777中0表示八进制)
15)拷贝文件cp
cp命令功能是将给出的文件或目录复制到另一个文件或目录中,相当于DOS下的copy命令
(在mac中测试发现 -a -r 等要放在cp后边 文件前边)
cp -a ren/ ren2/ :将目录ren拷贝到ren2中,复制目录时使用-a选项,可以保留链接,文件属性,并递归的复制目录,简而言之,保持文件原有属性
cp -f ren.txt ren2.txt :删除已经存在的目标文件而不提示,当目标文件ren2.txt存在时,直接覆盖,不提示用户
cp ren.txt ren2.txt : 覆盖文件时提示用户确认
cp -r ren ren2 :若给出的原文加是目录文件,则cp将递归复制该目录下的所有子目录和文件,目标文件必须为一个目录名
cp -v ren.mp4 ren2.mp4 :显示拷贝进度
命令组合使用
cp -ivr ren ren2 : 拷贝目录ren到ren2中(包括ren这个目录,会在ren2目录下重新创建一个ren文件夹),提示用户是否覆盖显示拷贝进度,递归的复制
16)移动文件mv
移动文件同样具有三个常用选项
-f 覆盖不提示
-v 显示进度
-i 覆盖要提示
mv ren.txt ren :移动文件ren.txt到目录ren下
mv ren.txt ming.txt :移动ren.txt到当前目录下并重命名为ming.txt
- file查看文件类型
Linux系统文件类型不是根据文件扩展名分类的,通过file可以查看文件类型
格式:file 文件名
会告诉你这个文件是可执行文件还是普通文本文件
17)归档管理:tar(常用选项可以不加- 如 tar cvf xxx)
tar命令可以把一系列文件归档到一个大文件中,也可以把档案文件解开恢复数据,相当于备份和恢复,注意归档没有压缩的操作,也不存在解压缩
打包:tar -cvf xxx.tar yyy(需要打包的文件,可以是多个 空格隔开,-c表示打包,-v表示显示进度,-f表示后边的是文件)
解包:tar -xvf xxx.tar(要被解包的文件) 不指定路径,默认解包到当前路径
解包并指定解包路径:tar -xvf xxx.tar -C ../dir 指定路径必须在前边加-C(大写)
18)压缩:gzip
gzip aaa.tar :压缩aaa.tar 在当前路径得到aaa.tar.gz (这个后缀是不是很熟悉)
19)查看目录大小:du
du -h ./jni 查看jni目录大小,以可读方式显示
20)解压:gzip -d
gzip -d xxx.tar.gz :解压缩在当前目录得到xxx.tar
21)压缩打包
tar -czvf xxx.tar.gz xxx(所需文件)(f一定是放在最后边,加了个z就可以压缩了)
22)解压解包
tar -xzvf xxx.tar.gz 到当前目录
23)文件压缩打包bzip2(和gzip一样都是压缩)
tar 与 bzip2命令结合使用实现文件打包压缩(用法和gzip一样)
tar只负责打包文件,不压缩,用bzip2压缩tar打包后的文件,其扩展名一般用xxx.tar.bz2
用tar命令增加一个选项(-j)可以调用bzip2实现一个压缩功能,实现一个先打包后压缩的功能
压缩:tar -jcvf 压缩包包名 文件 (tar -jcvf bk.tar.bz2 *.c)
解压:tar -jcvf 压缩包包名 (tar jxvf bk.tar.bz2)
24)文件压缩解压:zip unzip
通过zip压缩文件的目标文件不需要指定扩展名,默认扩展名zip
压缩文件:zip -r (必须加此参数) 目标文件(没有扩展名) 源文件
解压文件: unzip -d 解压后目录文件 压缩文件
25)which 查看命令位置
which ls : 输出命令ls的命令位置 /bin/ls
用户管理
01)查看当前系统账户用户名 whoami
02)查看登录过的用户who / w 显示登录过的用户的时间等信息
03)退出登录 exit
如果是图形界面,退出当前终端
如果是使用ssh远程登录,退出登录账户
如果是切换后的登录用户,退出则返回上一个登录账号
04)切换用户su
可以通过su命令切换用户,su后面可以加“-”,su和su - 命令不同之处
在于,su - 切换到对应的用户时会将当前的工作目录自动转换到切
换后的用户主目录
su : 切换到root用户
su root : 切换到root用户
su - :切换到root用户,同时切换到目录/root
su 普通用户 切换到普通用户
su -普通用户 切换到普通用户,同时切换到 普通用户所在目录
05)添加删除组账号:groupadd groupdel
groupadd 新建组账号
groupdel 删除组账号
cat /etc/group 查看用户组
06)修改用户所在组
使用方法:usermod -g 用户组 用户名
sudo usermod -g admin ren :sudo以管理员权限执行
07)添加用户useradd或者adduser
adduser命令是指向useradd命令的一个链接,因此使用完全一样
useradd [参数] 新建用户账号
-d <指定的用户主目录> 如果不使用这个参数系统自动在/home目录下建立与用户名相同的目录为主目录
-m 自动建立目录
-g 指定组名称
useradd -d /home/user adc -m :添加用户adc 并且设置abc的主目录为/home/user,-m表示的意思就是如果user不存在,自动创建
08)删除用户userdel
sudo userdel hello
userdel adc 删除abc但不会删除用户的主目录
userdel -r abc 删除用户的同时删除用户主目录
09)last查看用户最后登录时间
10)修改文件权限:chmod
有两种使用格式:字母法与数字法
字母法:chmod u/g/o/a +/-/= rwx 文件
u:user表示该文件的所有者
g:group 表示与该文件的所有者同属于一组者,即用户组
o:表示其他以外的任
a: all表示这三者都是
+:增加权限
-:撤销权限
=:设定权限
chmod u+x 1.c :表示给u(user)增加执行的权限
chmod g-x 1.c:表示撤销组内成员执行的权限
chmod o=rwx 1.c : 给其他设置可读可写可行执行的权限
数字法:
---
000 0 表示没有任何权限
r--
100 4 表示有读的权限
-w-
010 2 表示有写的权限
--x
001 1 表示有执行权限
rw-
110 6 表示有读写权限
rwx
111 7 表示有读写执行权限
文件夹权限说明:
x:文件夹如果没有此权限,不允许用户进入
r: 文件夹如果没有此权限,无法查看文件夹内容,无法ls
w:没有这个权限,无法新建或删除文件
11)修改文件所有者:chown
使用方法:chown 用户名 文件或目录名
chown edu 1.txt 修改1.txt文件的所有者为edu ,如果不被允许,可以加上sudo 执行
11)修改文件所属组:chgrp
sudo chgrp root 1.c :修改1.c所属组为root
系统管理
01)查看当前日历:cal
cal 命令用于查看当前日历,-y显示整年日历
02)显示或设置时间:date
- 查看进程信息:ps
-a 显示终端上所有进程
-u 显示进程的详细状态
-x 显示没有控制终端的进程
-w 显示加宽,以便显示更多的信息
-r 只显示正在运行的进程
ps -aux | grep gedit : 显示gedit进程信息
04)动态显示进程: top
05)终止进程:kill
kill -9 4173 :强制关闭id为4173的进程
06)后台程序 & jobs fg
用户可以将一个前台程序调入后台执行,方法为:命令 &,比如hello 是一个可执行程序,我将它调用后台 hello &
如果程序已经在执行,ctrl+z可以将它调入后台
jobs查看后台运行程序
fg编号(编号为通过jobs查看的编号)将后台程序调出到前台
07)关机重启:reboot shutdown init
reboot :重启操作系统
shutdown -r now 重启操作系统,shutdown会给别的用户提示
shutdown -h now 立刻关机,其中now相当于时间为0的状态
shutdown -h 20:23 系统将在20:25关机
shutdown -h +10 系统十分钟后关机
init 0 关机
init 6 重启
08)检测磁盘空间:df
-a 显示所有文件系统的磁盘使用情况
-m 以1024字节为单位显示
-h 以K M G为单位,提高信息可读性
09)检测目录所占磁盘空间:du
du [选项] 目录或文件名
-a 递归显示指定目录中个文件和子目录中文件占用的数据块
-s 显示指定文件或目录占用的数据块
-b 以字节为单位显示占用情况
-h 以K M G为单位,提高信息可读性
10)查看或配置网卡信息:ifconfig(和Windows中ipconfig类似)
11)测试远程主机连通性:ping ip地址
编辑器vi
vi是Linux中最常用的编辑器,vim是vi的升级版,公认的vi中最好的一个
01)打开文件 vi filename
打开或新建文件,并将光标置于第一行行首,如果文件不存在会创建
02)保存文件:shift + zz(其实就是按两次大写Z)(编辑模式下按esc退出到命令模式,然后按这个)
新建一个文件如果什么都不写,是无法保存的
03)编辑文件,命令模式下,按i进入编辑模式
04)强制退出不保存:
:q!
05)退出保存
:wq
06)vi的一些常用快捷键
F9:显示侧栏
\p< :头文件
\im :生成一个main函数
\ip :生成一个printf
ctrl+n:显示历史写的代码
07)vi的set指令
:set ic 搜索时忽略大小写
:set noic 搜索时不忽略大小写
:set nu 显示行号
:set nonu 不显示行号
远程操作
。。。。
t