Linux 常用命令笔记
一. 认识Linux
1. 什么是操作系统(OS)
- 向下能够直接控制硬件,向上能够支持软件的运行
- 操作系统是一套软件代码,这套代码比较特殊可以直接控制硬件
- Linux内核是用C语言写的
如果想要研究Linux内核的话,去研究最早的版本。所有的发行版本都是基于Linux的内核基础上添加外包装就成为了一个新的操作系统,所以最核心的还是Linux内核。此处链接到内核源码网址
二. 目录结构
1. Windows平台
2. 类Unix系统目录结构
三. Linux 命令
3.1 Linux命令的基本格式
关于参数:
- 如
ls /
,表示显示根目录下的文件夹,ls /etc
,表示显示根目录下etc文件夹里的内容,这里ls后面接的叫参数
关于选项:
-
ls -lah
,ls -a
,这里ls -选项
,命令后面带’–'的叫做选项
3.2 ls 命令
-
ls -l
:表示以列表的形式显示文件,不显示单位
-
ls -l -h
:表示显示文件大小的单位 -
ls -a
:表示显示当前目录下的所有文件,包含隐藏文件
3.3 查看帮助文档
< 1 > --help
< 2 > man 命令
3.4 history 命令
- 查看历史打印过的命令,前面的数字表示使用过命令的数量编号
- 此处使用
! 2074
,表示字节执行以前执行过的那条命令
3.5 通配符命令
< 1 > 只显示以2开头的文件
< 2 > 显示以1开头,3结尾,中间是任何数或字符的文件
< 3 > 显示以1开头,3结尾,中间是数字1-5之间的文件
3.6 重定向命令
< 1 > 重定向符号 ’ > ’
- 把原来显示在终端的内容重定向到文件里
< 2 > 重定向符号 ’ >> ’
- 相比于 > 具有追加功能,即不会删除原来的内容
3.7 more 命令
< 1 > 基本使用
- 以文档的形式查看文件内容,可以上下屏翻页查看,B是向上一页(back),F是向下一页(forward)
- 与cat的区别是,cat一次显示出所有的内容,翻页起来麻烦
- 一般看大文件的内容用more命令,按q退出
< 2 > 与其他命令相互配合
- 把
/bin
显示在终端的内容放在 | 里,然后more命令把 | 里的内容显示出来
- | 称为管道
- | 的左边是一个命令,右边也是一个命令,通过管道将两个命令结合在一起(这个用的比较多)
3.8 相对路径与绝对路径
< 1 > 基本概念
相对路径:从当前路径开始算起的路径。
绝对路径:从根目录开始算起的路径。
< 2 > 在 cd 命令里的使用
-
cd ./A
表示跳到当前路径下的A文件夹,此处的.
表示的是当前文件夹。 -
cd ..
表示返回当前路径的上一个文件夹(..
表示当前路径的上一个文件夹) -
cd ../..
表示跳到上上层文件夹(这是相对路径) -
cd -
表示返回到你上一次操作的路径,类似电视遥控器里的回看。 -
cd ~
表示跳回到家路径(快速回家)
3.9 创建树形文件夹
命令:mkdir A/B/C/D/E -p
3.10 rmdir 和 rm 命令
-
rmdir
只能删除空的文件夹 -
rm
可以删除文件和文件夹以及非空文件夹,删除文件夹的时候要加-r
选项
3.11 mv命令
- 命令:
mv (原文件的名字) (新文件的名字)
- 核心目的是移动某个文件:
mv 111.txt LAOWANG/
:表示把111.txt剪切粘贴到LAOWANG这个文件夹里 - 顺带的功能是能给一个文件或者一个文件夹改名
3.12 Linux 系统下的链接
- Linux里的软链接类似Windows里的快捷方式
< 1 > 软连接
-
关于软连接的解释:
创建的软链接就是右边的1-softlink.txt
,此时它是指向源文件1.txt的,我们可以通过1-softlink.txt
来运行我们的源文件,如果删除了源文件1.txt,上图红色的箭头就断开了,那么软连接文件就找不到源文件了,也就打不开源文件了。 -
创建软连接的方式:
ln -s (原文件) (新文件名)
—(选项-s表示soft,软)
< 2 > 硬连接
-
关于硬链接的解释:
相当于给同一份数据内容增加了一个文件名,如果将源文件1.txt删除了,还能够通过硬链接文件找到源文件的内容。 -
创建硬链接的方式:
ln (原文件) (新文件名)
—不要加-s选项
< 3 > 硬链接数的概念
- 创建一个软连接不会增加硬链接数的个数,创造一个硬链接会增硬链接的个数,下图能够看出,只要硬链接数为0,源文件的数据才被彻底删除,硬链接数的查询方式如下:
- 举例2
3.13 cat 命令 以及与重定向的配合使用
< 1 > 一次显示多个文件的内容
< 2 > 把两个文件内容合并到一个文件
3.14 grep 命令
-
grep "ntfs" xxx.txt
:搜索xxx.txt文件中含ntfs四个字符的内容 -
grep "^ntfs" xxx.txt
:搜索xxx.txt文件中必须开头是ntfs四个字符的内容 -
grep "ntfs$" xxx.txt
:搜索xxx.txt文件中必须结尾是ntfs四个字符的内容 - 总之grep是在文件里搜内容
3.15 cp 命令
- 作用:复制拷贝一个文件,原文件不会被删除
- 只要操作一个文件夹时报错,加入 -r 选项
3.16 find 命令
- find 是在文件夹里搜文件名,grep是在文件里面搜具体内容
3.17 tar 命令
< 1 > 打包和解包
-
tar -cvf test.tar *.py
:把.py
结尾的文件打包成test.tar
文件 -
tar -xvf test.tar
:把test.tar
解包,原包不会删除 - 以上打包和解包没有压缩,此时虽然放在同一个文件夹里,但是它的大小没有变,所以不常用,而下面的压缩可以减小包占用硬盘的大小
< 2 > 打包和解包并压缩方式1
-
tar -zcvf test.tar.gz *.py
:打包加上压缩 -
tar -zxvf test.tar.gz
:解开压缩包(tar命令时最后面加上选项-C (路径)可以指定解压的位置)
< 3 > 打包和解包并压缩方式2
-
tar -jcvf test.tar.bz2 *.py
:打包并压缩 -
tar -jxcf test.tar.bz2
:解压缩
< 4 > 打包和解包并压缩方式3
-
zip zzz.zip *.py
:打包并压缩 -
unzip zzz.zip
:解压缩(用zip解压缩加入-d可以指定路径)
3.18 查看任务进程
< 1 > ps 命令
-
ps -aux
:显示乌班图所有开启的进程,显示一遍就结束了,类似Windows里的任务管理器
< 2 > top、htop命令
- top 可以实时显示进程(不停刷新)
- htop 也显示进程,更加高级
3.19 kill 命令
-
kill -9 9822
:杀死9822这个进程,(-9 表示强制杀死)
3.20 shutdown、reboot
-
shutdown -h now
:直接关机 -
reboot
:重启
3.21 df 命令
-
df -h
:查看硬盘的使用情况
四. 与用户相关的Linux命令
4.1 useradd 命令
-
sudo useradd shuaige -m
:创建一个新的用户,用户名叫做shuaige,-m表示创建ssss账户的时候顺便创了一个文件夹当作sss的家目录,创建用户的同时默认已经创建了一个组,组名=用户名(但是它默认不在超级管理员的组里) - 确定用户创建成功的方式:执行
cat /etc/passwd
命令,最低下会多一行用户名开头的代码,表示创建成功 - 此时如果要切入到新创建的用户会报错,因为默认没有给其设置密码:
- 使用
sudo passwd shuaige
命令给其设定密码 - 切换账户与退出账户
4.2 ssh 命令
-
ssh [email protected]
:远程登录用户名为python,IP地址为172.16.7.139的系统(exit注销)
4.3 建议
- 以后不要开多个终端,用另一种方式开第二个中断,类似浏览器下的多个小窗口:
- 命令:Ctrl+Shift+T 可以在同一个窗口里再打开一个标签,Alt+1/2可以切换标签
4.4 userdel 命令
-
sudo userdel 用户名
:删除用户,这个目录下的shuaige用户就没了
但是该用户的家目录文件没有被删除 -
sudo userdel -r 用户名
:同时删除用户和用户家目录下的文件夹,此时以上两个图片都不存在shuaige这个用户
4.5 切换到超级管理员
- Ubuntu利用
sudo -s
切换到root超级管理员,不用su root
4.6 用户组相关
- 第一个python表示文件的拥有者,表示后面的这个1.py是这个python用户创建的
- 第二个python表示用户组,用户组的作用是如果某个用户在这个组里,那么这个组具有的对这个文件的任何权限,组里的某个用户也具有,一个组里可以有多个用户,这里的python用户就是在python组里
- 当我们使用useradd创建用户的同时默认已经创建了一个组,组名=用户名(但是它默认不在超级管理员的组里)
- Ubuntu默认装好之后,含有sudo组和adm组,当我们新建了一个普通用户,决定它能不能够使用超级管理员权限sudo,或者直接切换到超级管理员就看这个用户在不在这两个组里
为创建的普通用户添加sudo权限:
4.7 chown 命令
- 修改文件的拥有者
4.8 chgrp 命令
- 修改用户所属于的组
- 此时dong4716138具有什么权限,谁在这个组里,谁就具有这些权限
五. 修改文件的权限
5.1 三种权限的解释
- 第一个符号为 - 表示为普通文件,第一个符号为d为文件夹
eg:-rw-rw-r--
,一用有十个符号,第一个符号单独一组,后面每三个一组
如此例子中,剩余三组的第一个组为文件拥有者的权限
第二个组为同组者的权限
第三个组为其他人的权限 - r表示可读,w表示可写,x表示可执行,后面的九个字符中只要出现 - 就表示没有指定的权限
5.2 修改权限的方法
< 1 > 字母法
- u 表示文件的拥有者, g 表示同组, o 表示其他人
-
chmod u=rwx 2.py
将2.py的拥有者权限改为可读可写可执行 -
chmod u=w 2.py
将2.py的拥有者权限改为只能写 -
chmod g=rx 2.py
将2.py的同组者权限改为可读可写可执行 -
chmod o=rwx 2.py
将2.py的其他人权限改为可读可写可执行 -
chmod u=r,g=r,o=r
一次改三个的权限
< 2 > 数字法
- 定义了:
r----->4
w----->2
x----->1
所以chmod 127 2.py
中1表示文件拥有者拥有的权限是只可执行,2表示同组者拥有的权限是只可写,其他成员拥有的权限是可读可写可执行