一、Linux文件及用户权限
Linux是一个多用户系统,Linux命令严格区分大小写
st@st-virtual-machine:~$
/*
st:当前登录用户的用户名
st-virtual-machine:当前设备名称
~:当前用户家目录
*/
在Linux中,通常以.开始的文件,都是隐藏文件
ls -l :以列表的形式将当前路径下的文件罗列出来
ls -la :以列表的形式将当前路径下所有的文件(包括隐藏文件)罗列出来
drwxr-xr–
d 当前文件类型
rwx 当前用户的权限
r-x 当前用户所在组的权限
r-- 其他用户的权限
Linux一切皆文件(除网口)
二、Linux下基本命令
/mnt/hgfs/share1/
/mnt 是ubuntu下的共享目录
用于跟windows之间进行文件共享
share1/ 是windows下的共享目录
ctrl + l 清屏
安装vim编辑器:sudo apt-get install vim
打开一个文件:gedit .vimrc
1.vim 操作基本命令:
1、命令行模式
shift + : + 命令 | 功能 |
---|---|
w | 保存 |
wq | 保存并退出 |
q | 不保存退出,但是会提示是否保存 |
q! | 强制退出不保存 |
ctrl + z | 保存退出 |
命令 | 功能 |
---|---|
yy | 复制1行 |
nyy | 复制n行 |
nY | 复制n行 |
p | 粘贴,在当前光标的下一行开始 |
P | 粘贴,在当前光标的上一行开始 |
dd | 删除一行 |
ndd | 删除n行 |
u | 返回到上一次操作 |
D | 从当前光标处开始向后删除,直到行尾 |
2、插入模式
命令行模式切换至插入模式: | 功能 |
---|---|
i | 在当前光标处插入 |
I | 在当前光标所在行的行首处插入 |
a | 在当前光标的后一个位置处插入 |
A | 在当前光标所在行的行尾处插入 |
o | 在当前光标所在行的下一行新建空行插入 |
O | 在当前光标所在行的上一行新建空行插入 |
插入模式切换至命令行模式:ESC
ctrl + s 锁定当前文件
ctrl + q 解除锁定
3、可视化模式
命令行切换至可视化模式:
ctrl + v 可视块
shift + v 可视行
使用 // 注释多行:
(1)先需要切换至命令行模式
(2)ctrl + v 切换至可视化模式
(3)使用键盘的上下键,选中将要注释的代码
(4)shift + i
(5)//
(6)ESC
取消 // 的注释行:
(1)先需要切换至命令行模式
(2)ctrl + v 切换至可视化模式
(3)使用键盘的上下键,选中将要取消的 //
(4)键盘按下 d
2.Linux下清屏基本命令:
在windows的DOS操作界面里面,清屏的命令是cls,那么在linux 里面的清屏命令是什么呢?下面笔者分享几种在linux下用过的清屏方法。
1、clear命令、这个命令将会刷新屏幕,本质上只是让终端显示页向后翻了一页,如果向上滚动屏幕还可以看到之前的操作信息。
2、Ctrl+l(小写的L)、这是一个清屏的快捷键,这个是笔者在工作中用得最多的一种清屏方式,清屏效果同clear命令一样。
3、reset命令、这个命令将完全刷新终端屏幕,之前的终端输入操作信息将都会被清空,这样虽然比较清爽,但整个命令过程速度有点慢,使用较少。
值得一提的是reset命令在你的终端控制错乱时非常有用。如输入字符不出现在光标的位置的情况。还有当你敲击回车键时,新提示 符并没有出现在新行上
而是出现在老提示符的前面。此时reset命令就能用来修正这些问题。
4、printf "\033c"命令、
这个命令它才是真正的清空了终端屏幕,它的功能跟DOS里CMD.EXE提供的CLS效果很相似。但这个命令究竟是做什么的?它的工作原理是什么?
\033 == \x1B == 27 == ESC
于是,这个命令变成了<ESC>c,它是VT-XXX中表示“Full Reset (RIS)”的转义码。现今我们使用的所有的终端都是VT兼容的,它的另一种实现方式也可以这样:
键盘上Ctrl+v--->Esc-->输入c再回加。但如果你发现自己使用的是一个非常奇怪的终端(如笔者曾经在putty上作过测试),那这个命令你可能用不了。
printf是bash里内置的命令,内置命令的优先级比其它可执行文件要高。
通过上面的4个清屏方式比较,笔者喜欢,在PATH路径下,如/usr/bin/目录下。新建一个名为cls的文件,加上执行权限,写入如入内容:
vim cls
#!/bin/bash
printf “\033c”
这样的话我们每次需要清屏的时候,只需要输入cls命令就可以了。
3.Linux下其他基本命令:
安装软件:
1、安装vim (ubuntu 最好不好安装yum, 否则可能会出现很多奇怪的问题)
(1) apt-get install vim -y
2、在线安装软件包
apt-get install package
3、重新安装软件包
apt-get install package --reinstall
卸载软件
1、apt-get remove package //删除xxx,对于依赖则是不管的
2、apt-get remove --purge package //移除应用及配置
3、apt-get autoremove //删除不再需要的软件包
5、当前用户切换至root用户(4、5 两个命令, root 可以改为其他用户名,同样可以切换至其他用户)
(1) sudo su
(2) sudo -i
(3) su
(4) su root
(5) sudo su root
6、退出root用户
(1) exit
(2) logout
7、给root用户设定密码
sudo passwd root
8、删除文件
rm file #删除file文件
rm -f file #强制删除file文件
rm -r dir #删除目录dir
9、创建命令
mkdir -p YQ/Linux //创建YQ目录,其下包含子目录Linux命令
//-p 创建的目录包含子目录
mkdir -p YQ //当前位置创建一个目录YQ
touch filename // 创建一个文件
10、vim命令
插入命令:
(1) a 在光标所在字符后插入
(2) A 在光标所在行尾插入
(3) i 在光标所在字符前插入
(4) I 在光标所在行行首插入
(5) o 在光标下插入新行
(6) O 在光标上插入新行
定位命令:
(1) :set nu 设置行号
(2) :set nonu 取消行号
(3) gg 到第一行
(4) G 到最后一行
(5) nG 到第n行
(6) :n 到第n行
(7) $ 移至行尾(shift + $)
(8) 0 移至行首
删除命令:
(1) x 删除光标所在处字符
(2) nx 删除光标所在处后n个字符
(3) dd 删除光标所在行,ndd删除n行
(4) D 删除光标所在处到行尾内容
(5) dG 删除光标所在行到文件末尾内容
(6) :n1,n2d 从n1, 删除到n2
复制和剪切命令;
yy 复制当前行
nyy 复制当前行以下n行
dd 剪切当前行
ndd 剪切当前行以下n行
p、P 粘贴在当前光标所在行下或行上
替换和取消命令:
r 取代光标所在处字符
R 从光标所在处开始替换字符,按ESC结束
u 撤销
v 可视 (从当前光标处,向下或向上 来选择文本)
shift + v 可视行 (可以按照 行 来选择文本)
ctrl + v 可视块 (可以按照 块 来选择文本)
注释多行
1、先切换至命令行模式
2、光标处于当前要注释代码段的第一行
3、ctrl + v, 将要注释的行选中
4、shift + i
5、键盘输入 //
6、按ESC
搜索和搜索替换命令:
/string 搜索指定字符串
:set ic 搜索时忽略大小写
:set noic 搜索时对大小写敏感
n、N 搜索指定字符串的下一个、上一个出现位置
:%s/old/new/g 全文搜索old并替换为new字符串
:n1,n2s/old/new/g 在n1~n2范围内的old替换为new字符串
保存和退出命令:
:w 保存修改
:w new_filename 另存为指定文件
:wq 保存修改并退出
ZZ 快捷键,保存修改并退出(必须大写)
:q! 不保存修改退出
:wq! 保存修改并退出(文件所有者及root可使用)
其他命令:
ctrl + s vim插入模式下,其代表锁定屏幕
ctrl + q vim插入模式下,其代表解锁屏幕
:set hlsearch 设置被搜索字符串高亮显示
:set nohlsearch 取消被搜索字符串的高亮显示状态
终端打开快捷键:
Ctrl + Alt + T
清屏命令:
1、clear 将会刷新屏幕,向上滚动屏幕可以看到之前操作信息
2、Ctrl + l(小写L) 同clera
3、reset 将完全刷新终端屏幕,之前操作信息会被清空
使用vi打开编辑多个文件;在多个文件间复制粘贴内容
(1) vi file1 file2 file3
:n 切换到文件2 (n=next)
:e# 或 :N 切换回到刚才编辑的文件
打开一个,vi 文件名
然后在vi的命令输入状态下输入
:sp 另外一个文件的路径及文件名,如此就可以在一个窗口打开多个文件了。
(2) 或者用vi -o file1 file2 file3
用分割屏幕窗口方式同时打开多个文件。
可以使用 ctrl + 两次按 w 或者ctrl + w然后按上下键在上下窗口间切换。
4.Linux下压缩解压缩命令:
TAR是在Linux中使用得非常广泛的文档打包格式。它的好处就是它只消耗非常少的CPU以及时间去打包文件,他仅仅只是一个打包工具,并不负责压缩。下面是如何打包一个目录:
TAR打包: tar -cvf xxx.tar xxx
TAR解包: tar -xvf xxx.tar.gz
TAR.GZ这种格式是我使用得最多的压缩格式。它在压缩时不会占用太多CPU的,而且可以得到一个非常理想的压缩率。使用下面这种格式去压缩一个目录:
压缩: tar -zcvf xxx.tar.gz xxx
解压缩: tar -zxvf xxx.tar.gz
解压缩(含路径):tar -zxvf xxx.tar.gz -C /tmp/extract_here/
TAR.BZ2这种压缩格式是我们提到的所有方式中压缩率最好的。当然,这也就意味着,它比前面的方式要占用更多的CPU与时间。这个就是你如何使用tar.bz2进行压缩。
压缩: tar -jcvf xxx.tar.bz2 xxx
解压缩: tar -jxvf xxx.tar.bz2
解压缩(含路径): tar -jxvf xxx.tar.bz2 -C /tmp/extract_here/
解压缩:
解压缩:tar -xf xxx.tar.gz
解压缩:tar -xf xxx.tar.bz2
zip压缩: zip xxx.zip xxx
zip解压缩:unzip xxx.zip
Linux下的tar压缩解压缩命令详解
tar
-c: 建立压缩档案
-x:解压
-t:查看内容
-r:向压缩归档文件末尾追加文件
-u:更新原压缩包中的文件
这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。下面的参数是根据需要在压缩或解压档案时可选的。
-z:有gzip属性的
-j:有bz2属性的
-Z:有compress属性的
-v:显示所有过程
-O:将文件解开到标准输出
下面的参数-f是必须的
-f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名。
# tar -cf all.tar *.jpg
这条命令是将所有.jpg的文件打成一个名为all.tar的包。-c是表示产生新的包,-f指定包的文件名。
# tar -rf all.tar *.gif
这条命令是将所有.gif的文件增加到all.tar的包里面去。-r是表示增加文件的意思。
# tar -uf all.tar logo.gif
这条命令是更新原来tar包all.tar中logo.gif文件,-u是表示更新文件的意思。
# tar -tf all.tar
这条命令是列出all.tar包中所有文件,-t是列出文件的意思
# tar -xf all.tar
这条命令是解出all.tar包中所有文件,-t是解开的意思
压缩
tar -cvf jpg.tar *.jpg
//将目录里所有jpg文件打包成tar.jpg
tar -czf jpg.tar.gz *.jpg
//将目录里所有jpg文件打包成jpg.tar后,并且将其用gzip压缩,生成一个gzip压缩过的包,命名为jpg.tar.gz
tar -cjf jpg.tar.bz2 *.jpg
//将目录里所有jpg文件打包成jpg.tar后,并且将其用bzip2压缩,生成一个bzip2压缩过的包,命名为jpg.tar.bz2
tar -cZf jpg.tar.Z *.jpg
//将目录里所有jpg文件打包成jpg.tar后,并且将其用compress压缩,生成一个umcompress压缩过的包,命名为jpg.tar.Z
rar a jpg.rar *.jpg
//rar格式的压缩,需要先下载rar for linux
zip jpg.zip *.jpg
//zip格式的压缩,需要先下载zip for linux
解压
tar -xvf file.tar
//解压 tar包
tar -xzvf file.tar.gz
//解压tar.gz
tar -xjvf file.tar.bz2
//解压 tar.bz2
tar -xZvf file.tar.Z
//解压tar.Z
unrar e file.rar
//解压rar
unzip file.zip
//解压zip
总结
1、*.tar 用 tar -xvf 解压
2、*.gz 用 gzip -d或者gunzip 解压
3、.tar.gz和.tgz 用 tar -xzf 解压
4、*.bz2 用 bzip2 -d或者用bunzip2 解压
5、*.tar.bz2用tar -xjf 解压
6、*.Z 用 uncompress 解压
7、*.tar.Z 用tar -xZf 解压
8、*.rar 用 unrar e解压
9、*.zip 用 unzip 解压
三、GCC编译管理器
gcc 是一个C标准的编译器
g++ 是一个C++标准的编译器
编译一个源文件最简单的方式:
gcc hello.c (默认生成a.out可执行文件)
./a.out //执行a.out
编译一个源文件,并生成一个指定名称的可执行文件
gcc hello.c -o hello
源文件参与编译,头文件不参与编译
gcc的编译过程:
1、预编译(生成.i文件) --> 不进行格式或语法的正确性判断
gcc -E hello.c -o hello.i
2、编译(生成汇编文件 .s) --> 进行语法判断
gcc -S hello.c -o hello.s
3、汇编(编译为机器语言)
gcc -c hello.c -o hello.o
4、链接
gcc hello.o -o hello