1.Linux基本命令
# uname -r //查看内核版本
# cat /etc/redhat-release //查看系统小版本
# hostname //查看当前主机名
# ifconfig eth0 //查看第一个网卡ip
# ifconfig eth0 1.1.1.1//设置ip地址1.1.1.1
# pwd //查看当前位置
# date //查看系统时间
# date +%Y%m%d
# date [MMDDhhmmYYYY]
MM 月份
DD 日期
hh 小时
mm 分钟
YYYY 年份
# date 100112302016
# bc //Linux计算器
> quit //退出
# shutdown -h now //关机
# reboot //重启
图形界面与命令行界面的切换:
# vim /etc/inittab
将最后一行的5 改为3 有图形界面改为命令行界面
光标选中5按一下r然后按数字3,将5修改为3,按u可以撤销刚才所做的修改
按住shift后连按两下z就可以退出并保存了
2.命令格式
基本用法
# 命令字 [选项] [参数1] [参数2]...
命令字必不可少,选项和参数可有可无
命令字,选项,参数之间必须有空格,可以是一个,也可以是多个
选项作用:
调整命令的执行方式
单个字符选项前需要加-
选项如果是个单词需要加--
多个单个字符选项可以用一个-合并
# ls
# ls -l
# ls -l -h = ls -lh
# ls --color
参数的作用:
命令操作的对象,比如目录或者文件
参数可以有多个
# ls //默认显示当前目录下的内容
# ls /root //显示/root目录下的内容
# pwd
# ls /boot //显示/boot目录下的内容
# ls /boot /root
# ls -lhd /home /boot
3.技巧
Tab键作用
命令补齐
路径补齐
命令和路径排错
# shut(tab) //当输入命令字母能够唯一标识一个命令的时候自动补齐
# sh(tab)(tab) //当输入命令字母不能够唯一标识一个命令的时候需要按2下tab,把以输入字母开头的命令全部显示出来供我们选择
清屏操作
ctrl +l = clear
终止操作
ctrl +c
exit
调出历史命令
上下键
4.查看及切换目录
# cd = cd ~ //回到当前用户家目录
/root //root用户家目录
eg:
# cd /root
# pwd
# cd /boot
# pwd
# cd
# pwd
# cd /boot
# pwd
# cd ~
# pwd
# cd . //当前目录不变
# cd .. //返回上一级目录
# cd ../.. //返回上一级的上一级目录
# cd - //返回上一次工作目录
eg:
# cd /root
# pwd
# cd .
# pwd
# cd ..
# pwd
# cd /boot/grub
# pwd
# cd ../..
# pwd
# cd /boot/grub
# pwd
# cd ..
# pwd
# cd -
# pwd
# ls
# ls -l = ll //长格式显示
# ls -a //显示所有文件包含隐藏文件
# ls -A //与-a效果一样,但是不包含.和..
# ls -ld //需要和-l一起来使用,显示目录属性
# ls -lh //需要和-l一起来使用,以人性化的大小单位来显示文件大小
# ls -R //递归显示目录下的内容
eg:
# cd /boot
# pwd
# ls
# ls /boot
# ls -l
# ls -a
# ls -A
# ls -l /root
# ls -l -d /root
# ls -ld /root
# ls -lh /boot
# ls /boot
# ls -R /boot
5.目录与文件的管理
创建目录
# mkdir //创建目录
# mkdir -p //创建多级目录
/tmp //Linux下临时目录,任何人在该目录中都有最大权限
绝对路径:从/开始的
相对路径:不从/开始
eg:
# cd /tmp
# ls -ld /tmp/test01
# pwd
# mkdir test01
# ls -ld test01
# ls -ld /tmp/abc
# mkdir /tmp/abc/cde
# mkdir -p /tmp/abc/cde
# ls -R /tmp/abc
创建文件
# touch //创建文件
eg:
# ls -l /tmp/file1.txt
# touch /tmp/file1.txt
# ls -l /tmp/file1.txt
复制
# cp 源 源 目的 //复制
# cp -r //复制目录
eg:
# ls -l /opt/file1.txt /tmp/file1.txt
# cp /tmp/file1.txt /opt
# ls -l /opt/file1.txt
# ls -ld /tmp/test01 /opt/test01
# cp /tmp/test01 /opt
# ls -ld /opt/test01
# cp -r /tmp/test01 /opt
# ls -ld /opt/test01
删除
# rm //删除文件
# rm -r //删除目录
# rm -f //强制删除
eg:
# ls -ld /tmp/test01 /tmp/file1.txt
# rm /tmp/file1.txt
# ls -l /tmp/file1.txt
# rm /tmp/test01
# rm -r /tmp/test01
# ls -ld /tmp/test01
# ls -ld /tmp/test01 /tmp/file1.txt
# cp -r /opt/test01 /opt/file1.txt /tmp
# ls -ld /tmp/test01 /tmp/file1.txt
# rm -rf /tmp/test01 /tmp/file1.txt
# ls -ld /tmp/test01 /tmp/file1.txt
移动,剪切,重命名
# mv //移动,剪切,重命名
eg:
# ls -ld /tmp/test01 /opt/test01
# mv /opt/test01 /tmp
# ls -ld /tmp/test01 /opt/test01
# ls -l /opt/file1.txt /tmp/file2.txt
# mv /opt/file1.txt /tmp/file2.txt
# ls -l /opt/file1.txt /tmp/file2.txt
通配符
* 匹配任意多个字符
? 匹配任意单个字符
[] 匹配连续多个字符中的一个
{} 匹配不连续多组字符
eg:
# cd /tmp
# ls /tmp
# rm -rf /tmp/* //删除掉tmp文件夹下所有的东西
# ls /tmp
# touch file1.txt file2.txt file12.txt file123.txt filea.txt fileb.txt
# ll
# ls -l file* //浏览所有以file开头的文件或目录
# ls -l file?.txt
# ls -l file???.txt
# ls -l file[0-9].txt
# ls -l file[a-z].txt
# ls -l file{1,12,a,c}.txt
6.文件内容查看
cat 主要查看小文件
# cat -n //查看内容时显示行号
# cat /etc/redhat-release
# cat /etc/hosts
# cat -n /etc/hosts
# cat /etc/passwd
# cat -n /etc/passwd
more //分屏查看大文件内容,回车前进一行,空格前进一屏
less //比more更加强大,按q退出,按上下方向键内容上下移动,按左右方向键内容左右移动
# more /etc/passwd
# less /etc/passwd
tail //默认查看文件尾10行
head //默认查看文件头10行
-n 数字 //查看指定头几行
# tail /etc/passwd
# head /etc/passwd
# tail -n 2 /etc/passwd
# head -n 3 /etc/passwd
# head -n 12 /etc/passwd | tail -n 5
管道:|
cmd1 | cmd2 将cmd1输出结果交给cmd2命令来执行
wc 统计
# wc -l //统计行号
# wc -l /etc/passwd //统计多少账户
Day02
上午
1.重定向
> //输出重定向
>> //追加
eg:
# cd /tmp
# rm -rf /tmp/*
# ls -l /tmp/file1.txt
# ls -l /root
# ls -l /root > /tmp/file1.txt //如果存在file1.txt文件将内容清空,然后向其中写入内容,如果不存在就创建新文件后再向其中写入内容
# cat /tmp/file1.txt
# echo "Hello World..."
# echo "Hello World..." > /tmp/file1.txt
# cat /tmp/file1.txt
# echo "No Hello World..." >> /tmp/file1.txt //向file1.txt文件中追加内容
# cat /tmp/file1.txt
2.grep过滤
# grep //输出包含指定字符串的行
-i //忽略大小写
-v //取反
--color //突出显示查找字符串
eg:
# grep root /etc/passwd
# grep -v root /etc/passwd
# wc -l /etc/passwd
# grep root /etc/passwd | wc -l
# grep -v root /etc/passwd | wc -l
# grep Root /etc/passwd
# grep -i Root /etc/passwd
# grep -i --color Root /etc/passwd
# grep
^... //以...开头的
...$ //以...结尾的
^$ //匹配空行
-E //支持匹配多个条件
eg:
# grep --color ^root /etc/passwd
# grep --color bash$ /etc/passwd
# cat -n /etc/default/useradd
# grep -v '^$' /etc/default/useradd
# less /etc/login.defs
# grep -v '^#' /etc/login.defs
# grep -v '^#' /etc/login.defs | more
# grep -v '^#' /etc/login.defs | grep -v "^$"
# grep -vE '^#|^$' /etc/login.defs
3.Vim文本编辑器
命令模式
输入模式 末行模式
命令模式:默认打开vim就是命令模式,只能查看,不能修改
输入模式:可以编辑修改
末行模式:保存退出
# vim file //进入命令模式
eg:
# cp /etc/passwd /tmp
# vim /tmp/passwd
进入输入模式
i 在当前光标前插入空字符
o 在当前行下添加一行空行
输入模式/末行模式 --> 返回命令模式
esc键
命令模式 -->进入末行模式
: 保存退出
/ 向下查找
? 向上查找
:w 保存
:q 退出
:wq 保存并退出
:x 保存并退出
ZZ 保存并退出(命令模式)
:! 强制
:w file 另存为
:r file 读进来
:!cmd 执行外部命令
光标移动
上下左右键
翻页
PgDn = Ctrl +f
PgUp = Ctrl +b
光标行内跳转
Home键 ^ 0 移动到行首
End键 $ 移动到行尾巴
光标行间跳转
1G 文件首行
G 文件尾行
nG 文件n行
复制、粘贴、删除(命令模式)
yy 复制当前光标所在行
nyy 复制当前光标往下n行
p 粘贴
x = del键 删除当前光标所在字符
dd 删除当前光标所在行
ndd 删除当前光标往下n行
d^ 删除当前光标到行首
d$ 删除当前光标到行尾
字符串查找撤销(末行模式)
/world 向后查找字符串world
?world 向上查找字符串world
n/N n下找 N上找
u 撤销最近一次操作
U 撤销当前行所以操作
ctrl +r 反撤销
字符串查找替换(末行模式)
:s/old/new 替换当前行第一个old为new
:s/old/new/g 替换当前行所有的old为new
:n,m s/old/new 替换n-m行第一个old为new
:%s/old/new/g 替换文件所有的old为new
:%s/old/new/gc 替换前确认
开关设置
:set nu|nonu 显示/取消行号
:syntax on|off 启用/禁用语法高亮
:set hls|nohls 启用/禁用查询结果高亮显示
:set autoindent| no autoindent 启用/关闭自动缩进
永久设置上面开关
# vim ~/.vimrc
set nu
set autoindent
set nohls
缓存文件
.filename.swp
Day02
下午
1.临时配置ip
# ifconfig eth0
# ifconfig eth0 10.0.0.1
# ifconfig eth0
# reboot //这个ip失效
永久配置ip
# vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0 //设备名
HWADDR= //MAC地址
TYPE=Ethernet //以太网类型
ONBOOT=yes //加载
BOOTPROTO=dhcp //获取ip地址方式(dhcp自动获取,none/static表示手动)
IPADDR=192.168.10.10
NETMASK=255.255.255.0
GATEWAY=192.168.10.254
# service NetworkManager status //查看NetworkManager的运行状态
# /etc/init.d/NetworkManager stop //将NetworkManager关闭
# chkconfig NetworkManager off //将NetworkManager设置开机不启动
# /etc/init.d/network restart
# ifconfig eth0
# route -n //查看网关
关闭防火墙
# iptables -L //查看防火墙
# iptables -F //清除防火墙
# chkconfig iptables off //关闭防火墙开机重启
# service iptables save
关闭selinux
# vim /etc/sysconfig/selinux
...
SELINUX=disabled
...
# setenforce 0
把Linux的网卡设置为vmnet1,然后给Windows vmnet1设置192.168.10.1/24
在Windows里ping 192.168.10.10
解决克隆主机网卡eth1的问题
在克隆主机上操作:
# vim /etc/udev/rules.d/70-persistent-net.rules //看一下里面有什么内容
# > /etc/udev/rules.d/70-persistent-net.rules
# vim /etc/sysconfig/network-scripts/ifcfg-eth0
#HWADDR=
#UUID=
...
# /etc/init.d/NetworkManager stop //将NetworkManager关闭
# chkconfig NetworkManager off //将NetworkManager设置
# reboot
Day03
上午
1.网络常用命令
# netstat -anptu //查看网络链接
# netstat -ln | grep :端口 //查看指定端口是否被开启
# netstat -tulnp | grep 服务名 //查看指定服务所监听的端口
eg:
# netstat -anptu
# netstat -ln | grep :80
# netstat -ln | grep :22
# netstat -tulnp | grep sshd
# ping //检查网络连通性
# ping -c 4 ip(具体的ip地址)
# nslookup //域名解析
# vim /etc/sysconfig/network //主机名配置文件
HOSTNAME=teacher.tarena.com
# hostname teacher.tarena.com //临时修改
# hostname
# vim /etc/hosts //解析文件
...
10.0.0.10(在同一个网段的ip就可以) www.baidu.com www
# ping www.baidu.com
C:\Windows\System32\drivers\etc\hosts //Windows host文件位置
常见服务端口
web tcp 80
telnet tcp 23
ssh tcp 22
ftp tcp 20/21
smtp tcp 25
pop3 tcp 110
imap tcp 143
dns tcp/udp 53
可以参考/etc/services
设置dns地址:
第一种方式:
# vim /etc/resolv.conf
DNS1=8.8.8.8
第二种方式:
# vim /etc/sysconfig/network-scripts/ifcfg-eth0
在这个文件中添加配置
DNS1=
DNS2=
或者写
nameserver 8.8.8.8
...
2.ssh
telnet 明文
ssh 加密
在Linux里面ssh服务默认安装,默认启动。用户直接使用即可
在Windows上通过putty等软件连接linux
在Linux上如何连接ssh服务器
# ping -c 1 192.168.10.11
# ssh root@192.168.10.11
# ifconfig eth0
# exit
# ssh -l root 192.168.10.11
修改ssh服务器默认端口(就是修改配置文件)
# netstat -anptu | grep sshd
# vim /etc/ssh/sshd_config
...
13 Port 8431
# service sshd restart
# netstat -anptu | grep sshd
在另外一台Linux测试:
# ping 192.168.10.10
# ssh -p 8431 root@192.168.10.10
远程拷贝:scp -P 端口
Windows:Winscp
Linux:
上传
在Teacher上操作
[root@teacher ~]# echo "I Love Linux..." > /tmp/love.txt
[root@teacher ~]# cat /tmp/love.txt
I Love Linux...
[root@teacher ~]# scp /tmp/love.txt root@192.168.10.11:/root/
在Student上测试
[root@student ~]# cat /root/love.txt
I Love Linux...
下载
在Student上测试
[root@student ~]# echo "I Love Linux Linux Linux..." >> /root/love.txt
[root@student ~]# cat /root/love.txt
I Love Linux...
I Love Linux Linux Linux...
在Teacher上操作
[root@teacher ~]# scp root@192.168.10.11:/root/love.txt /tmp/
[root@teacher ~]# cat /tmp/love.txt
I Love Linux...
I Love Linux Linux Linux...
scp的默认端口号是22,但是如果改过了,再上面的上传或下载中就出现了问题:
ssh: connect to host 192.168.10.11 port 22: Connection refused
用netstat -anptu|grep sshd 命令查看一下ssh服务的端口。(本机上的ssh端口已经改成了8431了,所以用-P指定端口号)
scp -P 8431 root@192.168.10.11:/tmp/love.txt /tmp/
3.压缩解压
# gzip
-d 解压
eg:
# ls -lh /etc/ > /tmp/etc.txt
# du -sh /tmp/etc.txt //查看文件或文件夹的大小
# gzip /tmp/etc.txt
# ls -l /tmp/etc*
# du -sh /tmp/etc.txt.gz
# ls -l /tmp/etc*
# gzip -d /tmp/etc.txt.gz
# ls -l /tmp/etc*
# bzip2
-d 解压
eg:
# ls -lh /etc/ > /tmp/etc.txt
# du -sh /tmp/etc.txt
# bzip2 /tmp/etc.txt
# ls -l /tmp/etc*
# du -sh /tmp/etc.txt.bz2
# ls -l /tmp/etc*
# bzip2 -d /tmp/etc.txt.bz2
# ls -l /tmp/etc*
# tar //打包
-c 打包
-x 解包
-f 必须要
-C 指定解包位置
-v 输出信息
# cp -r /boot/ /tmp/
# ls -ld /tmp/boot/
# tar -cvf /tmp/boot.tar /tmp/boot
# ls -ld /tmp/boot*
# rm -rf /tmp/boot
# ls -ld /tmp/boot*
# tar -xvf /tmp/boot.tar
# ls -l
# tar -xvf /tmp/boot.tar -C /opt
# ls -l /opt
# rm -rf /opt/tmp/
# rm -rf tmp/
# gzip /tmp/boot.tar
# ls -l /tmp/boot.tar.gz
# gzip -d /tmp/boot.tar.gz
# ls -l /tmp/boot.tar
#tar
-z 调用gzip压缩
-j 调用bzip2压缩
eg:
# rm -rf /tmp/*
# cp -r /boot/ /tmp/
# ls -ld /tmp/boot/
# tar -zcvf /tmp/boot.tar.gz /tmp/boot/
# ls -ld /tmp/boot*
# rm -rf /tmp/boot
# tar -zxvf /tmp/boot.tar.gz -C /opt
# ls -l /opt
4.程序及文件查找
PATH变量
作用:在执行Linux命令的时候会去PATH变量的值查询相关命令
# echo $PATH
/bin //普通用户执行的命令
/sbin //管理员执行的命令
eg:
# A=19
# echo A
A
# echo $A
19
# vim hello.sh
文件中添加下面两行:
#!/bin/bash
echo "Hello World..."
# chmod 755 hello.sh //修改权限
# /root/hello.sh //必须使用绝对路径运行
# hello.sh
# echo $PATH
使hello.sh命令可以在任何位置调用:
第一种方式: //显示变量的内容
# cp hello.sh /usr/bin/ //永久有效
# hello.sh
Hello World...
# cd /tmp/
# hello.sh
# rm -rf /usr/bin/hello.sh
# hello.sh
# ls -l /root/hello.sh
# echo $PATH
第二种方式:
# PATH=$PATH:/root/ //将root目录添加到PATH变量中,只是暂时有效,开机重启后失效
# echo $PATH
# hello.sh
第三种方式:
# vim /root/.bash_profile //修改配置文件,永久有效
...
10 PATH=$PATH:$HOME/bin:/root
# source /root/.bash_profile
# hello.sh
Hello World...
# which cmd //根据PATH变量的路径去查询
# which reboot shutdown ls cd
(cd命令属于系统中的一部分)
# locate 文件 //从文件数据库中查找,数据库在特定的时间更新,locate不能查找/tmp文件中的内容,因为/tmp文件夹中的内容是不放到数据库中的
# locate myhttpd.conf
# touch myhttpd.conf
# locate myhttpd.conf
# updatedb //更新数据库
# locate myhttpd.conf
# rm -rf myhttpd.conf
# locate myhttpd.conf
# updatedb //更新数据库
# locate myhttpd.conf
# find //不支持用管道,可以使用-exec
find 路径 条件
# find / -name httpd.conf
find 路径 条件 -exec cmd {} \;
# find / -name httpd.conf -exec ls -l {} \;
5.账户
账户:
超级账户 root uid = 0
普通账户 uid > = 500
系统账户 uid = 1 ~ 499
/etc/passwd //保存账户的信息
/etc/shadow //保存账户密码信息
/root //root用户家目录
/home/xxx //普通用户xxx的家目录
# useradd //创建用户
-u 指定uid
-d 指定宿主目录
-s 指定使用shell
-e 指定用户过期时间
-g 指定基本组
-G 指定附加组
eg:
# tail -n 2 /etc/passwd /etc/shadow
# ls -l /home
# useradd feige
# tail -n 2 /etc/passwd /etc/shadow
# ls -l /home
# ls -l /opt/
# tail -n 2 /etc/passwd /etc/shadow
# useradd -d /opt/stu01 stu01
# tail -n 2 /etc/passwd /etc/shadow#
# ls -l /opt/
# passwd 账户 //给指定账户设置密码
eg:
# passwd feige
# grep feige /etc/shadow
# echo "123456" | passwd --stdin feige
别名
# vim ~/.bashrc
...
8 alias myls='ls -lh'
# source ~/.bashrc
# myls
# usermod //对已存在用户更改
-u
-g
-d
-s
# userdel //删除用户
-r //连主目录一起删除
6.组
# /etc/group //组的账户文件
# /etc/gshadow //组的密码文件
# groupadd //创建组
# groupdel //删除组
eg:
# tail -n 2 /etc/group /etc/gshadow
# groupadd gr01
# tail -n 2 /etc/group /etc/gshadow
# useradd -g gr01 mike
# id mike
7.权限
读取
写入
可执行(可执行文件是运行该文件,目录是可以进入目录)
归属关系
所有者
所属组
其他用户
# ls -l anaconda-ks.cfg
-|rw-|---|---. 1 root root 1771 4月 28 2015 anaconda-ks.cfg
① ② ③ ④ ⑤ ⑥ ⑦ ⑧ ⑨
①:文件类型
- 文件
d 目录
l 链接
②:所有者权限(u)
r 读 4
w 写 2
x 执行 1
③:所属组权限(g)
r 读 4
w 写 2
x 执行 1
④:其他用户权限(o)
r 读 4
w 写 2
x 执行 1
⑤:所有者
⑥:所属组
⑦:文件大小
⑧:最后修改时间
⑨:文件名
# chmod //更改权限
# chmod ugoa +-= rwx 文件或目录
-R 递归
# ls -l /root/anaconda-ks.cfg
# chmod u+x,g+r,o=x /root/anaconda-ks.cfg
# ls -l /root/anaconda-ks.cfg
# chmod a=rw /root/anaconda-ks.cfg
# ls -l /root/anaconda-ks.cfg
# chmod 数字 文件或目录
# chmod 755 /root/anaconda-ks.cfg
# ls -l /root/anaconda-ks.cfg
# chown //更改所有者所属组
# chown 用户:组 文件或目录
# chgrp 组 文件或目录
-R 递归