C语言可以操作内存
Vmware:虚拟机---->在一个操作系统上搭建出另一个操作系统
wins—>linux
ubuntu:Linux的一个发行版本 ----->可以直接使用的,是操作系统和软件及桌面应用结合的。
Linux免费的,开源的,避免了版权问题,可以裁剪,Linux是由unix演变而来的。
linus是Linux之父
(GNU is not unix)
GNU:GNU计划是计划打造一个和unix一样好用,但是不收费的操作系统。
GNU现在使用的仍然是Linux操作系统,gcc编译器也是GNU的产品
GPL协议:要求在GNU开发产品的基础上进行二次开发的产品,必须开放源码。
windows收费的,并且不开源。
macos----->Unix,收费的
wins下文件系统:依托于盘符,使用\引出路径
Linux下文件系统:倒插树结构,万物皆文件
Linux下文件,都是从根目录出发的并且以/作为路径。
鼠标点击
ctrl+alt+t ----->如果安装termaintor打开的就是黑色的终端,没有安装打开的是系统默认的终端
黑色的终端可以分屏
a.
ctrl+shift+e ---->左右分屏
b.
ctrl+shift+o ----->上下分屏
鼠标右击桌面,再打开终端
鼠标点击右上角
ctrl+d关闭终端 ----->如果有多个终端,关闭鼠标所在的终端
输入exit关闭终端 ---->退出终端的本质是退出当前用户
放大字体:ctrl+shift+= ---->+需要按shift
缩小字体:ctrl±
ubuntu:用户名
@:分隔符
ubuntu:计算机名/主机名
$:普通用户权限
#:超级用户的权限
su 用户名
su 默认切换到超级用户,root
exit退出当前用户返回上一级用户,如果没有上一级用户直接退出当前终端。
修改用户的密码
sudo passwd root ---->因为需要修改超级用户的密码所以需要加sudo
指令 参数 操作数
上面是指令的标准格式
指令和参数以及操作数之间,都以空格作为分隔
由于shell解析器在不断的更新,有一些指令也支持:指令 操作数 参数
ls 路径/文件名
自动探测
自动换行
1、ls 路径,显示路径下的所有文件
2、ls 文件名,把文件名回显到终端
ls的参数
自动探测
自动换行
ls -a,查看路径下的所有文件,包括隐藏文件
ls -l,显示路径下文件所有信息
ls -h,带单位的显示文件的信息,通常和-l一起使用,给文件的大小带单位显示
ll <===> ls -al
-rw-rw-r-- 1 ubuntu ubuntu 93 六月 27 10:08 test.c
七种文件的类型:bcd-lsp
自动探测
自动换行
b:块设备文件
c:字符设备文件
d:目录文件
-:普通文件
l:link软链接文件
s:套接字文件
p:管道文件
rw-rw-r-- 用户对文件的权限,前三个字母表示所属用户的权限,中间三个字母所属组用户的权限,最后三个字母其他用户的权限
1 硬链接文件的个数
ubuntu 所属用户----->默认是创建文件的用户
ubuntu 组用户
93 文件的大小
六月 27 10:08 文件的时间戳,文件最后被修改的时间
test.c 文件名
rwx ----->文件权限在文件详细信息中的位置是固定的,不会修改的,如果缺少了哪个权限,该权限的位置就是-
自动探测
自动换行
r:read可读 八进制数字表示: r 4
w:可写 w 2
x:可执行 x 1
-:无权限
i)使用字母表示法修改文件权限
chmod 用户+/-/=权限 文件名
用户的字母表示
所属用户:u 其他用户:o
所属组用户:g 所有用户:a
touch 1 ----->修改文件1的用户权限,把所属用户的可写权限取消,给所属组用户添加可执行权限,给其他用户添加可写权限。
chmod 八进制数 文件名
接着上一道练习,myfile的权限:775、、、
给其他用户取消可执行权限:chmod 774 myfile,chmod 0774 myfile ----->0为八进制数的前导符
文件权限的八进制表示法,默认八进制数**“靠右原则”**,如果只有一个八进制数给其他用户使用
touch 文件名 ---->创建文件
自动探测
自动换行
1、文件不存在,创建文件
2、文件存在,更改文件的时间戳
自动探测
自动换行
rm 文件名 ----->删除文件
mkdir 目录名 ----->创建的目录在当前路径下
使用mkdir创建多级路径:mkdir 100/1/2/3 -p
创建100/dir1/dir2/dir3
rmdir 目录名(路径) ------>删除指定路径的目录
删除非空目录: rm -r 路径 ---->删除指定路径的目录
练习:
1、在家目录下创建目录mydir,在mydir中创建dir1/dir2/dir3,在dir3中创建文件file,
并一步删除目录mydir
mkdir mydir
mkdir mydir/dir1/dir2/dir3 -p
touch mydir/dir1/dir2/dir3/file
rm -r mydir
cd 指定路径 ----->切换到指定路径下
cd 默认切换到当前用户的家目录
使用cd时的注意事项:
如果使用cd切换路径后,还进行其他的操作,要及时使用pwd做路径检查
自动探测
自动换行
. 当前路径
.. 上一级路径
绝对路径和相对路径
绝对路径:从根目录出发的路径
相对路径:相对于当前路径出发的路径
~:相对路径,相对于当前用户而言的
/:根目录,绝对路径
pwd用于显示当前的绝对路径
cp 源文件的路径 目标路径
自动探测
自动换行
1、如果目标路径和源路径都是文件,就是把源文件拷贝一份命名为目标文件的过程
如果目标文件存在,覆盖目标文件;如果目标文件不存在,创建目标文件
2、如果目标路径是一个目录,就是把源文件拷贝到目标路径中
如果目标路径中存在和源文件同名文件,覆盖目标文件;如果目标路径中不存在和源文件同名文件,创建目标文件
3、如果目标路径和源路径都是目录,需要加上-r参数,实现目录的拷贝,把源目录拷贝到目标目录中
移动文件/剪切文件
mv 源路径 目标路径
自动探测
自动换行
1、mv源路径和目标路径都是目录时,把源目录剪切到目标目录中,源目录不存在了
2、源路径和目标路径都是文件时,如果目标文件存在,是使用源文件覆盖目标文件的过程
如果目标文件不存在,相当于给源文件重命名
3、源路径是文件,目标路径是目录,如果目标路径中存在和源文件同名文件,就是覆盖
如果目标路径中不存在和源文件同名文件,就是把源文件移动到目标路径下并重命名
查看文件的内容
cat 文件名 ----->cat的操作数一定是文件名
echo 字符串 ------>在终端回显字符串
如果echo后面跟文件名,打印文件名到终端。
自动探测
自动换行
echo "ooo\n" ---->输出结果 ooo\n
echo默认不解析转义字符
echo -e "ooo\n" ---->输出结果是ooo+空行
-e参数让echo解析转义字符
自动探测
自动换行
>>追加 >重定向
cat 1.c > 4.c
1、如果4.c存在并且有内容,把1.c中的内容放到4.c中并覆盖掉4.c原有的内容
cat 1.c > 4.c,如果4.c存在但是没有内容,把1.c中的内容放到4.c中
2、cat 1.c > 4.c,如果4.c不存在,创建文件4.c,把1.c中的内容放到4.c中
echo ooo > 1.c
1、如果1.c存在,把ooo字符串放到1.c中覆盖原有内容
2、如果1.c不存在,先创建一个1.c,把ooo放到1.c中
cat 1.c >> 4.c
1、如果4.c存在,把1.c的内容追加到4.c后面
2、如果4.c不存在,创建4.c文件,把1.c中的内容追加到新文件中
echo ooo >> 4.c
1、如果4.c存在,把ooo追加到4.c的后面
2、如果4.c不存在,创建一个4.c,把ooo追加到新文件中
直接在终端输入whoami,查看当前用户
直接在终端输入hostname,查看当前计算机名
自动探测
自动换行
wc 文件名 ---->回显文件的行数、单词数和字符个数
wc -l 文件名 ---->回显文件的行数
wc -w 文件名 ---->回显文件的单词个数
wc -c 文件名 ---->回显文件字符的个数
自动探测
自动换行
压缩工具
xz gz bz2
xz 要压缩的文件 ----->默认生成一个.xz后缀的文件
gzip 要压缩的文件 ----->默认生成一个.gz后缀的文件
bzip2 要压缩的文件 ----->默认生成一个.bz2后缀的文件
在Linux下,压缩和解压缩必须使用同样的工具
自动探测
自动换行
unxz 要解压缩的文件
gunzip 要解压缩的文件
bunzip2 要解压缩的文件
压缩效率:xz > bz2 > gz
压缩时间:xz > bz2 > gz
xz适用于文件归档,长期保存
gz适用于临时的文件传输
tab可以实现指令/参数的自动补全
1、对于可以根据输入的内容,直接找到唯一匹配的字符串时,按一下tab键
2、对于已经输入的内容,对应多个可能的字符串时,按两下tab键
3、 通过共享文件夹,传到Linux中一个较大的文件,查看不同压缩软件的压缩效率,用手机上的秒表,看压缩时间。
使用vim编辑器的原因
熟悉没有图形化界面的场景
可以脱离鼠标
vim编辑器有代码高亮
vim编辑器可以显示行号
vi/vim 文件名 ----->进入vim编辑器编辑文件
从命令行模式进入插入行模式
i、I、o、O、a、A
字母 | 插入位置 | 注释 |
---|---|---|
i | 在光标所在的前一位进行插入 | 普通的文本输入 |
I | 在光标所在行的行首插入 | 给一整行代码添加注释 |
o | 在光标所在下一行进行插入 | 添加头文件 |
O | 在光标所在的上一行进行插入 | |
a | 在光标所在的后一个位置插入 | |
A | 在光标所在行的行尾插入 | 给写好的某行代码添加注释 |
进入vim时,默认就是命令行模式
从插入行模式返回命令行模式,按一下esc
命令行模式可以进行行间跳转、拷贝粘贴剪切和查找
自动探测
自动换行
gg: 跳转到文件的首行
G: 跳转到文件的尾行
ngg:跳转到文件的第n行
nG:跳转到文件的第n行
0:跳转到光标所在行的行首
$:跳转到光标所在行的行尾
在vim编辑器中,如果使用类似于wins下的复制粘贴:
按住shift键选中要复制的内容
按ctrl+shift+c复制
按ctrl+shift+v粘贴
自动探测
自动换行
nyy:从光标所在行开始复制n行
p:在光标所在的下一行粘贴
ndd:从光标所在行开始剪切n行(剪切只要不粘贴就是删除)
u:撤销
ctrl+r:反撤销
/word : 查找指定的单词 ---->查找成功的单词会有高亮显示
查找结束后按回车键,就可以通过n/N进行向下和向上查找单词
gg=G:格式化整个文件
nG=mG:格式化[n,m]行
在命令行模式下,按空格/shift+;
从底行模式回到命令行模式,按esc
按一下esc会延迟一会儿回到命令行
按两下esc立刻回到命令行模式
w:保存
q:退出
wq:保存并退出
!:强制执行
set nu:显示行号
set nonu:取消行号
noh:取消高亮 ---->查找单词留下来的高亮
%s/old/new/g:全文替换,把old替换成new
%s/old/new/gc:全文替换,把old替换成new,并且每一次循环是否替换
1、如果已经使用vim打开了一个文件,在底行模式下,输入vsp 文件名
2、如果想直接使用vim打开多个文件,vim 跟多个文件名 -O ---->左右打开
vim 跟多个文件名 -o ---->上下打开
在底行模式下输入!命令 (输入结束再回车)
ctrl+v ----->可视块模式(刚进入时,使用键盘左右选中只能选中单个字符,上下可以按照已选中的内容整行操作)
ctrl+V ---->可视行模式
直接鼠标选中内容
复制、粘贴、剪切和格式化
复制:选中想要复制的内容,按一下y
粘贴:把已复制的内容粘贴,p
剪切:选中想要剪切的内容,按一下d
格式化:选中想要格式化的部分,按一下=