文件操作
1.创建文件
在创建文件时,我们要了解linux的文件类型,它不同于Windows用后缀名来区分文件类别,而是有单独的方式记录文件类型
这里我们暂时了解普通文件和目录文件
打开终端
这里我们就涉及了我们进入linux里的第一个命令
ls
输入ls后按Enter
ls可以查看当前路径的所有文件
大家可以看见我运行ls命令后没有反应,因为我们一般不会在桌面上创建文件,所以我的桌面上没有文件
然后我们就可以用创建文件的命令
mkdir 这个是创建目录文件的命令
使用方式时 mkdir 文件名
再结合刚刚的ls命令,可以发现我们创建成功
touch 这个是创建普通文件的命令,目前我们认为除去目录文件的别的文件都是普通文件
使用方法是 touch 文件名
再使用并结合ls命令
我们这里可以看到我们成功创建了目录文件 dir 和普通文件 a.c
那么我们要如何判断文件的类型呢
这里发现两个文件的颜色不同,那是用颜色判断吗?
并不是,这里我们就要使用ls的衍生命令ls -l
ls -l我们执行这个命令
我们着重看这两行的第一个字符,这就是前面提到的用特殊的方式标记文件的类型
这里就涉及了目前会遇到的文件类型
这是目前我们会遇到的一些文件类型
后面的其他字符我们目前暂时不介绍
我们再了解ls的另外两个衍生命令 ls -a ls -i
ls -a
可以查看当前路径下的所有文件
包括隐藏文件
ls -i
可以查看文件的版本号
这两个命令我们都只了解
前面说到我们不在桌面上进行文件的创建以及其他操作,所以这里我们就要引出一个新的命令 cd
cd 加路径 可以切换到当前路径下
然后不论在那一步 我们都可以直接
cd 切换到家目录
那如果我们想往上上一个目录切换如何使用呢
cd ..
这个即可达到我们想要的效果
cd .
这个命令我就不做演示,因为这个命令的功能是切换到当前目录
那么我们完成切换之后,我们要如何删除我们不想使用的文件呢
rmdir 我们使用这个文件对几种文件进行删除看看效果如何
1.空的目录文件
大家可以看一下我删除操作前的几个步骤,看看是什么目的
这里发现运行成功,我们使用ls查看dir文件还在不在
可以看到删除成功,所以rmdir可以删除非空目录
2.非空目录文件
我们已知ddir是一个非空目录
可以看到删除失败,原因是ddir是一个非空目录
3.普通文件
已知a.c是一个普通文件
可以看到删除失败,原因是a.c不是一个目录
所以 rmdir的作用是删除空的目录文件
那么普通文件和非空目录如何删除呢
这个是一对一的 不可以套用
rm 这个是专用删除非目录文件的命令
rm -r 这个可以强制删除任何文件,但是linux这种删除操作要谨慎使用,如果不小心删除了系统中的某个重要文件,那么这个是无法复原的,只能重新安装解决,所以我我们要谨慎使用
可以看到经我们这样操作之后,成功删除了非空目录和普通文件
这里还有一个点 就是如果有很多文件 我们要使用多次吗
实际上是不用的 我们先使用创建文件的命令创建几个文件(可以一次创建多个)
可以看到我一次创建了多个文件
那么我们如何简便删除呢,这里我们就可以使用一个叫模糊匹配的东西
例如 我 rm -r a*
大家可以猜猜结果
可以很明显的发现,这样以a开头的文件都删除了
然后我们在使用 rm -r *.C
我们预测结果是以.c结尾的文件会被全部删除
和我们预期的一样
然后还有一个算是linux的应用技巧
当路径中只有一个某个字母开头的文件,那么我们键盘中输入这个字母再按tab键就可以自动补全
例如这里的b和 dir都可以
我这里就不演示了
我们把桌面的文件全部删除再切换到家目录
这时候我们发现上面有很多命令占据了整个桌面,我们可以使用
clear
这个命令就可以清屏
文件权限
第一个字符是区别文件类型,然后后面有九个连续的字符
我们将其分成三个三个字符的形式
从前到后我们就可以将其分为 所属者权限(u) 小组权限(g) 其他者权限(o)
其中 r代表可读
w代表可写
x代表可执行
这里我们就可以看看在本地上的权限
那么如果我们想对这个权限进行修改怎么办呢
这里我们使用的是
chmod 命令
可以通过权限的代表 即 u g o
u-r a.c即将a.c的所属者的读功能删掉
g+x a.c即将a.c的小组权限的可执行功能加上
这个是chmod的文字设定法
那么还有chmod的数字设定法
其中 r 4 w 2 x 1
例如这里我们演示一下
按顺序对应 ugo
这样也可以进行修改
实际上这些基础命令多多使用就可以熟练掌握
接下来我们就要进入文件内部进行操作,所以我推荐先安装一下系统的查看文件的命令 vim
这里使用的命令
sudo apt install vim
因为本机以及安装过,但是目前会有这几种情况
这是正常的步骤
按Y即可完成
这种一般是没有更新导致 我们再使用
sudo apt -get update vim
然后再sudo apt install vim
这样就可以了
安装的全程要保持网络连接
同时我们还可以 用 sudo apt install gcc 这个命令是安装之后需要使用的一个命令
然后我们就进入文件内部
vim 加文件名 如果文件名是没有创建的,那么它就会给你创建一个文件
vim 进入后首先是命令模式
这里面会有一些操作(仅限命令模式下)
1.nyy 从光标开始向下复制n行
2. p 粘贴复制的内容,一般与nyy搭配使用
3.ndd 从光标开始向下删除n行
4.u 撤销上一步操作
5.ctrl+r 撤销上一步撤销动作
6.r 替换光标处字符(按r之后再按想要替换的字符)
7.G 光标移动到文尾
8.gg 光标移动到文头
9.nG 跳转到n行
10.shift +4 光标移动到当前行尾
11.shift +6 光标移动到当前行头
注:以上命令只能在文件内的命令模式下使用!!!
编辑模式
这里从命令模式下按上述几个键即可进入编辑模式进行编辑
然后编辑模式退回到命令模式才能进行其他模式的转化
退回的方式就是按键盘的 ESC
尾行模式
:这个是冒号
:q退出文件
:wq 确认保存退出文件
那么如果我对一个编辑文件编辑后仅进行:q操作会怎么样呢 我们可以尝试一下
可以看到我们无法成功退出
那么我们可以使用:wq保存退出
或者:q!强制退出(这个也会保存)
:set nu 设置行号
:set noun 取消行号
/字符串 从光标位置开始向下循环找到字符串的位置
?字符串 从光标位置开始向上循环找到字符串的位置
n,m s/字符串1/字符串2/g 从n~m行之间将字符串1换成字符串2
n~m不能超过已有的上限
这就是文件内部的各种模式的操作
我们回到文件外部
man 查看帮助手册
1 命令
2 系统调用函数
3 库函数
我们这里只展示一个
例如 man 1 ls
查看完即可按q退出
cp 拷贝命令
这个是拷贝 普通文件的命令
cp 文件名要保持相同
例如
cp main.c .. 把main.c 拷贝到上一级目录,文件名也叫main.c
cp main.c ../newmain.c 将main.c 拷贝到上一级目录上 ,文件名叫 newmain.c
mv 移动文件
如果是在同一路径下,就会被解析成重命名
如果是不同路径,就可以达到移动文件的目的
wc 统计单词个数
wc -w统计单词
wc -c统计字符
wc -l统计行数
cat 查看文件内内容
more 查看文件 ,可以enter一页一页展示
head 查看前几行
head 查看全部
head -1查看第一行
tail 查看后几行
tail -1查看后一行
tail 查看全部
cat
cat还有衍生用法
cat > main.c 对main.c中内容重定向
cat >> main.c 对main.c进行追加操作
上面两个命令均用ctrl + d结束
cat 1.c 2.c main.c> 4.c
将前三个文件整合
其次还有一个很重要的引用
cat >> main.c 和 tail -f main.c
搭配使用就可以监视main.c其中的变化
涉及的变化这里不方便演示
但是这个点很重要,建议大家下来之后试一试
具体操作就是开启两个终端 在一个终端上就行 cat >> main.c的追加操作
在另外一个终端上进行 tail -f main.c的监控操作
可执行程序
之前说到 Linux用专属的标记来标记文件类型
linux这里的是x
那么我么想在linux上进行一个c程序的编译到运行有那几步呢
这里我们就编写一个简单的c程序
从最初的.c 文件到可执行有文件有以下四步
其中main.i文件为预编译后的文件
那么我们打开main.i并光标移动到文尾部
我们发现宏定义max不见了,这和我们之前在c语言中学到的宏会在预编译期间替换一致
我们将其执行完毕
得到最后的可执行文件
我们得到一个绿色的可执行文件 4
那么我们运行它
运行的时候要加上路径,不然会被解析成命令
执行后我们得到结果输出hello world
可以看到这里如果我们直接使用会出现错误
那我们就涉及到了调用函数 例如我们调用加法和乘法函数(在其他文件中编辑)
这就是我们目前学到的内容,后面我会不间断更新我的Linux学习之路