Linux的目录
/dev 管理设备 cpu
/media dvd u盘
Linux 常用命令
用户管理
useradd: 添加用户
格式:useradd 用户名
useradd -d 指定目录 用户名
示例:groupadd 用户组
useradd -g 用户组 用户名 (将用户直接指定给用户组)
passwd:指定的密码
格式:passwd 用户名
userdel: 删除用户
格式:userdel 用户名 (保留家目录)
userdel -r 用户名 (不保留家目录)
id: 查询用户信息
格式:id 用户名
示例:id root # uid=0(root) gid=0(root) 组=0(root)
su - : 切换用户
格式:su - 用户名
注意:从高权限的用户换成低权限的用户,不用输入密码
使用exit指令返回原先用户
whoami:显示当前用户名
用户组管理
groupadd: 增加组
格式:groupadd 组名
groupdel: 删除组
格式:groupdel 组名
usermod: 修改用户所在组
格式:usermod -g 用户组 用户名
示例:groupadd shaolin
usermod -g shaolin zwj (将用户zwj切换到shaolin组)
/etc/passwd: 用户配置文件,记录用户的各种信息
示例:vim /etc/passwd
# jack:x:1000:1000:jack:/home/jack:/bin/bash
# 用户名:口令:用户标识:组标识号:注释性描述:主目录:登录shell
/etc/group: 组的配置文件,记录Linux包含的组的信息
示例:vim /etc/passwd
# jack:x:1000:jack
# 组名:口令:组标识号:组内用户列表
/etc/shadow: 口令的配置文件 (不要求掌握)
帮助指令
man: 获取帮助信息
格式:man [命令或配置文件]
示例:man ls
help
文件目录类
pwd:
显示当前工作目录的绝对路径
ls: list
格式:ls [选项] [目录或文件]
选项:-a 显示当前目录所有的文件和目录,包括隐藏的
-l 以列表的形式展现信息
cd: 切换到指定的目录
格式:cd [参数]
参数:绝对路径/相对路径
cd ~ / cd : 回到自己的家目录
cd .. :回到上一级目录
mkdir: 创建目录
格式:mkdir [选项] 要创建的目录
选项:-p 创建多级目录
rmdir: 删除目录
格式:rmdir [选项] 要删除的目录
注意:rmdir删除的是空目录,如果目录下有内容(文件或目录)时无法删除
可以使用 rm -rf 要删除的非空目录
touch: 创建一个空文件
格式:touch 文件名
cp: 拷贝文件到指定的目录
格式:cp [选项] source dest
选项:-r 递归复制整个文件夹
注意:\cp 强制覆盖相同的文件,不会提示
rm: 删除文件或目录
格式:rm [选项] 要删除的文件或目录
选项:-r 递归删除文件夹(目录)
-f 强制删除不提示
mv: 移动文件与目录(相当于剪切)/重命名
格式:mv oldname_file newname_file 重命名
mv 移动文件
cat: 查看文件内容,以只读的形式打开
格式:cat [选项] 要查看的文件
选项:-n 显示行号
示例:cat -n /etc/profile | more(分页显示)
more: 按页显示文件内容
格式:more 要查看的文件
less: 并不是一次将整个文件加载之后才显示,而是根据显示需要加载内容,对于显示 大型文件具有较高的效率
格式:less 要查看的文件
> 输出重定向 和 >> 追加: 将本该输出到显示台的内容输出到文件中
ls -l > 文件 (将列表中的内容覆盖式的输出到文件)
ls -al >> 文件(列表中内容追加到文件的末尾)
cat 文件1 > 文件2 (将文件1的内容覆盖到文件2)
echo "内容" >> 文件
echo:输出内容到控制台
格式:echo [选项] 输出内容
示例:echo $PATH 输出环境变量路径
echo "Hello world"
head: 显示文件开头部分内容
格式:head 文件 (默认查看文件前10行)
head -n 5 文件 (查看文件前5(可以为任意行数)行)
tail: 输出文件中尾部的内容,默认显示后10行
格式:tail 文件
tail -n 5
tail -f 文件 (实时追踪该文档的更新)
ln: 软链接 相当于windows中快捷方式,主要存放了链接其他文件的路径
格式:ln -s [原文件或目录] [软链接名]
history: 查看已经执行过的历史指令
示例:history
history 10 显示最近执行的10个指令
!178 执行历史指令中编号为178的指令
时间日期类
date: 1.显示当前日期
格式:date 显示当前时间信息
date +%Y-%m-%d 显示当前 年-月-日
date "+%Y年%m月%d日 %H时%M分%S秒"
2.设置日期
格式:date -s 字符串时间
date -s "2019-8-13 11:58:12"
cal: 查看日历
格式:cal [选项]
示例:cal 2020 显示2020年日历
搜索查找类
find: 将从指定目录向下递归的遍历其各个子目录,
将满足条件的文件或目录显示在终端
格式:find [搜索范围] [选项] [要查找的文件]
选项:-name 按照文件名来查找
-user 按照文件拥有者来查找
-size 按照文件大小来查找 (+n大于 -n小于 n等于)
示例:find nxr/ -name tjz.txt
find nxr/ -user jack
find nxr/ -size +20M
find nxr/ -name *.txt 查找.txt结尾的文件
locate: 利用事先建立的文件名称及路径的locate数据库实现快速定位,
查询速度比较快,为了保证查询结果的准确,必须定时更新locate时刻
格式:locate 搜索文件
注意:第一次运行前,必须使用updatedb指令创建locate数据库
示例:updatedb
locate nxr.txt
grep:过滤查找
管道符号| :将前一个命令的处理结果输出传递到后面的命令处理
格式:grep [选项] 查找内容 源文件
选项:-n 显示匹配行及行号
-i 忽略大小写
示例:grep -n LOVE nxr.txt
grep -ni love nxr.txt
cat nxr.txt | grep -n LOVE
压缩和解压缩类
gzip/gunzip:
格式:gzip 文件 (将文件压缩成*.gz文件,原文件不保留)
gunzip *.gz
示例:gzip nxr.txt
zip/unzip:
格式:zip [选项] *.zip(压缩后的压缩文件名) 要压缩的内容
unzip [选项] 存放目录 要解压的内容
选项:-r 递归压缩,即压缩目录
-d:指定解压文件的存放目录
示例:zip -r nxr.zip /home/jack
unzip -d nxr/ nxr.zip
tar:
格式:tar [选项] *.tar.gz 打包内容
选项:-c 产生.tar打包文件
-v 显示详细信息
-f 指定压缩后的文件名
-z 打包同时压缩
-x 解包.tar文件
示例:# 将两个文件a1和a2压缩到a.tar.gz中
tar -zcvf a.tar.gz a1.txt a2.txt
# 将home目录下的文件打包到myname.tar.gz
tar -zcvf myhome.tar.gz /home/
# 将a.tar.gz解压到当前目录
tar -zxvf a.tar.gz
# 将myname.tar.gz解压到指定目录 /opt/(目录必须存在)
tar -zxvf a.tar.gz -C /opt/
组管理和权限管理
chown: 修改文件的所有者
格式:chown 用户名 文件
chown newowner:newgroup file
示例:chown Tom apple.txt
chown -R Tom nxr/ (将指定目录下的子目录和文件的所有者修改为Tom)
groupadd: 组的创建
示例:groupadd japan
useradd -g japan jack
chgrp: 修改文件所在组
格式:chgrp 组名 文件名
示例:touch orange.txt
chgrp police orange.txt
chgrp -R police kkk/ (将指定目录下的子文件的所在组修改为police)
文件类型:-:普通文件 d:目录 l:软连接 c:字符设备(键盘鼠标) b:块文件(硬盘)
对于文件
r: 可以读取,查看
w: 可以修改,但是不可以删除文件,删除一个文件的前提是对该文件所在的目录有写的权限,才能删除文件
x: 可以被执行
对于目录
r: 可以读取,ls查看目录内容
w: 可以修改,目录内创建+删除+重命名目录
x: 可以进入该目录
chmod: 修改文件或目录的权限
格式:u:所有者 g:所在组 o:其他人 a:所有人 +-=
示例: chmod u=rwx,g=rx,o=x 文件或目录名
chmod o+x
chmod 751 nxr.txt
磁盘查询命令
df:查询系统整体磁盘使用情况
格式:df -lh
du: 查询指定目录的磁盘占用情况
格式:du [选项] [目录]
选项: -a 显示
示例:du -ach --max-depth=1 nxr/
1.统计文件夹下文件的个数
ls -l | grep "^-" | wc -l
2.统计文件夹下目录的个数
ls -l | grep "^d" | wc -l
3.统计文件夹下文件的个数,包括子目录中的文件
ls -lR | grep "^-" | wc -l
4.以树状结构显示目录
yum install tree
tree
网络配置
进程管理
ps: 查看目前系统中执行的进程
格式:ps -aux | more
选项:-a 当前终端所有进程信息
-u 以用户的格式显示进程信息
-x 显示后台进程运行的参数
示例:ps -aux | grep sshd
ps -ef | more 以全格式显示当前所有的进程,查看进程的父进程
-e 显示所有进程
-f 全格式
shell脚本
命令别名
alias 别名='原命令'
alias vi='vim'
alias 查看系统中的别名
unalias 别名 (删除别名)
whereis ls 查看ls命令文件所在位置
快捷键
ctrl+c 强制终止当前命令
ctrl+u 删除或剪切光标左边的命令
ctrl+y 粘贴ctrl+u或ctrl+k剪切的内容
ctrl+d 退出终端 相当于logout
多命令顺序执行
;(命令1;命令2) 多个命令顺序执行,命令之间没有任何逻辑关系
&& (命令1&&命令2) 逻辑与
|| 逻辑或
命令 && echo yes || echo no (判断这条命令是否正确)
管道符 |
命令1 | 命令2 (命令1的正确输出作为命令2的操作对象)
通配符
?匹配一个任意字符
* 匹配0个或任意多个字符,也就是匹配任意内容
[] 匹配中括号中任意一个字符,例如[abc] [a-z] [0-9]
[^] 取反
可以用于批量删除文件
特殊符号
'' 单引号,在单引号中的所有的特殊符号没有特殊含义,例如 $ `
"" 双引号,特殊符号没有特殊含义,除了 $ (调用变量的值) ` (引用命令) \ (转义符)
` 反引号,反引号括起来的命令是系统命令,在Bash中会先执行它
和$()作用一样,推荐使用$()
$() 同上 echo $(ls)
# 注释
shell脚本的执行
方式1
1) chmod 744 nxr.sh
2) ./nxr.sh或者使用绝对路径
注意:注意,一定要写成 ./test.sh,而不是 test.sh,运行其它二进制的程序也一样,直接写 test.sh,linux 系统会去 PATH 里寻找有没有叫 test.sh 的,而只有 /bin, /sbin, /usr/bin,/usr/sbin 等在 PATH 里,你的当前目录通常不在 PATH 里,所以写成 test.sh 是会找不到命令的,要用 ./test.sh 告诉系统说,就在当前目录找
方式2
1) sh ./nxr.sh
shell变量
系统变量:PATH HOME USER
set: 显示shell中所有变量
用户自定义变量:
unset撤销变量
readonly 变量名=值,不能unset
将命令的结果返回给变量
A=`ls -la` 反引号,运行里面的命令,并将结果返回的变量
A=$(ls -la) 等价于反引号
设置环境变量
export 变量名=变量值 (将shell变量输出为环境变量)
source 配置文件
预定义变量
$$ 当前进程的进程号(PID)
$! 后台运行的最后一个进程的进程号
$? 最后一次执行的命令的返回状态
通配符
匹配符合条件的文件名,是完全匹配,ls,find,cp这些命令不支持正则表达式
正则表达式
\{n\} 前面的字符恰好出现n次
\{n,\} 前面的字符出现不小于n次
\{n,m\} 前面的字符至少出现n次,最多出现m次
cut:字段提取命令,不能分割以空格为分隔符的文件
格式:cut [选项] 文件名
选项:-f 列名 提取第几列
-d 分隔符 按照分隔符分割列
在文件中匹配符合条件的字符串,是包含匹配,grep,awk,sed
示例:grep "a*" test_re.txt 匹配所有内容,没有任何作用
grep ".*" test_re.xtt 同上
grep -n "^$" test_re.txt 匹配空白行,显示行号
grep "sa\{1,2\}id" test_re.txt 匹配s和id中间有1个或者2个a的行
cat /etc/passwd | grep "/bin/bash" | grep -v root | cut -d ":" -f 1
提取普通用户的用户名
printf:
格式:printf "输出类型输出格式" 输出内容
输出类型:
%ns 输出字符串。n是数字,代表输出几个字符
%ni 输出整数
%m.nf 输出浮点数
输出格式:
\n
\r
格式:
printf "%s %s %s\n" 1 2 3 4 5 6 三个为一组进行输出
awk:
格式:awk '条件1{动作1}条件2{动作2}...'文件名
默认空格和制表符作为分隔符,awk 一行一行的开始匹配
BEGIN
条件
一般使用关系表达式作为条件
x>10
x>=10
x<=10
BEGIN
动作
格式化输出
流程控制语句
示例:
awk '{printf $2 "\t" $4 "\n"}' student.txt 输出第二,四列
df -h | awk '{printf $1 "\t" $5 "\t" $6 "\n"}'
df -h | grep sda1 | awk '{printf $5}' | cut -d "%" -f1
awk 'BEGIN{FS=":"}{print $1 "\t" $3}' /etc/passwd 分隔符为:
cat student.txt | grep -v Name | awk '$4>85{print $2}'
sed: 将数据进行选取,替换,删除,新增的命令 与vim类似
格式:sed [选项] '[动作]' 文件名
选项:-n 一般sed命令会把所有数据都输入到屏幕,如果加入此选择, 则只会把经过sed命令的处理的行输出到屏幕。
-e 允许多条sed命令编辑
-i 用sed的修改结果直接修改读取数据的文件,
而不是由屏幕输出
动作:a c i d p s
示例:sed '4s/83/100/g' student.txt 字符串替换
sed '3c no such person' student.txt 行替换
sed '2i canglaoshi \ 在第二行之前插入两行数据
> bolaoshi' student.txt
sed '2a zuobi' student.txt 在第二行后面追加一行数据
sed -n '2p' student.txt 打印第二行
sed '2,3d' student.txt 删除第二行到第三行的数据