Linux命令
linux的哲学思想
优点,优势
1.一切都是一一个文件。(包括硬件,文本, 二进制,源代码)
2.系统中拥有小型,单- -用途的程序。(- 个程序只负责做好自己的本职工作)
3.当遇到复杂任务,通过不同功能用途的程序组合起来完成。轻量级, -台服务dhcp ip数据库服务网页
4.避免令人困惑的用户界面就是没有复杂的图形界面。() 我想怎么使用程序,win程序
5.连配置文件都存储在文本中,方便增删改查。
6.不在乎后缀名,有没有都无所谓,不是通过后缀名来定义文件的类型。
基础知识:
root #表示用户
localhost #主机名
~ #家目录
# #管理员用户
$ #普通用户
root #root的家目录
opt #opt目录
[root@localhost ~]#
[houlixie@localhost ~]$
[houlixie@localhost ~]$ hostname
localhost.localdomain
[houlixie@localhost ~]$
基础命令:
#关机命令
halt #立刻关机poweroff #立刻关机
shutdown -h now #立刻关机(root用户使用)
shutdown -h 10 #10分钟后自动关机
#重启
reboot
init6
shutdown -r now
#修改语言
修改LANG变量实现中文语言提示
[root@localhost ~]# LANG=zh _CN.UTF-8
[root@localhost ~]# echo SLANG
zh_ CN.UTF-8
[root@localhost ~]# LANG=en_ US.UTF-8
[root@localhost ~]# echo SLANG
en_ US.UTF-8
#修改颜色
[root@localhost ~]# vim /root/. bashrc
PS1='\[\e[1; 34m\] [\u@\h \W]\$\[\e [Om\]'
[root@localhost ~]#source /root/. bashrc
#修改时间date -s “2022-09-15 12:00”
Linux命令精讲
相信大家都了解Widows, windows是面向用户的系统, 图形化界面操作,点点对话框便可以完成操作,那inux是 已系统精简出名的,所以不是面向用户
的操作系统,有一定的操作难度,那我们今天就要学会如何去使用一一些基本命令 去对inux系统进行操作达到我们的要求。
shell
- Linux系统中运行的一种特殊程序
- 在用户和内核之间充当“翻译官”
- 用户登录Linux系统时,自动加载一个Shell程序
- Bash是Linux系统中默认使用的Shell程序
命令执行的顺序
1 绝对路径下的执行程序
2 先看别名,如果有别名 直接执行
3 再区别是 内部 还是外部, 内部直接执行
4 外部 首先 看 hash 表 表中直接执行, 表中有 但是找不到 直接报错
5 没有hash 回去 $PATH 路径下的文件夹去找,找到执行 找不到直接报错
绝对路径: 以根开头
相对路径: 不是以根开头
初学的几个命令 比较实用的:
ls (list)
查找
-a 显示所有文件
-l 长格式-R 递归显示
-d 只显示当前目录
-t 已时间排序
-i 显示indoe号
-S 文件大小排序举例:显示/etc目录下以m,n,r,p开头的文件或目录列表
ls /etc/[mnrp]*
显示/etc/目录下所有以rc开头,并最面是0-6之间的数字,其它为任意字符的文件或目录
ls /etc/rc*[0-6]
ls -l 长格式显示 ,文件属性比较详细 ls -l 等于 ll
ls -a 显示所有文件 包括 隐藏文件 且 包括 . .. (在linux 当中已.开头的 为 隐藏文件 )
ls -A 显示所有文件 包括 隐藏文件不包括 . ..
ls -d 只显示当前目录的属性
ls -h 人性化显示(加了文件大小的单位)
ls -R 递归显示
ls --color 显示颜色
ls -S 以文件容量大小排序
ls -i 显示indoe号
注:Ls 一般不单独使用
- 功能有限 要加上选项
- ls单独使用 显示当前文件夹下的所有文件(假如有1000w 直接ls显示会导致直接死机)
ls 会配合 通配符 去过滤需要的文件
通配符 (匹配文件名)
? 任意单个字符
* 任意长度的任意字符
{1..10} 1到10 10个数 {1..100} {a..z}
[123] [123]只代表一个数值 1 2 3 [a-z] 注意范围 不包括 大Z
[0-9] 代表单个数字
[^a-c] 反向匹配
\ 显示原来的意思
举例:以p 开头的文件 p*
以.conf 结尾 *.conf
Alias 别名
1.将常用的一些 比较复杂的命令 简单化
alias 自行定义的命令='常用的复杂命令'
2.单独使用 alias 会显示 所有的 别名命令
3.别名 大? 还是 内部大? 外部大?
- 先判断 他是别名,内部命令 还是 外部命令,如果是别名 直接执行
- 如果是 内部命令 直接在bash中执行
- 如果是外部命令 先看 hash 表 表中有 先找表 表中的路径找不到直接报错
- 表中没有 去找
- /usr/local/sbin : /usr/local/bin : /usr/sbin : /usr/bin : /root/bin (不用记)
- 找到 执行 找不到 报错
- 别名>内部>hash>外部
删除别名: unalias 别名命令
ip -a #显示网卡
ps aux #进程详细信息
tab
这个命令很实用,可以补全命令,按一下 只有一个选项 按两下 将所有命令显示
Ctrl +l #清屏
Ctrl +c #终止命令
Ctrl +a #从光标处跳动命令的最开头
Ctrl +e #从光标处开始跳到 命令的 最末尾
Ctrl +u #从光标处 清空到 开头
Ctrl +k #从光标处 清空到末尾
pwd
显示当前路径cd
cd - 回到上一次目录
cd 去往 当前用户的家目录
cd ~ 去往 当前用户的家目录举例:到etc目录
cd /etc
du (disk use)
统计文件占用磁盘大小
-a 每个文件单独显示
-s 只显示总大小-h 人性化显示
注意 不能跟-as一起使用
举例:写出统计/var目录中的第一层子目录的空间占用情况的命令
cd /var #进入var目录
du -d 1 /var #-d 代表目录层数 1 代表目录层数的第一层
mkdir
-p 递归建立文件夹
-v 显示建目录的过程举例:mkdir -pv /data/{11,22,33}/{aa,bb,cc}
touch
1.当文件不存在时 直接新建该文件,并且该文件是空文件
2.当文件存在,会刷新该文件的时间戳格式:touch 文件名
举例:touch 1.txt
ln 软硬连接:
软连接
ln -s 源文件绝对路径 放连接文件的地方举例:将/etc/local文件做软连接到/usr/sbin/,并改名为 local1
ln -s /etc/local /usr/sbin/local1
硬连接
ln 源文件绝对路径 放连接文件的地方
cp 复制
cp 要复制的文件 要放置复制文件的位置/可以重命名
-f 有相同文件时强制覆盖不提醒
-i 有相同文件时覆盖提醒
-p 保留文件的源权限
-r 复制文件夹一定需要
-a 保留权限 更强大 包括连接文件的属性也可以保留
建议使用-a
Mv 移动 &改名
Which
只能找命令的位置
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
hello.sh 绿色可以执行的程序
你额外安装的命令
1.有执行权限(绿色)
2.要在 $PATH 这个变量的路径下
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/:/mnt
使用命令:
1.在哪个文件夹
2.在文件夹下 是否有你操作的文件?
3.关注你的报错信息
所有使用命令修改的配置 都是临时生效
只有修改配置文件(写入文件)才是永久生效
Find 查找文件
Locate (扩充了解)
1.模糊查询
2.不是实时查询
linux系统中有一个文件数据库,是去找这个数据库
找那些一直不改变的文件
应用范围比较窄
优点:巨快
Updatedb 刷新数据库
Find
优点:
1.默认递归查询
2.它是真的去硬盘上一个一个文件给你找(实时)
3.查找条件巨多
4.精确查找
缺点:
1.慢
基本格式:
find [查找范围] [查找条件表达式]
[查找范围]: 如果 不写 范围 代表 默认当前目录
[查找条件表达式]:
举例:
1.按查找文件名字查找 -name
[root@localhost data]#find /boot/ -name 'vm*'
命令 查找范围 查找条件表达式(查找名字是以vm开头的文件)
/boot/vmlinuz-3.10.0-693.el7.x86_64
/boot/vmlinuz-0-rescue-869dbd607e5e4f758fa152ef2229f2b6
2.按文件大小查找文件 -size k M G
[root@localhost data]#find /boot/ -size +1024k
#查找boot目录下 大于1024k 的文件
[root@localhost data]#find /boot/ -size -1M
#查找boot目录下 小于1M的文件
注意点:文件大小不加加减号是一定的范围,单位越精确越好
[root@localhost data]#find /boot/ -size 1024k
命令 范围 查找表达式
[root@localhost data]#find /boot/ -size 1M
命令 范围 查找表达式
范围公式:
前面的数字 减去1
1024 -1 1023k 到 1024k
1-1 1字节 到 1M
3.按文件属主查找 属主:文件的拥有者 -user
[root@localhost data]#find /home/ -user zhangsan
#找到home 目录下 属于zhangsan用户的文件
4.按文件类型查找 -type f (普通文件) d(目录) c(字符文件) b(块设备)
[root@localhost data]#find /dev/ -type b
#找到 /dev 下 的 块设备文件
5.按照 indoe号查找 -inum 要先知道indoe号
[root@localhost data]#ls -i
9243885 1.txt 9243846 bigfile 9243860 zwz.txt
[root@localhost data]#find -inum 9243885
./1.txt
6.按照目录层级查找文件 -maxdepth level -mindepth level
[root@localhost data]#find /etc/ -maxdepth 2 -mindepth 2
#只看第二层
7.天数查找文件 -mtime
[root@localhost data]#find /boot/ -mtime +7 -type f -size +1M -delete
#找到 7天以上 且文件类型为普通文件 且大于1M的文件 并且 加上处理动作 删除
8处理动作:
默认是:print
- print 输出屏幕让你看一下
- ls 显示详细信息
- delete 直接删除
- ok 连接符 会询问
- exec 连接符 不会询问
find -name "*.txt" -ok mv {} /mnt \;
找到名字以txt结尾的文件
-ok 处理动作 连接 前面后面的命令 会询问你要不要这样处理
mv {} 代指前面 find找到的文件 /mnt 移动到的目录 \;固定格式
不删除,移动文件
find -name '*.txt' -ok mv {} /mnt \;
会询问
find -name '*.txt' -exec mv {} /mnt \;
不会询问