一、指令(sehll)
0、linux下的Shell
推荐看《linux命令、编辑器和shell编程》
类似于win下的bat批处理文件
1、shell的分类
shell名称 开发者 命令名称
Bourne S.R Bourne /bin/sh
C Bill Joy /bin/csh
Kom David /bin/ksh
ls /bin/*sh -l 查看系统上有哪些shell
chsh -s /bin/csh 将目前使用的shell切换到csh
2、
shell的命令补全功能
直接输入mk----再按2下tab键-----出现以mk开头的命令
cap p----再按2下tab键-----出现以p开关的目录/文件
history 查阅历史记录命令
history 5 显示最近使用的5个命令
!5 执行历史编号为5的命令
!ls 执行最后一次认”ls“开头的命令
3、shell的使用
3.1)用户登录后自动执行的shell脚本文件:
.bashrc 位于主目录下(可以指定某些程序在用户登录的时候就自动启动)
它之前先执行系统的脚本/etc/bashrc,主要是基本配置数据
.bash_profile 位于主目录下
它之前执行系统的脚本/etc/profile,主要是配置环境变量
/etc/profile 系统环境变量
/home/xxx/.bash_profile 用户环境变量
/root/.bash_profile root用户环境变量
/etc/.bashrc 最后添加 /home/tomcat/bin/startup.sh start 任何用户登录后,自动启动tomcat
/home/xxx/.bashrc 最后添加 /home/tomcat/bin/startup.sh start 任何root用户登录后,自动启动tomcat
/root/.bashrc 最后添加 /home/tomcat/bin/startup.sh start 任何xxx用户登录后,自动启动tomcat
3.2)export 临时有效
export PATH=$PATH:$HOME/bin:/root/test/t1
输出环境变量PATH引用原来的值$PATH $HOME表示工作主目录
: 是路径分隔符
已定义好的环境变量:
SHELL:默认shell
PATH:路径
USER:当前登录用户的用户名
3.3)echo 显示变量内容
echo $PATH
echo $USER
echo $SHELL
3.4)
通配符:
* 多个字母或数字[0个或0个以上]
? 1个字母或数字[1个或1个以上]
ls a*
ls a?
ls ?at?
转义字符: \
ls /mnt/win1/My\ Documents
引号 :
export NAME=Michael
echo Welcome $NAME,the date is date 会处理变量$NAME,
Welcome ,the date is date
echo 'Welcome $NAME,the date is date' 单引号,shell不处理任何变量和命令
Welcome $NAME,the date is date
echo "Welcome $NAME,the date is date" 双引号,shell处理变量,不处理命令
Welcome ,the date is date
echo "Welcome $NAME,the date is `date`"
反引号(``)将引号中的每个单词作为1个命令处理,如果是变量则先求值,然后作为1个命令处理
Welcome $NAME,the date is xxxx具体系统时间
单引号(''):纯字符串,什么都不处理
双引号(""):处理变量
反引号(``):``内部都会作为命令执行,
如果是变量的话,先处理变量,在将变量的值,当作命令执行
别名: alias
alias 显示系统当前定义的所有alias(别名)
alias cp='cp -i'
alias ll='ls -l --color=tty'
1、一些常用Linux命令:
0)login 登入
logout 登出
1)配置IP地址: netconfig
2)重启网络服务:service network restart
3)查看网络是否连通:ping id地址
4)停止当前进程组合键:ctrl + c (Windows中也支持)
前提:在控制台中使用
原理:在控制台中执行ping命令,会启动一个进程,占据当前终端,通 过ctrl+c 即可结束当前进程,恢复终端。
5)挂起当前进程的组合键:ctrl + z 也能交出终端
6)关闭防火墙命令:iptables -F
重新启动Linux,还需要关闭
7)我是谁? 查看当前登录用户信息: who am i
(Linux/Unix是基于用户权限保证环境的安全,认清身份)
8)查看当前已登录的所有用户:who (Linux/Unix多用户系统)
9)我在哪儿?查看当前工作目录 pwd
10)查看目录下的资源(文件和目录):ls -l (linux简写 ll)
11)改变工作目录:cd
cd .. 退回上一次目录
cd 目录名 进入下一层目录
cd 决定路径 直接进入某个目录
12)查看当前版本:uname -r 2.4.20-8
内核版本的组成:主版本号.次版本号.修订次数
次版本号为奇数,版本相对不稳定 2.5.10
次版本号为偶数,版本相对稳定 2.6.10
13)centos7启动界面
/etc/inittab
14)清屏
ctrl+l 清屏
2、命令格式
命令的基本格式:命令 选项 参数
command 命令、选项、参数之间至少留一个空格
参数是操作的对象,选项是增加的功能
命令是主要功能,选项和参数 可能不止一个
命令 选项 参数
比如: javac -d Hello.java
iptables -F
ls -l
ls -al
3、指令集(shell)
1)、基本指令
1.1 who am i (显示当前用户登录信息)
root pts/0 Sep 23 16:07 (192.168.111.1)
用户名 伪终端号 登录时间 从这个IP远程登录
root pts/1 Sep 23 16:55 (192.168.111.1)
区分不同的终端
伪终端号:目的,便于Linux区分不同的登录用户
pts/0 窗口 ls
pts/1 窗口 cal Linux分别将结果发给不同的用户
Linux/Unix特点:典型的多用户系统
# id 用户id信息
# who am i
# who 查看当前有哪些在线用户
root tty1 Sep 23 14:35
root pts/0 Sep 23 16:07 (192.168.111.1)
root pts/1 Sep 23 16:55 (192.168.111.1)
1.2 pwd(我在哪)
pwd 显示当前的工作目录(Print Working Directory)
# pwd /root /目录 (根目录)下的root目录
目前/root是root用户的主目录(Home Directory)
默认就是登录后所在的目录,具备较多的权限。
1.3
who 查看当前有哪些在线用户
who am i 我是谁(显示当前用户登录信息)
id 我是谁(用户id信息)
pwd 我在哪(Print Working Directory 显示当前的工作目录)
1.4
开关机
shutdown -h now 立刻进行关机
halt 关机,must be superuser.
shutdown -r now 现在重新启动计算机
reboot 现在重新启动计算机
1.5 用户切换
su 登录后用来切换系统管理员身份
su - 登录后用来切换系统管理员身份
1.6 字符界面/图形界面切换
startx 进入图形界面(字符界面中执行的指令)
logout 用户注销(xwindow下,点击logout按钮)
1.7 网络设置
Unix: ifconfig -a a表示all 所有的
Windows: ipconfig 查看ip地址
Linux/Unix: ifconfig 查看ip地址
centos7:ip addr
netconfig 设置ip地址
Linux/Unix 区分大小写 -F -f
Windows中命令 不区分大小写
# service network restart 重启网络服务
# ping 192.168.111.1 ping192.168.111.1的计算机
在控制台中执行ping命令,会启动一个进程,占据当前终端
ctrl + c 结束当前进程,交回终端(可用在ping完后,结束ping)
ctrl + z 挂起当前进程,也能交出终端
# iptables -F 关闭防火墙
centos7:systemctl stop firewalld 关闭防火墙
systemctl disable firewalld 开机禁用防火墙
clear 清屏
Windows: cls
Sqlplus: clear screen
linux:ctr+L
clear
1.8
shell分为以下,可互相切换,exit返回上一层
sh
csh (偏向于C语言语法)
bash (默认是bash,平时常用)
shell层层创建(原理:创建子进程,exit可返回上一层)
登录系统后,有默认shell: 登录shell (login shell) 目前bash
此时exit,则推出登录
uname -r 查看当前内核版本号
2 .4 .20-8
内核版本的组成:主版本号.次版本号.修订次数
次版本号为奇数,版本相对不稳定 2.5.10
次版本号为偶数,版本相对稳定 2.6.10
sleep 5 启动sleep进程,睡觉5秒 单位:秒
man (相当于帮助文档 手册)
man ls 查阅ls命令的功能
控制方式: 空格 --- 翻页
回车 --- 跳行
q --- 退出 quit
2)、运行指令级别
init [0123456]
0:关机
1:单用户
2:多用户状态,没有网络服务
3:多用户状态,有网络服务
4:系统未使用保留给用户
5:图形界面
6:系统重启
注意:
1、要修改默认的运行级别可进/etc/inittab中
修改的id:5:initdefault:这一行中的数字
2、在 CentOS 7 當中,雖然你依舊可以使用『 init 0 』來關機,
但是那已經跟所謂的『執行等級』無關了
TARGET.target:可以为multi-user.target或graphical.target
systemctl get-default TARGET.target 查看当前默认的运行方式
systemctl set-default TARGET.target 设置当前默认的运行方式
2.x)、查看系统环境
uname -a 可以查看内核版本,及用户名等信息
uname -r 可以查看内核版本
uname -m 可以查看硬件版本,是32位还是64位的硬件
cat /etc/redhat-release 可以查看分发版本
ls /bin/*sh -l 查看系统上有哪些shell
env 可以显示当前系统的环境变量,查看目前使用的是哪种shell
chsh -s /bin/csh 将目前使用的shell切换到csh
设置环境变量:
方法1.设置永久PATH环境变量。全部用户
#打开文件
vi /etc/profile
# 在末端添加,退出
export PATH=$PATH:/usr/local/go/bin
#立即生效
source /etc/profile
方法2:在用户目录下的.bash_profile文件中增加变量【对单一用户生效(永久的)】
用VIM在用户目录下的.bash_profile文件中增加变量,改变量仅会对当前用户有效,并且是“永久的”。具体操作和方法1一样,这里就不在列举代码了。
方法3:直接运行export命令定义变量【只对当前shell(BASH)有效(临时的)】
在shell的命令行下直接使用[export变量名=变量值]定义变量,该变量只在当前的shell(BASH)或其子shell(BASH)下是有效的,shell关闭了,变量也就失效了,再打开新shell时就没有这个变量,需要使用的话还需要重新定义。
3)、进程管理:
ps
ps 查看当前部分进程
ps -ef 查看当前所有进程
a、在linux中,每个执行的程序都称为1个进程,每1个进程都分配1个ID号
b、每1个进程,都会对应1个父进程,而这个父进程可以复制多个子进程,例如www服务器
c、每个进程都可能以2种方式存在的,前台与后台,所谓前台进程就是用户目前的屏幕上可以进行操作的,
后台进程则是实际在操作,但由于屏幕上无法看到的进程,常使用后台方式执行
命令 结尾加上 &表示以后台方式启动该进程
d、一般系统的服务都是以后台进程的方式存在而且都会常驻在系统中,直到关机才结束
进程:
正在执行的程序
线程
1)轻量级的进程
2)进程有独立的地址空间
3)线程不能独立存在,它是由进程创建(fork)Thread
4)相对讲,纯种耗费的cpu,和内在小于进程
1、查看当前所有进程
ps -aux 信息全面(相比-ef,以PID排序)
-a 显示当前终端的所有进程信息
-u 以用户的格式显示进程信息
-x 显示后台进程运行参数
-ef 以全格式显示当前系统所有的进程
-e 所有进程
-f 全格式
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 09:05 ? 00:00:03 init
Uid 用户id
Pid 进程id
PPid 父进程id
C cpu占有率
Stime 开始时间
TTY 开始此进程的终端号
Time 此进程运行的总时间
CMD 该进程对应的命令名
启动sleep进程:sleep 1000
2、kill命令:根据进程id杀死进程
kill 进程号
某些情况下,kill会出现信号丢失:
kill -9 进程号 强制杀死进程(绝杀)
killall PID 可以将PID对应的子进程也杀掉
3、pkill命令:根据进程命令名杀死进程
pkill sleep
top:动态监控进程
top和ps都可以显示正在执行的进程,
top和ps的最大区别,top可以在执行一段时间可以更新正在运行的进程
1、监视特定用户
top:输入此命令,按回车,查看执行的进程
u:然后输入“u"回车,再输入用户名,即可
2、终止指定的进程
top:输入此命令,按回车,查看执行的进程
k:然后输入“k"回车,再输入要结束的进程ID
3、指定系统状态更新的时间
top -d 10:系统更新进程的时间为10秒
top - 16:54:03 up 8:31, 2 users, load average: 0.00, 0.01, 0.05
Tasks: 130 total, 1 running, 129 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 1016736 total, 525600 free, 142944 used, 348192 buff/cache
KiB Swap: 1048572 total, 1048572 free, 0 used. 700832 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
9737 root 20 0 0 0 0 S 0.3 0.0 0:00.19 [kworker/1:3]
1 root 20 0 41556 4004 2384 S 0.0 0.4 0:03.41 /usr/lib/systemd/systemd --switched-root --s+
2 root 20 0 0 0 0 S 0.0 0.0 0:00.01 [kthreadd]
3 root 20 0 0 0 0 S 0.0 0.0 0:00.04 [ksoftirqd/0]
6 root 20 0 0 0 0 S 0.0 0.0 0:00.04 [kworker/u4:0]
[16:54:03 up] 当前系统时间
[8:31] 系统启动了多久
[2 users] 用户数(当前登入系统的用户总数)
[load average:] 当前系统的负载情况
0.00, 0.01, 0.05 3者加起来除以3,0.02,2%,
[Tasks:] 任务,进程情况
130 total, 1 running, 129 sleeping, 0 stopped, 0 zombie
进程总数 正在运行数 休眠数 停止数 僵尸进程数
[Cpu(s):] cpu占用状态
0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
0.0%的user system nice idle
[KiB Mem :] 内在情况
1016736 total, 525600 free, 142944 used, 348192 buff/cache
[KiB Swap:] 转换分区情况
1048572 total, 1048572 free, 0 used. 700832 avail Mem
4、常见进程端口号:
:22 secure shell
:8080 tomcat
:3306 mysql
netstat:监控网络状态信息
netstat -anp|more
4)、任务调度命令crontab
监控网络状态信息
Mysql在linux下的使用
ssh(secure shell)的使用
ftp的安装与配置
任务调度命令crontab
任务调度:系统在某个时间执行的特定的命令或程序
任务调度的分类:
1、系统工作:有些重要的工作必须周而复始地执行。如病毒扫描等
2、个别用户工作:个别用户可能希望执行某些程序
调度文件的规则
字段名称 说明 范围
分钟 每小时中的第几分钟执行 0-59
小时 每日中的第几小时执行 0-23
日期 每月中的第几天执行 1-31
月历 每年中的第几月执行 1-12
星期 每周的第几天执行 0-6
注意每个字段间一字要空格,否则保存不了,*表示忽略,如果全是*,表示每分钟执行 后面的任务
设置任务调度文件: /etc/crontab
设置个人任务调度。执行crontab -e,接着输入任务到调度文件
如:5 * * * * ls -l /etc/ > /tmp/to.txt 每小时的第5分钟执行ls -l /etc/ > /tmp/to.txt命令
步骤:
1、设置任务
crontab -e
2、每隔第一定时间去执行 date > /home/mydate1(不推荐)
希望每天凌晨2:00自动去执行date >> /home/mydate2
02 * * * date >> /home/mydate2
3、怎样去调度多个任务
1)直接在crontab -e中直接接着写
2)可以把所有的任务,写入到1个可执行文件(shell编程,推荐)
4、终止任务调度
crontab -r 终止任务调度
crontab -l 列出当前有哪些调度的任务
5)、设置系统日期时间
date 查看日期、时间
date MMDDHHMMCCYY.SS 月月日日时时分分年年年年.秒秒
cal 查看本月日历(calenda)
cal 1989 年历(1989)
cal 10 1989 月历(1989-10)
cal 6 4 1989 日历(1989-6-4)
6)、监控网络状态信息
netstat -anp 额外显示进程PID和进程名
netstat -anps|more 额外显示进程PID和进程名
netstat -an
netstat -an|more 信息太多,可加more方便查看
netstat
显示整个系统目前的网络情况,如目前的连接、数据包传递数据、路由表内容
ping ip/域名 检测主机连接是否正常
taceroute:显示数据包经过历程,可追踪路由
用来检测数据包在网络上传输的过程,从本机到远程的主机完整路径,帮助管理员解决问题
[root@study lvvl]# traceroute www.qq.com
traceroute to www.qq.com (59.37.96.63), 30 hops max, 60 byte packets
1 10.0.2.1 (10.0.2.1) 0.188 ms 0.126 ms 0.258 ms
2 * * *
3 * * *
4 * * *
5 * * *
6 * * *
7 * * *
route:
所谓路由(可以理解成网关)是指:将数据由来源网络送往目的网络的操作,在大型网络中,路由是非常复杂的,因为数据包在抵达目的地时,可能经过的节点有很多,
路由表是:存储在路由器或其它一些链接设置上的窗体,其中记录了到达指定目的地的网络路径,以及这些路径的相关数值
[root@study lvvl]# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 10.0.2.1 0.0.0.0 UG 100 0 0 enp0s3
10.0.2.0 0.0.0.0 255.255.255.0 U 100 0 0 enp0s3
192.168.56.0 0.0.0.0 255.255.255.0 U 100 0 0 enp0s8
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
7)、mount 挂载 显示有效磁盘分区的挂载情况
mount [-参数] [设备名称] [挂载点]
[设备名称] 可以是一个分区,一个usb设备,光驱,软盘,网络共享等。centos7中是sr[0-7]
[挂载点]
必须是一个已经存在的目录,这个目录可以不为空,但挂载后这个目录下以前的内容将不可用,umount以后会恢复正常。
在虚拟机里面,CentOS7.0挂载ISO镜像,
图形界面会自动挂载到/run/media/root/下
点虚拟机---可移动设备---DVD---连接,然后在CentOS7.0的桌面上就有了,桌面是自动挂载。
字符界面要手动挂载到指定目录
#mount /dev/sr0 /mnt/cdrom
然后再df -hT一下,就能看到了。里面只读,想操作,在cp拷贝到其它目录/文件下
8)、用户、组、目录、文件相关操作
用户和组的管理:
Linux/Unix是多用户系统
(root是超级用户、管理员,拥有最高权限。
其它用户及权限由root来管理)
比较Windows系统:
控制面板 -> 管理工具 -> 计算机管理 -> 本地用户和组
右击某用户 -> 属性 -> 隶属于(属于哪个组)
用户管理:
1、增
useradd 用户名 添加用户
passwd 用户名 修改用户密码
添加用户:useradd 用户名 (只能由root操作)
# useradd xiaohong
(不写组,会自动形成一个组,组名就是用户名)
# passwd xiaohong
创建密码:passwd 用户名
useradd --help
用法:useradd [选项] 用户名
useradd -D
useradd -D [选项]
2、删
userdel 用户名 删除用户 [要在root下才能,而且被删除的用户要退出登入]
userdel -r 用户名 删除用户及用户主目录
删除密码
passwd -d 用户名 由root来清口令
3、改
切换用户(改变身份): su 用户名
# su xiaohong
注意:从root切换到普通用户不需要密码,但从普通用户切 换到root或其他用户,需要密码。
练习:从root切换到xiaohong,从xiaohong切换到root
who am i : 查看最初登录身份
whoami : 查看当前的身份
id: 查看当前的详细身份(用户id 用户名 组id 组名)
su 直接变为root(#代表root身份 )
passwd -d 用户名 清除指定用户的密码
passwd 设置当前用户密码pa
4、查
cat /etc/passwd
vi /etc/passwd
查看用户账户基本信息: /etc/passwd
# cat /etc/passwd
用户名 :口令占位符(密码) :uid :gid :描述信息 :用户主目录 :登录shell(直到翻译)
root :x :0 :0 :root :/root :/bin/bash
...
xiaohong:x:500:500::/home/xiaohong:/bin/bash
tom:x:501:501::/home/tom:/bin/bash
alice:x:502:502::/home/alice:/bin/bash
rose:x:503:502::/home/rose:/bin/bash
uid: 用户id
gid: 组id
补充:/etc/shadow 用户口令(密码)文件
root有查看权限,小红等权限不够 cat /etc/shadow
但是:密码经过加密 MD5算法(用x表示)
组管理:
a.组的分类
私用组:只能包含一个用户(由创建用户的自动创建)
标准组:可以包含多个用户
b.组的信息
组名:组的标识符号
GID:组的唯一标识符口令组的成员
c.组的管理
文件/etc/group功能:
存放系统组信息内容: g1: x : 500 :u1,u2,u3
d、管理用户组(group)的工具或命令;
groupadd 注:添加用户组;
gpasswd 注:设置组密码;新建组后一般要调用这个设置组密码
groupdel 注:删除用户组;
groupmod 注:修改用户组信息
groups 注:显示用户所属的用户组
grpck
grpconv 注:通过/etc/group和/etc/gshadow 的文件内容来同步或创建/etc/gshadow ,如果/etc/gshadow 不存在则创建;
grpunconv 注:通过/etc/group 和/etc/gshadow 文件内容来同步或创建/etc/group ,然后删除gshadow文件;
1、增
groupadd [参数] 组名
参数:
-g GID :指定GID的值
-r :建立系统用户组组
useradd -g 组名 用户名
添加boys组: groupadd boys
添加girls组: groupadd girls
添加用户tom到boys组:useradd -g boys tom
# cd 回到主目录
# useradd -g boys tom
# passwd tom 密码: 123
同理,添加用户alice和rose到girls组:
# useradd -g girls alice
# passwd alice 密码: 123
# useradd -g girls rose
# passwd rose 密码: 123
2、删
guoupdel 组名
3、改
groupmod [参数] 组名
参数:
-n 新组名:修改组的GID
-g GID:修改组的GID
-A username 添加用户到组
-R username 删除用户从组
实例:
1)# groudmod -n group g1
2)# groupmod -g 860 u1,u2
修改密码
格式:gpasswd [参数] 组名
参数:
-a 用户名 : 向指定组添加用户
-d 用户名 : 从指定组中删除用户实例:
1)#gpasswd -a u1 root
2)#gpasswd -d u1 root 在u1组中删除root用户
更新用户的组
usermod -g 组名 用户名 更改用户所在的组[root才行]
usermod -aG 补充的新组名 用户名 将用户添加到新组中,同时也保留在原有组中
-a append添加
-G 补充组
usermod -d 目录名 用户名 更改用户登入时的初始目录
chgrp 组名 文件名 修改文件所在的组
chgrp -R root ./abc
改变abc这个目录下及其下面所有的子文件或子目录的组,改为root组
-R 递归到子目录/子文件
4、查
显示用户所属组
格式:groups [用户名]
实例:
1)#groups (显示当前用户所属组)
2)#groups root (显示root用户的所属组)
cat /etc/group
vi /etc/group
# groupadd boys
# groupadd girls
# cat /etc/group
组名 口令占位符 组id(gid) 本组中的其它用户有哪些( 和组名同名的用户默认不显示)
root :x :0 :root
...
xiaohong:x:500:
boys:x:501:
girls:x:502:
ls -ahl 查看文件的所有组
5、用alice用户身份,在其主目录下创建1.txt文件
# who am i 是root
# su alice 不用密码
# cd 到alice主目录 /home/alice
# touch 1.txt 创建空文件
# ls -l
6、使用vi编辑器,编辑1.txt (vi初步使用)
1)vi 1.txt 处于命令模式
2)敲 i 键,切换到输入模式 (左下角显示 插入 INSERT)
3)输入 I am alice!
4)敲Esc键,由输入模式 -> 命令模式
6)在冒号后输入: wq 回车,表示保存并退出 (write 和 quit)
7)注意:如果保存文件出现问题,可以强制不保存退出
冒号模式: q!
9、尝试让tom去查看并修改1.txt文件?
# su tom 密码 123
# ls -l 权限不够
# cd ..
# ls -l
如:
//创建操作系统用户
# useraddalice
# useraddjack
# useradd tom
# useradd RD
//修改用户的组
# usermod -a-G RD alice
# usermod -a-G RD jack
# usermod -a-G RD tom
目录和文件:
Linux/Unix文件、目录的命名规则
1)区分大小写
2)除了/以外的的字符,还有*(一般做为通配符)
3)包含空格,需要\ 转义 或 双引号 " "
4)以.开头的名称,具备隐藏属性 (隐藏文件、目录)
5)Windows用后缀来区分不同的文件类型 *.txt *.exe *.doc
Linux/Unix则不需要,后缀只属于文件名的一部分,主要用于提示文件类型(见名知意)
比如:文本文件 file1 file1.txt file1.abc
f1.sh (shell脚本文件 可执行)
目录:
目录常见概念:
1)绝对路径:表示从/开始到具体的目录或文件的路径
/etc/passwd
2)当前路径:表示当前所在的目录的路径 pwd查看
/etc
3)相对路径:相对于当前路径下的简短路径
passwd
../root/1.txt (..回到 /下 root进入其中,找到1.txt)
比如目前在/root下 (当前路径)
需要表示/etc/passwd ?
1)绝对路径: /etc/passwd (特点:/ 开头)
2)相对路径: ../etc/passwd
4)主目录:用户登录到Linux/Unix系统后,默认所在的目录
Home Directory (家目录)
root:x:0:0:root:/root:/bin/bash
root用户 主目录 登录shell
Linux系统的目录结构 (FHS标准)
/ 根目录 (必须存在)
/bin 大量可执行文件 (命令 ls pwd cd ...)
普通用户的可执行命令,系统的任何用户都可以执行该目录的命令
/sbin 系统管理员命令
普通用户不能执行
/boot 启动目录
存放linux启动时所需使用的文件
/root root用户 主目录 (特殊:root用户才具备操作权限)
root的家(皇帝的家)
超级用户root的宿主目录
/home 普通用户的主目录 (寻常百姓家)
普通用户 的宿主目录,每个用户在该目录下都有1个与用户名同名的目录
/usr 用户应用程序的安装目录
/etc 存放配置文件
比如/etc/passwd 用户账户信息
/etc/shadow 保存账户密码 (加密MD5)
/dev 设备文件
系统中所有的设备文件
/tmp 临时文件 (程序员使用较多)
/lib 库文件 library
/var 数据、日志、临时文件
系统中经常变化的文件和日志文件,用户邮件
/mnt 挂接其它文件系统 mount
/mnt中的子目录用于系统中可移动设备的挂载点
pwd [显示当前目录]
. 当前目录
.. 上一级目录
./a 下一级目录中的a目录
cd [改变当前目录]
cd 空 回到当前用户的 主目录
ls [列出当前文件和目录]
ls -a 显示隐藏文件,显示所有文件
隐藏文件:以.开头
ls -l 长列表
mkdir [创建目录]
rmdir [删除空目录]
rm -r 目录 删除目录下所有,常用
cd 去哪儿(Change Directory改变目录)[改变目录]
特殊的目录名:
. 表示当前目录
.. 表示上一层目录
比如:目前在/root目录下
想到/ 目录下:
# cd .. 相对路径,相对于当前/root的上一层
或者:
# cd / 绝对路径,直接定位到/下 (从/开始)
# cd . 还是在当前目录
想到/home下
# cd /
# cd home 相对路径
或者
# cd /home 绝对路径 (特点:一定从/开始)
cd 回车 快速回到主目录
cd ~ 快速回到主目录
. 当前所在目录
.. 上一级目录
~ 代替主目录
echo ~ echo是回声的意思(查看系统变量的值)
echo abc > 1.txt 将abc写入到当前目录下的1.txt文件中
目录/文件的操作
增:
mkdir 目录名 [创建目录]
# mkdir -p dir1/dir2 一气呵成(创建层级关系的目录)
# ls -R 查看目录层次
回到test下
# cd ~/test
# mkdir dir3 dir4 dir5 依次创建三个并列的目录,空格分隔
在主目录下新建一个game目录
# mkdir ~/game
touch 文件名 [创建文件]
说明: 如果文件名不存在,创建一个新的、空的文件
如果文件名存在,只会修改文件的最后一次修改时间, 里面的内容不会变
# cd
# cd test
# date > 1.txt 通过重定向生成一个1.txt文件
# ls -l 1.txt
# touch 2.txt 创建一个空文件
# ls -l 2.txt
# touch 1.txt
# ls -l 1.txt 1.txt最后一次修改时间 更新了
# cat 1.txt 文件内容不变
新建文件 my file
在~/test目录下
# touch my file 会依次创建两个空文件
# touch my" "file 创建带有空格的文件
# touch my\ file1 使用转义符
创建隐藏文件,文件名: .news
# touch .news
# ls -l
# ls -a
# ls -la
删:
删除目录
rmdir 目录名 [删除空目录]
rmdir 只能 删除空目录
删除目录/文件
rm 文件名 删除文件
rm -d 目录 删除空目录
rm -df 目录 删除空目录。强制删除,无提示
rm -r 目录名 [删除一个目录,从最外层删除,如果有子目录,会提示]
rm -rf 目录名 [删除一个目录,强制删除,有子目录不会提示是否删除,]
rm -rf * [删除所有内容(包括目录和文件),r递归,f强制]
rm -f 关闭交互
rm *.txt * 通配符,匹配所有字符
删除以.txt为结尾所有文件
请注意,如果使用rm 来删除文件,通常仍可以将该文件恢复原状。如果想保证
该文件的内容无法还原,请考虑使用shred。
改:
> 覆盖写
输出重定向,新的会覆盖旧的(将输出的结果重新导向到文件中,而不是终端)
# date > 1.txt
将date的结果写入1.txt文件中
# ls -l
# cat 1.txt
# cal > 1.txt
# cat 1.txt
ls -l > a.txt
a.txt < ls -l
>> 追加写
输出追加重定向,向原有文件追加内容
# date >> 1.txt
# cal 10 2014 >> 1.txt
# cat 1.txt
ls -al >> aa.txt
aa.txt << ls -al
cp 拷贝文件或目录 (copy)
cp 源文件/目录 目标文件/目标目录
文件的拷贝:
cp a.txt /home/lvvl/ [将a.txt拷贝到/home/lvvl/目录下]
cp a.txt b.txt [将a.txt拷贝到当前目前,名字b.txt]
cp a.txt b.txt /home/lvvl/ [同时将a.txt和b.txt拷贝到/home/lvvl/目录下]
目录的拷贝:
cp -r dir 1 dir2 [将dir1目录拷贝到dir2下,r是递归]
cp -rf dir 1 dir2 [将dir1目录拷贝到dir2下,r是递归,不要询问]
mv 移动文件或目录 (move,重命名)
mv 11.txt 22.txt 重命名
本质:改变文件的绝对路径名
源文件名:/root/test/d1/11.txt
改后: /root/test/d1/22.txt
mv 11.txt /home 移动到/home下
ln [建立符号连接,相当于个替身,是目标指向源,删除目标,源还在,只是删除了替身]
ln -s 源 目标
ln -s /etc/inittab inittab [inittab指向实际文件/etc/inittab]
查:
查看系统版本
uname -r 查看linux内核版本
cat /etc/hedhat-release 查看linux分发版本,如centos7.2.1511
ls [列出当前文件和目录]
文件类型:
- 普通文件
绿色: 可执行文件
l 链接文件 如rview -> vi
.xxx 隐藏文件
d 表示目录(蓝色)
ls -l 我有什么(以长格式显示文件(use a long listing format))
linux下简写 ll
文件类型 权限 属主 属组 文件大小 最后一次修改时间
-rw-r-xr-- 1 root root 16012 9月 23 22:28 abc.txt
前10个字符:确定不同用户能对文件干什么
第1个字符:
- 文件
l 链接
d 目录
后9个字符:权限
rw-: 文件拥有者对该文件的权限是 读、写、执行
r-x: 文件所在组的所有用户对该文件的权限是 读、、执行
r--: 其它组的所有用户对该文件的权限是 读、、
r4 w2 x1-----所以rwx=4+2+1=7
1 表示连接的文件数
root 文件的所有者的 用户名
root 文件所在组 组名
16012 文件大小(字节)
9月 23 时间
abc.txt 文件名
除了文件名之外的所有信息:文件的属性
属主:由哪个用户user创建的文件 owner 拥有者
属组:属于哪个用户组 group
文件大小:单位 字节Byte
ls -a [显示隐藏文件和目录]a就是all的意思
显示目录下所有内容,包括隐藏文件和目录。
ls -al [显示隐藏文件,以长列表方式显示] 选项可以组合搭配使用 (功能叠加)
bin目录 常用的系统命令 比如ls pwd ...
etc目录 常用的配置文件
home目录 用户主目录所在目录(每个用户对应一个子目录)
root目录 管理员用户主目录
boot目录 启动文件目录
ls -ahl 查看文件的所有组
ls -R 文件全部展开 (当前目录及子目录的资源分布)
ls -t 按照实际先后(文件/目录的最后一次修改时间)
ls -tl 结合长列表方式、按照时间排序
ls -dl 查看当前目录的属性,无需回上一层再 ls -l
ls -F 可以查看文件类型
普通文件 无后缀显示
目录 /结尾(一般是蓝色)
可执行文件 *结尾(一般是绿色)
ls -Fa 可以查看文件类型(全部文件,包括隐藏文件和目录)
查看:
find [查找]
find dir1 -name aaa.java [在dir1目录下 按name 查找 aaa.java这个文件]
find / -name man 从根目录开始 搜索 名称叫man的目录或文件
find / -amin -10 十分钟内 存取的文件或目录
find / -atmin -10 十小时内 存取的文件或目录
find / -cmin -10 十分钟内 更改的文件或目录
find / -ctmin +10 十小时前 更改的文件或目录
-:内
+:前
find / -size +10k 查找/目录下大于10k的文件
find / -name *.html | grep bookmark
#在find的结果中查找字符串”bookmark“,显示包含这个字符串的文件
grep
grep "12" /root/abc3.java
在/root/abc3.java 中查找有没有12
grep -n "12" /root/abc3.java
在/root/abc3.java 中查找有没有12,并显示在第几行
grep -n "12" /root/abc3.java /home
在/root/abc3.java和/home 中查找有没有12,并显示在第几行
grep -n "12" /root/abc3.java /home/*
在/root/abc3.java和/home下所有 中查找有没有12,并显示在第几行
查看磁盘使用情况
df [-参数]
df -hT (相比-h,更详细,多Type列,会显示硬盘分区中文件系统类型,类似于win中的文件系统,像NTFS,FAT32等等)
df -h (和-l比起,更加易读,显示M或者G,而不是字节)
df -l
df -k (同-l一样,不常用)
查看某个目录是在哪个分区
df -h [目录全路径] (加上-h显示更友好,不加只会显示字节数据)
查看linux分区具体情况,查看当前磁盘空间/磁盘分区
fdisk -l
应用场合:当系统突然变慢或性能不佳,可以查看Linux服务器的磁盘空间,
确定是否磁盘瓶颈(空间不足)。
练习:查看磁盘空间是否占满
Disk /dev/sda: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 13 104391 83 Linux
/dev/sda2 14 268 2048287+ 82 Linux swap
/dev/sda3 269 1044 6233220 83 Linux
Blocks: Data Block 数据块
Id: idle 表示空闲的磁盘 83%的空间可用
cat 查看文件的内容:(适合查看小文件)
# cd /root
# ls
# cat install.log
Tab键 自动补全功能
# cat 1 Tab 会补充完整的文件名
# cat 1.txt
cat 文件名
查看包含空格的文件名 " " \
# echo abc > my" "file
# cat my" "file
# cat my\ file1
# cat my file 依次显示my 和 file文件的内容
1、使用一个命令,将三个小文件合并成一个大文件
# cd
# cd test
# echo hello > f1
# date > f2
# cal > f3
# cat f1 f2 f3 > f5
文件/目录的权限:
文件类型 权限 文件夹下的子文件数 属主 属组 目录名/文件名
d rwx---r-- 2 alice girls 4096 9月 25 11:33 alice
-rwx------ 2 rose girls 4096 9月 25 10:47 rose
lrwx------ 2 tom boys 4096 9月 25 10:43 tom
文件类型 文件/目录权限
- 文件 --- --- ---
l 类似于快捷方式,链接文件
ln -s 源 目标
ln -s /etc/inittab inittab [inittab指向实际文件/etc/inittab]
inittab文件前面就是l开头
d 目录 所有者 所在组 其他
所有者:文件的所有者对该文件的权限
所在组:文件的所在组对该文件的权限
其它: 其它组的用户对该文件的权限
1、user 所有者(属主 owner 文件的创建人 u)
2、group 所有者所在的组 g
比如:useradd -g girls alice alice属于girls组
useradd xiaohong 默认xiaohong组名就是xiaohong
alice和rose同在girls组中
3、other 其他 o 既不是user,也不在同一组中
4、三种访问权限:可读r、可写w、可执行x
rwx --- --- 出现的位置固定 rwx 缺失使用-代替
r 可读 r-- 100 4
w 可写 -w- 010 2
x 可执行 --x 001 1
- rw- r-- r-- 普通文件: 权限 644 权限的数字表达法 简洁
自己:可读、可写 同组:只读 其他:只读
d rwx r-x r-x 目录: 权限 755
自己:可读、可写、可执行
同组:可读、可执行 其他:可读、可执行
- rwx rwx rwx 可执行文件 777
对所有用户:可读、可写、可执行
权 权限的数字表达法
421
000 0 ---
001 1 --x
010 2 -w-
011 3 -wx
100 4 r--
101 5 r-x
110 6 rw-
111 7 rwx
5、归纳文件和目录的各种权限规律:
1)文件的权限:
r 可读 可以使用vi、cat查看文件内容
w 可写 可以修改后保存
x 可执行 可以直接运行 命令就是可执行文件
2)目录的权限:
r 可读 ls 目录,能查看到内容
w 可写 可以修改目录内容,如新建、删除目录
x 可执行 可以cd进去
6、修改文件/目录相关操作
角色:u 拥有者 user
g 同组 group
o 其他 other
a 所有的 all
用法:
1)
chgrp 组名 文件名 修改文件的所在组
chgrp -R 组名 文件名 修改文件的所在组(递归,子目录/子菜单都应用)
ls -l 也可以查看文件的所在组
2)
chown 用户名 文件名 修改文件的所有者
chown -R root ./abc
改变abc这个目录下及其下面所有的子文件或子目录的所有者,改为root用户
-R 递归到子目录/子文件
chown -R root:mysql ./abc 同时也可以设置属主和属组
ls -l 查看文件的所有者
3)
chmod [ugoa][+-][rwx] 文件名 修改文件权限
chmod 777 文件名 修改文件权限
# chmod u+x 1.txt 针对拥有者添加可执行权限
# chmod u-x 1.txt 针对拥有者去除可执行权限
# chmod g+w 1.txt 针对同组增加可写权限
# chmod a+r,g+w 1.txt 对于1.txt文件 所有用户都添加可读,同组添加可写的权限
# chmod a-r,g-w 1.txt 对于1.txt文件 所有用户都移除可读,同组移除可写的权限
# chmod 777 1.txt 数字表达法
rwx rwx rwx
# chmod 644 1.txt
前提:只有文件的拥有者 或者 root用户可以改权限
如:
//修改目录权限
# chgrp RD /smb/tech
# chgrp RD /smb/docs
# chown RD /smb/tech
# chown RD /smb/docs
# chmod 770 /smb/tech
# chmod 770 /smb/docs
案例:由root或alice修改alice主目录权限:
针对o + rx,其他用户xiaohong可以进入alice主目录,
并可以使用ls -l查看目前下的内容.
由root或alice针对1.txt文件修改权限,o+w xiaohong即可修改文件。
644 -> 646
rw- r-- r-- rw- r-- rw-
chmod 646 1.txt
如果多条语句写一行,分号隔开: date; sleep 10; cal
4、常用技巧
1、过滤:grep 过滤出n行
2、统计:wc 统计:行、单词、字符 的字数
3、管道:| (piping)
管道符用于连接两个命令:前一个命令的输出,作为后一个命令的输入。
比如:将/etc/passwd的头10行,写入文件f6
# head -10 /etc/passwd > f6
将/etc/passwd的头10行排序后,写入文件f8 sort命令
# head -10 /etc/passwd | sort > f8
常见用法:
1)管道more: 分屏显示 ls -l /etc
ls -l /etc | more
2)管道grep: 过滤 ls -l /etc
ls -l /etc | grep ssh
cat /etc/passwd | grep james
james:x:507:504::/home/james:/bin/bash
3) 管道wc: 统计
cat f6 | wc
4、查看文件的4种方法: cat more vi head tail
1)、cat 适合看小文件,不可翻页,不可编辑
可以将多个小文件合并成一个大文件:
cat f1 f2 f3 > newfile
2)、more 适合看大文件,可以翻页,不可编辑。[显示文件内容,带分页],
会显示第1条记录,在屏幕最上方
空格 翻屏(向下)
回车 滚动行(向下)
b或者ctrl-B 向后一屏,中间后跳过1屏,向上 back
f 向前一屏,中间后跳过1屏,向下 forward
s 向前一屏,中间后跳过1行,向下 forward
h 求助 help
q 退出 quit
/ 查找文本
n 继续查找
将/etc/passwd文件拷贝到andi的主目录下:
cp /etc/passwd ~
cat passwd
more passwd
3)、less [显示文件内容,带分页]
4)、grep [在文本中查询内容]
grep -n "关键字" 文件 [在文件中 查询所有与 关键字 相关的信息,]
-n 显示所在行数
5)、| [管道命令]
在linux和unix中,|就是管道命令,把上一个命令的结果交给|后面的命令处理
5、压缩与解压缩:
zip和unzip处理 (.zip文件)
1、zip file.zip * 压缩
zip后接压缩后的文件名,然后接着输入要压缩的文件即可
-m
zip -m file.zip to.txt
将to.txt压缩成file.zip文件,to.txt会自动删除
-r
zip -r file.zip *
将当前目录下的子目录一直压缩
-j
zip -j file.zip *
忽略子目录的内容(只压第一层目录)
-n
zip -n .mpg: .jpg:.gif
将已压缩的或没有必要压缩的文件去掉,每一种文件中间要用“;”隔开
-t
zip -t 102002 file.zip
压缩某一日之后的文件
将当前目录下 在2002年10月之后的文件压缩
-y
zip -y file.zip *
不压缩链接文件的原文件
-1---9
zip -9 file.zip *
压缩率问题,-1----9;-9的压缩率最高
-x
zip file.zip * -x file2.txt
将不要压缩的文件排除在外
在压缩时,将当前目录内的file2.txt文件排除在外
2、unzip file.zip 解压缩
-x
unzip file.zip -x file2
排除不需要解压缩的文件
除了file2文件外,其它文件都解压缩
-Z
unzip -Z file.zip
查看压缩包内容
查看file.zip压缩包的内容,也可以使用-l、-v
gzip和gunzip处理 (.gz文件)
同上,前面加了个g,处理的是.gz文件
tar (.tar文件)
tar备份,压缩与解压缩,Linux命令,也是一个工具
-z : 表示 tar 包是被 gzip 压缩过的,所以解压时需要用 gunzip 解压
-x : 从 tar 包中把文件提取出来
-v : 显示详细信息
-f xxx.tar.gz : 指定被处理的文件是 xxx.tar.gz
tar.gz的用tar -zxvf解压,
tar -zxvf mysql-5.6.26-linux-glibc2.5-x86_64.tar.gz
tar.bz2的用tar -jxvf解压
Linux下最常用的打包程序就是tar了,使用tar程序打出来的包我们常称为tar包,tar包文件的命令通常都是以.tar结尾的。生成tar包后,就可以用其它的程序来进行压缩了,
tar命令的基本用法:
tar命令的选项有很多(用man tar可以查看到),但常用的就那么几个选项,下面 来举例说明一下:
tar -cf all.tar *.jpg
这条命令是将所有.jpg的文件打成一个名为all.tar的包。
-c是表示产生新的包
-f指定包的文件名。
tar -rf all.tar *.gif
这条命令是将所有.gif的文件增加到all.tar的包里面去。
r--是表示增加文件的意思。
tar -uf all.tar logo.gif
这条命令是更新原来tar包all.tar中logo.gif文件,
-u是表示更新文件的意思。
tar -tf all.tar
这条命令是列出all.tar包中所有文件,
-t是列出文件的意思
tar -xf all.tar
这条命令是解出all.tar包中所有文件,
-x是解开的意思
以上就是tar的最基本的用法。为了方便用户在打包解包的同时可以压缩或解压
文件,tar提供了一种特殊的功能。这就是tar可以在打包或解包的同时调用其它的压
缩程序,比如调用gzip、bzip2等。
1) tar调用gzip (.tar.gz)
gzip是GNU组织开发的一个压缩程序,.gz结尾的文件就是gzip压缩的结果。与gzip相对的解压程序是gunzip。tar中使用-z这个参数来调用gzip。
tar -zcf all.tar.gz *.jpg
这条命令是将所有.jpg的文件打成一个tar包,并且将其用gzip压缩,生成一个gzip压缩过的包,
包名为all.tar.gz
tar -zxf all.tar.gz
这条命令是将上面产生的包解开。
2) tar调用bzip2 (.tar.bz2)
bzip2是一个压缩能力更强的压缩程序,.bz2结尾的文件就是bzip2压缩的结果。
与bzip2相对的解压程序是bunzip2。tar中使用-j这个参数来调用gzip。
tar -jcf all.tar.bz2 *.jpg
这条命令是将所有.jpg的文件打成一个tar包,并且将其用bzip2压缩,
生成一个bzip2压缩过的包,包名为all.tar.bz2
tar -jxf all.tar.bz2
这条命令是将上面产生的包解开。
3)tar调用compress (.tar.Z)
compress也是一个压缩程序,但是好象使用compress的人不如gzip和bzip2的人
多。.Z结尾的文件就是bzip2压缩的结果。与 compress相对的解压程序是uncompress
。tar中使用-Z这个参数来调用compress。
tar -Zcf all.tar.Z *.jpg
这条命令是将所有.jpg的文件打成一个tar包,并且将其用compress压缩,
生成一个uncompress压缩过的包,包名为all.tar.Z
tar -Zxf all.tar.Z
这条命令是将上面产生的包解开
tar系列的压缩文件作一个小结:
tar对于 解压缩常用-xf
1)对于.tar结尾的文件
tar -xf all.tar
2)对于.gz结尾的文件
gzip -d all.gz
gunzip all.gz
3)对于.tgz或.tar.gz结尾的文件
tar -zxf all.tar.gz
tar -zxf all.tgz
4)对于.bz2结尾的文件
bzip2 -d all.bz2
bunzip2 all.bz2
5)对于tar.bz2结尾的文件
tar -jxf all.tar.bz2
6)对于.Z结尾的文件
uncompress all.Z
7)对于.tar.Z结尾的文件
tar -Zxf all.tar.z
另外对于Window下的常见压缩文件.zip和.rar,Linux也有相应的方法来解压它们
1)对于.zip
linux下提供了zip和unzip程序,zip是压缩程序,unzip是解压程序
zip all.zip *.jpg
这条命令是将所有.jpg的文件压缩成一个zip包
unzip all.zip
这条命令是将all.zip中的所有文件解压出来
2)对于.rar
要在linux下处理.rar文件,需要安装RAR for Linux,可以从网上下载,但要记住,RAR for Linux 不是免费的;可从http://www.rarsoft.com/download.htm下载RARfor Linux 3.2.0,然后安装:
tar -zxvpf rarlinux-3.2.0.tar.gz
cd rar
make
这样就安装好了,安装后就有了rar和unrar这两个程序,
rar是压缩程序,unrar是解压程序。
rar a all *.jpg
这条命令是将所有.jpg的文件压缩成一个rar包,名为all.rar,该程序会将.rar扩展名将自动附加到包名后。
unrar e all.rar
这条命令是将all.rar中的所有文件解压出来
到此为至,已经介绍过linux下的tar、gzip、gunzip、bzip2、bunzip2、compress 、 uncompress、 zip、unzip、rar、unrar等程式,你应该已经能够使用它们对.tar 、.gz、.tar.gz、.tgz、.bz2、.tar.bz2、. Z、.tar.Z、.zip、.rar这10种压缩文件进行解压了,以后应该不需要为下载了一个软件而不知道如何在Linux下解开而烦恼了。而且以上方法对于Unix也基本有效。
本文介绍了linux下的压缩程式tar、gzip、gunzip、bzip2、bunzip2、compress 、uncompress、 zip、 unzip、rar、unrar等程式,以及如何使用它们对.tar、.gz 、.tar.gz、.tgz、.bz2、.tar.bz2、.Z、. tar.Z、.zip、.rar这10种压缩文件进行操作。
以下补充
tar
-c: 建立压缩档案
-x:解压
-t:查看内容
-r:向压缩归档文件末尾追加文件
-u:更新原压缩包中的文件
这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。
下面的参数是根据需要在压缩或解压档案时可选的。
-z:有gzip属性的
-j:有bz2属性的
-Z:有compress属性的
-v:显示所有过程
-O:将文件解开到标准输出
下面的参数-f是必须的
-f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名。
tar -cf all.tar *.jpg
将所有.jpg的文件打成一个名为all.tar的包。
-c是表示产生新的包,
-f指定包的文件名。
tar -rf all.tar *.gif
将所有.gif的文件增加到all.tar的包里面去。
-r是表示增加文件的意思。
tar -uf all.tar logo.gif
更新原来tar包all.tar中logo.gif文件,
-u是表示更新文件的意思。
tar -tf all.tar
列出all.tar包中所有文件,
-t是列出文件的意思
tar -xf all.tar
解出all.tar包中所有文件,
-x是解开的意思
压缩
tar –cvf jpg.tar *.jpg
//将目录里所有jpg文件打包成tar.jpg
tar –zcf jpg.tar.gz *.jpg
//将目录里所有jpg文件打包成jpg.
tar后,并且将其用gzip压缩,生成一个gzip压缩过的包,命名为jpg.tar.gz
tar –jcf jpg.tar.bz2 *.jpg
//将目录里所有jpg文件打包成jpg.tar后,
并且将其用bzip2压缩,生成一个bzip2压缩过的包,命名为jpg.tar.bz2
tar –Zcf jpg.tar.Z *.jpg
//将目录里所有jpg文件打包成jpg.tar后,并且将其用compress压缩,
生成一个umcompress压缩过的包,命名为jpg.tar.Z
rar a jpg.rar *.jpg
//rar格式的压缩,需要先下载rar for linux
zip jpg.zip *.jpg
//zip格式的压缩,需要先下载zip for linux
解压
tar –xvf file.tar
//解压 tar包
tar -xzvf file.tar.gz
//解压tar.gz
tar -xjvf file.tar.bz2
//解压 tar.bz2
tar –xZvf file.tar.Z
//解压tar.Z
unrar e file.rar
//解压rar
unzip file.zip
//解压zip
总结
1、*.tar 用 tar –xvf 解压
2、*.gz 用 gzip -d或者gunzip 解压
3、*.tar.gz和*.tgz 用 tar –xzvf 解压
4、*.bz2 用 bzip2 -d或者用bunzip2 解压
5、*.tar.bz2 用tar –xjf 解压
6、*.Z 用 uncompress 解压
7、*.tar.Z 用tar –xZf 解压
8、*.rar 用 unrar e解压
9、*.zip 用 unzip 解压
6、安装包管理
rpm 与 yum
1、1种用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中,
它生成具有.RPM扩展名的文件. RPM(RedHat Package Manager)(RedHat软件包管理工具)的缩写。
2、包名的格式
apache-1.3.23-11.i386.rpm
apache:软件名称
1.2.23-11:软件的版本号,主版本和次版本
i386:软件所运行的硬件平台,
i386----32位
x86_64--64位
rpm:文件扩展名。代表RPM包
3、常用命令
rpm
-ivh 安装
-Uvh 升级
-e 卸载
-e --nodeps强卸
-q 查询
-V 验证
查询
rpm -q 软件名称(不包括.rpm) 查询指定名称的软件包是否安装
rpm -qa 查询linux系统中的所有软件包
rpm -ql 软件名称 (已经安装过的软件包)查询指定名称软件包中所包括的文件列表
rpm -qlp 软件名称 (没安装过的软件包)查询指定名称软件包中所包括的文件列表
rpm -qf 文件全路径名称 查询指定文件所属的软件包
某个程序是哪个软件包安装的,或者哪个软件包包含这个程序(适合可执行的程序和普通的任何文件)
1)先
whereis 文件名
或者which 文件名
以上2种方法会返回 文件全路径名称
2)然后
rpm -qf 文件全路径名称
某个程序是哪个软件包安装的,或者哪个软件包包含这个程序(只适合可执行的程序)
rpm -qf `which 程序名' 返回软件包的命名
rpm -qfi `which 程序名' 返回软件包的有关信息
rpm -qfl `which 程序名' 返回软件包的文件列表
注意,这里不是引号,而是`,就是键盘左上角的那个键。
rpm -qilf 目录/文件,同时输出软件包信息和文件列表。
rpm -qi 包名 (已经安装过的软件包)查询指定名称软件包的详细信息
rpm -qip 包名 (没安装过的软件包)查询指定RPM包文件的详细信息
rpm -qa 查询安装的所有rpm软件包
rpm -qa|more
rpm -qa|grep X
rpm -q 软件名称 查询软件名称对应的包 是否安装(有安装,返回软件rpm包名,除去.rpm)
rpm -q xinted
rpm -q foo
rpm -q xinted file bash
rpm -qi 软件名称 查询软件包信息
rpm -qi file
rpm -ql 软件名称 查询软件包中的文件
rpm -ql file
rpm -ql jdk
rpm -qf 文件全路径名 查询文件所属的软件包
rpm -qf /etc/passwd
rpm -qf /root/install.log
rpm -qp 包名 查询包的信息,对这个软件包的介绍
rpm -qp jdk-1_5_0-linux-i586.rpm
rpm -qpi jdk-1_5_0-linux-i586.rpm
rpm -qpl jdk-1_5_0-linux-i586.rpm
安装
rpm -i RPM包全路径名称 安装包到当前系统
i=install 安装
rpm -ivh RPM包全路径名称 安装包到当前系统,有提示信息
i=insatll 安装
v=verbose 提示
h=hash 进度条
删除
rpm -e RPM包的名称
rpm -e jdk
注意:如果其它软件包依赖于您要卸载的软件包,卸载时会产生错误信息,
rpm -e foo
removing thes packages would break dependencies:foo is needed by bar-1.0-1
若让RPM忽略这个错误继续卸载,不太好,因为依赖于该软件包的程序可能无法运行,
请使用--nodeps命令选项(会删除所有依赖的软件,一般不要选,比较危险,)
升级
rpm -U RPM包全路径名称
rpm -U cvs-1.11.2-10.i386.rpm
yum
1 安装
yum install 全部安装
yum install package1 安装指定的安装包package1
yum groupinsall group1 安装程序组group1
yum install yum-fastestmirror 自动搜索最快镜像插件:
yum install yumex 安装yum图形窗口插件:
yum grouplist 查看可能批量安装的列表:
2 更新和升级
yum update 全部更新
yum update package1 更新指定程序包package1
yum check-update 检查可更新的程序
yum upgrade package1 升级指定程序包package1
yum groupupdate group1 升级程序组group1
3 查找和显示
yum info package1 显示安装包信息package1
yum list 显示所有已经安装和可以安装的程序包
yum list package1 显示指定程序包安装情况package1
yum groupinfo group1 显示程序组group1信息yum search string 根据关键字string查找安装包
4 删除程序
yum remove | erase package1 删除程序包package1
yum groupremove group1 删除程序组group1
yum deplist package1 查看程序package1依赖情况
5 清除缓存
yum clean packages 清除缓存目录下的软件包
yum clean headers 清除缓存目录下的 headers
yum clean oldheaders 清除缓存目录下旧的 headers
yum clean, yum clean all (= yum clean packages; yum clean oldheaders) 清除缓存目录下的软件包及旧的headers
7、
运行java程序
vi Hello.java ->
编写代码
public class Hello{
public static void main(){
print("hello000");
}
}
> esc -> :wq -> javac Hello.java -> java Hello -> 输出“hello000”
运行c++程序
vi Hello.cpp ->
编写代码
#includ<stdio.h>
int main(){
printf("hello111");
return 0;
}
> esc -> :wq -> gcc -o hello Hello.cpp -> ./hello -> 输出“hello111” //-o 后面跟着可执行文件的别名