您现在的位置是:网站首页 > 心得笔记
Linux基础学习
简介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的区别