linux基本操作: 命令格式: ls cd mkdir rm echo mv cat touch cp 命令名 [选项参数] [操作对象] 目录相关命令 ls 列出当前目录下的内容 一个终端打开之后,直接就会处于一个目录下 目录:文件夹 -a 浏览所有文件,包含隐藏文件 linux下以.开头的文件是隐藏文件 . 目录自身 .. 目录自身的上一层路径 -l 浏览文件的详细信息 -t 对浏览的文件进行按时间排序 -S 按时间排序 -r 逆序 pwd 显示当前所在路径(绝对路径) 绝对路径:以根目录为起始的路径(linux的目录结构就是以根目录起始的) 相对路径:以当前目录作为起始的路径 mkdir 创建文件夹 -p 递归多层级创建 rmdir 删除空目录 -p 递归多层级删除空目录 rm 删除普通文件 -r 删除目录(递归删除目录及内部文件) -f 忽略提示信息,直接进行操作 cp 拷贝文件到指定位置 -r 拷贝目录(递归拷贝目录及内部文件) -f 忽略提示信息,直接进行操作 mv 将文件/目录移动到指定位置 -i 增加提示信息 cd 进入指定目录(改变当前所在路径为另一位置) ~ 快速返回当前用户的家目录 - 返回上一次所在路径 文件相关命令 linux一切皆文件 文件类型:linux并不以文件后缀名区分文件类型 - 普通文件 d 目录文件 l 符号链接文件 p 管道文件 c 字符设备文件 b 块设备文件 s 套接字文件 touch 若文件不存在则创建新文件,否则刷新时间属性 -d 使用指定时间刷新文件的时间属性 -r 使用指定文件的时间属性刷新另一个文件时间属性 cat 打印文件内容到终端显示 -n 显示内容行号 tac 按行逆序打印文件内容 more 分页显示文件内容 空格 向下翻页 b 向上翻页 回车 向下按行滚动 q 退出 less 分页显示文件内容 向下翻页 空格 f PgDn 向上翻页 b PgUp 向上滚动 ↑ k 向下滚动 ↓ j 字符串匹配功能: /string 向下匹配string字符串 ?string 向上匹配string字符串 n 找下一个匹配位置 q 退出 head 默认显示文件前10行内容 -n 用于指定显示文件前n行内容 tail 默认显示文件末尾10行内容 -n 用于指定显示文件末尾n行内容 -f 一直刷新文件末尾的新数据 日志 压缩/解压缩命令: zip/unzip zip格式的压缩/解压缩 gzip/gunzip gzip格式的压缩/解压缩 bzip2/bunzip2 bzip2格式的压缩/解压缩 tar 打包工具 -c 打包 -x 解包 -z 打包/解包同时进行gzip格式压缩/解压缩 -j 打包/解包同时进行bzip2格式压缩/解压缩 -v 显示详细些的打包/解包信息 -f 指定压缩包名称 tar -czvf abc.tar.gz abc.txt tar -xzvf abc.tar.gz 时间日期命令: cal 查看日历 -3 显示相邻三个月日历 -y 显示全年日历 -j 显示日期的时候以day of year的形式显示 date 查看系统当前日期时间 + 用于指定显示时间的格式 +"%Y-%m-%d %H:%M:%S" +"%s" -s 设置系统时间 匹配查找命令: grep 文件内容的字符串匹配 -i 忽略大小写进行匹配 -v 反向匹配(匹配不包含指定字符串的行) -R 递归对目录下所有文件进行字符串匹配 find 文件的查找 -name 按文件名查找 -type 按文件类型查找 f d l s c b p -size 按照文件大小查找 +/-n[cbwkMG] -mtime -ctime -atime +/-n 按天查找 -mmin -cmin -amin +/-n 按分钟查找 -exec 连接其它命令,对找到的文件进行处理 find ./ -size +5k -exec rm '{}' \; tab 自动补全 ctrl+c 中断当前操作 reboot 重启 shutdown -h now 立即关机 halt 立即关机 其它命令: man 查看手册命令 stat 查看文件的详细状态信息 链接数 | 管道符 连接两个命令,将前边命令的输出结果作为后边命令的输入 >> 重定向 改变数据流向,将数据追加到文件末尾 > 重定向 改变数据流向,先清空文件原有数据,然后写入新数据 调研根目录下的目录各自都有什么含义!!! shell: 命令行解释器(程序) linux中有各种解释器:bash dash cash 权限: 用户分类:管理员用户(root); 普通用户 文件的权限: 文件对用户的分类 文件所有者 文件所属组 其它用户 u g o 文件对操作的分类 可读 可写 可执行 r w x rwx rwx r-x 位图 111 111 101 7 7 5 564 所有者权限:可读可执行 所有者是可读可写,所属组是可读,其它用户没人任何 640 权限的相关命令: umask 查看/设置权限掩码 作用:影响创建一个文件实际的默认权限 实际权限 = 给定权限 & (~umask) 777 002 653 022 110 101 011 111 101 101 chmod 修改文件的权限 o-w 针对某一类用户的权限进行增删 a+x -x 0777 直接使用8进制数字权限设置 chown 修改文件所有者 chown username filename chgrp 修改文件所属组 chgrp groupname filename 沾滞位: 若一个目录设置沾滞位,那么目录将具有特点: 其它用户都可以在目录中创建文件 其它用户可以删除自己的文件 但是其它用户不能删除别人的文件 useradd -m username passwd username userdel -r username 常用工具
yum:软件包管理工具 软件安装方法: 1. 手动源码安装 2. 使用工具安装 工具自身可以解决软件包安装的依赖关系 yum常用操作: 查看 查看能够安装什么 yum list | grep package_name 查看已经安装了什么 yum list installed | grep package_name 安装 yum install package_name 移除 yum remove package_name vim:编辑器 12种操作模式,但是常用的有三种 普通模式 插入模式 底行模式 模式切换 普通《=》插入:i a o I A O ESC 普通《=》底行:: ESC 底行: q w wq q! set nu !pwd /string ?string 普通模式: 光标移动 hjkl ctrl+f/b w/b gg G 复制 yy nyy 粘贴 p P 删除 x dw D dd ndd 撤销 u ctrl+r 其它 gg=G /etc/vimrc ~/.vimrc gcc/g++:编译器 功能:将c/c++高级语言代码翻译成机器可识别代码 编译过程: 预处理:展开所有代码 编译:语法语义纠错,翻译成为汇编代码 汇编:将汇编代码翻译成二进制机器可识别指令 链接:链接库,将所有代码合到一起生成可执行程序 库文件:已经汇编完成的公共代码 链接:将库中的代码拿到要生成的可执行程序中 静态链接:链接静态库,将库中的代码直接全部拷贝到可 可执行程序中,好处是程序运行时,不需要依 赖库文件的存在;缺点是占用资源较多 动态链接:链接动态库,只是记录库中的接口符号位置信 息,好处是资源占用冗余较小,缺点是程序运 行时需要动态库的存在 共享库/运行时库 gcc默认链接方式:动态链接 gdb:调试器 功能:调试一个程序的运行过程 linux下程序编译默认生成release版本程序,不带有调式 符号信息,意味着程序无法被调试 所以程序调试的前提就是编译生成debug版本程序,因此 gcc编译程序时需要加上-g选项,开启调试,向程序中添 加调试符号信息 1. gcc -g main.c -o main gdb调试程序,需要将程序信息,加载到gdb中 2. gdb ./main gdb 进入gdb后 运行 file ./main命令 开始调试: 运行程序加载运行参数 r param1 param2 ... start 开始逐步调试 n 下一步;并不跟踪进入函数 s 下一步;跟踪进入函数 p var 查看变量数据 l line 查看指定行(默认当前调试行)附近代码 until line 直接运行到指定行 b line 向当前调式文件指定行添加断点 b file:line 向指定文件指定行添加断点 b func 向函数添加断点 watch var 变量监控,给变量添加断点,当变量 内容发生改变,停止 i b 查看所有断点信息 d id 删除指定断点,默认删除所有 c 继续运行 bt 查看函数调用栈信息 make/Makefile:项目自动化构建工具 Makefile:定义编译规则的普通文件 make:是一个解释程序,解释执行Makefile中定义的 编译规则 执行make命令,这时候make程序会到当前目录下寻找 Makefile文件,解释其中的编译规则 如何编写Makefile;编写规则: 通过目标对象与依赖对象最后一次修改时间,判断目 标对象是否需要重新生成 make在Makefile中只找第一个目标对象,为了生成这个目 标对象,而执行命令,完毕之后直接退出(后边的对象都 不会在生成了) make在Makefile中找到第一个对象,这时候如果这个对象 的依赖对象不存在,则在后续编译规则中,寻找是否可以 生成这个依赖对象,当所有依赖对象生成完毕后,最终生 成目标对象 预定义变量 $@ 要生成的目标对象 $^ 所有的依赖对象 $< 依赖对象中的第一个 .PHONY关键字用于声明伪对象 伪对象:不管对象是否是最新,每次都要重新生成 git:项目版本管理工具 svn:集成式版本管理 git:分布式版本管理 三板斧: 克隆代码到本地 git clone git地址 添加本地文件 git add 新文件 提交代码到本地仓库 git commit -m "本次提交备注信息" 提交本地代码到服务器分支 git push origin master master 是git项目版本主分支