Linux常用操作及理解之Centos
一、centos的文件和目录
Linux 没有盘符这个概念,只有一个根目录/, 所有文件都在它下面
/lsdt: found系统修复用的 /bin: 二进制命令所在的目录 /boot: 系统引导程序所需要的文件目录,引导系统开机 /dev: 设备软件目录,磁盘,光驱, /etc: 系统配置,启动程序 /home: 普通用户的家,目录默认数据存放目录 /lib: 启动系统和运行命令所需的共享库文件和内核模块存放 /mnt: 临时挂载储存设备的挂载点,u盘插入光驱无法使用,需要挂载然后使用 /opt: 额外的应用软件包 /proc: 操作系统运行时,进程信息和内核信息存放在这里 /root: Linux超级权限用户root的家目录 /sbin: 和管理系统相关的命令,【超级管理员用】 /tmp: 临时文件目录,这个目录被当作回收站使用 /usr: 用户或系统软件应用程序目录 /var: 存放系统日志的目录
二、常用快捷键
tab键:命令或者路径提示及补全; ctrl+c:放弃当前输入,终止当前任务或程序; ctrl+l:清屏; ctrl+shift+c:复制; ctrl+shift+v:粘贴; alt+b :打开connet窗口; alt+1/2/3/4/5… :切换会话窗口
三、Linux常用命令
1、常用Linux命令的基本使用
1.1、ls 查看当前目录下内容
- -a 显示指定目录下所有子目录与文件, 包含隐藏文件
- -l 以列表方式显示文件的详细信息
- -h 配合-l以人性化的方式显示文件大小
1.2、pwd 查看当前所在文件夹
1.3、cd [目录名] 切换文件夹
cd .. 切换到上级目录
cd - 可以在最近的两次目录之间切换
1.4、touch [文件名] 如果文件不存在,新建文件
1.5、mkdir [目录名]创建目录
- -p 可以递归创建目录
1.6、rm [文件名] 删除指定的文件名
- -f 删除文件不提示
- -r 递归地删除目录下的内容,删除文件夹时必须加此参数
1.7、clear 清屏
1.8、tree [目录名] 以树状图 列出目录中的内容
- -d 只显示目录, 不显示文件
- -L [n] 显示几层目录
注:默认没安装tree
yum -y install tree 安装tree组件
yum -y remove tree 卸载tree组件
1.9、cp [文件名] 拷贝文件
- -r 递归复制目标目录的内容
1.10、mv [文件名] 移动文件或重命名
1.11、cat [文件名] 查看小文件内容
- -n 显示行号
- -b 非空行 显示行号
1.12、nl [文件] 查看文件内容且非空行显示行号
1.13、less [文件名] 分屏显示大文件内容
- -N 显示文件内容且显示行号
1.14、head [文件名] 查看文件的前一部分
- -n 表示显示前几行内容
head -n2 5.txt 显示文本的前2行内容
1.15、tail [文件名] 查看文件的最后部分
- -n 显示文件的最后n行
- -f 动态显示文档的最后内容
tail -n1 5.txt #显示文本最后一行内容
1.16、grep 关键字 文件名 根据关键词, 搜索文本文件内容
- -n 显示匹配行和行号
- -i 忽略大小写
- -v 显示不包含关键字的所有行
grep 正则 文件名
^a 行首,搜索以a开头的行
ke$ 行尾,搜索以ke结束的行
1.17、echo [字符串] 将字符串输出到控制台
命令 > 文件 重定向(覆盖) 将命令的成功结果覆盖指定文件内容
命令 >> 文件 重定向(追加) 将命令的成功结果追加指定文件的后面
命令 &>> 文件 重定向(追加) 将命令的失败结果追加指定文件的后面
echo 3333333 >> 01.txt 将3333333追加到01.txt文件
1.18、| 管道
ls /etc/ | grep ^pro #显示/etc/目录下pro开头的文件
1.19、&&与||
- 命令1 && 命令2 如果命令1执行成功了, 才执行命令2
- 命令1 || 命令2 如果命令1执行失败了, 才执行命令2
1.20、ln -s 目标文件绝对路径 快捷方式路径 给目标文件增加一个软链接, 通俗讲就是快捷方式
通配符
- * 代表任意个数的字符
- ? 代表任意一个字符, 且只能是一个
- [abc] 匹配a、b、c中任意一个
- [a-f] 匹配从a到f范围内的任意一个字符
2、查阅命令帮助信息
2.1、--help 帮助信息
command --help
说明:显示command命令的帮助信息
2.2、man手册
说明:
- 空格键 显示手册的下一屏
- Enter键 一次滚动首页也得一行
- b 回滚一屏
- f 前滚一屏
- q 退出
- / word 搜索word字符串
3、搜索命令 find
find [路径] -name '*.txt' 查找指定路径下扩展名是 .txt的文件, 包括子目录
find / -name '*.txt'
4、解压缩命令
4.1、打包
tar -cvf 打包名.tar 被打包的目录
- c 生成档案文件, 创建打包文件
- v 像唐僧 一样报告进度
- f 指定档案的文件名称, f后面一定是 `.tar` 文件, 所以必须放到最后
4.2、解包
tar -xvf 打包名.tar -C 解包路径位置
- x 解包
- C (大写C) 默认保存到当前目录, 通过`-C` 更改解压目录, 注意: 解压目录必须存在
4.3、压缩
tar -zcvf 打包压缩文件名.tar.gz 被压缩的文件/目录
4.4、解压
tar -zxvf 打包文件.tar.gz -C 目录路径
注:z gzip 使用gzip压缩和解压缩
j bzip2 使用bzip2压缩和解压缩
四、VI编辑器
vim = vi improved是vi的升级版,后来将vi作为了vim的快捷方式,vim 文件名 +行数 如果只带上+ 而不指定行号, 会直接定位到文件末尾
VI有三种工作模式
命令模式
打开文件首先进入命令模式, 是使用vi的入口,通过命令对文件进行常规的编辑操作, 例如定位 翻页 复制 粘贴 删除...,在其他图形编辑器下, 通过 快捷键 或者 鼠标 实现的操作, 都在命令模式下实现
末行模式
执行保存 退出等操作,要退出 vi 返回到控制台, 需要在莫行模式下输入命令,末行模式是 vi 的出口
编辑模式
正常的编辑文字
1、末行模式命令
1.1、常用操作
- :w 保存
- :w 文件 另存为
- :q 退出,如果没有保存,不允许退出
- :q! 强行退出,不保存退出
- :wq 保存且退出
- :x 保存并退出
- :ZZ 保存并退出
1.2、查找
/str 查找str
- n 查找下一个
- N 查找上一个
- * 向后查找当前光标所在单词
- # 向前查找当前光标所在单词
1.3、查找并替换
:%s/旧文本/新文本/gc
- y -yes 替换
- n -no 不替换
- a -all 替换所有
- q -quit 退出替换
- l -last 最后一个, 并把光标移动到行首
- ^E 向下滚屏
- ^Y 向上滚屏
2、命令模式
2.1、移动
- h 向左
- j 向下
- k 向上
- l 向右
2.2、行内移动
- w 向后移动一个单词
- b 向前移动一个单词
- 0 行首
- ^ 行首, 第一个不是空白字符的位置
- $ 行尾
2.3、行数移动
- gg 文件顶部
- G 文件末尾
- 数字gg 移动到 数字 对应行数
- 数字G 移动到 数字 对应行数
- : 数字 移动到数字对应的 行数
2.4、屏幕移动
- Ctrl + b 向上翻页
- Ctrl + f 向下翻页
- H 屏幕顶部
- M 屏幕中间
- L L部
2.5、括号切换
% 括号匹配及切换
2.6、 标记
- mx 添加编辑x, x是a~z 或者 A~Z的任意一个字母
- 'x 直接定位到标记x所在的位置
2.7、选中文本
- v 可视模式 从光标位置开始按照正常模式选择文本
- V 可视化模式 选中光标经过的完整行
- Ctrl + v 可视块模式 垂直方向选中文本
2.8、撤销和恢复撤销
- u 撤销上次的命令
- Ctrl + r 恢复撤销的命令
2.9、删除文本
- x 删除光标所在的字符,或者选中的文字
- d(移动命令) 删除移动命令对应的内容
- dd 删除光标所在行, 可以ndd删除多行
- D 删除至行尾
删除命令可以和移动命令连用, 以下是常见的组合命令:
- dw 从光标位置删除到单词末尾
- d0 从光标位置删除到一行的起始位置
- d} 从光标位置删除到段落末尾
- ndd 从光标位置向下连续删除 n 行
- d'a 从光标所在行 删除到 标记a 之间的所有代码
2.10、复制和剪切
- y 复制
- yy 复制一行,可以nyy复制多行
- d 剪切
- dd 剪切一行, 可以 ndd 剪切n行
- p 粘贴
2.11、替换
- r 替换当前字符
- R 替换当前行光标后的字符
2.12、缩排和重复执行
- >> 向右增加缩进
- << 向左减少缩进
- . 重复上次命令
2.13、插入命令(重要)
- i 在当前字符前插入文本
- I 在行首插入文本
- a 在当前字符后添加文本
- A 在行末添加文本
- o 在当前行后面插入一空行
- O 在当前行前面插入一空行
五、用户和权限的基本概念
1、基本概念
- 读 read r 4
- 写 write w 2
- 执行 execute x 1
- 无权限 0
ls -l 可以查看文件夹下文件的详细信息, 从左到右 依次是:
- 权限, 第一个字符如果是 `d` 表示目录
- 硬链接数, 通俗的讲就是有多少种方式, 可以访问当前目录和文件
- 拥有者, 家目录下 文件 / 目录的拥有者通常都是 当前用户
- 组, 在linux中, 很多时候, 会出现组名 和 用户名 相同的情况
- 大小
- 时间
- 名称
2、chmod 简单实用(重要)
chmod +/- rwx 文件名|目录名 修改 用户/组对文件/目录的权限
3、组管理 终端命令
- groupadd 组名 添加组
- groupdel 组名 删除组
- cat /etc/group 确认组信息
- chgrp 组名 文件/目录名 修改文件/目录的所属组
4、用户管理 终端命令
- useradd -m -g 组 新建用户名 添加新用户
- passwd 用户名 设置用户密码
- userdel -r 用户名 删除用户
- cat /etc/passwd \| grep 用户名 确认用户信息
- usermod -g 组 用户名 修改用户的主组
- usermod -G 组 用户名 修改用户的附加组
- usermod -s /bin/bash 修改用户登录 Shell
- usermod -G sudo 用户名 将用户添加到 `sudo` 附加组中
which(重要)
which 命令可以查看执行命令所在位置, 例如
which ls 查看ls命令的位置
5、切换用户
- su - 用户名 切换用户,并且切换目录
- exit 退出当前登录用户
6、修改用户权限
- chown 修改拥有者
- chgrp 修改组
- chmod 修改权限
常用数字组合有(u表示用户/ g表示组/ o表示其他)
777 ===> x=rwx, g=rwx, o=rwx
755 ===> u=rwx, g=rw, o=rx
644 ===> u=rw, g=r, o=r
六、系统相关命令
1、时间和日期
- cal 查看日历, -y选项可以查看一年的日历
- date 查看系统时间
2、磁盘信息
- df -h 显示磁盘剩余空间
- du -h [目录名] 显示目录下的文件大小
3、进程信息
ps a|u|x查看进程的详细情况
- a 显示终端上的所有进程,包括其他用户的进程
- u 显示进程的详细状态
- x 显示没有控制终端的进程
ps -ef|grep java 查看java进程
top 动态显示运行中进程并且排序
kill [-9] 进程代号 终止指定代号的进程 -9 表示强行终止
七、管道相关命令
1、cut 以某种方式按照文件的行进行分割
- -b 按字节选取 忽略多字节字符边界,除非也指定了 -n 标志
- -c 按字符选取
- -d 自定义分隔符,默认为制表符。
- -f 与-d一起使用,指定显示哪个区域。
范围控制:
- n 只有第n项
- n- 从第n项一直到行尾
- n-m 从第n项到第m项(包括m)
例 vi 1.txt
111:aaa:bbb:ccc
222:ddd:eee:fff
333:ggg:hhh
444:iii
head -2 1.txt | cut -c 5 #截取出1.txt文件中前2行的第5个字符 head -2 1.txt | cut -d ':' -f 1-3 #截取出1.txt文件中前2行以”:”进行分割的第1,2段内容
2、sort
将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。
- -u 就是在输出行中去除重复行
- -r 降序
- -n 按照数字进行排序,默认是按照字符进行排序
3、wc命令
- -c或--bytes或--chars 只显示Bytes数
- -l或--lines 只显示行数
- -w或--words 只显示字数
- --help 在线帮助
- --version 显示版本信息
wc 1.txt #依次会显示文件的行数、单词数、文件字节数
ls / | wc -w #显示根目录下有多少个文件
4、uniq
该命令用于检查及删除文本文件中重复出现的行,一般与 sort 命令结合使用
cat 1.txt | sort | uniq 排序并去重 cat 1.txt | sort | uniq -c 统计文本中每行内容出现的次数,-c 统计行数
5、tee
和 >类似,重定向的同时还在屏幕输出
tee -a 内容追加 和 >> 类似
6、tr
用于转换或删除文件中的字符
echo "zhc" | tr 'z' 'Z' #将zhc中z转为大写 echo "zhc" | tr '[a-z]' '[A-Z]' #将字符均转为大写 echo 'abc1d4e5f' | tr -d '[0-9]' # 删除abc1d4e5f中的数字,-d, --delete:删除指令字符
7、split
该指令将大文件分割成较小的文件,在默认情况下将按照每1000行切割成一个小文件
- -b<字节> : 指定每多少字节切成一个小文件
- -l<行数> : 指定每多少行切成一个小文件
8、awk
处理文本文件的命令,是一个强大的文本分析工具。但是比较复杂,不过功能比sed更加的强大,它支持分段。默认每行按空格或TAB分割。-F 指定输入文件折分隔符
vi 5.txt
aaa 111 333 bbb 444 555 ccc 666 777 888 ddd 999 222 999
awk '{print $1"#"$2"#"$3}' 5.txt #打印出5.txt的第1,2,3段,并且使用#号连接 awk '{OFS="#"}{print $1,$2,$3}' 5.txt #使用段连接符 awk -F ':' '{print $1}' 2.txt #指定分隔符 awk '{print $0}' 5.txt #打印所有段 awk '/cc/' 5.txt #匹配包含cc的内容 awk '$1 ~ /cc/' 5.txt #匹配第一段包含cc的内容 awk '/aaa/ {print $1,$3} /ccc/ {print $1,$3,$4}' 5.txt #匹配到aaa就打印第1,3段,如果匹配到ccc,就打印第1,3,4段 awk '/aaa|ddd/ {print $0}' 5.txt #匹配到aaa或者ddd就打印全部内容 awk '$3==222 {print $0}' 5.txt #如果第3段等于222就打印所有内容 awk '$1=="ccc" && $2==666 {print $0}' 5.txt #如果第1段等于ccc,并且第2段匹配666就打印全部 awk '$3<$4 {print $0}' 5.txt #如果第3段小于第4段就打印全部 awk '{print NR " : " $0}' 5.txt #打印全部内容显示行号 awk '{print NF " : " $0}' 5.txt #打印全部内容显示段数
打印5.txt前2行,并显示行号 (用三种不同的方式实现)
nl 5.txt | head -2 nl 5.txt | sed -n -e '1,2p' awk 'NR<=2 {print NR " " $0}' 5.txt
分段求和
awk脚本,我们需要注意两个关键词BEGIN和END。
BEGIN{ 这里面放的是执行前的语句 }
{这里面放的是处理每一行时要执行的语句}
END {这里面放的是处理完所有的行后要执行的语句 }
awk 'BEGING{}{total=total+$2}END{print total}' 5.txt
9、sed
该命令是来处理文本文件。sed也可以实现grep的功能,但是要复杂一些。它的强大之处在于替换。并且对于正则也是支持的。
参数说明
- -n 仅显示处理后的结果
- -e 以选项中指定的脚本来处理输入的文本文件
- -f 以选项中指定的脚本文件来处理输入的文本文件
动作说明
- p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行
- d :删除
- a :新增,内容出现在下一行
- i :插入, 内容出现在上一行
- c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行
- s :取代,可以直接进行取代的工作!通常这个 s 的动作可以搭配正规表示法!
- = :显示行号
10、rpm
该命令是RPM软件包的管理工具
- -a:查询所有套件;
- -b<完成阶段><套件档>+或-t <完成阶段><套件档>+:设置包装套件的完成阶段,并指定套件档的文件名称;
- -c:只列出组态配置文件,本参数需配合"-l"参数使用;
- -d:只列出文本文件,本参数需配合"-l"参数使用;
- -e<套件档>或--erase<套件档>:删除指定的套件;
- -f<文件>+:查询拥有指定文件的套件;
- -h或--hash:套件安装时列出标记;
- -i:显示套件的相关信息;
- -i<套件档>或--install<套件档>:安装指定的套件档;
- -l:显示套件的文件列表;
- -p<套件档>+:查询指定的RPM套件档;
- -q:使用询问模式,当遇到任何问题时,rpm指令会先询问用户;
- -R:显示套件的关联性信息;
- -s:显示文件状态,本参数需配合"-l"参数使用;
- -U<套件档>或--upgrade<套件档>:升级指定的套件档;
- -v:显示指令执行过程;
- -vv:详细显示指令执行过程,便于排错。
rpm -ivh tree #直接安装tree rpm --force -ivh tree #忽略报错,强制安装tree rpm -ql tree #查询tree及安装位置 rpm -e tree #卸载tree rpm -qa #列出所有安装过的包 rpm -qf `which sshd` #返回软件包ssh的全名 rpm -qlf `which sshd` #返回软件包的文件列表 rpm -qif `which sshd` #返回软件包的有关信息
11、yum常用命令
yum check-update #列出所有可更新的软件清单 yum update #更新所有软件 yum install <包名> #仅安装指定的软件 yum update <包名> #仅更新指定的软件 yum list #列出所有可安裝的软件清单 yum remove <包名> #删除软件包命令 yum search <关键字> #查找软件包 yum clean packages #清除缓存目录下的软件包 yum clean headers #清除缓存目录下的 headers yum clean oldheaders #清除缓存目录下旧的 headers yum clean, yum clean all (= yum clean packages; yum clean oldheaders) #清除缓存目录下的软件包及旧的headers
八、Shell
-----待完善