Linux基础命令
命令格式:[ls][-参数][目录]
ls命令功能:用于列出当前工作目录内容,或指定目录中的文件和子目录
-l:以长格式形式,显示文件信息:文件权限、所有者、大小...
-a:列出指定目录下的,所有文件和目录,包括以点开头的隐藏文件
-h:以人类可读的格式显示文件和目录的大小
-S:以文件大小降序排序(从大到小)
-r:逆序显示目录中的文件和子目录
-R:递归显示;依次展开全部文件
-t:按时间排序,最新的在最上面
-G:不显示组文件
文件颜色类型
蓝色 → 目录
绿色 → 可执行文件
红色 → 压缩文件
浅蓝色 → 链接文件
灰色 → 其他文件
打包/压缩
压缩
[root@localhost tmp]# dd if=/dev/zero of=/tmp/data bs=10M count=20
# 创建一个大文件 这个文件叫/dev/zero 零发生器,of功能向外输出二进制的0;/dev/null 黑洞文件,相当于一个粉碎器;bs block size 块大小;count数量: 20
gzip:z
[root@localhost tmp]# gzip data
[root@localhost tmp]# gunzip data.gz
bzip:j
[root@localhost tmp]# bzip2 data
[root@localhost tmp]# bunzip2 data.bz2
打包:
[root@localhost tmp]# tar -cvf /tmp/boot.tar /boot/ #-c create -v view -f file
[root@localhost tmp]# tar -xvf /tmp/boot.tar -C /tmp/ #-x 解包 -C 指定解包路径
[root@localhost tmp]# tar -tvf /tmp/boot.tar #-t 查看
[root@localhost tmp]# tar -rvf /tmp/boot.tar /root/initial-setup-ks.cfg # -r 追加打包
打包/gzip压缩
[root@localhost tmp]# tar -zcvf /tmp/boot.tar.gz /boot/
[root@localhost tmp]# tar -ztvf /tmp/boot.tar.gz
[root@localhost tmp]# tar -zxvf /tmp/boot.tar.gz
打包/bzip2压缩
[root@localhost tmp]# tar -jcvf /tmp/boot.tar.bz2 /boot/
[root@localhost tmp]# tar -jtvf /tmp/boot.tar.bz2
[root@localhost tmp]# tar -jxvf /tmp/boot.tar.bz2
cd命令--相对路径
[root@localhost /]# cd /mnt/iso
[root@localhost iso]# pwd #可搭配pwd使用;pwd显示当前位置,以绝对路径的方式
/mnt/iso
[root@localhost ~]# cd /mnt #相对于当前的工作目录,切换到目标目录,从当前位置出发
[root@localhost mnt]# cd #不加任何参数,表示切换到当前用户的主目录
[root@localhost ~]#
[root@localhost ~]# cd /mnt/iso
[root@localhost iso]# cd - #返回上次工作目录
/root
[root@localhost ~]# cd /mnt/iso
[root@localhost iso]# cd .. #返回上层目录
[root@localhost mnt]# cd . #刷新
[root@localhost ~]# cd /mnt/iso
[root@localhost iso]# cd ../.. #返回上层的上层目录
[root@localhost /]#
查看文本文件内容: less more head tail cat
[root@localhost ~]# less /root/anaconda-ks.cfg #上下左右方向键可用
[root@localhost ~]# more /root/anaconda-ks.cfg #上一页B 下1行回车 下1页空格;显示百分比
[root@localhost ~]# head /root/anaconda-ks.cfg #默认查看文件前十行
[root@localhost ~]# head -20 /root/anaconda-ks.cfg #默认查看文件前20行
[root@localhost ~]# tail /root/anaconda-ks.cfg #默认查看文件后10行
[root@localhost ~]# tail -f /var/log/messages #动态监控日志
[root@localhost ~]# cat /root/anaconda-ks.cfg #查看文件
[root@localhost ~]# cat -n /root/anaconda-ks.cfg #显示行号
[root@localhost ~]# cat -b /root/anaconda-ks.cfg #只显示有效行号
[root@localhost ~]# cat -n /root/anaconda-ks.cfg | less
应用:
1.查看/etc/passwd 文件下,第30-35行
[root@localhost ~]# cat -n /etc/passwd |head -35|tail -6
2.查看/etc下的文件,并且按大小排序并且只显示最大的文件
[root@localhost ~]# ls -lhS /etc/ | head -2
3.查看/etc下的文件,并且按大小排序并且只显示最小的文件
[root@localhost ~]# ls -lhrS /etc/ | head -2
3.查看/etc下的文件,并且按时间排序并且只显示最新的文件
[root@localhost ~]# ls -lht /etc/ | head -2
4.查看/etc下的文件,并且按时间排序并且只显示最旧的文件
[root@localhost ~]# ls -lhrt /etc/ | head -2
文件管理:cp / mv / touch / mkdir / rmdir /rm
复制:cp --拷贝后源文件还在
[root@localhost ~]# cp /root/abc.txt /tmp/ # 源文件地址;目标地址
[root@localhost ~]# cp /root/abc.txt /tmp/xxx.txt # 拷贝文件的过程重命名
[root@localhost ~]# cp -r /root/abc /tmp/ # -r递归拷贝,拷贝目录需要递归
[root@localhost ~]# cp -r /root/abc /tmp/yyy # 拷贝目录的过程重命名
移动,剪切:mv --源文件转移,移动不需要递归
[root@localhost ~]# mv /root/abcd.txt /root/abce.txt /tmp/ 移动多个文件到tmp
[root@localhost ~]# mv /root/abc.txt /tmp/abc1.txt 移动的过程重命名
创建文件 touch
[root@localhost ~]# touch abc{1..10000}.txt 上限取决硬盘,但是占很少的空间
[root@localhost ~]# touch {a,b,c}{1..3}.txt
创建目录 mkdir (-p递归)
[root@server ~]# mkdir abc{1..10000}
[root@server ~]# mdkir {a,b,c}{1..3} 创建9个文件 大括号
[root@localhost ~]# mkdir -vp /root/xx/yy # -v显示创建过程,-p递归创建文件
mkdir: 已创建目录 "/root/xx"
mkdir: 已创建目录 "/root/xx/yy"
rmdir :只能删除空目录
空目录:文件下 只有. 和.. (两个文件 才是空目录,系统构造问题)
[root@localhost ~]# ls /root/xx -a
. .. yy
[root@localhost ~]# ls /root/xx/yy -a
. ..
[localhost ~]# rmdir -vp /root/xx/yy
rmdir: 正在删除目录 "/root/xx/yy"
rmdir: 正在删除目录 "/root/xx"
rmdir: 正在删除目录 "/root"
rmdir: 删除目录 "/root" 失败: 设备或资源忙
[root@localhost ~]# ls /root/xx/yy
ls: 无法访问/root/xx/yy: 没有那个文件或目录
删除:rm
[root@localhost ~]# rm -rf /root/abc.txt -r递归 -f强制删除
[root@localhost ~]# touch abc.txt
[root@localhost ~]# rm -r /root/abc.txt
rm:是否删除普通空文件 "/root/abc.txt"?n
[root@localhost ~]# rm -rf -i /root/abc.txt # -i交互式
rm:是否删除普通空文件 "/root/abc.txt"?y
删除/home下所有文件 和 目录
rm -rf /home/*.txt
rm -rf /home/abc*
对应练习:
1.建立以下目录结构:
/aa
/ \
ba/ bb/
/ \ \
ca/ cb/ cc/
可否一条命令创建?
[root@localhost aa]# mkdir -p /aa/ba/ca /aa/ba/cb /aa/bb/cc
[root@localhost aa]# tree -L 2
.
├── ba
│ ├── ca
│ └── cb
└── bb
└── cc
tree:以树状格式列出目录的内容, 查看文件系统的结构
挂载/卸载
挂载:把一个块设备挂载到一个目录上,让这个目录成为这个块设备的入口,这个过程叫挂载,被挂载的目录称之为挂载点。
[root@localhost mnt]# mount -t iso9660 /dev/cdrom /mnt/
卸载:
[root@localhost ~]# cd /mnt #切进来的时候,无法卸载
[root@localhost mnt]# !umount
umount -t iso9660 /dev/cdrom /mnt/
umount: /mnt:目标忙。
(有些情况下通过 lsof(8) 或 fuser(1) 可以
找到有关使用该设备的进程的有用信息)
umount: /mnt:目标忙。
(有些情况下通过 lsof(8) 或 fuser(1) 可以
找到有关使用该设备的进程的有用信息)
[root@localhost mnt]# umount -l /mnt #强制卸载
rpm 软件安装
安装软件:安装软件的前提,需要先找到软件;Linux 一切皆文件,所以光驱对于他来说也是一个文件,我的理解镜像就像是Windows里的应用商店
[root@localhost ~]# mount -t iso9660 /dev/cdrom /mnt/ #/dev/cdrom被挂载的设备 /mnt挂载点
mount: /dev/sr0 写保护,将以只读方式挂载
[root@localhost ~]# df -Th #查询挂载设备
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/sr0 iso9660 4.4G 4.4G 0 100% /mnt
[root@localhost ~]# cd /mnt
[root@localhost mnt]# ls
CentOS_BuildTag GPL LiveOS RPM-GPG-KEY-CentOS-7
EFI images Packages RPM-GPG-KEY-CentOS-Testing-7
EULA isolinux repodata TRANS.TBL
[root@localhost mnt]# cd Packages/
[root@localhost Packages]# rpm --import /mnt/RPM-GPG-KEY-CentOS-7 #导入校验key
[root@localhost Packages]# rpm --import /mnt/RPM-GPG-KEY-CentOS-Testing-7
[root@localhost Packages]# rpm -ivh /mnt/Packages/vsftpd-3.0.2-25.el7.x86_64.rpm #安装,除了安装时需要写完整的包名,其他时间简写即可
准备中... ################################# [100%]
正在升级/安装...
1:vsftpd-3.0.2-25.el7 ################################# [100%]
[root@localhost Packages]# rpm -qc vsftpd #查询配置文件
/etc/logrotate.d/vsftpd
/etc/pam.d/vsftpd
/etc/vsftpd/ftpusers
/etc/vsftpd/user_list
/etc/vsftpd/vsftpd.conf
[root@localhost Packages]# rpm -e vsftpd #卸载
[root@localhost Packages]# rpm -qf /etc/vsftpd/ftpusers #通过文件检索对应的软件包(想知道这个文件哪里来的)
vsftpd-3.0.2-25.el7.x86_64
[root@localhost Packages]# rpm -qi vsftpd #查询包的信息
Name : vsftpd
Version : 3.0.2
Release : 25.el7
Architecture: x86_64
Install Date: 2023年08月13日 星期日 14时37分12秒
·····
[root@localhost Packages]# rpm --help #还有其他的命令,如果有需要可以查询
用法: rpm [选项...]
配置本地yum源
[root@localhost ~]# mount -t iso9660 /dev/cdrom /mnt/
[root@localhost ~]# ls /etc/yum.repos.d/
CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo
CentOS-CR.repo CentOS-fasttrack.repo CentOS-Sources.repo
[root@localhost ~]# mkdir /etc/yum.repos.d/old
[root@localhost ~]# mv /etc/yum.repos.d/* /etc/yum.repos.d/old
mv: 无法将目录"/etc/yum.repos.d/old" 移动至自身的子目录"/etc/yum.repos.d/old/old" 下
[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# ls
old
[root@localhost yum.repos.d]# vim /etc/yum.repos.d/local.repo
[local] #别写特殊符号和空格
name=local #iso name(描述)来源于镜像
baseurl=file:///mnt #这是我根下挂载点的绝对路径
gpgcheck=1 #做系统校验,理论上会加校验。1开启,0关闭
enabled=1
[root@localhost yum.repos.d]# rpm --import /mnt/RPM-GPG-KEY-CentOS-7
[root@localhost yum.repos.d]# rpm --import /mnt/RPM-GPG-KEY-CentOS-Testing-7
key的来源:rpm --import /mnt/ 导入后,系统就有校验key了,key来源于镜像;导完gpgcheck才可以写1
[root@localhost yum.repos.d]# yum makecache fast #建立缓存
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
local | 3.6 kB 00:00
(1/2): local/group_gz | 165 kB 00:00
(2/2): local/primary_db | 3.2 MB 00:00
元数据缓存已建立
[root@localhost yum.repos.d]# yum repolist #显示源内软件包数量
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
源标识 源名称 状态
local local 4,067
repolist: 4,067
互联网yum
[root@server yum.repos.d]# wget -O /etc/yum.repos.d/CentOS-Base.repo <https://repo.huaweicloud.com/repository/conf/CentOS-7-reg.repo> #华为镜像站
- wget -O /etc/yum.repos.d/CentOS-Base.repo
<https://developer.aliyun.com/mirror/> # 阿里云镜像站
<https://mirrors.aliyun.com/repo/Centos-7.repo>
或者curl -o /etc/yum.repos.d/CentOS-Base.repo <https://mirrors.aliyun.com/repo/Centos-7.repo>
<https://mirror.tuna.tsinghua.edu.cn/help/centos/> #清华大学镜像站
基础命令:
shell基础:
ctrl + c 中断
ctrl + l 清屏 ~ (clear
tab 键:补齐最后一个指令
---yum install bash-com*补齐命令/参数的包
history:显示最后1000条命令
!1234 结合history显示的命令序号,再执行一次这个命令
! vim 再执行历史命令中最后一条以vim开头的指令
!!再执行一次上条命令
vim !$上条指令最后一个参数
或者是Alt.