您现在的位置是:网站首页 > 心得笔记

Linux基础学习

盛悦2022-04-212252人围观
简介Linux的学习对于一个程序员来说是非常重要的,在自我学习的过程中做好笔记记录,大家共勉

一、快捷键:

ctrl+a(after) 光标跳到命令行的开头
ctrl+e(end) 光标跳到命令行的结尾
ctrl+u 从光标位置剪切到行首
ctrl+k 从光标位置剪切到行尾
ctrl+y 粘贴命令
ctrl+c 终止正在执行的命令
ctrl+l 清楚屏幕并将当前行移到页面顶部
history 列出之前使用过的所有命令,然后输入 ! 命令加上编号( !2 )就可以直接执行该历史命令
一个命令就是一个可执行程序。which 查看命令的可执行文件所在路径
which node => /usr/local/bin/node


二、文件


2.1、查看文件:

cat 一次性显示文件所有内容,更适合查看小的文件。常用参数: cat -n 显示行号

less 分页显示文件内容,更适合查看大的文件。 
空格键:前进一页 b:后退一页 回车键:前进一行 y:后退一行 q:停止读取文件

head 显示文件的开头几行(默认是10行) 常用参数: head laravel.log -n 2

tail 显示文件的结尾几行(默认是10行)
常用参数:
-n : tail laravel.log -n 
-f : 会每过1秒检查下文件是否有更新内容,也可以用 -s 参数指定间隔时间 tail -f -s 4 xxx.log


2.2、创建文件:

touch 创建一个文件
mkdir 创建一个目录 常用参数:-p 递归的创建目录结构 mkdir -p one/two/three


2.3、文件的操作:

cp 拷贝文件和目录 cp file file_copy(file是源文件 file_copy是拷贝出来的文件) 常用参数:-r 递归的拷贝,常用来拷贝一整个目录   
cp file file_copy --> file 是目标文件,file_copy 是拷贝出来的文件cp file one --> 把 file 文件拷贝到 one 目录下,并且文件名依然为 filecp file one/file_copy --> 把 file 文件拷贝到 one 目录下,文件名为file_copycp *.txt folder --> 把当前目录下所有 txt 文件拷贝到 folder 目录下

mv 移动(重命名)文件或目录
mv file one --> 将 file 文件移动到 one 目录下mv new_folder one --> 将 new_folder 文件夹移动到one目录下mv *.txt folder --> 把当前目录下所有 txt 文件移动到 folder 目录下mv file new_file --> file 文件重命名为 new_file

rm 删除文件和目录
rm new_file  --> 删除 new_file 文件rm f1 f2 f3  --> 同时删除 f1 f2 f3 3个文件
【常用参数】
-i 向用户确认是否删除;
-f 文件强制删除;
-r 递归删除文件夹,著名的删除操作 rm -rf 。



2.4、链接(ln->link的缩写,标识创建链接)

知识储备:linux文件是怎么存储的?
Linux文件的存储方式分为三个部分:文件名、文件内容和权限,其中文件名的列表是存储在硬盘的其他地方和文件内容分开存储的,每个文件名通过inode标识绑定到文件内容。

Linux有两种链接类型:软连接和硬链接

1、硬链接:使链接的两个文件共享同一个文件内容,就是同样的inode,一旦文件1和文件2之间有了硬链接,那么修改任意一个文件,修改的都是同一块内容。他的缺点是只能创建指向文件的硬链接,不能创建指向目录的(其实可以,只是非常复杂)。而软连接可以,因此软连接使用更加广泛。
简言之:文件1和文件2指向同一个文件内容
如果我们用 rm file1 来删除 file1 ,对 file2 没有什么影响,对于硬链接来说,删除任意一方的文件,共同指向的文件内容并不会从硬盘上删除。只有同时删除了 file1 与file2 后,它们共同指向的文件内容才会消失。

2、软链接:就类似于windows中的快捷方式
其实 file2 只是 file1 的一个快捷方式,它指向的是 file1 ,所以显示的是 file1 的内容,但其实 file2 的 inode 与 file1 并不相同。如果我们删除了 file2 的话, file1是不会受影响的,但如果删除 file1 的话, file2 就会变成死链接,因为指向的文件不见了。
简言之:文件1指向文件内容,文件2只是文件1的一个快捷方式,指向文件1


三、用户与权限

知识储备:Linux 是一个多用户的操作系统。在 Linux 中,理论上来说,我们可以创建无数个用户,但是这些用户是被划分到不同的群组里面的,有一个用户,名叫 root ,是一个很特殊的用户,它是超级用户,拥有最高权限。

3.1用户
sudo 以root身份运行命令
useradd 添加新用户
passwd 修改用户密码 passwd 
useradd yuer -> 添加一个yuer用户,添加完之后在 /home 路径下可以查看passwd yuer --> 修改yuer用户的密码复
userdel 删除用户   userdel yuer -> 只会删除用户名,不会从/home中删除对应文件夹 userdel yuer -r --> 会同时删除/home下的对应文件夹
su 切换用户,需要root权限 
sudo su -> 切换为root用户(exit 命令或 CTRL + D 快捷键都可以使普通用户切换为 root 用户)
su yuer --> 切换为普通用户
su - --> 切换为root用户

3.2群组
知识储备:Linux 中每个用户都属于一个特定的群组,如果你不设置用户的群组,默认会创建一个和它的用户名一样的群组,并且把用户划归到这个群组。

groupadd 创建群组,用法和 useradd 类似。 groupadd friends
groupdel 删除一个已存在的群组   groupdel goods
groups 查看用户所在群组   groups yuer -> 查看 yuer 用户所在的群组
usermod 用于修改用户的账户
【常用参数】
-l 对用户重命名。需要注意的是 /home 中的用户家目录的名字不会改变,需要手动修改。
-g 修改用户所在的群组,例如 usermod -g friends yuer 修改 yuer 用户的群组为 friends 。
-G 一次性让用户添加多个群组,例如 usermod -G friends,foo,bar yuer 。
-a -G 会让你离开原先的群组,如果你不想这样做的话,就得再添加 -a 参数,意味着append 追加的意思。
chgrp 用于修改文件的群组 chgrp bar file.txt --> file.txt文件的群组修改为bar
chown 改变文件的所有者,需要 root 身份才能运行。 
chown yuer file.txt --> 把其它用户创建的file.txt转让给yuer用户
chown yuer:bar file.txt --> 把file.txt的用户改为yuer,群组改为bar
【常用参数】
-R 递归设置子目录和子文件, chown -R yuer:yuer /home/frank 把 frank 文件夹的用户和群组都改为 yuer 。

3.3、文件权限管理
chmod 修改访问权限 chmod 740 file.txt
【常用参数】
-R 可以递归地修改文件访问权限,例如 chmod -R 777 /home/yuer
修改权限的确简单,但是理解其深层次的意义才是更加重要的。下面我们来系统的学习Linux 的文件权限。

其中 drwxr-xr-x 表示文件或目录的权限。让我们一起来解读它具体代表什么?(1 3 3 3 文件类属 所有者权限 群组用户权限 其他用户权限)
d :表示目录,就是说这是一个目录,普通文件是 - ,链接是 l 。(directory)
r :read 表示文件可读。(read)
w :write 表示文件可写,一般有写的权限,就有删除的权限。(write)
x :execute 表示文件可执行。(execute)
- :表示没有相应权限。

现在再来理解这句权限 drwxr-xr-x 的意思:
它是一个文件夹;
它的所有者具有:读、写、执行权限;
它的群组用户具有:读、执行的权限,没有写的权限;
它的其它用户具有:读、执行的权限,没有写的权限。

现在理解了权限,我们使用 chmod 来尝试修改权限。chmod 它不需要是 root 用户才能运行的,只要你是此文件所有者,就可以用 chmod 来修改文件的访问权限。
数字分配权限 r w x 分别对应 4 2 1
因此要改变权限,只要做一些简单的加法就行:chmod 640 hello.php # 分析6 = 4 + 2 + 0 表示所有者具有 rw 权限4 = 4 + 0 + 0 表示群组用户具有 r 权限0 = 0 + 0 + 0 表示其它用户没有权限对应文字权限为:-rw-r-----

3.4、查找文件
find 用于查找文件,它会去遍历你的实际硬盘进行查找,而且它允许我们对每个找到的文件进行后续操作,功能非常强大。
find <何处> <何物> <做什么>
何处:指定在哪个目录查找,此目录的所有子目录也会被查找。
何物:查找什么,可以根据文件的名字来查找,也可以根据其大小来查找,还可以根据其最近访问时间来查找。
做什么:找到文件后,可以进行后续处理,如果不指定这个参数, find 命令只会显示找到的文件。

eg1:根据文件名查找
find -name "file.txt" --> 当前目录以及子目录下通过名称查找文件
find . -name "syslog" --> 当前目录以及子目录下通过名称查找文件
find / -name "syslog" --> 整个硬盘下查找syslog
find /var/log -name "syslog" --> 在指定的目录/var/log下查找syslog文件
find /var/log -name "syslog*" --> 查找syslog1、syslog2 ... 等文件,通配符表示所有
find /var/log -name "*syslog*" --> 查找包含syslog的文件
[注意] find 命令只会查找完全符合 “何物” 字符串的文件,而 locate 会查找所有包含关键字的文件。

eg2:根据文件大小查找
find /var -size +10M --> /var 目录下查找文件大小超过 10M 的文件
find /var -size -50k --> /var 目录下查找文件大小小于 50k 的文件
find /var -size +1G --> /var 目录下查找文件大小超过 1G 的文件
find /var -size 1M --> /var 目录下查找文件大小等于 1M 的文件

eg3:根据文件最近访问时间查找
find -name "*.txt" -atime -7  --> 近 7天内访问过的.txt结尾的文件

eg4:仅查找目录或文件
find . -name "file" -type f  --> 只查找当前目录下的file文件
find . -name "file" -type d  --> 只查找当前目录下的file目录


上一篇:工厂模式

下一篇:GET和POST的区别