导图社区 必备Linux命令和C语言基础
必备Linux命令和C语言基础知识总结,包括环境安装、文件和目录相关命令、vi编辑器的使用/程序的编译和调试/数据的表示等内容。
编辑于2022-03-21 22:17:43第01课 必备Linux命令和 C语言基础
课时一 环境安装
Linux文件系统是树形的分层组织结构,弱分区,重文件,文件系统层次结构符合标准FHS
1、虚拟机安装
VMware workstations15.5
虚拟机是一个软件电脑,它与物理机一样,可以运行操作系统和应用程序。
2、Linux系统安装
Ubuntu 1404-32
Ubuntu是一个以桌面应用为主的Linux操作系统。 从前人们认为Linux难以安装、难以使用,在Ubuntu出现后这些都成为了历史。
课时二 文件和目录相关命令
1、Linux的文件系统结构
为了规范文件目录命名和存放标准,Linux基金会颁发了FHS(Filesystem Hierarchy Standard文件系统层次结构标准)
2、Linux常用命令
快捷操作
man
查看命令的帮助文档,例如——man pwd
ctrl + l
清除屏幕
ctrl + C
终止命令
磁盘管理命令
pwd命令
(print work directory):命令用于显示用户在文件系统中的当前位置
ls命令
(list files):命令用于显示目前工作目录下所含的文件及子目录(目录:即文件夹)
ls -a:显示所有文件及目录 ( . 开头的隐藏文件也会列出)
ls -l:除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出
ls -R:若目录下有文件,则以下之文件亦皆依序列出
cd命令
(change directory):命令用于切换当前工作目录
cd / 是跳转到根目录(根目录是所有用户共享的目录)
.(一个点)代表当前目录,相当于./ ..(两个点)代表上级目录,相当于../
cd ../.. 跳转到目前目录的上上两层
绝对路径:由根目录(/)开始的文件名或文件目录,例如/root/desktop 相对路径:由当前目录开始的文件路径,例如./home/kali 注:只要前面不是/开头的,那就是相对路径
df命令
(disk free):命令用于显示目前在 Linux 系统上的文件系统磁盘使用情况统计
df -T 查看文件系统的信息
文件管理命令
cat命令
(concatenate):命令用于连接文件并打印到标准输出设备上
cat -s Filename
当遇到有连续两行以上的空白行,就代换为一行的空白行
cat -b Filename
和 -n 相似,只不过对于空白行不编号
nl命令
nl Filename
类似于cat -b,都是加行号,对于空白行不编号
head命令
命令可用于查看文件的开头部分的内容,有一个常用的参数 -n 用于显示行数,默认为10,即显示10行的内容
要显示test.c文件的开头10行,则输入:head test.c 要显示test.c文件的开头5行,则输入:head -n 5 test.c 要显示test.c文件的前20个字节,则输入:head -c 20 test.c
tail命令
命令可用于查看文件的内容,有一个常用的参数 -f 常用于查阅正在改变的日志文件
要显示test.c文件的最后10行,则输入:tail test.c 要跟踪名为test.c文件的增长情况,则输入:tail -f test.c 显示文件test.c的内容,从第20行至文件末尾:tail -n +20 test.c 显示文件test.c的最后10个字节,则输入:tail -c 10 test.c
cp命令
(copy file):命令主要用于复制文件或目录
cp [options] file destination
复制多个文件到文件夹:cp [options] file1 file2 destination
-f:覆盖已经存在的目标文件而不给出提示
-i:与 -f 选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答 y 时目标文件将被覆盖
-r:若给出的源文件是一个目录文件(即文件夹),此时将复制该目录下所有的子目录和文件
在大多书命令行软件中,一般普通文件为白色,目录、链接文件为彩色
mv命令
(move file):命令用来为文件或目录改名、或将文件或目录移入其它位置
mv [options] file destination
移动多个文件:mv [options] file1 file2 destination
mv source_file(文件) dest_file(文件)
将源文件名 source_file 改为目标文件名 dest_file
mv source_file(文件) dest_directory(目录)
将文件 source_file 移动到目标目录 dest_directory 中
mv source_directory(目录) dest_directory(目录)
目录名 dest_directory 已存在,将 source_directory 移动到目录名 dest_directory 中;目录名 dest_directory 不存在则 source_directory 改名为目录名 dest_directory
mv source_directory(目录) dest_file(文件)
出错
touch命令
子主题创建或更新时间戳,若文件本来不存在,则新建文件;若文件存在,则改变文件的时间戳 时间戳可以通过ls -l Filename查看
rm命令
(remove):命令用于删除一个文件或者目录
rm -i Filename
rm -r directory_name
-i 删除前逐一询问确认。 -f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。 -r 将目录及以下之档案亦逐一删除。
删除文件可以直接使用rm命令,若删除目录则必须配合选项"-r"
删除当前目录下的所有文件及目录,命令行为:rm -r * 文件一旦通过rm命令删除,则无法恢复,所以必须格外小心地使用该命令。
mkdir命令
(make directory):命令用于创建目录
mkdir [-p] dirName -p 确保目录名称存在,不存在的就建一个
课时三 vi编辑器的使用
1、vi是Linux中最基本的编辑器,但vi编辑器在系统管理、服务器配置等工作中的地位是永远无可替代的。
2、vi后跟文件名,有则打开文件,没有则是创建文件
3、vi的三种模式及模式切换
vi的三种模式
命令模式(Command mode)
用户刚刚启动 vi/vim,便进入了命令模式。可以进行复制、粘贴等操作。 此状态下敲击键盘动作会被vi识别为命令,而非输入字符。
常用命令
i 切换到输入模式,以输入字符
x 删除当前光标所在处的字符
: 切换到底线命令模式,以在最底一行输入命令
命令模式只有一些最基本的命令,因此仍要依靠底线命令模式输入更多命令。
输入模式(Insert mode)
进行文件编辑,按ESC可以返回命令模式
在命令模式下按下a、i、o或A、I、O就进入了输入模式
基本命令
HOME/END,移动光标到行首/行尾
Page Up/Page Down,上/下翻页
Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
ESC,退出输入模式,切换到命令模式
底线命令模式(Last line mode)
在命令模式下按下:(英文冒号)就进入了底线命令模式
按ESC键可随时退出底线命令模式
vi模式切换命令
A a
进入输入模式(Insert mode)
A为【从光标所在行的最后一个字符处开始输入】
a为【从目前光标所在的下一个字符处开始输入】
I i
进入输入模式(Insert mode)
I为【在目前所在行的第一个非空格符处开始输入】
i为【从目前光标所在处开始输入】
O o
进入输入模式(Insert mode)
O为【在目前光标所在的上一行处输入新的一行】
o为【在目前光标所在的下一行处输入新的一行】
ESC
返回命令模式
:! Command
在vi中执行外部命令Command,按回车键可以返回vi继续工作 例如——:!pwd或者:!date
4、vi的拷贝和粘贴命令
[N]x
(Expurgate)删除从光标位置开始的连续N个字符,并复制到编辑缓冲区
[N]dd
(Delete)剪切从光标位置开始的连续N行,并复制到编辑缓冲区
[N]yy
(Yank)复制从光标位置开始的连续N行到编辑缓冲区
p或P
(Paste)从编辑缓冲区复制文本到当前光标位置,即粘贴
u
(Undo)取消上一次操作
5、vi的复制和剪切命令
y0
将光标至【行首】的字符【拷入】剪贴板
y$
将光标至【行尾】的字符【拷入】剪贴板
d0
将光标至【行首】的字符【剪切入】剪贴板
d$
将光标至【行尾】的字符【剪切入】剪贴板
range y
范围复制,例如——:1,$ y
range d
范围剪切,例如——:1,$ d
6、vi的保存和退出命令
:q
(Quit)退出没有修改的文件,若文件被修改了并且没有保存的话,则此命令无效
:q!
强制退出,且不保存修改过的部分
:w
(Write)保存文件,但不退出
:x
(Exit)保存文件并退出,相当于——:wq
:w File
另存为File给出的文件名,但不退出
:r File
(Read)读入File指定的文件内容插入到光标位置
7、vi的光标命令
h
方向键,相当于【←】,向左移动光标一个字符的位置
j
方向键,相当于【↓】,向下移动光标到下一行的位置
k
方向键,相当于【↑】,向上移动光标到上一行的位置
l
方向键,相当于【→】,向右移动光标一个字符的位置
:N
移动光标到第N行
1G
移动光标到文件的第1行
G
移动光标到文件的最后1行
:set number
设置显示行号
:set nonumber
取消显示行号
8、vi的查找命令
/string
在光标之下寻找一个名称为 string 的字符串
n表示继续查找
N表示反向继续查找
9、vi的替换命令
:s/str1/str2
当前行的第一个str1替换为str2
:s/str1/str2/g
当前行的所有str1替换为str2
:.,$ s/str1/str2/g
从当前行到结尾的所有str1替换为str2
:1,$ s/str1/str2/g
从第一行到结尾的所有str1替换为str2
:%s/str1/str2/g
将所有str1替换为str2
替换的时候后面要加g,不然就只有替换范围内的第一个字符串被替换
课时六 程序的编译和调试
1、gcc编译器(GNU Compiler Collection)是GNU推出的多平台编译器,可将C、C++源程序编译连接成可执行文件。
生成可执行文件:gcc -o hello hello.c或者gcc hello.c -o hello
-o 输出可执行文件
gcc hello.c -o hello -Wall(-Wall:生成所有警告信息)
./hello 查看输出结果(类似windows中的双击鼠标左键操作)
程序调试
2、利用__FILE__,__FUNCTION__,__LINE__实现代码跟踪调试
#include <stdio.h> int main(int argc,char **argv) { printf("%s,%s,%d\n",__FILE__,__FUNCTION__,__LINE__); return 0; }
__FILE__ 显示文件名
__FUNCTION__ 显示当前函数名
__LINE__ 显示当前执行行号
3、C语言基础
对数据的描述。在程序中要指定数据的类型和数据的组织形式,即数据结构。
对操作的描述。即操作步骤,也就是算法。 广义的说,为解决一个问题而采取的方法和步骤就称为算法。
课时五 数据的表示
1、计算机只能识别0 1 的数据形式, 能够进行算术运算得到明确数值概念的信息称为计算机数值数据,其余的信息称为非数值数据
数值数据
BIN:binary,二进制的; OCT:octal,八进制的; HEX:hexadecimal,十六进制的; DEC:decimal,十进制的
字符数据在机器内也被转化成二进制编码的形式,国际上普遍采用的一种编码是 ASCII vi中通过 man ASCII查看
正数的原码,反码,补码都是相同的 负数的原码首位是符号位,0为正,1为负 负数的反码符号位不变,其余位取反 负数的补码是反码加1
课时四 基础知识
1、冯诺依曼结构
输入设备、存储器、运算器、控制器、输出设备
2、程序设计步骤
编辑、编译、链接、执行调试