Linux基本命令
Linux基础知识
1、 网络连接
2. 目录结构
bin:存放常用指令
sbin:存放系统管理员使用的系统管理程序
home:存放普通用户的主目录
root:存放系统管理员的主目录
etc:系统管理所需要的配置文件
boot:启动的文件
lib:最基本的动态连接共享库
dev:将所有硬件用文件的形式存放
usr:存放用户的很多应用程序和文件
tmp:存放临时文件
mnt:让用户临时挂载别的文件系统
opt:主机额外安装软件所存放的目录
var:存放在不断扩充着的东西
3. 常用指令
1. vi和vim
- 常用的三种模式
-
正常模式:
以vim打开一个档案可以直接进入一般模式,可以使用上下左右按键来移动光标,使用删除字符或删除整行来处理文档内容,复制、粘贴来处理文件数据
# 创建一个名为hello.java的文件 vim hello.java
-
插入模式:
按下i、I、O、o、A、a、r、R等任何一个字母会进入编辑模式
-
命令行模式:
- 先输入esc、再输入“:wq”
- 提供相关指令,完成读取、存盘、替换、离开vim、显示行号等动作
- 快捷键
- 拷贝当前行 yy ,拷贝当前行向下5行 5yy,并粘贴(输入p)
- 删除当前行 dd,删除当前行向下5行 5dd
- 在文件中查找某个单词(命令行下/关键字),回车 查找,输入n查找下一个
- 设置文件的行号,取消文件的行号(命令行下 :set nu 和 :set nonu)
- 编辑文件,在一般模式下,使用快捷键到该文档的最末行(g)和最首行(gg)
- 在一个文件中输入字母,在一般模式下,撤销这个动作 u
- 编辑文件,在一般模式下,先光标移动,输入 20,再输入shift + g
2. 关机&重启命令
# 立刻进行关机
shutdown -h now
# 1分钟后会关机
shutdown -h 1
# 现在重新启动计算机
shutdown -r now
# 关机
halt
# 现在重新启动计算机
reboot
# 把内存的数据同步到磁盘,无论重启系统还是关闭系统
sync
3. 用户登录和注销
# 注销用户,在图形运行级别无效,运行级别3下有效
logout
4. 添加用户
# 添加用户,默认在该用户的家目录在/home/用户名
useradd 用户名
# 给新创建的用户指定家目录
useradd -d 指定目录 新的用户名
# 指定密码
passwd 用户名
5. 删除用户
# 删除用户,但是保留家目录
userdel 用户名
# 删除用户以及用户主目录
userdel -r 用户名
# 查询用户信息
id 用户名
6. 切换用户
# 切换用户
su -切换用户名
从权限高的用户切换到权限低的用户,不需要输入密码
# 返回原来的用户
exit/logout
# 查看当前用户/登录用户
whoami / who am I
显示第一次登录到的用户
7. 修改用户组
# 新增用户组
groupadd 组名
# 删除组
groupdel 组名
# 添加用户的时候加上组
useradd -g 用户组 用户名
# 修改用户的组
usermod -g 用户组 用户名
- /etc/passwd 文件
- 用户的配置文件,记录用户的各种信息
- 每行的含义:用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录shell
- /etc/shadow 文件
- 口令的配置文件
- 每行含义:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
- /etc/group 文件
- 组的配置文件,记录Linux包含的组的信息
- 每行含义:组名:口令:组标识号:组内用户列表
运行级别说明:
0:关机
1:单用户 (找回丢失密码)
2:多用户状态没有网络服务
3:多用户状态有网络服务
4:系统未使用保留给用户
5:图形界面
6:系统重启
4. 文件目录类
-
pwd
pwd
- 功能:显示当前工作目录的绝对路径
-
ls指令
ls [选项] [目录或是文件]
- 选项:
- -a :显示当前目录所有的文件和目录,包括隐藏的
- -l : 以列表的方式显示信息
- 选项:
-
cd 指令
cd [参数]
- 功能:切换到指定目录
cd ~ 或者 cd :
回到自己的家目录cd..
回到当前目录的上一级目录
Linux路径中的./ …/
-
mkdir指令
mkdir [选项] 要创建的目录
- 功能:创建目录
- -p 创建多级目录
# 创建单级目录 mkdir /home/dog # 创建多级目录 mkdir -p /home/animal/tiger
-
rmdir指令
rmdir [选项] 要删除的目录
- rmdir删除的是空目录,如果目录下面有内容无法删除
rm -rf 要删除的目录
删除非空目录
-
touch指令
touch 文件名称
- 功能:创建空文件
-
cp指令
cp [选项] source dest
-
功能:拷贝文件到指定目录
-
选项:-r:递归复制整个文件夹
-
补充:强制覆盖不提示的方法:
\cp .....
-
-
rm指令
rm [选项] 要删除的文件或目录
- 功能:移除文件或目录
- 选项:
- -r:递归删除整个文件夹
- -f:强制删除不提示
- 补充:强制删除不提示的方法:带上-f 参数即可
-
mv 指令
- 功能:移动文件与目录或重命名
- 语法:
- mv oldNameFile newNameFile 重命名
- mv /temp/movefile /targetFolder 移动文件
-
cat 指令
cat [选项] 要查看的文件
- 功能:查看文件,但不允许修改
- 选项: -n:显示行号
- 补充:
- 一般与管道命令进行结合: 管道命令 | more 管道命令:将前一个的结果交给下一个命令处理
-
more 指令
-
功能:是一个基于VI编辑器的文本过滤器,以全屏幕的方式按照页显示文本文件的内容。
-
其中含有的快捷键
-
-
less 指令
-
功能:用来分屏查看文件内容,与more相似,但是支持各种显示终端。less指令在显示文件内容的时候,不是一次将整个文件加载之后显示,而是根据显示需要加载的内容,对于大型文件效率较高。
-
语法: less 要查看的文件
-
-
echo 指令
echo [选项] [输出内容]
- 功能:输入内容到控制台
-
head 指令
- 功能:显示文件的开头部分内容,默认情况下显示文件的前10行内容
- 语法:
head 文件
查看文件头10行内容head -n 5 文件
查看文件头5行内容,5可选
-
tail 指令
- 功能:输出文件中尾部的内容,默认显示文件的后10行内容
- 语法:
tail 文件
:查看文件尾10行的内容tail -n 5 文件
查看文件尾5行内容,5可选tail -f 文件
实时追踪该文档的所有更新
-
> 指令 和 > > 指令
- 功能: > 输出重定向 > > 追加
- 基本语法:
ls -l > 文件
列表的内容写入文件中,覆盖写ls -al >> 文件
列表的内容追到文件的末尾cat 文件1 > 文件2
将文件1的内容覆盖到文件2echo "内容" >> 文件
追加
-
ln 指令
ln -s [原文件或目录] [软链接名]
- 也称为符号链接,可以理解为快捷方式,主要存放了链接其他文件的路径
- 功能:给原文件创建一个软链接
5. 时间日期类
- date指令
- 功能:显示当前日期
- 语法:
date
显示当前时间date +%Y
显示当前年份date +%m
显示当前月份date + %d
显示当前是哪一天date + %Y-%m-%d %H:%M:%S
显示年月日时分秒
6. 搜索查找类
- find 指令
- 功能:将从指定目录向下递归地遍历其各个子目录,将满足条件的文件或者目录显示在终端
- 语法:
find [搜索范围] [选项]
- 选项说明:
- -name <查询方式> 按照指定的文件名查找模式查找文件
- -user <用户名> 查找数据指定用户名所有文件
- -size <文件大小> 按照指定的文件大小查找文件
- locate 指令
- 功能:
- 可以快速定位文件路径,利用事先建立的系统中所有文件名称已经路径的locate数据库实现快速定位给定的文件
- 无需遍历整个系统文件,查询速度较快
- 基本语法:
locate 搜索文件
- 补充:由于基于数据库进行查询,所以第一次运行前,必须使用updatedb指令创建locate数据库
- 功能:
- which指令
which 指令
- 功能:查看某个指令在哪个目录下
- grep指令和 管道符号|
- 功能:grep过滤查找; | 管道符,表示将前一个命令的处理结果输出传递给后面的命令处理
grep [选项] 查找内容 源文件
- 选项:
- -n : 显示匹配行及行号
- -i :忽略字母大小写
7. 压缩和解压类
-
gzip/gunzip 指令
- 功能:gzip 用于压缩文件,gunzip用于解压
- 语法:
gzip 文件
压缩文件,只能将文件压缩为*.gz文件gunzip 文件.gz
解压缩文件命令
-
zip/unzip 指令
- 功能:zip用于压缩文件,unzip用于解压
- 基本语法:
zip [选项] xxx.zip 将要压缩的内容
压缩文件和目录指令unzip [选项] xxx.zip
解压缩文件
- 选项:
- zip常用选项 -r:递归压缩,即压缩目录
- unzip常用选项 -d<目录> 指定解压后文件的存放目录
-
tar指令
- 功能:是打包指令,最后打包的文件是.tar.gz的文件
- 语法:
tar[选项] xxx.tar.gz 打包的内容
打包目录,压缩后的文件格式.tar.gz - 选项:
- -c :产生.tar打包文件
- -v:显示详细信息
- -f :指定压缩后的文件名
- -z : 打包同时压缩
- -x : 解包.tar文件
-c是指切换到指定的目录
Linux组基本介绍
分类:所有者、所在组、其他组、改变用户所在组
文件/目录 所有者
- 查找文件的所有者
- 指令:
ls -ahl
- 指令:
- 修改文件所有者
- 指令:
chown 用户名 文件名
- 指令:
当某个用户创建了一个文件后,这个文件的所在组就是该用户的所在组
- 查看文件/目录所在组
- 指令:
ls -ahl
- 指令:
- 修改文件所在的组
- 指令:
chgrp 组名 文件名
- 指令:
其他组
除文件的所有者和所在组的用户外,系统的其他用户都是文件的其他组
改变用户所有组
在添加用户时,可以指定将该用户添加到哪个组,同样的用root的管理权限可以改变某个用户所在的组
- 改变用户所在组
- usermod -g 新组名 用户名
- usermod -d 目录名 用户名 改变该用户登录的初始目录
- 用户需要有进入到新目录的权限
权限的基本介绍
0-9位说明
-
第0位确定文件类型(d,-,l,c,b)
l 是链接,相当于win的快捷方式
d是目录,相当于win的文件夹
c是字符设备文件,鼠标、键盘
b是块设备,比如硬盘
-
第1-3位确定所有者拥有该文件的权限 --User
-
第4-6位确定所属组拥有该文件的权限 --Group
-
第7-9位确定其他用户拥有该文件的权限 --Other
rwx权限详解
- rwx作用到文件
- r:代表可读,可以读取、查看
- w:代表可写,可以修改,但是不代表就可以删除该文件,删除一个文件的前提条件是对该文件所在的目录有写权限,才能删除该文件
- x:代表可以执行
- rwx作用到目录
- r:代表可读,可以读取、ls查看目录内容,列举文件夹下的文件
- w:代表可写,可以修改,对目录内创建+删除+重命名目录
- x:代表可以执行,可以进入该目录
r = 4,w = 2,x = 1可以使用数字
-
chmod 修改权限
- 功能:可以修改文件或者目录的权限
- u:所有者 g:所有者 o:其他人 a:所有人
- 方式1:+、-、=变更权限 +是赋予权限,-是撤销权限
- 方式2:通过数字变更权限
chmod 751 文件目录名
-
-chgrp 修改文件/目录所在组
- 语法:
chgrp newgroup 文件/目录 [改变所在组]
- 修改目录下所有的文件和目录的所在组 加上选项 -r
- 语法:
-
crond 任务调度
-
功能:进行定时任务的设置
-
语法:
crontab [选项]
- -e:编辑crontab定时任务
- -l:查询crontab任务
- -r:删除当前用户所有的crontab任务
-
service crond restart
重启任务调度 -
参数细节说明
-
5个占位符
-
特殊符号的说明
*:代表任何时间
,:表示不连续的时间
-:代表连续的时间范围
*/n:代表每隔多久执行一次
-
-
-
at指令
-
命令格式:
at [选项] [时间]
ctrl + D结束命令的输入(两次) -
选项:
-
-
功能:
- 是一次性定时计划任务,at的守护进程atd会以后台的模式运行,检查作业队列来运行
-
atd守护进程每60秒检查作业队列,有作业时,会检查作业运行时间;如果时间与当前时间匹配,则运行该作业
-
是一次性定时计划任务,执行完一个任务后不再执行此任务
-
使用at命令时,要保证atd进程的启动,可以使用指令
ps -ef | grep atd
-
定时方法:
- 接受在当天的hh:mm式的时间制定
- 使用midnight(深夜)、noon(中午)、teatime(饮茶时间)等比较模糊的词语来指定
- 采用12小时计时制,在时间后面加上AM(上午)或PM(下午)来说明
- 使用相对计时法,格式:now + count time-units,now是当前时间、time-units是时间单位(minutes、hours、days、weeks) count是时间的数量
- 直接使用today、tomorrow指定命令完成时间
-
shell 脚本
shell是一个命令行解释器,为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,可以使用Shell来启动、挂起、停止甚至是编写一些程序。
1. 执行方式
脚本格式要求:
- 以#!/bin/bash开头
- 脚本有可执行权限
脚本常用的执行方式:
- 输入脚本的绝对路径/相对路径(前提:脚本有可执行的权限)
- 不用赋予脚本执行权限,直接执行
sh + 脚本
2. Shell的变量
-
Shell变量分类:
系统变量: H O M E 、 HOME 、 HOME、PWD、$SHELL、 $USER等
显示当前Shell中所有变量:set
-
shell变量的定义
- 定义变量:变量名=值
- 撤销变量:unset 变量
- 声明静态变量:readonly变量
-
定义变量的规则:
- 变量名称可以由字母、数字和下划线组成,但不能以数字开头
- 等号两侧不能有空格
- 变量名称一般习惯为大写
-
将命令的返回值赋给变量
- A=`date `反引号,运行里面的命令,并把结果返回给变量A
- A=$(date) 等价于反引号
-
设置环境变量
基本语法:
- export 变量名=变量值 (将shell变量输出为环境变量/全局变量)
- source 配置文件 (让修改后的配置信息立即生效)
- echo $变量名 (查询环境变量的值)
shell脚本多行注释 :<<! 内容!
-
位置参数变量
执行一个shell脚本时,希望获取到命令行的参数信息,可以使用到位置参数变量
基本语法:
$n(n为数字,$0代表命令本身,$1-$9代表第一到第九个参数,十个以上的参数,使用大括号包含${})
$*(变量代表命令行中所有的参数,$*将所有的参数看成一个整体)
$@(变量代表命令行中所有的参数,$@把每个参数区分对待)
$#(变量代表命令行中所有参数的个数)
-
预定义变量
shell设计者事先定义好的变量,可以直接在shell脚本中使用
基本语法:
$$(当前进程的进程号 PID)
$!(后台运行的最后一个进程的进程号 PID)
$?(最后一次执行的命令的返回状态,如果是0证明上一个命令正确执行)
3. shell脚本的编写
-
运算符
基本语法:
- “ ( ( 运算式 ) ) " 或 " ((运算式))" 或 " ((运算式))"或"[运算式]”
- expr m + n表达式,运算符之间要有空格,希望将结果赋给某个变量,使用``
- expr \*、/ 、% 乘、除、取余
2、条件判断
-
判断条件
- 常用判断条件 = 字符串比较
- 两个整数的比较
- -lt 小于
- -le 小于等于
- -eq 等于
- -gt 大于
- -ge 大于等于
- -ne 不等于
- 按照文件权限进行判断
- -r 读权限
- -w 写权限
- -x 执行权限
- 按照文件类型进行判断
- -f 文件存在且是一个常规的文件
- -e 文件存在
- -d 文件存在且是一个目录
-
基本语法
# 单分支 if [ 条件判断式 ] //注意有空格 then 代码 fi # 多分支 if [ 条件判断式 ] then 代码 elif [ 条件判断式 ] then 代码 fi
-
case语句
case $变量名 in "值1") 如果变量的值等于值1,则执行程序1 ;; "值2") 如果变量的值等于值2,则执行程序2 ;; ...其他分支... *) 如果变量都不是以上的值,则执行此程序 ;; esac
-
while循环
while [ 条件判断式 ] do 程序 done
-
read读取控制台输入
read (选项) (参数)
选项:
-p: 指定读取值时的提示符
-t: 指定读取值时等待的时间(秒),如果没有在指定的时间内输入,就不在等待
参数:
变量:制定读取值的变量名
-
函数
系统函数:
basename 基本语法
功能:返回完整路径最后/的部分,常用于获取文件名
basename [pathname] [suffix]
功能:basename会删除所有前缀,包含最后一个’/'字符,然后将字符显示出来
dirname基本语法
功能:返回完整路径最后/的前面的部分,常用语返回路径部分
dirname 文件绝对路径
功能:从给定的包含绝对路径的文件名中去除文件名(非目录部分),然后返回剩下的路径(目录的部分)
补充:
# 显示当前用户所在的目录
pwd
# 查看所有历史命令
histroy
# 查看最近的10条历史指令
history 10
#执行曾经执行过的第5条指令
!5