本文已参与「新人创作礼」活动,一起开启掘金创作之路。
1、必备Linux命令和C语言基础
1.1环境安装
Ubuntu是Linux的一个发行版本,Linux有许多发行版本,比如Debian,center,redhat等都是比较流行的,Linux和Ubuntu的关系,类似win7,win10,XP是windows的实际的一个操作系统
1.1.1虚拟机安装
VMware-workstation 10 (.exe后缀) ubuntu-14.04.5-desktop-i386.iso
1.1.2linux安装
1.1.3常规配置
1.2文件和目录相关命令
linux文件系统就是一个树形的分层组织结构
/bin:bin是二进制(binary)英文缩写(命令行的命令如:cp,ls,cd等等存放在此处)
/boot:存放的都是系统启动时要用到的程序
/dev:包含了所有Linux系统中使用的外部设备
/etc:存放了系统管理时要用到的各种配置文件和子目录
/lib:存放系统动态连接共享库的
/home:普通用户的主目录
/linux:
/usr1:
/root:根用户(超级用户)的主目录
/mnt:
/opt:
/proc:
/bin:
/local:
/bin:
/man:
/src:
/share:
/sbin:
/srv:
/sys:
/tmp:
/usr:
/var:
1.2.1文件系统层次结构标准FHS
Filesystem Hierarchy Standard(文件系统层次结构标准) 为了规范文件目录命名和存放标准,Linux基金会颁发了FHS(Filesystem Hierarchy Standard)。 ==Linux的优势==:Linux是开源的软件,各Linux发行机构都可以按照自己的需求对文件系统进行裁剪,所以众多的Linux发行版本的目录结构也不尽相同。
1.2.2 man命令
man man:查看man手册的作用
1.2.3 ls命令
man ls:查看ls的使用方式 显示当前路径下的文件和文件夹(不包含隐藏的) 隐藏的文件/文件夹:带 . 的文件或文件夹是隐藏文件/文件夹 ls [options] [files_or_dirs] []内的内容为非必选项
Example:
ls -a
ls -l
ls -R
-a:显示隐藏的文件或文件夹
.:代表当前目录
..:上一级目录
eg:ls -a /home
-l:以长列表的形式当前路径下的内容
文件类型 用户权限 组员权限 其他成员权限 文件夹的个数 文件所属用户 文件所属组 文件大小 时间戳 文件名
drwxr-xr-x 4 root root 4096 Sep 23 10:24 boot
-h:带单位的显示当前路径下的内容,需要搭配-l选项使用
-R:递归显示当前路径下的所有文件和文件夹,如果有文件夹递归展开显示
-i:显示文件的inode号
1.2.4 文件的类型和权限
dcb-lsp:
d:directory目录
c:字符设备
b:块设备
-:普通文件
l:链接文件(符号链接)
s:socket套接字
p:有名管道
权限:
u g o a
用户 组员 其他成员 所有成员
rwx rwx rwx
如果对应的权限不存在使用-表示
r-x rw- -wx
r:可读权限 4
w:可写权限 2
x:可执行权限 1
0:---
1:--x
2:-w-
3:-wx
4:r--
5:r-x
6:rw-
7:rwx
chmod:更改文件的权限:
字母的方式:
chmod u+x filename 将filename文件的用户加上可执行权限
chmod a-w filename 将filename文件的所有成员可写权限去掉
chmod u-wx filename 将filename文件的用户去掉可写和可执行权限
八进制数的形式:
chmod 0777 filename 将filename的用户组员其他成员的权限加满
chmod 643 filename filename权限:rw-r---wx
将文件1.c的权限改成r-xrw---x
chmod 561 1.c
1.2.5 pwd命令
pwd命令用于显示用户在文件系统中的当前位置,该命令没有任何选项和参数,命令执行结果显示为绝对路径名。 路径:绝对路径和相对路径 绝对路径:从根目录或家目录开始的路径 相对路径:从当前路径开始的路径
linux@ubuntu:~$ pwd
/home/linux
1.2.6 cd命令
cd:切换路径,相当于鼠标的双击
cd /:进入根目录
cd:进入家目录
cd ~ :进入家目录
cd /home/linux:进入家目录
cd -:返回上一次操作过的目录
cd ..:返回上一级目录
1.2.7 cat/nl/head/tail查看文件内容命令
1.cat
-s 多个空行合并成一个空行显示
-b 加行号显示
2.nl 加行号显示,等同于cat -b
3.head
-n 文件名(前n行,默认10)
4.tail
-n 文件名(后n行,默认10)
1.2.8 cp复制命令
cp [options] file destination
cp -r 路径/目标文件名 路径/新文件名 (复制文件夹时)
cp test.c ../ (把文件拷贝到上一目录下)
cp test.c ../bak.c (把文件拷贝到上一目录下并取名为bak.c)
cp test.c ../bak.c -i(把文件拷贝到上一目录下并取名为bak.c,i覆盖时交互提示)
复制多个文件到文件夹 cp [options] file1 file2 dest
cp test.c test4.c ../(文件备份)
1.2.9 mv移动命名
mv [options] file destination 移动多个文件: mv [options] file1 file2 destination
mv test2.c ../ (移动到上一级目录)
mv test2.c test_second.c (更改文件名)
mv test2.c ../test_second.c(移动到上一级目录并更改文件名)
1.2.10 touch/rm/mkdir
touch:当文件不存在时新建文件,文件存在时则为更新时间戳 rm 删除文件 rm [options] ...
mkdir -p :嵌套创建文件夹/当父目录存在的时候的忽略创建父目录
mkdir -p aa/bb/cc
rm -i file (-i为删除时提示是否真的要删除)
rm -r directory (删文件夹)
rm -rf:r递归删除,-f强制执行
rm -rf /*:强制递归删除当前系统根目录下的所有内容,不能执行的命令
1.3 vi编辑器
vi有以下三种模式
1.3.1 命令行模式
用户在用vi编辑文件时,最初进入的为该模式。可以进行复制、粘贴等操作。
yy:复制当前所在行
dd:剪切当前所在行
nyy/yny:从当前光标位置向后复制n行
ndd/dnd:从当前光标位置向后剪切n行
p:粘贴,在当前光标的下一行进行粘贴
P:粘贴,在当前光标的上一行进行粘贴
1G:回到文件的开头
G:到文件的结尾
$:当前行的行尾
0:当前行的行首
y$:复制当前光标位置到行尾的内容
y0:复制当前光标位置到行首的内容
d$:剪切当前光标位置到行尾的内容
d0:剪切当前光标位置到行首的内容
yw:复制一个单词,以空格分隔的
:118,125y (按块复制)
:118,$d (118行以后的全部剪切)
x:删除当前光标所在的字符
c:同d和y,操作结束会进入插入模式
gg=G:自动调整对齐格式 (也可以选中要对其的代码,按=即可)
ZZ:保存并退出(大写)
/string:在全文查找string字符串,并高亮显示(光标跳到之前光标下第一个出现string的地方)
n:继续查找
N:反向继续查找
支持正则表达式,比如:/^the (以the开头的)
u:撤销
ctrl+r:反撤销
vim filename +num 打开文件并将光标移动到第num行
1.3.2 插入模式
进行文件编辑,按ESC键可以回到命令行模式。 插入模式:insert,文本编辑模式
i:当前光标的前一个位置插入
o:当前光标所在行的下一行进行插入
a:当前光标的后一个位置插入
I:在当前的光标的行首位置插入
O:在当前光标的上一行进行插入
A:在当前光标的行尾进行插入
1.3.3 底行模式
先用esc回到命令模式,按:进入底行模式 :!pwd (可以看编程的路径) :!data (可以看系统几点了) 光标位于屏幕的底行。可以进行文件的保存、退出、查找、替换、列出行号等
:noh 取消高亮
:行号 进入多少行
:set num 加行号显示
:set nonu 取消行号显示
:m,ns/oldstring/newstring/g
m:起始行
n:终止行
g:当前行所有的匹配字符串都替换
:范围s/old/new 当范围省略时,默认为当前行
:.,$s/str1/str2/g 从当前行开始,到结尾进行替换
:%s/old/new/g 全文替换
:w 保存
:q 退出,当文件已被修改时不能退出,需要先保存,或者强制执行退出,此时修改的操作无效
:!强制执行
:wq 保存并退出,等同于:x
:w! :q!
:sp 水平分栏 分出来的文件和原先打开的文件还在一个终端,可以公用剪切板
:vsp 垂直分栏
方向键:hjkl(左下上右),ctrl+方向键:在分栏的文件之间移动,单独使用方向键是在当前文件移动光标
:wa 保存所有文件
:qa 退出所有文件
:wqa 保存并退出所有文件
:w +file 另存为file给出的文件名,不退出(工作时先备份一份可用的)
:r +file 读入file指定的文件内容插入到光标位置
1.3.4 可视化模式
多行注释:
1、按ESC进入命令行模式
2、ctrl+v进入可视化模式
3、移动光标选中所有要注释的行(光标在行首位置)
4、shift+i从行首进入插入模式
5、输入// # "等匹配语言类型进行单行注释
6、按两下ESC
(复制到外面:ctrl+shift+鼠标选择;复制到虚拟机内部:ctrl+鼠标选中+y)
删除多行注释:
1、按ESC进入命令行模式
2、ctrl+v进入可视化模式
3、移动光标选中所有的注释符号
4、按d或delete删除
注释:
/*
*多行注释内容
*/
#if 0
多行注释内容
#endif