linux 基础命令

来源:互联网 发布:php 解压zip文件 编辑:程序博客网 时间:2024/05/22 01:34

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 递归

 

0 0