Linux 是在计算机上面运行的,那么它是一组软件还是一段程序?又或者它是操作系统或者应用程序?又或者它是在计算机软件上运行还是在计算机硬件上运行?Linux和Windows谁厉害?
来看一张很有意思的图,Linux 在喝 Windows 。。。哈哈
众所周知,计算机主机是由一堆硬件所组成的,那么如何有效地控制这些硬件资源呢,计算机需要一个资源分配管理员,所以就有了操作系统这个概念。除了分配资源之外,还提供计算机运行所需功能,更是为工程师提供了更易开发的环境和接口。
到这里了,你大概就知道了,
Linux 就是【操作系统】,即【核心】与【系统呼叫】这两层,也就是【硬件】与【应用程式】中间的部分。
摘自《鸟哥的Linux私房菜-基础篇》第四版
从上图可以看出,核心与硬件的关系密切,但是由于早期的 Linux 是针对 386 开发的,所以只是操作系统而不具备其他的应用程序,因此你还需要在 Linux 基础上安装你所需要的软件。那么它和我们知道的 Windows 是一样的嘛,可以在不同的电脑上运行?
不同种类的操作系统具有自己的核心,而硬件是由核心控制的,所以需要修改操作系统的源码才能进行【软件移植】。
那么 Linux 与 Windows 谁厉害呢?
优缺点如下:
对于首次接触 Linux 的朋友来说,大改会觉得奇怪,为什么有这么多使用者,分什么拥有者,群组还有其他人之类的,有什么用?
其实这是一种相当健全且好用的安全防护功能,可以在最大程度上尊重每个人的隐私权,并且根据每个人的喜好进行工作环境的个性化。让我用一个例子来说明这其中的关系。
假设你和自己的女票写了情书,可能是微信,可能是email,现在你想把这个情书打印或者转存成文件,放在自己家里的电脑里,但是你并不希望其他人看到这个情书。
所以你把这个文件设置成只有你才能查看和编辑,其他人只会知道这是一个有趣或者秘密的文件。
那么群组呢?其实群组也是最有用的功能之一,尤其是当你在团队开发时。一方面,你需要开放一些资源给团队的成员使用;另一个方面,你不能开放所有资源给团队成员使用。
举个例子,你的情书当然不会开放给群组使用,但是家庭相册是需要开放给每个人使用和查看的。
这个时候你只需要开放大家查看和下载家庭相册的权利即可。但是你需要给其他人别的权力,比如大家都可以上传属于自己的文件,就像你的情书一样。同时这是一个群组,也就是说,和微信或者QQ群一样,除了家庭群组之外,你还可以拥有其他群组,比如基友,比如学校。
其他人是什么意思呢?还是以刚才的例子为例。
不同群组中的人之间就是其他人关系,除非大家通过共同的一个人,才能分享互相之间的资源。
在 Linux 系统中,默认情况下,所有的系统账号与相关信息,都记录在下面这个文件夹下 /etc/passwd。
对于上一节谈到的文件权限,作为一个重要指令,那么如何查看当前文件的归属?
从左向右,依次是文件权限,文件个数,文件拥有者,群组,文件大小,文件修改日期,文件名。
这里用到了一个命令行是:
ls -lah
具体的含义将会在下面详细介绍,具体来看一下文件权限部分的情况。
可以看到整个部分一共分为十个位置,分别是文件类型,文件拥有者权限,群组权限,其他人权限。其中,文件类型一共分为几种:
接下来的字符rwx分别是什么意思呢?
需要注意的是,这三种权限的相对位置不会发生改变,如果没有该权限,那么该位置是 - 。
每个文件都会和其他文档之间构建一个文件系统,这里需要注意的是,对于文件夹来说,至少连接数是2。其实表示的就是当前文件夹下的文件夹个数,所以记得算上下面两个。
这两项可能决定了当前文件在不同人手里的权限,可以通过一个命令进行查询。
该项表示文件大小,默认单位是bytes。如果想要变成带单位的表示,只需要加上 -h 即可。这里文件较小,所以差别较小。
如果想要显示详细时间的话,使用命令 ll 即可。
除了 . 和 … 之外,就是正常的文件名。
如果想要查看自身用户,可以使用 whoami
命令用于显示自身用户名称,相当于执行 id -un
指令。
Linux命令格式
command [-options] [parameter1] ...
ls -a 显示所有文件及目录 (. 开头的隐藏文件也会列出)
ls -l 除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出
ls -A 同 -a ,但不列出 “.” (目前目录) 及 “…” (父目录)
ls -F 在列出的文件名称后加一符号;例如可执行档则加 “*”, 目录则加 “/”
ls -R 若目录下有文件,则以下之文件亦皆依序列出
ls --help 帮助文档
man ls
空格:显示手册页的下一屏
Enter键:一次滚动手册页的一行
b:回滚一屏
f:前滚一屏
q:推出man命令
h:列出所有功能键
/word 搜索word字符串
ls -h以人能看懂的方式显示
ls > test.txt
ls >> text.txt
*,? 通配符
其中 * 是代表多个字符的匹配,? 是代表某一个字符的匹配。
Tab键可以自动补全
方向键可以回溯历史
history可以看看历史
clear 清屏
which 在环境变量$PATH设置的目录里查找符合条件的文件
du ./目录 -h 查看某个目录大小
| 管道
grep 关键字过滤
grep [0-9]abs[0-9] test.txt -n 查找4abc5
grep ^1 test.txt 搜寻以1开头
grep 1$ test.txt 搜寻以1结尾
cd 切换主目录
cd ~ 切换主目录
cd . 切换当前目录
cd … 切换上级目录
mkdir abs 创建abs目录
mkdir ./a/b/c -p 递归创建目录
rm * -rf 删除所有,递归,无提示
rm *.png -rf 和 rm * .png -rf
ln -s 创建一个软链接,相当于快捷方式。删除源文件,软链接置零
修改源文件,硬链接也修改
硬链接只能链接普通文件,不能链接目录。
find可以递归查找指定目录下所有子目录
find ./ -size 4k/+4k/-4k 在当前目录下寻找大小等于/大于/小于4k的文件(k小写,M大写)
find ./ -size +1k -size -3k 在当前目录下寻找大小大于1k小于3k的文件
find ./ -perm 0777 在当前目录下寻找权限为777的文件
cp hello.c mike.c 复制hello.c为mike.c
cp test/ mike -r 复制test目录为mike目录
cp hello.c result.c -v 能看到复制的进度
mv hello.c a.c 移动并改名
mv a.c amd 移动并改名
tar -cvf abc.tar abc 把abc这个目录打包,生成一个文件名字叫abc.tar
tar -xvf abc.tar 把abc.tar这个文件中所有的文件提取出来
tar -xvf abc.tar -C mike 指定解压目录
tar只负责把多个文件打包,而不负责压缩
其中,-c 创建 -x 解压 -v 进度 -f 文件名
gzip 【-r】 abc.tar 把abc.tar文件压缩为abc.tar.gz
gzip -d abc.tar.gz 把abc.tar.gz解压为abc.tar
tar -czvf abc.tar.gz 所需文件,一步到位,从普通文件之间变成tar.gz
tar -xzvf abc.tar.gz 一步到位,从tar.gz变成普通文件
bzip2 abc.tar 压缩文件为abc.tar.bz2
bzip2 -d abc.tar.bz2 解压缩文件为abc.tar
tar -cjvf abc.tar.bz2 所需文件
tar -xjvf abc.tar.bz2
zip -r abc.zip abc.tar 把abc.tar压缩为abc.zip
unzip abc.zip abc.tar 把abc.zip解压为abc.tar
ubuntu系统在安装的时候没有设置过root用户的密码,或者设置了密码都可以:
useradd -d /home/abc abc -m 新建一个用户,用户名叫abc
su不加-,只是切换用户,但不改变当前目录
su - ,切换用户,同时将当前目录切换到目标用户的主目录
userdel abc
删除abc这个用户,但不会自动删除abc的主目录
userdel -r abc
删除abc用户,同时自动删除用户的主目录