欢迎关注我的微信公众号:MatlabGUI QtCPP等学习记录
Contents
Preface
常用的Linux命令
常用命令目录处理命令
文件处理命令
链接命令
权限管理命令
Preface
首先介绍一下笔记的主要来源:B站上兄弟连的Linux视频的笔记,大部分还是老师讲的内容,有的地方加了我自己的理解,这里做一个整理。
这老师上课用的是CentOS的系统,放到Ubuntu上来只有细小部分不太一样,基本还是差不多的,感兴趣的可以去B站上搜索学习
自从装了双系统后,好久都没有进入过Linux系统了,基本都在Windows上办公,主要用MATLAB还是在Windows上好用。
这两天把笔记拿出来看了看,还是觉得写篇推送复习起来比较方便(虽然比较费事)!一直就觉得把这个推送当成云笔记是一件很方便的事。
还有最近几个月可能会很少更新MATLAB的内容(我感觉我也忘得差不多了。。。)。
常用的Linux命令
常用命令
-
ls: 显示目录中的文件
这只是最简单的用法,
ls [-aldhi] [文件或目录]
ald是可选的选项,可以不加,文件或目录是这个命令的参数,也可以不加!
-a:显示所有文件(all)
-l:显示文件的详细信息(包括文件的大小(字节数)权限等)
-d:只查看当前文件夹中的目录
-h:与-l一块用时会把字节数转化成具体的k/M/G等单位
-i:查看文件的i-node,这个i节点相当于指针,指向文件的起始位置
上图中的
drwxr-xr-x
实际上应该是分为如下的4部分:
d : 第一个字母,文件的类型,d表示这是一个文件夹
rwx:2-4这三个字母是该文件所属者所拥有的权限分别表示:可读,可写,可执行
r-x:5-7这三个字母是文件所属组所拥有的权限,含义同上,-表示没有该位置对应的权限
r-x: 其他人所有的权限紧接着这串字符的后面的 数字 表示 该文件的引用计数,只有当引用计数为0时文件才会被彻底的删干净,就和C++中的 shared_ptr 差不多!
不过想一下子删干净可以把文件内容重定向到 /dev/null文件夹,然后rm,这在后面说紧接着后面的那两个分别表示文件的所有者,和文件的所属组,如下面的那个图中的结果都是root的。
目录处理命令
-
mkdir 创建新目录
mkdir [-p] 文件夹名
-p 表示递归创建
可以看到,我们递归创建了一个文件夹
-
cd 切换目录
cd 目录
这部分就不演示了,提一下两个特殊的符号
./ 表示当前文件夹
../ 表示上层目录
-
pwd 返回当前路径
-
rmdir 删除空目录
rmdir 目录名
只能是空目录,比如删除刚刚上面创建的Mitch目录就会失败
-
cp 复制文件或目录
cp [-rp] [源文件或目录] [目标目录]
-r 复制目录,复制目录的话,一定要加 -r
-p 复制时,保留源文件的属性
可同时复制多个目录或文件,反正最后一个是目标目录
下面是把Mitch文件夹中的 Hong文件夹复制出来
-
mv 剪切文件 或者 是对文件改名
mv [源文件或目录] [目标文件或目录]
你把文件剪切到文件所在的文件夹中就相当于改名了
-
rm 删除文件
rm [-rf] [文件或目录]
-r 删除目录
-f 强制删除,都不用确认的那种
Actually rm只会让文件的引用计数减一,可能并没有真的删除掉文件,你要删除文件最好按照如下的方式:
> 文件名
这会使得文件的内容瞬间为空,然后再用rm把文件删掉。
如:源文件内容如下:
执行重定向后:
执行rm后,文件没了:
文件处理命令
-
touch 创建空文件
touch 文件名
就算是在带有GUI的LIUNX系统中,你右键,也是没有创建文件的选项的,你只能用命令来创建文件。在带GUI的LINUX中可以用gedit来编辑文件,也可以用vim。
touch在上面已经演示过了
-
cat 显示文件内容
cat [-n] 文件名
-n 显示行号
-
tac 倒着显示文件中的内容
tac 文件名
-
more 分页显示文件的内容
当文件的内容太多时,当前的命令行窗口放不下这么多的内容,就要分页查看了
more 文件名
不过不能往回翻着看!!!!
还是读上面的那个 M.txt 文件中的内容,这回我把命令行窗口缩小小的。这样就放不下了
空格/f 翻页
Enter 看下一行
q/Q 退出查看
-
less 分页显示文件的内容
与上面的 more 不同的是,这个可以向上或者向下翻页,用PageUP和PageDown来控制 -
head 查看文件的前面几行
head 文件名;默认查看10行
head -n 行数 文件名;查看指定的前面若干行
-
tail 显示文件后面的几行
tail 文件名;默认查看后10行
tail -n 行数 文件名;查看指定的后面若干行
链接命令
-
ln 生成链接文件
ln [-s] [源文件] [目标文件]
-s 表示生成的是软链接,不加-s 则生成的是硬链接
软连接
-
软链接 类似于Windows中的 快捷方式
-
软连接的文件类型是 "l" ,"lrwxrwxrwx"。软连接的文件权限并不管用,它还是得按照实际指向的文件来!
-
用 ls -l 命令时,软连接那一行会有一个箭头指向它所链接的文件!
如上图,我自己写了一个简单的c++程序:
编译输出为:test;
然后用ls -lh查看了这个可执行文件的详细属性;
然后用ln创建了一个软连接;
最后查看这个软连接的详细属性!
硬连接
-
硬链接相当于直接把文件给复制了一份;
-
但是这个又和普通的复制不同,硬链接的文件会和源文件同步更新;
-
如果你修改了链接文件,那么源文件也会同步跟着修改;
-
硬链接的文件的 i-node 和源文件的 i-node 是相同的,也就是他们是共享数据的,都是指向同一块内存;
-
每生成一个硬链接,相应文件的引用计数都会 加1 。
-
硬链接 不能跨分区!
-
目录没有硬链接!
权限管理命令
-
chmod 改变文件或者目录的权限
上面讲 ls 命令的时候已经看到了文件的权限是什么样子的:
rwx rwx rwx
每三个一组,实际中是没有空格的,这里为了看的清楚加了空格!
第一组表示文件所有者的权限,第二组是文件所属组的权限,第三组是其他人的权限!
rwx这三个值用一个数字来表示就是:7
因为:7 = 4 + 2 + 1 = 2^2 + 2^1 + 1。
就是:这三个二进制的按位或:100,010,001
所以:r-- 用数字表示就是:4
-w- 用数字表示就是:2
--x 用数字表示就是:1
--- 用数字表示就是:0
所以:rwxrwxrwx 用数字表示就是 777,即权限全开。
rwx------ 用数字表示就是 700。
rwxr-x--- 用数字表示就是 750。
所以chmod常用的方法如下(其他方法不说了):
chmod [-R] [数字表达的权限] [文件或目录]
-R :表示递归修改权限,就是把文件夹或者文件夹下的所有文件的权限一块改了!
文件的权限:rwx 好理解其含义。对于文件夹的权限的理解如下:
r : 表示可以用 ls 列出文件夹中的内容
w: 表示可以在文件夹中创建或者删除文件
x : 表示可以进入目录!
-
chown 改变文件或者目录的所有者
需要root权限
chown [用户] [文件或者目录]
这个用户必须是系统中已经存在的用户
我一般用这个,把root的文件转化成普通用户的文件。或者是把普通用户的文件转化成root的文件(个人机器上使用时是这样!)
-
chgrp 改变文件或者目录的所属组
用法同上
-
umask 设置文件创建时的省缺值
umask [权限数字]
它是用777 减去 权限数字,剩下的作为创建文件时的省缺值。
比如,我设置 umask 777
后 ,创建的文件的权限都是 :000
,就是不管是谁没有任何权限!