1. Linux概述
1.1 介绍
Linux 是一种类UNIX 计算机操作系统,最早开始于一位名叫林纳斯·托瓦兹(Linus Torvalds)的计算机业余爱好者,当时他是芬兰赫尔辛基大学的学生。他的目的是想设计一个代替Minix(是由一位名叫Andrew Tannebaum的计算机教授编写的一个操作系统示教程序)的操作系统,这个操作系统可用于386、486或奔腾处理器的个人计算机上,并且具有Unix操作系统的全部功能。
Linux 是一种类似于UNIX 计算机操作系统。它诞生于1991 年的10 月5 日(这是第一次正式向外公布的时间)。以后借助于Internet 网络,并经过全世界各地计算机爱好者的共同努力下,现已成为今天世界上使用最多的一种UNIX 类操作系统,并且使用人数还在迅猛增长。Linux 操作系统的诞生、发展和成长过程始终依赖着以下五个重要支柱:UNIX 操作系统、MINIX 操作系统、GNU 计划、POSIX 标准和Internet 网络。
1999年,IBM宣布与Redhat公司建立伙伴关系,以确保Redhat在IBM机器上正确运行。
1999.3年IBM、Compaq和Novel宣布投资Redhat公司,以前一直对Linux持否定态度的Oracle公司也宣布投资。
2000年初始,SUN公司在Linux的压力下宣布Solaris8降低售价。事实上Linux对SUN造成的冲击远比对Windows来得更大。
2001年IBM决定投入10亿美元扩大Linux系统的运用,此举犹如一计强心剂。令华尔街的投资者们闻风而动。8月红色代码爆发,引得许多站点纷纷从Windows操作系统转向Linux操作系统。
2002年是Linux企业化的一年。2月。微软公司迫于各州政府的压力,宣布扩大公开代码行动。这可是Linux开源带来的深刻影响的结果。3月,内核开发者宣布新的Linux系统支持64位的计算机。
2003年1月,NEC宣布将在其手机中使用Linux操作系统,代表着Linux成为进军手机领域。
2004年6月的统计报告显示在世界500强超级计算机系统中,使用Linux操作系统的已经占到了280席,抢占原本各种Unix的份额。9月HP开始开罗Linux内核代码人员。以影响新版本的内核对HP有利的方式发展,而IBM则准备推出OpenPower服务器,仅运行Linux系统。
Linux最小只需要4M内存就可以运行。可以嵌入式开发
1.2 Linux的历史
1960年
MIT(Massachusettes Institute of Technology)麻省理工学院研发了30个人同时使用分时操作系统。
1965年
MIT,ge和bell(贝尔实验室)共同决定研发30人使用的操作系统增加到300个人同时使用,并这个计算称之为multis计算【火星计划】,大概投资500万美元。
1969年
火星计划终于失败
Ken Thompson(肯汤普森,C语言前身B语言的作者,Unix的发明人之一)开发了server system(文件系统),受到贝尔实验室广泛欢迎。
Dennis Ritchie(丹尼斯里奇)在文件管理系统的基础上开发了并行了开发了影响世界的操作系统。
1973年
其两人开发了UNIX系统并公开了源代码、共享了源代码。
- IBM公司发觉UNIX系统有商机,所以在UNIX内核的基础之上开发并AIX操作系统。
- SUN公司在UNIX内核的基础之上也开发了Solaris操作系统。
- HP公司在UNIX内核的基础之上也开发HP UNIX操作系统。
- 加州大学 伯克利分校(University of California, Berkeley)开发了BSD操作系统。
minix(迷你版本的类Unix操作系统,约300MB)
Linus Torvalds(在芬兰读书,pc 386机上)发现minix的优点
minix这么好,为什么不装在个人机器上呢?
答:1991开始(很多开发者)minux移动到pc,到了1994年的时候发布了第一个版本并且取名为Linux。
1. x:混合
2. Linux is not unix
Linux基础之上:
- Redhat(红帽子)公司在Linux内核代码基础之上开发了常用的软件以及带图像用户界面的操作系统(二次开发)。
- SUSE(德国开发:流行于欧洲)
- Redflag(中国开发:流行于中国)
1.3 特性
- 免费的
- 开源的(代码公开)
- 支持多线程
- 多用户的
- 安全性
- 对内存和文件管理有优越
缺点:操作相对困难(没有图形用户界面)
1.4 为什么要学习Linux
1.性能卓越
Linux是一个开源、免费的操作系统,其稳定性、安全性、处理多并发已经得到业务的认可,目前很多中型,大型基至是巨型项目都在使用Linux。
Linux kernal:
RedHat
fedora
RedFlag
SUSE
Ubuntu
2.找工作
从目前看,软件公司迫切需要能熟练掌握Linux的程序员。
主要是以下几个方向:
- Linux系统管理员
- Linux程序员(C/C++、Java、PHP)
Linux软件工程师(PC)
Linux嵌入式开发(单片机芯片)
1.5 如何学习Linux
第一阶段:Linux平台上的开发,包括vi,gcc,gdb,make,jdk,tomcat,mysql...和Linux基本操作
第二阶段:加厚C语言功能《C专家编程》或是Java语言
第三阶段:学习Unix环境高级编程《UNIX环境高级编程》
第四阶段:Linux应用系统开发/Linux嵌入式开发
成为Linux专家的秘诀:
思考-实践-再思考-再实践...
1.6 内核基本功能(Kernel's Basic Functions)
hardware management
memory management
I/O
VFS(Virtual File System)
process management
1.7 version number's format:r.x.y
r: release version
x: 偶数:稳定版本,奇数:开发中版本
y: 错误修补的次数
eg:2.0.38; 2.2.16
1.9 安装
before installation
了解系统
是否存在其它系统
计算机硬件情况
获取硬件兼容性列表和驱动支持
http://hardware.redhat.com/hcl/
获取Red hat Linux
www.redhat.com
2. 常用命令
运行指令
指令名 【选项】【参数】
帮助和在线帮助:
--help
例如:mknod --help
main帮助:
main mknod
man -k keyword
man -f keyword
man -a keyword
man n keyword
man文件所在目录:/usr/share/man (share:分享,分担;分配)
- man1(默认:用户指令帮助信息) 例如:man 1 passwd
- man2
- man3
- man4
- man5(指令文件格式) 例如: man 5 passwd
......
....
...
..
.
info帮助:
info mknod
显示可执行文件的完整路径:
# which ls (安装alias->$PATH的顺序查找)
# echo $PATH
搜索一个可执行工具及其相关配置、帮助
# whereis ls
slocate:
# ls -l /usr/bin/locate
- 所有文件名及其所在路径包含关键字段的文件与目录都会显示
- slocate先将当前目录结构做成一个数据库,然后再些数据库中搜索匹配记录
# slocate passwd
# locate passwd
# vi /etc/updatedb.conf
##手动更新数据库
# updatedb
关机:
poweroff
halt
shutdown -h now
init 0
重启:
reboot
shutdown -r now
init 6
注销:
logout
字符界面切换到图像界面:
startx
切换用户:
su 用户名 然后再输入密码
切换目录:
cd 目录名
cd /home 切换到绝对路径
cd home 切换到相对路径
cd .. 切换到你目录
cd ~ 用户主目录
查看文件:
ls -l
-a:隐藏文件(a:)
-l:长列格式(l:long)
显示当前完整目录:
pwd
运行级别:
init [0123456]
0:关机
1:单用户
2:多用户状态没有网络服务
3:多用户状态有网络服务
4:系统未使用保留给用户
5:图形界面
6:系统重启
常用运行级别是3和5,要修改默认的运行级别可改文件/etc/inittab的id:5:initdefault:这一行中的数字
建立空文件
touch
复制文件
cp -r dir1 dir2 递归复制命令(复制子目信息) r:recursion [ri'kə:ʃən, -ʒən]
-r:一般用于复制目录文件
移动文件或改文件名
mv
删除文件和目录
rm -rf * 删除所有内容(包括目录和文件)
r:递归
f:强制 f:force [fɔ:s]
创建目录文件:
mkdir 目录名
删除空目录文件:
rmdir 目录名
建立符号连接
ln 源 目录 (硬链接:不可以跨文件系统、不能使用于目录。删除源文件之后中,硬链接文件依然存在。)
ln /etc/initab inittab inittab指向实际文件/etc/inittab
ln 文件名 连接名(硬链接:复制文件,两个文件之间建立链接)
ln 3.txt 4
more 4
软链接(Widnows的快捷方法:可以跨文件系统、可用于目录)
ln -s 3.txt 5
统计指定文本文件的行数、字数、字符数
wc
显示内容
more 带分页
less 带分页
tac
head 显示文件开关部分内容
tail 显示文件结尾部分内容
tail -f /var/log/messages f:即时更新 临时日志文件内容
df -h 显示磁盘容量
df -h
du 计算目录下文件占用磁盘的大小
du -h /etc/services
设备文件:ls -l /dev/
-设置在Liux中以特殊文件的形式存在
-块(block)设备文件:以b开头(硬盘)
-字符设置:以c开头(键盘、鼠标等)
虚拟控制台及用户身份切换
-在系统中有12个虚拟控制台,前6个可供用作本地登录
-用户可以用Alt+Fn(n=1~12)来切换
-用su可以用来切换用户身份
# vi inittab
# Run gettys in standard runlevels
切换到图形界面:Alt+F7
字符界面切换到图形界面:startx
startx命令在字符界面下启动了图形环境,那么可以使用组合键Ctrl+Alt+F1~F6切换字符虚拟终端,使用组合键"Ctrl+Alt+F7切换到图形界面
环境:env
切换用户:
su - 用户名 (环境变量也切换)
查看文件类型:
file test.php
stat:检查文件的block与inode状况
ext2和ext3文件系统中,文件以inod+block的方式存在。用rm指令删除文件中的inode记录。文件无法被找回。
文件名最大字符数是255个字符
grep 在指定的文本文件中查找指定的字符串
gred asdf 4
搜索文件及目录
find
在Linux中,因为文件系统是以级别式的结构来组成的。所以要在整个系统中找到特定的文件和目录并不是件容易的事。
find /home -amin -10 #十分钟内存取的文件或目录 a:access
find /home -atime -10 #十小时内存取的文件或目录
find /home -cmin -10 #十分钟内更改过的的文件或目录 c:change
find /home -ctime +10 #十小时前更改过的文件或目录
find /home -size +10k #文件大小搜索大于10k文件
管道命令
find / -name *.html | grep bookmar 在find结果中查找字符串"bookmar",显示包含这个字符串的文件。
命令文件路径
whereis ls
重定向命令
ls -l > a.txt 列表的内容写入文件a.txt(覆盖写)
ls -l >> a.txt 列表的内容追加到文件aa.txt
从文件中输入信息 database_program < database_data
shell使用
命令历史和互动:上下箭头
命令完成功能:tab键
shell脚本文件:
是一个文本文件
命令的集合
有执行的权限
执行方法(./文件名)
例如:每天凌晨2:00将mysql数据某个数据库备份到/home
#vi my.sh
date
./my.sh
Permission denied #没有执行权限
chmod 744 my.sh
./my.sh
vi my2.sh
/home/mysql/bin/mysqldump -u root -p 密码 > /home/test_db.bak
ls -l
chmod 744 my2.sh
ls -l
crontab -e e:edit
0 2 * * * /root/my2.sh
用户登录后自动执行的shell脚本文件:
.bashrc 位于主目录下
它之前执行系统的脚本/etc/bashrc主要是基本配置数据.bash_profile位于主目录下
它之前执行系统的脚本/etc/profile 主要是配置环境变量
/
|-etc
|-profile(配置系统环境变量:jdk,tomcat...)
|-.bashrc(配置系统启动时执行的程序)
|-home
|-user1
|-.bash_profile(用户的环境变量)
|-.bashrc
|-user2
|-.bashrc
|-........
|-usern
|-.bashrc
# 配置.bashrc文件可以指定某些程序在用户登录的时候就自动启动
vi /root/.bashrc
# mv jakarta-tomcat=sdfd tomcat
# vi /root/.bashrc
/home/tomcat/bin/startup.sh start
# logout
# login
# netstat -an | less
执行shell: ./文件名.sh
临时加入一个路径时,使用export
# export PATH=$PATH:/root
# env | less
# my2.sh
用export PATH=$PATH
SHELL:默认shell
PATH:路径
USER:当前登录用户的用户名
显示变量内容:
echo
echo $PATH
echo $USER
echo $SHELL # 当前用户所使用shell
通配符:
* 代表多个字母或数字
? 代表一个字母或数字
ls a* ls a? ls ?at?
ls f080[1-6].tif
转义字符:\
ls /mnt/win/my\ Documents
引号:
export NAME=Michael
echo Welcome $NAME, the date is date
单引号-shell不处理任何变量和命令
echo 'Welcome $NAME,the date is date'
双引号一处理变量但不处理命令
echo "Welcome $NAME, the date is date"
反引号-把引号中的每个单词作为一个命令,如果是变量则先求值然后作为一个命令处理
echo "Welcome $NAME, the date is `date`"
别名:
alias显示系统当前定义的所有alias
mysqldump -u root -p 密码 > /home/yy.bak
alias cp='cp -i'
alias ll='ls -l --color=tty'
alias llh='ls -l /home'
压缩和解压
zip与unzip
1. zip命令的基本使用方法:
zip file.zip * zip后接压缩后的文件名,在它的后面输入要压缩的文件即可。
2. 压缩后,自动删除原文件
zip -m file.zip to.txt 把to.txt文件压缩成file.zip文件,to.txt会自动删除。
3. 将子目录一起压缩
zip -r file.zip * 将当前目录下的子目录一起压缩
4. 忽略子目录的内容
zip -j file.zip *
5. 将已压缩的或没有必要压缩的文件去年。
zip -n .mpg: .jpg: .gif: 第一种文件中间要有":"分开
6. 压缩某一日之后的文件
zip -t 102002 file.zip 意思是指将当前目录下在2002年10月20日之后文件压缩
7.不压缩链接文件的压缩
zip -y file.zip *
8.压缩率问题。-1~-9: -9压缩率最高
zip -9 file.zip *
9.将不需要压缩的文件排除在外
zip file.zip * -x file2.txt #在压缩时,将当前目录内的file2.txt文件排除在外。
zip aa.zip 文件名
zip aa.zip 文件名 文件名2 文件名n
zip -r aa.zip 目录路径
zip aa.zip kkk.bak
zip bb.zip kkk.bak mydata2 mydate3
zip -r cc.zip ./workspace/
解压:
unzip 压缩文件名
1.直接解压缩文件
unzip file.zip
2.排除不需要解压缩的文件
unzip file.zip -x file 除了file2文件外,其他的文件都解压
3.查看压缩包的内容
unzip -Z file.zip 查看file.zip压缩包的内容。也可以使用"-l"、"-v"来看压缩包的内容。
gzip和gunzip(.
Linux笔记
最新推荐文章于 2022-04-11 13:35:13 发布
Linux是一种类UNIX操作系统,始于1991年,由林纳斯·托瓦兹开发。Linux逐渐发展成为世界上最广泛使用的UNIX类操作系统,被各大厂商如IBM、HP等支持。Linux系统以其免费、开源、多用户、多线程、高安全性等特性受到青睐,广泛应用于服务器、嵌入式开发等领域。学习Linux有助于提升系统管理、编程和分析能力,尤其是在高性能计算和企业环境中。
摘要由CSDN通过智能技术生成