目录
一.Linux文件和目录相关命令
/bin :bin是二进制(binary)英文缩写。
/boot :存放的都是系统启动时要用到的程序。
/dev :包含了所有Linux系统中使用的外部设备。
/etc :存放了系统管理时要用到的各种配置文件和子目录。
/lib :存放系统动态连接共享库的。
/home :普通用户的主目录。
/root :根用户(超级用户)的主目录。
1.浏览目录
- 当打开命令终端窗口,用户就处在自己的用户主目录的位置。
- 学习文件系统命令,就从自我定位开始。
pwd命令
pwd命令用于显示用户在文件系统中的当前位置,该命令没有任何选项和参数,命令执行结果显示为绝对路径名。
linux@ubuntu:~$pwd
/home/linux
2.ls列目录内容
Usage:
- ls[options][files_or_dirs]
ls[选项][参数](对于选项和参数如果是方括号可以省略不写)
Example:
ls -a (以点开头的是隐含文件,linux中隐含文件是以点(.)开头)
ls -l (显示权限位,就是详细信息)
ls -R (如目录含有目录他会递归显示)
df -T 显示文件系统信息
3.cd 改变目录
绝对路径或相对路径
- cd /home/joshua/work
- cd project/docs
回到家目录 cd 回到目录当中
回到上一级目录 cd ..
回到上一次的工作 cd -
4.查看文件内容
Cat -s 多个空行合并成一个空行显示(如代码中有很多空行 cat -s hello.c 空行就没有了)
-b 加行号显示
nl 加行号
head
- -n 文件名(前n行,默认10)(head -2 test.c)
tail
- -n 文件名(后n行,默认10)(倒数)
5. cp 复制
Usage:
- cp [options] file destination
常用选项
- -i 覆盖时交互提示 如 cp test.c ../ -i
- -r 对文件夹递归(复制文件夹) 如 cp -r testsubdir/ bakdir
- 复制多个文件到文件夹 如 cp test2.c test3.c ../
- cp [options] file1 file2 dest( cp test2.c test3.c ../)
6. mv 移动
Usage:
- mv [options] file destination
移动多个文件:
- mv [options] file1 file2 destination
更改文件名
7.创建和删除文件
touch - 创建或更新时间戳
rm - 删除文件
Usage:
- rm [options] <file>...
Example:
- rm -i file (删除普通文件)-i是有一个交互提示确定要删除吗 如 rm test3.c -i
- rm -r directory (删文件夹)
创建文件夹:mkdir -p(级联创建或递归创建目录) (mkdir d1 mkdir d1/d11 或 mkdir -p d1/d11)
二. vi编辑器的使用
- vi是Linux中最基本的编辑器。
1.vi模式切换命令
命令 | 功能 |
A a | (Append)进入编辑状态,从当前光标之后的位置开始插入键盘输入的字符(光标之后插入) |
I i | (Insert)进入编辑状态,从当前光标之后的位置开始插入键盘输入的字符(光标原位置插入) |
O o | (Open)进入编辑状态,并插入一新行,光标移到该新行的行首,以后键盘输入的字符将插入到光标位置(光标所在下面加一空行) |
ESC | 进入命令状态 |
:!Command | 在vi中执行外部命令Command,按回车健可以返回vi继续工作 |
I:到行首转插入
A:到行尾转插入
O:在上面加空行
:!pwd 看在那个目录编程的
:!dare 看时间
2. vi 光标命令
命令 | 功能 |
h | 方向键,向左移动光标一个字符的位置,相当于左移健 |
j | 方向键,向下移动光标一个字符的位置,相当于下移健 |
k | 方向键,向上移动光标一个字符的位置,相当于上移健 |
l | 方向键,向右移动光标一个字符的位置,相当于右移健 |
:N | 移动光标到第N行(N待定) |
1G | 移动光标到文件的第1行 |
G | 移动光标到文件的最后1行 |
:set number (或者set nu) | 设置显示行号 |
:set nonumber (或者set nonu) | 取消显示行号 |
3.vi的查找命令
/string 查找字符串
- n 继续查找
- N 反向继续查找
- 支持正则表达式比如:/^the (以这个单词为开头的) /end$(以这个单词为结尾的)
4. vi 替换命令
利用:s 命令可以实现字符串的替换。(s表示替换)
(底行的命令:范围s(s表示替换)/old/new)(:直接s,没有范围表示当前行)
(在Linux命令中 .(点)指的就是当前行 $指最后一行 所以.,$就是当前行到最后一行替换)
- :s/str1/str2
- :s/str1/str2/g (g代表多个替换 全部替换 不加默认换第一个)
- :.,$ s/str1/str2/g
- :1,$ s/str1/str2/g(从第一行到最后一行替换也就是全文替换)
(:10,15 s/str1/str2/g第十行到第十五行全文替换)
- :%s/str1/str2/g (全文替换)
5.vi复制和剪切命令
- y0-将光标至行首的字符拷入剪切板(部分行)
- y$-将光标至行尾的字符拷入剪切板(部分行)
- d0-将光标至行首的字符剪切入剪贴板
- d$-将光标至行尾的字符剪切入剪贴板
- range y-块复制
- range d-块剪切
三.gcc编译器
gcc(GNU Compiler)是GNU推出的多平台编译器,可将C、C++源程序编译连接成可执行文件,支持以下后缀:
- .c c语言源代码
- .h 程序所包含的头文件
- .i 已经预处理过的C源代码文件
- .s 汇编语言源代码文件
- .o 编译后的目标文件
gcc -o hello hello.c(hello.c是待处理的文件)(-o跟着执行文件hello)
-o 输出可执行文件
-c 只要求编译器输出目标代码(.o文件),而不必输出可执行文件
-g 用于调试
./hello 查看输出结果
实战 例子
- 用vi写一个1+2+3+......+10的程序
- 用gcc编辑这个程序
四、程序调试
利用__FILE__,__LINE__,__FUNCTION__实现代码跟踪调试
#include <stdio.h>
int main(int argc,chat **argv)
{
printf("%s,%s,%d\n",__FILE__,__FUNCTION__,__LINE__);
(注释:__FILE__打印的这句话中会显示的文件名是哪个程序 __FUNCTION__会现实函数名 __LINE__是当前的行号)
return 0;
}
m是一一对应关系 m对应正数 FILE对应文件
提示:这个文件是 test2.c main 第九行有一个 m=55 的提示
五.C语言基础
一个程序应当包含两部分内容:
- 对数据的描述。在程序中要指定数据的类型和数据的组织形式,即数据结构。
- 对操作的描述。即操作步骤,也就是算法。
简单算法举例
计算1x2x3x4x5x...x10
其他方法:设两个变量,一个代表被乘数,一个代表乘数。设p为被乘数,i为乘数,用循环乘法。
S1) 使p = 1
S2) 使i = 2
S3) p x i => p
S4) i + 1 => i
S5) 如果 i 不大于10,返回执行S3;否则算法结束。