## 1.日常指令 ##### 命令格式 命令名称 [参数] [对象] ``` cal cal -3 cal -3 8 2005 cal -3m 8 2005 ``` ##### 常用快捷键 - ctrl+c:终止进程的执行(打断指令的执行) - ctrl+a:将光标移动到行首 - ctrl+e:将光标移动到行尾 - ctrl+w:删除光标所在位置的单词 - ctrl+u:删除光标前面的内容直到行首 - ctrl+k:删除光标后面的内容直到行尾 - ctrl+l:清屏 (输入clear) ##### 0.帮助指令 whatis 指令名称 - 查看指令的作用 man 指令名称 - 获取命令的使用手册 指令名称 --help/-h - 获取命令的使用方法 whereis 指令名称 - 获取指令相关内容所在位置 which 指令名称 - 指令对应的可执行文件所在的位置 ``` 绝对路径:写文件或者文件夹路径的时候从/或者~开始层层往下 相对路径:1)写路径的时候用.表示当前目录,然后层层往下写 (如果路径是./开头的,这个./可以省略) 2)写路径的时候用..表示当前目录的上层目录,然后层层往下写 Linux操作系统中: / - 系统根目录(Linux操作系统硬盘中最上层的那个文件夹) ~ - 用户根目录(用户不同,用户根目录对应的文件夹不一样) ``` ##### 1.cd指令 - 进入文件夹 cd 文件夹路径(路径可以是绝对路径也可以是相对路径) - 进入到指定路径对应的文件夹 cd .. - 返回上层目录 cd / - 进入操作系统根目录 cd ~ - 进入用户根目录 ##### 2.ls指令 - 显示目录(文件夹)中的内容 ls - 直接显示当前文件夹中的内容的名字(隐藏文件和文件夹看不到) ls -l/-lh - 显示当前文件夹中的内容和内容的基本信息(隐藏文件和文件夹看不到) ls -a - 显示当前文件夹中所有的内容(包括隐藏文件) ls -R - 递归显示当前目录以及当前目录下所有的子目录中的内容 ls -r - 内容倒序显示 ls -S/-t - 显示文件夹中的内容,并且内容按大小/时间从大到小排序 ``` ls -Sr - 按大小从小到大排序 ls -Srlh - 按大小从小到大排序,并且显示内容的基本信息 ls -S -r -lh ``` ls -参数 文件夹路径 - 显示指定文件夹中的内容 ##### 3. pwd指令 pwd - 查看当前目录的绝对路径(系统目录下的) ##### 4.文件操作 1)touch指令 - 新建文件 touch 文件路径 - 在指定位置创建指定文件 ``` touch a.txt - 在当前目录下新建一个文件a.txt touch ../a.txt - 在当前目录的上层目录新建一个文件a.txt touch /home/a/a.txt - 在根目录下home目录中的a目录里面创建一个文件a.txt ``` 2) cat指令 - 查看文件内容(读文件) cat 文件路径 - 读取指定路径对应的文件的内容 3) vim指令 vim 文件路径 - 使用vim打开文件 (按i进入编辑状态;按esc键退出编辑状态 -> :wq) ##### 5.文件夹操作 1) mkdir指令 - 新建文件夹 mkdir 文件夹路径 - 在指定位置创建文件夹 mkdir -p 文件夹路径 - 在指定位置创建文件夹(会创建目录中所有不存在的文件夹) ``` mkdir -p a/b/c - a,b,c可以都没有,会在当前目录中创建a,在a中创建b,b中创建c mkdir -p a/{b,c} - a,b,c可以都没有,会在当前目录中创建a,在a中创建b和c 注意:{}中不能有空格 ``` ##### 6.删除文件和文件夹(灵魂三问:不要慌!问:真的要删吗?确定吗?不删行不行?) 1)rm指令 - 删除文件和文件夹 rm 文件路径 - 删除指定文件(删除的时候会询问是否确定删除,y-同意, n-不同意) rm -f 文件路径 - 删除指定文件(删除的时候不询问) rm -i 文件路径 - 删除指定文件(删除的时候会询问是否确定删除,y-同意, n-不同意) rm -r 文件夹路径/文件路径 - 删除指定文件夹或者文件 2) rmdir指令 - 删除空目录 rmdir 文件夹路径 - 删除指定文件夹(这个文件夹必须是空的) 3)cp指令 - 拷贝 cp 文件路径1 文件路径2 - 将文件路径1指定的文件中的内容复制到文件路径2指定的文件中(文件路径2对应的 文件本身是不存在) - 将文件1中的内容复制粘贴到文件2(如果文件2不存,会自动创建;如果存在会询问 是否覆盖) cp 文件路径 文件夹路径 - 将指定文件复制粘贴到指定文件夹中 cp -r 文件夹路径1 文件夹路径2 - 将文件夹1复制粘贴到文件夹2中(注意:被拷贝的文件夹不能是空的) 4)mv指令 - 移动 mv 文件路径1 文件路径2 - 将文件1移动文件2所在的位置 ``` mv 文件名1 文件名2 - 对文件进行重命名(将文件名1修改为文件名2) mv a.txt b.txt - 将当前文件夹中的a.txt重命名为b.txt mv /home/a.txt /home/b.txt - 将系统根目录下home文件中的a.txt重命名为b.txt ``` mv 文件路径 文件夹路径 - 将文件直接移动到指定文件夹中 mv 文件夹路径1 文件夹路径2 - 将文件夹1移动到文件夹2中 ##### 7.history指令 - 获取历史记录(指令的历史记录) history - 显示当前系统已经执行过的所有的指令 ```shell #如果想要显示历史记录的时候显示指令执行的时间需要修改~/.bashrc文件: export HISTTIMEFORMAT="[%Y‐%m‐%d_%T] " # 修改完成后需要通过指令: source ~/.bashrc 去执行这个配置文件, 最后历史记录的时间才会生效 ``` ##### 8. 创建连接 ###### 1)创建软连接(掌握!) ln -s 源文件路径 软连接文件地址 - 给源文件在指定位置创建一个软连接(软连接本质就是用来保存源文件绝对 地址的一个文件, 可以理解为windows中的快捷方式) 注意: **源文件路径必须写绝对路径** 如果删除或者移动源文件,软连接会直接无效 ###### 2) 创建硬链接 ln 源文件路径 硬连接文件地址 - 给源文件在指定位置创建一个硬链接 硬链接的本质就是源文件内容的另外一个引用,所以删除或者移动源文件硬 链接仍然有效,只是删除硬链接会变成普通文件 ##### 9.进程相关指令 ###### 1) ps指令 ps - 查看进程状态 ps -aux - 查看当前所有的进程的信息 ps grep 进程名/进程ID - 根据进程名/进程ID查看指定进程 ###### 2)top指令 top - 实时查看当前所有的进程信息和系统信息 top -p PID1,PID2,…. - 实时监测指定的进程 ###### 3)free指令 free - 显示当前系统的内存信息,显示的时候以kb为单位 free -单位 - 显示当前系统的内存信息,以指定单位来显示 ``` free -m - 显示当前系统的内存信息,以Mb为单位 ``` ###### 4)kill指令 kill 进程ID - 杀掉指定id对应的进程 kill -1/-9/-15 进程ID - 以指定的方式(-1表示不间断重启; -9表示强制杀死进程;-15表示正常结束进程)杀掉指定 进程 pkill 进程名 - 杀死指定进程名对应的进程(中间可以加-1/-9/-15) killall 进程名 - 杀死和进程名相关的所有进程 ###### 5)uptime uptime - 获取系统信息 ##### 10.用户管理 用户分为两种:1.超级管理员(root) 2.普通用户 root拥有对计算机进行任何操作的权限、普通用户只能对自己的用户根目录中的内容进行管理 一个Linux操作系统可以有多个用户(user),也可以有多个用户组(group); 用户和用户组之间的关系是多对多 只有root权限才可以创建用户 普通用户只能操作对应的用户根目录中的内容(普通用户的用户根目录是/home下面和用户名同名的文件夹) users - 查看当前用户 (可以通过查看/etc/passwd文件来查看当前系统所有的用户) groups - 查看当前分组 groupadd 分组名 - 创建分组(管理员才能创建; 可以通过查看/etc/group文件来查看当前系统所有的分组) *useradd 用户名 - 创建指定用户(1.用户创建成功后系统会自动在/home目录下创建一个和用户名同名的文件夹;2.会自动创建和用户名同名的分组,并且将当前用户添加到这个分组中) - 这是root权限 *passwd 用户名 - 修改用户密码(需要root权限) *su 用户名 - 切换账号(root登录的时候切换不需要密码,其他账号需要) *exit - 退出当前账号 useradd -G 分组1,分组2,… 用户名 - 创建指定用户,并且将用户添加到指定分组中 usermod -G 分组1,分组2 用户名 - 修改用户分组 sudo - 在命令前sudo是以管理员身份执行指令 注意: 不是所有的用户都可以通过sudo来以管理员身份执行指令,如果想要能够使用sudo必须添加配置 a.ubuntu: 将需要有管理员身份的账号添加到sudo分组中 b.redhat和contos: 在/etc/sudoers配置文件中添加代码: ```shell ## Allow root to run any commands anywhere root ALL=(ALL) ALL #(默认有的) xiaoming ALL=(ALL) ALL #(自己添加的,xiaoming是用户名) ``` ##### 11.文件权限 ` - ` ` rw- r-- r--` | 文件类型 | 所有者权限 | 同组用户权限 | 其他用户权限 | | :-------- | ---------------------- | ------------ | ------------ | | d(目录) | 读(r-)写(w-)可执行(x-) | | | | -(文件) | | | | | l(连接) | | | | 当前文件所有者有读和写的权限,同组用户只有读的权限,其他用户只有可执行的权限:- rw-r----x 当前文件所有者有写的权限,同组用户有读和写的权限,其他用户有读和写的权限:- -w-rw-rw- 默认情况下文件和文件夹的权限: 文件所有者有读写权限, 同组用户和其他用户都是只读权限。 ###### 1)chmod指令 chmod [a,u,g,o]/[+-]/[r,w,x] 文件地址 - 给指定文件对应指定用户添加或者删除指定权限 (a-所有用户,u-文件所有者,g-同组用户,o-其他用户; +表示添加权限, -表示删除权限; r-表示读权限, w表示写权限,x表示执行权限) ```shell chmod a-x 文件地址 # 删除所有用户的执行权限 chmod u+w 文件地址 # 给文件所有者添加写的权限 chmod a+rwx 文件地址 # 给所有用户添加所有权限 ``` ##### 12.日志管理 ###### 1)显示文件内容 a.cat指令 - 直接显示文件中所有的内容 cat 文件 - 直接查看文件所有内容 总结: 查看文件内容的时候可以加参数-n,让内容在显示的时候显示行号 b.查看部分内容 head -N 文件地址 - 显示指定文件前N行内容(-n参数无效) tail -N 文件地址 - 显示指定文件最后N行内容(-n参数无效) c.分页显示 less 文件 - 按页显示文件内容(通过快捷键控制内容显示过程; 文件内容不会打印到shell/终端里) less -N 文件 - 按页显示文件内容,每次翻页的时候翻N行 more 文件 - 按页显示文件内容(通过快捷键控制内容显示过程; 文件内容会打印到shell/终端里) more -N 文件 - 按页显示文件内容,每次翻页的时候翻N行 ``` 快捷键: - 按 j 向下一行 - 按 k 向上一行 - 按 f 向下翻一页 - 按b 向上翻一页 - 按 g 到全文开头 - 按 G 到全文结尾 - 按 Q 退出 ``` ##### 2)结果的处理 凡是有的打印结果的指令,我们都可以通过相关指令对应结果进行处理 有结果的指令 | 处理方式 ###### a. 管道 - | 如果需要对某一个指令的结果使用另外的指令进行二次处理的时候,就需要用到管道(|) ###### b.sort - 排序 sort - 从小到大排序(将一行内容作为一个字符串,按字符串大小对应内容进行排序,默认不区分大小写) ```shell cat a.txt |sort # 对a.txt的文件内容从小到大排序显示 sort的参数: -r - 逆序 -n - 按照数值大小进行排序(默认是按照文本大小排序) -k N - 按照第N列值进行排序 cat a.txt|sort -nk 1 # 对a.txt的文件内容按第1列数字大小从小到大排序 cat a.txt|sort -rnk 1 # 对a.txt的文件内容按第一列数字大小从大到小排序 cat a.txt|sort -nk 2 # 对a.txt的文件内容按第二列数值大小从小到大排序(默认) cat a.txt|sort -rnk 2 # 对a.txt的文件内容按第二列数字大小从大到小排序 ``` ``` 'azzzzz' 'baaa' 1)字符串比较大小的规则: 比较第一对不相等的字符的大小 中文 > 字母(a<b<c...<z) > 数字(0<1<2<...<9) 2)字符比较大小的规则:比较的是字符的编码值的大小 3)编码值 计算机只能保存数字(数字在计算机中的存储方式:二进制补码) 为了能够让计算机存储文字符号,给每个文字符号绑定了一个固定的数字,每次需要存符号的时候,就存储这个符号对应的那个数字。(符号对应的数字就是这个符号的编码值) 4)编码表(保存和记录了符号和数字之间的对应的关系) ASCII码表 Unicode编码表(万国码;统一码) python中的ord函数可以获取字符对应的编码值。 ``` ###### c.uniq -去重 uniq - 只能将紧挨着的相同行去掉重复的(如果需 要去掉所有重复的行,先排序将相同的行放到一起) ```shell cat a.txt|uniq # 去掉a.txt文件内容中相邻重复的行 cat a.txt|sort|uniq # 去掉a.txt文件内容中所有重复的行 uniq的参数 -c - 重复次数 ``` ###### d.awk - 获取列 awk '{print $N}' - 获取内容中第N列的数据 ```shell history|awk '{print $2}' # 获取历史记录第2列的内容 history|awk '{print $2,$3}' # 获取历史记录第2列和第3列的内容 ``` 练习: ```shell history |awk '{print $4}' |sort |uniq ‐c | sort ‐rnk 1 | head ‐n 3 # 统计最常用的3个指令及其使用次数 ``` ##### 3)输出重定向 - > / >> (将指令的打印结果保存包文件中) 执行有打印结果的指令 > 文件地址 - 将指定指令执行的结果保存到指定文件中(先清除原文件内容再添加) 执行有打印结果的指令 >> 文件地址 - 将指定指令执行的结果保存到指定文件中(直接将结果追加到原文件中) ```shell history > a.txt #将当前历史记录直接保存到a.txt文件中 # 将最常用的3个指令及其使用次数保存到a.txt文件中 history |awk '{print $4}' |sort |uniq ‐c | sort ‐rnk 1 | head ‐n 3 > a.txt 注意:读到的文件内容处理后不能重定向到原文件中! ``` ##### 4)统计 `wc -c/-w/-l 文件地址` - 统计指定文件中字符/单词/行的数量 (注意:统计字符数量的数,会比实际的字符数多1,多的\0这个字符串结束标志) `有打印结果的指令 | wc -c/-w/-l` ##### 5)查找 ###### grep - 找内容 a. grep 内容 文件地址 - 在指定文件中查找指定内容(返回文件中所有包含指定内容的行) ```shell grep you a.txt # 获取a.txt中包含you的所有的行 grep的参数: -n - 显示结果的时候显示行号 -i - 查找内容的时候忽略大小写 -E - 按正则表达式进行匹配 使用方法: grep -E '正则表达式' 文件 注意: Linux操作系统中正则表达式不支持:\d,\D,\w,\W,\s,\S,\b,\B; 其他语法都支持 -v - 忽略字段 grep you a.txt -v # 获取a.txt中不包含you的所有的行 ``` c. grep -r 内容 文件夹地址 -在指定文件夹中所有的文件中查找指定内容 b. 执行有打印结果的指令 |grep 内容 - 在指令执行结果中查找指定内容 ###### find - 找文件 find 文件夹路径 -name 文件名 - 在指定文件夹下按文件名找指定文件 ```shell # 找指定文件名 find dir1 -name 'test1.py' # 在文件夹dir1找名字是test1.py的文件 find dir1 -name '*.txt' # 在文件夹dir1找后缀是txt的所有文件 find dir1 -name 'test*.txt' find dir1 -name 'test*' find dir1 -name '*c.txt' ``` find 文件夹路径 -size +/-文件大小 - 在指定文件夹下找文件大小满足条件的所有的内容(包含文件和文件夹) ```shell find dir1 -size +4k # 查找在文件夹dir1中所有大于4k的文件 find dir1 -size -4k # 查找在文件夹dir1中所有小于4k的文件 find dir1 -size +5k -size -10k # 查找在文件夹dir1中所有大于5k并且小于10k的文件(文件大小如果是小数,算的时候向上取整) find dir1 -size +4k -name '*.txt' # 查找在文件夹dir1中所有大于4k的txt文件 ``` #### 13.网络管理 ifconfig - 查看网卡状态 netstat -natp - 查看当前系统所有的网络连接状态 netstat -natp |grep 端口号 - 查看指定端口对应网络连接状态 ping 地址 - 给指定地址对应服务器发送数据(主要用来检测当前网络通不通) ping -i 时间(单位秒) 地址 - 每隔指定时间ping一次(时间可以是小数) ping -c 次数 地址 - ping指定次数(不限制次数的时候会不断的ping) wget 地址 - 下载数据 #### 14.压缩和归档 压缩可以让文件变小,一般在需要传输前都会先对文件进行压缩。注意,压缩指令只针对文件有效,并且一次只能压缩一个文件。 归档可以将一个文件夹变成一个文件(tar文件) ##### 1)归档和解归档 - tar tar -cvf 归档文件地址 需要归档的原文件夹地址 - 将文件进行归档操作(既可以对文件进行归档也可以对文件夹 归档) tar -xvf 需要解归档文件地址 - 将指定的归档文件解归档 ##### 2)压缩和解压: gzip,gunzip,xz ###### a.gzip gzip 文件地址 - 压缩指定文件(压缩后会生成一个gz文件,并且会删除原文件) `gzip -c 文件地址 > 压缩文件地址` - 将指定文件压缩指定位置,并且保留原文件 gzip -d 压缩文件地址 - 解压指定文件(解压完成后会删除原压缩文件,解压后的文件直接放在被解压的压缩文件所在的位置) gzip -l 压缩文件地址 - 列出压缩文件中的内容 ###### b.gunzip(解压tgz文件) gunzip 压缩文件地址 - 解压指定文件(解压完成后会删除原压缩文件) ###### c.xz xz 文件地址 - 压缩指定文件(压缩文件后缀是xz) xz -d 压缩文件地址 - 解压指定文件 ### 15.软件安装和包管理工具 包管理工具:yum - yum search:搜索软件包,例如yum search nginx。 - yum list installed:列出已经安装的软件包,例如yum list installed | grep zlib。 - yum install:安装软件包,例如yum install nginx。 - yum remove:删除软件包,例如yum remove nginx。 - yum update:更新软件包,例如yum update可以更新所有软件包,而yum update tar只会更新tar。 - yum check-update:检查有哪些可以更新的软件包。 - yum info :显示软件包的相关信息,例如yum info nginx。 - yum erase 软件: 卸载已经安装的软件 源代码构建安装 1. wget 安装包的路径 -下载安装包 2. gunzip/tar 压缩包 - 解压、解归档 3. (设置安装路径) 4. cd 安装包目录 执行: make && make install -编译安装包程序 5. 给可执行文件添加软连接到/usr/bin目录下 -添加快捷方式 ##### 1.源代码构建python3.x ```shell [root ~]# rpm -qa|grep python3|xargs rpm -ev --allmatches --nodeps (移除旧版本Python) [root ~]# whereis python3 |xargs rm -frv (删除所有剩余文件) [root ~]# wget https://www.python.org/ftp/python/3.10.8/Python-3.10.8.tgz (下载安装包) [root ~]# gunzip Python-3.10.8.tgz (解压) [root ~]# tar -xvf Python-3.10.8.tar (解归档) [root ~]# cd Python-3.10.8 (进入安装包) [root ~]# ./configure --prefix=/usr/local/python310 (设置安装路径) [root ~]# yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel xz-devel (安装相关依赖库) [root ~]# make && make install (编译执行安装文件) ... [root ~]# ln -s /usr/local/python310/bin/python3.10 /usr/bin/python3 (给python指令文件创建快捷方式python3) [root ~]# ln -s /usr/local/python310/bin/pip3 /usr/bin/pip3 (给pip指令创建快捷方式pip3) ```
04.linux日常指令
本节11858字2025-03-13 18:35:56