目录构造
只有一个根目录,所有文件都在里面
命令入门
Linux 命令基础
启用静态网络
vi /etc/sysconfig/network-scripts/ifcfg-eth0
// 这个是地址端,在虚拟网卡端中查看区域
IPADDR=192.168.134.198
// 这个也可以查看到,在虚拟网卡端中
NETMASK=255.255.255.0
// 这个固定IP也在虚拟网卡中
GATEWAY=192.168.134.1
// 这个必须是114的
DNS1=114.114.114.114
命令通用格式
command: 命令本身
-options: 可选的,控制命令的细节
-parameter: 可选的,指向目标
命令都可以混合使用
ls(列出当前目录)
格式:ls [-a -l -h] [linux路径]
- -a 显示隐藏文件,一般都是以 . 开头的文件名
- -h 易读形式列出文件大小,如 K M G,不写是B(byte)
- -l 显示详细信息
- 当指定目录之后,可以看指定目录的内容
ls
111.txt compute.txt pdsh-2.34 模板 文档 桌面
cd(切换工作目录)
格式:cd [linux路径]
- 如果不给参数,回到家目录
- 没有选项
cd /root
cd
pwd(打印当前工作目录)
格式:cd
- 无参数
- 无选项
pwd
相对路径、绝对路径、特殊路径符
- 绝对路径:以根目录开始一级一级的
- 相对目录:以当前目录为起点
- ./ 表示当前目录
- ../ 表示上一级
- ~ 回到home目录
家目录
其他用户的家目录为:/home/当前用户名
root 用户的家目录为:/root
mkdir(创建目录)
格式:mkdir [-p] [linux路径]
- -p 可以创建多个层级的目录
# 创建一个123的目录
mkdir 123
# 创建一个多层级目录,234包含345包含56
mkdir -p 234/345/56
touch(创建文件)
格式:touch [linux路径]
- 无选项
- 无参数
# 创建一个123文本文件
touch 123.txt
cat(查看文本内容)
格式:cat [linux路径]
- 无选项 无参数
# 查看123文本文件内容
cat 123.txt
more(翻页查看内容)
格式:more [linux路径]
- 无选项 无参数
# 翻页查看etc的services文件
more /etc/services
当进入之后,下面有个已查看多少的提示
按空格翻下一页
按 q 退出
cp(拷贝命令)
格式:cp [-r] 参数1 参数2
- -r 复制文件夹时候用,表示递归
- 参数1 被复制文件或者文件夹
- 参数2 复制到哪里
# 复制123.txt 文件到当前目录并改名为234.txt
cp 123.txt 234.txt
mv(移动命令)
格式:mv 参数1 参数2
- 参数1 被移动文件或者文件夹
- 参数2 移动到哪里
mv 123.txt 123
rm(删除命令)
格式:rm [-r -f] [参数1 参数2 … 参数n]
- -r 用于删除文件夹
- -f 强制删除,不会弹出提示框
- 普通用户删除内容不会提示的
- root 管理员用户删除才有提示
- 参数1 参数2 … 参数n 表示要删除的文件夹或文件路径,空格隔开
- 模糊匹配
- 符号* 表示通配符
- test* 表示任意以test开头的内容
- *test 表示任意以test结尾的内容
- *test* 表示任意包含test内容
# 删除目录 强制删除 bigData22和itheima
rm -r -f bigData22/ itheima/
细节:千万不要使用 rm -rf / 或者 rm -rf /*
相当于windows C盘格式化
grep(过滤)
格式:grep [-n] 关键字 文件路径
- -n 表示在结果中显示匹配的行号
- 关键字,必填,表示过滤的关键字
- 文件路径,必填,表示过滤内容的文件
# 过滤 关键字 "itheima",文件路径是 111.txt
grep "itheima" 111.txt
wc(数量统计)
格式:wc [-c -m -l -w] 文件路径
- -c 统计 bytes 数量
- -m 统计字符数量
- -l 统计行数
- -w 统计单词数量
- 文件路径:被统计的文件,可以作为内容输入端口
wc 111.txt
# 3 4 45 111.txt
# 打印的结果是 3行,4个单词,45个字符
管道符
左边的输出当作成右边的输入
which(查找命令程序所在位置)
无参数,无选项
which cd
find(查找文件)
格式:find 起始路径 -name “被查找的文件名”
- -name 按照名字查找,后跟名字
- 符号* 表示通配符,只支持按照名字查询
- test* 表示任意以test开头的内容
- *test 表示任意以test结尾的内容
- *test* 表示任意包含test内容
- -size 按照大小查找后跟参数
- 语法:find linux路径 -size +10k # 大于10 kb 的
- + - 只能选一个,大于 / 小于 后跟数字
- kMG 表示kb MB GB
# 在根目录开始查找,找带test的
find / -name "test"
echo(输出指定内容)
echo 输出的内容
无选项
- 输出的内容:要用双引号包起来
echo "hello word"
反引号
被反引号包含起来的内容,将作为命令去指执行
# 如果pwd 没有用反引号包起来,将作为纯文本执行
echo `pwd`
重定向符
向尾部追加
echo 追加内容 >> 文件
覆盖文件内容
echo 内容 < 文件
tail(查看文件尾部内容)
语法:tail [-f -num] [linux路径]
- -f 持续跟进尾部更改,当文件更改了,这里就会直接更新
- -number 查看尾部多少行,不写就是默认10行
# 查看该文件尾部5行
tail -5 /etc/services
快捷键
Ctrl + L 清屏
Ctrl + c 返回
VIM 编辑器
三个模式:命令模式、输入模式、底线命令模式
vim 兼容了vi的所有功能
vim 文件路径 注:如果文件不存在,那么会创建一个文件
命令模式
打开文件之后就是命令模式
进入其他模式
- 按 i 在当前光标位置进入输入模式
- 在任何情况下按 esc 返回命令模式
- 按 :进入底线模式
不同方式进入输入模式
- 按 a 在当前光标位置之后进入输入模式
- 按 I 在当前行的开头进入输入模式
- 按 A 在当前行的末尾进入输入模式
- 按 o 在当前光标创建下一行进入输入模式
- 按 O 在当前光标创建上一行进入输入模式
光标移动和搜索
- 按 上下左右(k j h l)都是光标的上下左右移动
- 按 0 移动光标到当前行的开头
- 按 $ 移动光标到当前行的末尾
- 按 pageUp 向上翻页
- 按 pageDn 向下翻页
- 按 / 进入搜索模式 例如:/666,这个时候按 n继续向下搜索 按N往上搜索
快速编辑
- 按 两下 dd 删除光标所在行
- 按 ndd 向下删除多少行,n表示数字
- 按 yy 复制当前行
- 按 nyy 复制当行和下面的 n 行,n表示数字
- 按 p 粘贴复制的内容
- 按 u 撤销修改
- 按 Ctrl + r 反向撤销
- 按两下yy 再按 p 复制一行
- 按 gg 跳到首行
- 按 G 跳到行尾
- 按 dG 从当前行开始下面全部删除
- 按 dgg 从当前行开始上面全部删除
- 按 d$ 从当前光标开始,删除到本行结尾
- 按 d0 当前开头到当前光标位置全部删除
底线模式
- wq 保存并退出
- w 保存
- q 退出
- q! 强制退出
- set nu 显示行号
- set paste 设置粘贴模式。粘贴进来的时候会保持一致性
用户和权限
普通用户权限:在其HOME目录是不受限的,出了HOME目录多数受限
sudo(切换用户)
语法:su [-] 用户名
- - 表示在切换的时候是否加载环境变量,建议带上
- 参数是用户名,要切换的用户,省略表示切换到root
- 切换之后可以通过 exit 或 Ctrl + D 退回上一个用户
su - root
注:普通用户切换 root 需要输入密码
root 切换普通用户不需要
配置 sudo 认证
当执行 sudo 命令之前,即可为这一条命令临时赋值 root 授权
但是并不是所有用户都有权利使用sudo ,需要为用户配置 sudo 认证
配置好,在执行命令之前,加上sudo 可以临时获得root 授权执行命令
打开配置文件
命令 visudo
也可以 vim /etc/sudoers
在末尾添加
用户名 ALL=(ALL) NOPASSWD: ALL
比如:sudo mkdir /123
用户、用户组
linux 可以支持多用户、多用户组、用户加入多个用户组
linux 权限管控的单元是用户级别和用户组级别
用户可以加入用户组
必须是ROOT用户
权限控制可以针对用户也可以针对用户组
groupadd(创建用户组)
固定格式:groupadd 组名
groupadd test
groupdel(删除用户组)
固定格式:groupdel 组名
groupdel test
useradd(创建用户)
格式:useradd [-g -d] 用户名
- -g 指定用户的组,不指定将会创建与用户同名的组并自动加入,如果已存在同名组必须指定
- -d 指定用户 HOME 路径,不指定HOME目录默认在:/home/用户名
useradd 用户名
userdel(删除用户)
格式:userdel [-r] 用户名
- -r 删除用户的HOME目录,不使用的话不会删除
userdel -r test1
id (查看用户组)
如果不制定那么查询的是当前用户的
格式:id 用户名
id 1111
usermod(修改用户组)
固定格式:usermod -aG 用户组 用户名
# 将test4用户加入itcast组里面
usermod -aG itcast test4
getent(查看当前系统有哪些用户)
# 查看有哪些用户
getent passwd
test: x :1002:1002::/home/test:/bin/bash
打印的结果呢,就是
用户名 : 密码 : 用户ID : 组ID : 描述信息(无用) : home目录 : 用户使用的终端
# 查询有哪些组
getent group
test:x :1002:
打印结果就是
组名称:组认证:组ID
权限认知
当我们看详细信息的时候
序号1:表示文件和文件夹的权限控制信息
序号2:表示文件、文件夹所属用户
序号3:表示文件、文件夹所属用户组
drwxr-xr-x. 2 root root 6 1月 4 21:17 公共
这组信息分为四个模块
- 以上 r=读 w=写 x表示执行权限 -表示没有此权限
- 第一个模块只有一位,-表示文件,d表示文件夹,l表示软连接
- 第二个表示所属用户权限,共三位
- 第三个表示其他用户权限,共三位
比如:drwxr-xr-x
所属用户拥有,rwx 读写执行三个权限
所属用户组拥有,rx 拥有读和执行权限,没有写权限
其他用户也是没有写权限
chmod(修改权限控制命令)
注意:只有文件、文件夹的所属用户或root用户可以修改
格式:chmod [-r] 权限 文件或文件夹
- -R 对文件夹内的全部内容应用同样的权限修改
- 权限:u 表示所属用户 g 所属群组 o 其他;例如:u=rwx
# 修改权限 u=r,g=w,o=x 文件夹www
chmod u=r,g=w,o=x www/
权限的数字表示法:可以分为三个数字表示。r=4,w=2,x=1
0 表示无任何权限 即 -
1 表示执行权限 即 x
2 表示写权限 即 w
3 表示写和执行权限 即 wx
4 表示读权限 即 r
5 表示读和执行权限 即 rx
6 表示读和写权限 即rw
7 表示读写执行权限 即 rwx
chmod 751 /www
chown (修改文件或者文件夹所属用户或用户组)
注意:普通用户无法修改所属为其他或组、只适合root用户可以修改
格式:chown [-R] [用户] [:] [用户组] 文件或者文件夹
- chown root hello.txt 因为没有:号,表示修改用户
- chown :root hello.txt 因为有:号,后面是root表示修改用户组为root
- chown root:itheima hello.txt 用户修改为root,用户组修改为itheima
- chown -R root test,将文件夹test的所属用户修改为root并对文件夹内全部内容应用同样规则
设置用户名密码
passwd 用户名
查询登录用户
w / who
切换目录
如果不指定用户名则默认修改root用户的密码。
注意:普通用户只能修改自己的密码。
查看前n行
# 前n行
head -n 文件名
过滤内容,查找行
方法一: grep '内容' 文件名
方法二: sed -n '中国/p' 文件名
方法三: awk '中国{print}' 文件名
过滤内容查看行
方法一: cat /root/article.txt | grep '中国'
方法二: cat /root/article.txt | sed -n '/中国/p'
方法三: cat /root/article.txt | awk '/中国/ {print }'
软件操作
解压缩
tar -xzf linux路径压缩包
安装
make && make install
高级命令
grep 过滤
grep [参数] '匹配关键字' fileName
-c:count 匹配个数
-e:多个连续命令,即正则表达式方式
-E:extend 正则表达式
-i:ignore 忽略大小写
-n:number 显示匹配到文本的行号
-r:recursive 递归匹配,操作文件夹的时候可以用到
-v:反转,即命中的不显示,没有命中显示出来
sed 在线编辑
sed [参数] [动作]
参数
-n :使用安静模式。在一般 sed 的用法中,所有来自stdin的数据一般都会被列出到终端上。但如果加上 -n 参数后,则只有经过sed特殊处理的那一行或者动作.才会被列出来。
-e :直接在命令列模式上进行 sed 的动作编辑。
-f :直接将 sed 的动作写在一个文件内,-f file 则可以运行 file内的 sed 动作。
-r:sed 动作支持的是延伸型正则表达式的语法。
-i :直接修改读取的文件内容,而不是输出到终端。
动作
'起行,终止行[动作行为]' 动作行为直接拼接
案例:'2,4d'
a:新增,a的后面可以接字符串,而这些字符串会在新的一行出现目前的下一行.
c:取代,c的后面可以接字符串,这些字符串可以取代n1,n2之间的行
d:删除,d后面通常不接任何字符串
i:插入,i的后面可以接字符串,而这些字符串会在新的一行出现目前的上一行.
p:将某个选择的数据印出。通常p会与参数 sed -n 一起运行
s:取代,可以直接进行取代的工作。通常这个s的动作可以搭配正则表达式。例如:1,20s/old/new/g
awk 分析
awk '{pattern + action}' {filenames}
# 内置变量
ARGC :命令行参数个数
ARGV :命令行参数排列
ENVIRON :支持队列中系统环境变量的使用
FILENAME:awk浏览的文件名
FNR :浏览文件的记录数
FS :设置输入域分隔符,等价于命令行 -F选项,默认分隔符是\tab
NF :浏览记录的域的个数
NR :已读的记录数
OFS :输出域分隔符
ORS :输出记录分隔符
RS :控制记录分隔符
$0 :整条记录
$1 :表示当前行的第一个域
ll | grep -e '.txt' |awk 'BEGIN {sum = 0} {sum += $5} END {print sum}'
sed 清除空格
sed -i s/[[:space:]]//g 文件名
seq 打印数字
格式:
seq 尾数
seq 4
# 结果
# 1
# 2
# 3
# 4
seq 首数 尾数
seq 5 10
# 结果
# 5
# 6
# 7
# 8
# 9
# 10
seq 首数 增量 尾数
seq 5 2 10
# 结果
# 5
# 7
# 9
指定间隔符 -s
打印2到10,间隔符 : , 自增2
seq -s : 2 2 10
# 2:4:6:8:10
以 转义符作为间隔符
用 echo 打印出 \t
seq -s "`echo -e '\t'`" 2 2 10
# 2 4 6 8 10
自动补齐默认空格 -f
- %3g 表示不足三位自动空格补齐
- %03g 表示不足三位,用0补齐
[root@localhost ~]# seq -f "%3g" 50 10 100
# 50
# 60
# 70
# 80
# 90
#100
根据最大数自动用0补齐 -w
不可以和 -f 一起使用
[root@localhost ~]# seq -w 50 50 100
#050
#100
cut 显示行的指定部分
- -d “间隔符” 以什么为间隔
- -fn 显示第 n 列
- -fn,m 显示n和m行
- - -complement 取反
[root@localhost ~]# cut -d ' ' -f1 compute.txt
姓名
张三
李四
sort 排序
- -kmn 以m列数值排序,后面还可以加
- r : 表示反方向排序
- -t 以什么作为分隔符
cat 111.txt |sort -t : -k2n
aaa:10:1.1
ccc:30:3.3
ddd:40:2.2
eee:50:5.5
bbb:60:4.4
uniq 去重
注意:只能去掉相邻的重复值,如果需要去除全部,需要排序
- -i 忽略大小写
- -c 统计每行重复次数
- -d 仅显示重复的列,1次的将不展示
sort 111.txt | uniq
# aa
# bb
# cc
# dd