Linux和我们常见的Windows一样,都是操作系统,但不同的是:
Windows:收费的,不开源的,主要用于日常办公、邮箱、娱乐等。
Linux:免费的,开源的,主要用于服务器领域,性能稳定,安全。
使用VMware安装(以Centos为例)
软件选择(默认最小安装)
按照提示一步一步安装,在选择software时,默认是MInimal最小化安装,如要图形界面,需选择Gnome Desktop安装。
分区(可选)
默认为系统自动分区,如要手动分区,选择手动分区按钮。
一般手动分区有,/(根分区,容量较大), /boot,swap(内存不足时会使用交换机分区), /home等等,分区时默认文件系统为xfs。Linx至少有一个/根分区。
Kdump(黑匣子 可选)
LInux出现问题时存储对应内核问题信息。一般选择关闭,避免占用内存空间。
网卡及主机名配置(可选)
打开网卡连接,配置对应地址。配置对应主机名。
密码设置
设置对应root及用户密码。
Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。实际上Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核。
我们可以使用shell实现对Linux系统的大部分管理,例如:
文件管理
用户管理
权限管理
磁盘管理
软件管理
网络管理
…
使用Shell的两种方式:
输入命令 效率低 适合少量的工作
Shell Script 效率高 适合完成复杂、重复性高的工作
命令 选项 参数
ls -la /home
命令:整条Shell命令的主体
选项:会影响命令的行为,通常微调
参数:命令作用的对象
自动补全
# ls /etc/sysconfig/network-scripts/
# cat /etc/sysconfig/network-scripts/ifcfg-eth0
快捷键
^表示 Ctrl
^C 终止前台运行的程序 。例如终止ping
^D 推出 等价exit
^L 清屏
^A 光标移动到命令行的最前端
^E 光标移动到命令行的后端
^U 删除光标前所有字符
^K 删除光标后所有字符
^R 搜索历史命令,利用关键词
Alt+. 引用上一个命令的最后一个参数,等价于!$
ESC . 引用上一个命令的最后一个参数,等价于!$
# ls /etc/sysconfig/network-scripts/
# cat !$ 或者 cat Alt+. 或者cat ESC .
等价于# cat /etc/sysconfig/network-scripts/
历史命令
#history
a.光标上下键显示历史命令
b.^R (搜索历史命令)
c. ! 66 ( ! 表示执行历史中的第几条命令,)
! 字符串 ( 搜索历史命令中最近一个以xxx开头的命令)
!$ (引用上一个命令的最后一个参数)
命令别名
#alias //查看系统当前别名
ll=‘ls -l --color=tty’
# alias wangka=‘cat /etc/sysconfig/network-scripts/ifcfg-ens-33’ //建立别名(临时的,仅在当前Shell生效)
# unalias wangka //取消别名
#\alias //跳过别名
#cp -rf /etc /tmp
#\cp -rf /etc /tmp
建立永久别名:
修改/etc/skel/.bashrc文件,如果想只给某一个用户设置这个别名,就只修改那个用户的家目录下的.bashrc文件。(该文件为shell配置文件,打开shell 时生效)
在.bashrc文件中添加一行:
alias <别名>=’<命令>’
修改完成后刷新
source /etc/skel/.bashrc
命令 --help
#ls --help
man手册
Windows:以多根的方式组织文件 C:\ D:\ E:\
绝对路径: 从/开始的路径 /home/alice/file1
相对路径: 相对于当前目录开始 a.txt ./a.txt [假如:此时在目录/home/alice]
绝对路径示例:
# useradd alice
# touch /home/alice/file1
# touch ~/file2
# touch ~alice/file3
相对路径示例:
# pwd /root
# mkdir abc
# touch …/file3
# touch file4
# touch abc/file5
cd 专用:
cd - 返回上次目录
cd 直接回家
====创建
文件touch
# touch file.txt //无则创建,有则修改时间
# touch file1.txt file2.txt
# touch /home/file3.txt file4.txt
# touch file{1…20}
# touch file{a,b,c} //{}集合,等价 touch filea fileb filec
目录mkdir
# mkdir dir1 //名称相同则报错
# mkdir /home/{dir2,dir3}
# mkdir -v /home/dir4 //显示详细信息
# mkdir -pv /test/adf/ad //-p,创建包括其父路径
====复制cp
# cp -v anaconda-ks.cfg /home/dir1 //目录
# cp -v anaconda-ks.cfg /home/dir1/yang.txt //文件
# cp -rv /etc /home/dir1
# cp -rv /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/passwd /etc/hostname /home/dir2 //将多个文件拷贝到同一个目录
# cp -rf /etc /tmp
====移动mv
# mv file1 /home/dir3 //将 file2 移动到/home/dir3
# mv file2 /home/dir3/file20 //将 file2 移动到/home/dir3,并改名为 file20
# mv file4 file5 //将 file4 重命名为 file5,当前位置的移动就是重命名
====删除rm
# rm -rf dir1 //尽量进入到相对目录下在进行删除
-r 递归
-f force 强制
-v 详细过程
脚本删除: /home/dir1
rm -rf /home/dir1 //脚本删除使用绝对路径
====文本文件 (cat tac less more head tail tailf grep …)
cat
-n 显示行号
-A 包括控制字符(换行符/制表符) linux $ Windows ^M$
less more head tail tailf
# tail -20 /var/log/messages
# tail -f /var/log/secure //-f 动态查看文件的尾部
注:vim, gedit 编辑文件时,索引号会改变
grep 针对文件内容进行过滤
# grep ‘root’ /etc/passwd
# grep ‘bash$’ /etc/passwd //过滤以bash结尾的内容
工作模式:
命令模式、
插入模式、
扩展命令模式。
a. 光标定位
hjkl //上下左右
0 $ //行首 、行尾
gg G //文件行首、行尾
3G 进入第三行
/string (n N 可以循环的) 快速定位到某一行
/^d //查找行首为d开头
/txt$ //查找行尾为txt结束
b. 文本编辑(少量)
y 复制 yy 3yy ygg yG (以行为单位)
d 删除 dd 3dd dgg dG (以行为单位)
p 粘贴
x 删除光标所在的字符
D 从光标处删除到行尾
u undo 撤销
^r redo 重做
r 可以用来修改一个字符
c. 进入其它模式
a 进入插入模式
i 进入插入模式
o 进入插入模式
v 进入可视模式
^v 进入可视块模式
V 进入可视行模式
R 进入替换模式
可视块模式:
块插入(在指定块前加入字符): 选择块^v ,光标选择块,输入I,在块前插入字符, ESC
块替换: 选择块,r 输入替换的字符
块删除: 选择块,d | x
块复制: 选择块,y
a. 保存退出、
:10 进入第 10 行
:w 保存
:q 退出
:wq 保存并退出
:w! 强制保存
:q! 不保存并退出
:wq! 强制保存退出
:x 保存并退出 等价于ZZ
b. 查找替换
:范围 s/old/new/选项 先写 : s/ / / 这里的/可以理解为在/之间的字符,/可以换成其他,例如@,#
:1,5 s/root/yang/ 从 1-5 行的 root 替换为 yang
:5,$ s/root/yang/ $表示最后一行
:1,$ s/root/yang/g == :% s/root/yang/g %表示全文 g 表示全局(一行匹配的所有对象)
:% s#/dev/sda#/var/ccc#g 此处将/dev/sda替换成/var/ccc
:,8 s/root/yang/ 从当前行到第 8 行
:4,9 s/^#// 4-9行的开头#替换为空
:5,10 s/.*/#&/ 5-10行前加入#字符 (.*整行, &引用查找的内容)
c. 读入文件/写文件(另存为)
:w 存储到当前文件
:w /tmp/aaa.txt 另存为/tmp/aaa.txt
:1,3 w /tmp/2.txt
:r /etc/hosts 读入文件到当前行后
:5 r /etc/hosts 读入文件到第 5 行后
d. 设置环境
临时设置:
:set nu 设置行号
:set ic 不区分大小写
:set ai 自动缩进
:set list 显示控制字符
:set nonu 取消设置行号
:set noic
永久的环境: 修改 vim 环境配置文件
/etc/vimrc 影响所有系统用户
~/.vimrc 影响某一个用户
# vim ~/.vimrc
set ic
set nu
Linux 文件有四种时间:
# stat /etc/hostname //查看文件的详细属性
访问时间:atime,查看内容 //RHEL6 会延后修改 atime
修改时间:mtime,修改内容
改变时间:ctime,文件属性,比如权限
删除时间:dtime,文件被删除的时间
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UwuRLr9y-1633062277451)(C:\Users\zengyan\AppData\Roaming\Typora\typora-user-images\image-20211001105048002.png)]
查看文件类型
方法1: ls -l 文件名 //看第一个字符
方法2. file 文件名
[zengyan@localhost ~]$ file /etc/hosts
/etc/hosts: ASCII text
Users and groups:
. Every process (running program) on the system runs as a particular user.
系统上的每个进程(运行的程序)都是作为特定用户运行的
. Every file is owned by a particular user.
每个文件是由一个特定的用户拥有
. Access to files and directories are restricted by user.
访问文件和目录受到用户的限制
. The user associated with a running process determines the files and directories accessible to that process.
与正在运行的进程相关联的用户确定该进程可访问的文件和目录
查看当前登录的用户信息:
[root@tianyun ~]# id
uid=0(root) gid=0(root) groups=0(root)
查看文件的 owner:
[root@tianyun ~]# ll /home/
drwx------. 4 alice alice 4096 Jun 2 15:59 alice
drwxr-xr-x 2 root root 4096 Jun 2 15:33 tianyun
和用户组相关的一些文件:
/etc/passwd
root:x:0:0:root:/root:/bin/bash
用户名 :x:uid:gid:描述 :HOME家目录:shell //x 密码占位符,hoem用户家目录,shell的使用
/etc/shadow
root: 1 1 1MYG2NDG6$a1wtyr5GDM2esAPjug0YP0:15636:0:99999:7:: : //密码信息
/etc/group
root:x:0: //组信息
[root@localhost ~]# man 5 passwd
[root@localhost ~]# man 5 shadow
加密算法$id:
$1: MD5
$5: SHA-256
$6: SHA-512
系统约定: centos6
uid: 0 特权用户
uid: 1~499 系统用户
uid: 500+ 普通用户
[root@tianyun ~]# ll /home/
drwx------. 4 alice alice 4096 Jun 2 15:59 alice
drwxr-xr-x 2 root root 4096 Jun 2 15:33 tianyun
和用户组相关的一些文件:
/etc/passwd
root:x:0:0:root:/root:/bin/bash
用户名 :x:uid:gid:描述 :HOME家目录:shell //x 密码占位符,hoem用户家目录,shell的使用
/etc/shadow
root: 1 1 1MYG2NDG6$a1wtyr5GDM2esAPjug0YP0:15636:0:99999:7:: : //密码信息
/etc/group
root:x:0: //组信息
[root@localhost ~]# man 5 passwd
[root@localhost ~]# man 5 shadow
加密算法$id:
$1: MD5
$5: SHA-256
$6: SHA-512
系统约定: centos6
uid: 0 特权用户
uid: 1~499 系统用户
uid: 500+ 普通用户