目录
shell简单介绍
shell的作用:接受用户输入的命令----解释命令------传递给系统内核运行
- Linux系统中运行的一种特殊程序
- 在用户和内核之间充当翻译官”
- 用户登录Linux系统时,自动加载一个Shell程序
- Bash是Linux系统中默认使用的Shell程序
Linux命令的分类
内部命令 | 外部命令 |
集成于shell解释程序内的一些特殊指令,也称为内建(Built-in)指令 | Linux系统中能够完成特定功能的脚本文件或二进制程序 |
属于shell的一部分 | 属于shell解释器程序之外的命令 |
没有单独对应的系统文件 | 每个外部命令对应了系统中的一个文件 |
自动载入内存,可以直接使用 | 必须知道其对应的文件位置,由shell加载后才能执行/bin,/usr/bin,/usr/local/bin等 |
Linux命令行的格式
命令字 【选项】 【参数】
命令字
- 是整个命令中最关键的一部分
- 唯一确认一条命令
选项
- 短格式选项:使用“-”符号引导
- 长格式选项:使用“--”符号引导
参数
- 命令字的处理对象
- 可以是文件名,目录名或用户等内容
- 个数可以是零到多个
Linux系统基本操作命令
命令行提示字符
[root@localhost ~]# [当前登录系统的用户@主机名称 当前所在的目录]#
表示为管理员登录
$ 表示为普通用户登录
1、切换用户
su 用户名 //切换后所在目录不变
su - 用户名 //切换后所在目录变成用户家目录
2、查看当前主机的完整名称
hostname
3、临时设置主机名
hostname 主机名
4、永久设置主机名
hostnamectl set-hostname 主机名
或
vi /etc/hostname(设置完后需重启系统才生效)
按i键先删除旧主机名,再输入新主机名(只有第一行有效)
按ESC键,再按SHIFT + “:” 组合键,输入 wq ,再按回车键退出
5、查看当前系统版本信息
cat /etc/redhat-release
或
cat /etc/*release
6、查看当前内核版本
uname -r
7、临时修改网卡IP
ifconfig ens33 192.168.80.3/24 //临时创建之后,重启网卡会失效
或
ifconfig ens33 192.168.80.3 netmask 255.255.255.0
8、永久修改网卡IP
vi /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet //设置网卡类型,“Ethernet”表示以太网
DEVICE=ens33 //设置网卡的名称
ONBOOT=yes //设置网卡是否在 Linux 操作系统启动时激活
BOOTPROTO=static //设置网卡的配置方式,“static”表示使用静态IP地址,“dhcp”时表示动态获取地址
IPADDR=192.168.10.1 //设置网卡的 IP 地址
NETMASK=255.255.255.0 //设置网卡的子网掩码
GATEWAY=192.168.10.2 //设置网卡的默认网关地址
DNS1=8.8.8.8 //设置DNS服务器的 IP 地址
9、重启网卡
systemctl restart network //重启所有的网卡
ifdown ens33 ; ifup ens33
ifdown ens33 //关闭某个网卡
ifup ens33 //启动某个网卡
ifconfig ens33 down //临时禁用某个网卡
ifconfig ens33 up //重新激活某个网卡(不会更新IP地址)
10、查看网卡地址
ifconfig
或
ip a
11、添加静态路由条目
临时添加路由(重启network服务失效)
方法一:
route add -net 192.168.3.0/24 gw 192.168.1.2 [dev ens33]
-net:指定目标网段的地址
gw:指定下一跳路由器的 IP 地址
dev: 为路由指定的输出接口
12、查看路由表条目
route -n
13、删除静态路由条目
route del -net 192.168.1.0/24
方法二:
ip route add 192.168.10.0/24 via 192.168.1.2 [dev ens33]
14、永久添加路由(重启network服务生效)
方法一:
vi /etc/sysconfig/static-routes
any net any gw 192.168.80.2
any net 192.168.3.0/24 gw 192.168.80.2
any net 10.0.0.0 netmask 255.0.0.0 gw 192.168.80.2
any host 192.168.100.100 gw 192.168.80.2
systemctl restart network
方法二:
vim /etc/sysconfig/network-scripts/route-ens33
default via 192.168.80.2 dev ens33 #默认路由,另一种格式 0.0.0.0/0 192.168.14.254 dev ens33
10.211.6.0/24 via 192.168.80.2 dev ens33
192.168.100.200 via 192.168.14.254 dev ens33
systemctl restart network
15、测试网络连接
ping
traceroute //(静态跟踪)判断链路中哪个三层设备有问题
mtr //(动态跟踪)检测延迟(其中之一)
****tcpdump
16、重启系统
reboot
init 6
shutdown -r now
17、关机
poweroff
init 0
shutdown -h now
shutdown -c
关闭防火墙
1. 临时关闭命令 systemctl stop firewalld.service
2. 查看服务状态 systemctl status firewalld.service (systemctl status firewalld 查看防火墙 systemctl status network)
3. 永久关闭(下次开机不自启动) systemctl disable firewalld.service
####关闭 SELinux
对于 SELinux,初学者可以这么理解,它是部署在 Linux 上用于增强系统安全的功能模块。
1. 临时关闭命令 setenforce 0
2. 查看服务状态 /usr/sbin/sestatus -v
3. 永久关闭(下次开机不自启动)修改vim /etc/selinux/config 将配置文件中的SELINUX=enforcing改为SELINUX=disabled
设置永久关闭之后需要重启机器
编辑linux命令行的辅助操作
Tab 键:自动补齐
反斜杠“\”:强制换行
Ctrl+U组合键:清空至行首
Ctrl+K组合键:清空至行尾
Ctrl+L组合键:清屏
Ctrl+C组合键:取消本次命令编辑
Ctrl+U组合键
Ctrl+E组合键:光标跳到行尾
Ctrl+A组合键:光标跳到行头
18、命令帮助help和--help
显示命令的帮助信息,命令的参数和用法等
19、查看当前工作目录:pwd
[root@localhost ~]# pwd
/root
20、切换工作目录:cd (相对路径、绝对路径)
绝对路径:cd /etc
相对路径:cd etc/
cd /home #后面跟绝对路径,切换到home目录
cd ./home #后面跟相对路径,切换到home目录
cd ~ #切换到当前用户的家目录
cd #切换到当前用户的家目录
cd ~user #切换到某一个用户的家目录,只有root才行,别的用户只能在自己家
cd - #切换到上一次执行操作的目录
cd .. #切换到上一层目录(父目录)
21、列表显示目录内容ls(常用选项、可结合通配符)
命令字 [选项] [参数]
操作 功能 要执行的对象
-l #将文件信息属性详细列出,通常直接使用ll,因为设置了别名
-R #递归显示,比如一个目录下还有文件,则把那个文件也一起列出
-d #查看目录本身信息,不显示目录下的内容
-i #显示inode值
-h #友好显示文件大小
-a #遍历所有文件及目录 (ls内定将文件名或目录名称开头为"."的视为隐藏档,不会列出)
-A #跟-a 唯一的不同是不列出当前目录和上一层目录
22、通配符 颜色表示
黑色 数据文件 TXT
绿色 可执行文件
黄色 块设备文件
红色 压缩包
蓝色 文件夹
天蓝色 连接文件(快捷方式)
通配符
“?”匹配一个字符
ls -lh /dev/sd?1
“ * ” 匹配所有非隐藏的字符无论多长多短
ls -lh /etc/ns*.conf
扩充
- 普通文件
d 目录文件 directory
b 块设备文件block
p 管道文件pipe
s 套接字文件 socket
l 符号链接文件link
#### **通配符扩充**
| 符号 | 效果
| ----------- | ------------------------------------------------------------
| ? | 匹配一个字符 f?.txt
| * | 匹配所有非隐藏的字符无论多长多短,但不匹配 "." 开头的文件,即隐藏文件
| {1..10} | 1到10
| {a..z} | a b c ...z
| {A..Z} | A B C .....Z
| [123] | 取其中之一有就显示没有也无所谓
| [a-z] | 范围需要注意
| [0-9] | 匹配数字范围(0123456789)
| \ | 转义符,表示原来的意思
| [[:lower:]] | 小写字母表示 a-z
| [[:upper:]] | 大写字母表示 A-Z
| [^zhou] | 匹配列表中的所有字符以外的字符
| [[:digit:]] | 任意数字,相当于0-9
|
23、给命令设置别名alias
alias #查看系统当前所有可用别名
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
alias ll='ls -lt' #设置别名
注意: 在定义别名时,等号两边不能有空格,否则shell不能决定您需要做什么。仅在命令中包含空格或特殊字符时才需要引号
unalias ll #删除别名
永久生效
vim /root/.bashrc**
临时修改
- alias 命令别名 = “命令”
- unalias 别名命令 删除别名
- \加命令 原始命令
修改
- 在/etc/bashrc 会影响全部
- /root/.bashrc只影响当前用户
补充:
别名>内部>hash>外部命令(先查找别名在查找内部命令,缓存最后外部)
24、统计目录及文件空间占用情况du
-h:显示出每一个文件以及大小,单位是KB,MB,GB
-s:显示文件或整个目录的大小,默认单位是KB,但不会把他们显示出来
du -sh * #生产环境常这样搭配使用统计当前目录下所有文件的大小并显示出来,常用于磁盘水位过高的情况
25、创建新目录mkdir
mkdir /opt/sj #创建目录,注意:父目录必须存在
-p:创建一个已有的目录会报错,加-p则不会报错/当父目录不存在时,递归创建
26、创建空文件touch
①文件存在:修改文件或者目录的时间属性,包括存取时间和更改时间。
②文件不存在:创建新文件
touch [文件名]
touch [文件名] [文件名]
touch的高级用法
[root@localhost opt]# touch {1,2,3}
[root@localhost opt]# ls
1 2 3 rh
[root@localhost opt]# touch {1,2,3}.txt
[root@localhost opt]# ls
1 1.txt 2 2.txt 3 3.txt rh
[root@localhost opt]# touch {4..8}.txt
[root@localhost opt]# ls
1 1.txt 2 2.txt 3 3.txt 4.txt 5.txt 6.txt 7.txt 8.txt rh
如果要删除则rm -rf 1\ 2\ 3
27、创建链接文件ln(软链接、硬链接)
ln 命令用于为文件或目录建立链接文件(类似于 Windows 系统中的快捷方式),提高 用户定位文件或定位目录的效率
链接文件包括软链接和硬链接两种类型,其中软链接又称为符号链接。无论是访问软链接还是硬链接,与直接访问原始文件的效果基本相同
ln -s //创建软链接,相当于创建一个快捷方式
ln //创建硬链接,相当于复制了一份副本
硬链接:
一般情况下,文件名和inode号码是"一一对应"关系,每个inode号码对应一个文件名。但是,Unix/Linux系统允许,多个文件名指向同一个inode号码。这意味着,可以用不同的文件名访问同样的内容;对文件内容进行修改,会影响到所有文件名;但是,删除一个文件名,不影响另一个文件名的访问。这种情况就被称为"硬链接"(hard link) //个人理解:系统磁盘分块储存 文件夹与磁盘对应储存其数据的块之间是硬连接,系统给予唯一的ID号(inode)区分。此时可以创建另一个文件夹,同样指向这个数据储存的块,删除前面的文件夹后,数据还在,相当于备份。
软链接:
除了硬链接以外,还有一种特殊情况。文件A和文件B的inode号码虽然不一样,但是文件A的内容是文件B的路径。读取文件A时,系统会自动将访问者导向文件B。因此,无论打开哪一个文件,最终读取的都是文件B。这时,文件A就称为文件B的"软链接"(soft link)或者"符号链接(symbolic link)。这意味着,文件A依赖于文件B而存在,如果删除了文件B,打开文件A就会报错:"No such file or directory"。这是软链接与硬链接最大的不同:文件A指向文件B的文件名,而不是文件B的inode号码,文件B的inode"链接数"不会因此发生变化。 //同样,软连接指向的是前面的文件夹,不是存储数据的块。
注:相对路径与绝对路径 建议绝对路径
28、复制文件或目录cp
cp -p:连属性一起复制
cp -a:保留权限,复制软链接本身,递归复制
cp -r:递归复制
cp -f:强制复制,不与用户交互
cp -i:提醒覆盖
cp的高级用法:cp -v file1.txt{,.bak}常用于备份
cp 1.txt abc/2.txt 复制1.txt到abc文件下名重命名
29、删除文件或目录rm
-i:删除文件或目录时提醒用户确认
-r:删除目录时必须使用此选项,表示递归删除整个目录树(应谨慎使用)。
-f:删除文件或目录时不进行提醒,而直接强制删除
常见用法:rm -rf /*
删除空目录:rmdir
30、移动文件或目录/改名mv
用法:mv [文件名] [目录名]
mv [文件名] [文件名]
-i:若指定目录已有同名文件,则先询问是否覆盖旧文件
-f:在 mv 操作要覆盖某已有的目标文件时不给任何指示
当在同一目录下用mv就是改名,如果是跨目录使用mv的话就是移动,相当于剪切的操作
31、查找命令/文件存放目录which
which 命令用于查找 Linux 命令程序并显示所在的具体位置,其搜索范围主要由用户的环境变量 PATH 决定(可以执行“echo $PATH”命令查看),这个范围也是 Linux 操作系统在执行命令或程序时的默认搜索路径。
32、查找文件或目录find:采用递归方式2,根据目标的名称、类型、大小等不同属性进行精细查找
不设置任何参数,则 find 命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示
-name 按名称查找:
-size 按大小查找:
-user 按文件属主:
-type 按类型查找:普通文件(f)、目录(d)、块设备文件(b)、字符设备文件(c)、链接(l)
按时间查找 mtime(天) atime ctime 【-mtime +30 30天前的文件】
块设备指的是成块读取数据的设备(如硬盘、内存等),而字符设备指的是按单个字符读取数据的设备(如键盘、鼠标等)
Find工具-name参数案列:
find /etc -name "resol*.conf"
find /data/ -name "*.txt" #查找/data/目录以.txt结尾的文件;
find /data/ -name "[A-Z]*" #查找/data/目录以大写字母开头的文件;
find /data/ -name "test*" #查找/data/目录以test开头的文件;
Find工具-size参数案列
find /data/ -size +1M #查文件大小大于1Mb的文件;
find /data/ -size 4M #查文件大小为10M的文件;
find /data/ -size -1M #查文件大小小于1Mb的文件;
-size +4M 表示4M 以上 不包括 4M
-size 4M 表示3M 到4M 且不包括3M
-size -4M 表示3M 以内 包括3M
1G 1024 代表1023M - 1024M 不包括1023M
Find工具-type参数案列:
find /boot -type d
find /data/ -type d #查找/data/目录下的文件夹;
find /data/ ! -type d #查找/data/目录下的非文件夹;
find /data/ -type l #查找/data/目录下的链接文件。
find /data/ -type d|xargs chmod 755 -R #查目录类型并将权限设置为755;
find /data/ -type f|xargs chmod 644 -R #查文件类型并将权限设置为644;
查找存在的用户的文件
find /home -user 用户名
find /home -user 用户名 -group 组名
设置 find 命令的查找条件时,若需要使用“*”或“?”通配符,最好将文件名用双引号括起 来,以避免当前目录下符合条件的文件干扰查找结果
find /boot -size +1024k -a/-o -name "vmlinuz*"
使用“-a”“-o”组合两个条件,前者表示两个条件必须同时满足, 后者表示只需满足其中任何一个条件即可