我又来了。最近在看Linux呢,教材用的是大家推荐的《鸟哥的Linux私房菜 基础学习篇》,整体看过了一遍,但之前因为在封闭研发加班较多+条件有限,很多操作没有动手去做,最近日子轻松点,正在做书上的例题,慕课的课程属于补充。个人学习东西的时候喜欢看多个版本的教程,互为补充,以下为慕课学习中的笔记:
服务器越稳定越好。
手机下载个xxxSSHd软件,试一试
Linux严格区分大小写;Linux中所有内容以文件形式保存,包括硬件;Linux不靠扩展名区分文件类型(将文件名写为“*.xxx”是为了方便应用和管理),靠文件权限区分;Windows下的程序不能直接在Linux中安装和运行(Linux中,Windows下的程序只能安在Windows模拟器下)
VMware用8.0就好,不需要最新;VMware Install Cleaner帮助卸载VMware 虚拟机上的时间通常不太准(真实机断电后,时间还走,是因为主板上的电池)
主分区+扩展分区最多有4个,扩展分区最多1个;扩展分区不能写入数据,只能包含逻辑分区;格式化的目的不是为了清空数据,而是为了写入文件系统
硬件设备文件名:IDE硬盘/dev/hd[a-d];SCSI/SATA/USB硬盘/dev/sd[a-p];……
Linux中格式化后,要给每个分区一个设备文件名,才能使用,如/dev/sda1 第一个硬盘的第一个分区;逻辑分区的分区号从5开始
挂载(像windows中分配盘符,但这里的盘符不是A、B、C、D,而是目录),/(根分区,必须有),swap分区(交换分区,作虚拟内存);推荐将/boot单独做一个分区(启动分区,最好和根分区分开),此时,从/boot是/的子目录,但是在硬盘上,它有自己独立的空间
Linux的管理员 root
密码原则:复杂性(八位字符以上,大小写、数字、字符混合,不能是英文单词,不能喝用户个人信息相关);易记忆性;时效性(密码每隔一段时间应更换一次)
分区、挂载的规划与服务器的工作有关
安装日志:/root/install.log /root/install.log.syslog /root/anaconda-ks.cfg
Linux纯字符界面是不支持中文的,除非安装中文插件
远程登录Linux
命令提示符:[用户名@主机名当前目录]$(管理员为#)
命令格式:命令 [选项] [参数] 注意:个别命令不遵循此格式
选项分为简化选项和完整选项(-a 等于 --all)
Linux文件类型(d目录/-普通文件/l符号链接/b/s/c/p),文件有所有者、所属组和其他人
用户和用户组—>方便权限(r读/w写/x执行)的规划
mkdir–p [目录名] 建立目录,-p递归创建 新建的目录连接数是2(..和.)
cd [目录] 切换目录
.. 上级目录;. 当前目录;- 上次目录;~ 家目录(root:/root,普通用户:/home/用户名)
pwd 显示当前工作位置
rmdir[目录名] 删除空目录
rm -rf[目录或文件] -r删除目录(一般都加上) -f强制删除
cp [选项] [源文件] [目标文件(如为/../../之类形式,会沿用原文件名)] -r复制目录 -p连带文件属性复制 -d若源文件为链接文件,则复制链接属性 -a相当于-pdr
ll 是ls -l的别名(用alias可以查看)
ls -I可以查看inode编号
mv [源文件] [目标文件] 剪切或改名(不用加-r)
ln -s[源文件] [目标文件] 链接命令 -s创建软链接 硬链接,拥有相同的i节点,相同的存储空间,相当于建立一个文件的新的进入点,硬链接不能跨分区,不能针对目录;软链接,类似windows快捷方式,软链接拥有自己的i节点和Block块,但只是保存了源文件的文件名和i节点号,文件类型为l
Linux中常用目录的作用(Filesystem Hierarchy Standard (FHS)标准)
/ 根目录
/boot
/dev
/bin /sbin 保存系统命令(/sbin保存只有root可以执行的命令)
/etc 配置文件
/lib 函数库
/usr
/mnt linux的挂载都是习惯性的挂载到/mnt
/tmp 临时文件
/proc 放置的数据都是在内存当中
locate在后台数据库/var/lib/mlocate中搜索文件(但由于数据库不是实时更新的,所以新建的文件可能搜索不到,可以updatedb更新数据库),按/etc/updated.conf配置文件的配置搜索
whereis与which也遵循/etc/updated.conf的配置规则。Whereis只搜索系统命令(-b只查可执行文件所在位置;-m只查帮助文件);which搜索命令和别名;linux的shell自带命令(cd),用whereis或which找不到
PATH环境变量(注意PATH的字母都要大写),定义系统搜索命令的路径
echo$PATH 可以查看PATH的值;echo $变量名,查看变量的值
find[搜索范围] [搜索条件] 在系统中搜索符合条件的文件名,应用中应尽量避免大范围搜索;find [搜索范围] 文件名 如果需要模糊查询,要使用通配符(使用通配符后,要用引号括起字符串;*匹配任意内容;?匹配任意一个字符;[]匹配任意一个中括号内的字符);-iname 不区分大小写;find [搜索范围] -user 所有者 按照所有者搜索;find [搜索范围] –nouser 查找没有所有者的文件;find [搜索范围] -mtime+10 查找10天前修改的文件,-1010天内,10 10天当天,atime 文件访问时间,ctime 改变文件属性,mtime 修改文件内容;find [搜索范围] -size 25k 查找文件大小是25k的文件,-25k小于25k,+25k大于25k,兆是M,不写单位的话默认为block;find [搜索范围] -inum i节点号,按i节点搜索文件;-a and逻辑与,-o or逻辑或,可以连接两个搜索条件;find [搜索范围] [搜索条件] -exec ls -lh {} \; 可以将find命令查找结果交给第二条命令(ls -lh)处理,结尾加{} \; 为固定格式
注意:linux中,单引号与双引号的最大不同在于双引号仍然可以保有变量的内容,但单引号内仅能是一般字符 ,而不会有特殊符号
grep[选项] 字符串文件名 在文件中搜索符合条件的字符串;-I 忽略大小写;-v 排除指定字符串;find搜索用通配符完全匹配,grep用的是正则表达式包含匹配
man 命令名 获取指定命令的帮助(q退出帮助);man -f 命令 相当于whatis命令,可以查看帮助文件等级;man -等级命令名 仅获取指定等级的帮助;man-k xxx 相当于apropos命令,:根据关键字搜索联机帮助
命令名 –help 获取命令选项的帮助
help命令 获取shell内部命令的帮助(whereis 命令名 判断是否为shell内部命令)
info命令 详细命令帮助(回车,进入子帮助页面;u,返回上层;n,进入下一小节,p进入上一小节;q,退出)
常用压缩格式:.zip .gz .bz2 .tar.gz .tar.bz2
压缩文件不一定比源文件小(压缩时要存储压缩格式,如果袁文件很小,可能压缩后反而变大了)
zip 压缩文件名源文件 .zip格式压缩;Windows中的zip与linux中的是相通的
zip –r 压缩文件名 源目录 压缩目录
unzip压缩文件 .zip格式解压缩
gzip源文件 .gz格式压缩,压缩后源文件小时
gzip -c 源文件 > 压缩文件 通过数据重定向将压缩结果存入新文件,源文件保留
gzip -r 目录 目录下所有的子文件分别压缩,但是不能压缩目录
gzip–d 压缩文件 或 gunzip 压缩文件 .gz格式解压缩
bzip2源文件 压缩为.bz2格式,不保留源文件;bzip不支持压缩目录
bzip2-k 源文件 保留源文件
bzip2-d 压缩文件 或 bunzip2压缩文件 .bz2格式解压缩,-k保留压缩文件
.tar 打包文件
tar -cvf打包文件名 源文件 打包命令;-c打包;-v显示过程;-f指定打包后的文件名
tar -xvf打包文件名 解打包
tar -zcvf压缩包名.tar.gz 源文件 打包并压缩
tar -zxvf压缩包名.tar.gz
tar -jcvf压缩包名.tar.bz2 源文件 打包并压缩
tar -jxvf压缩包名.tar.bz2
shutdown[选项] 时间 -c取消前一个关机命令;-h关机;-r重启;时间,now表示马上;注意:服务器不要远程关机(都说了是远程了,关了就开不了了啊)
halt、 poweroff 、init0 也可以关机,但别用
reboot 重启命令,相对安全
init6 重启,但别用
系统运行级别:0关机;1单用户(相当于windows的安全模式);2不完全多用户,不含NFS服务;3完全多用户;4未分配;5图形界面(X也指图形界面);6重启
logout 退出登录
mount 查询系统中已挂载设备
mount-a 依据配置文件/etc/fstab,自动挂载
mount[-t 文件系统] [-o 特殊选项] 设备文件名 挂载点
umount设备文件名或挂载点 卸载命令(卸载后才能正常取出u盘或光盘),注意执行该命令时,当前目录不能是要卸载设备的挂载点哦
fdisk-l 可以查看U盘设备文件名(光盘的设备文件名是系统自带的)
Linux默认是不支持NTFS文件系统的
w [用户名] 查看登录用户信息(包括用户占用系统资源)
who[用户名] 查看登录用户信息(仅用户名、终端、登录时间)
last 查询当前登录和过去登录的用户信息(默认是读取/var/log/wtmp文件,这个文件不能直接用vim查看,会乱码)
lastlog 查询所有用户的最后一次登录时间(默认是读取/var/log/lastlog文件)
shell的分类:Bourne Shell(sh、ksh、bash、psh、zsh);C Shell(csh、tcsh)
echo$SHELL 查看当前shell
echo[选项] [输出内容] -e支持反斜杠控制的字符转换
shell脚本中,脚本开头#!/bin/bash不可省略,脚本中以#开头写注释
shell脚本的名称习惯为:xxx.sh
脚本执行:可以赋予执行权限,通过脚本路径直接运行(就像ls等命令),或用“bash 脚本”来执行
alias 列出系统中所有别名
alias别名=’原命名’ 给命令起别名
~/.bashrc环境变量配置文件(写入其中的别名可以永久生效)
unalias别名 删除别名
命令生效顺序:1、执行用绝对路径或相对路径执行的命令;2、执行别名;3、执行Bash的内部命令;4、执行按照$PATH环境变量定义的目录查找顺序找到的第一个命令
快捷键:ctrl+c 强制停止;ctrl+l 清屏(clear命令也可以);ctrl+a 光标移动到命令行首;ctrl+e光标移动到命令行尾;ctrl+u从光标所在位置删除到行首;ctrl+z 把命令放入后台;ctrl+r在历史命令中搜索
编辑文件时,推荐使用vim,而不是vi,vim支持颜色
history[选项] [历史命令保存文件] 历史命令,-c:清空历史;-w:把缓存中的历史命令写入保存文件
历史命令默认保存1000条,如果不够的话,可以在环境变量配置文件/etc/profile中HISTSIZE=xxx处进行修改
上下箭头调用以前命令;!n 重复执行第n条历史命令;!! 重复执行上一条命令;!字串重复执行最后一条以该字串开头的命令
如果记不清命令/文件全称,可以命令或文件的开头[Tab][Tab] 自动补全命令或文件名
输出重定向和输入重定向
标准输入:键盘 /dev/stdin 文件描述符0(文件描述符用来指代设备)
标准输出:显示器 /dev/sdtour 文件描述符1
标准错误输出:显示器 /dev/sdterr 文件描述符2
输出重定向:
命令 > 文件 :以覆盖的方式把命令的正确输出输出到指定的文件或设备当中;
命令 >> 文件 :以追加的方式把命令的正确输出输出到指定的文件或设备当中;
命令 2> 文件 或 命令 2>> 文件:把命令的错误输出输出到指定的文件或设备当中(2 与 > 间不能有空格)
命令 > 文件2>&1 或 命令 >> 文件 2>&1 或 命令 &> 文件或命令 &>> 文件:把命令正确和错误的输出都输出到同一个文件当中(可以这样理解:用2指代的标准错误输出的信息先重定向到用1指代的标准输出再重定向到指定文件)
命令 >> 文件a 2>> 文件b :把命令的正确的输出追加到文件a,错误的输出追加到文件b
/dev/null 系统的特殊设备文件,一个黑洞,放进去就没有了
wc [选项] [文件名] -c 统计字节数;-w 统计单词数;-l 统计行数
输入重定向(了解就好,不常见):
命令<文件 把文件作为命令的输入(比如wc < 文件名)
命令<<标识符 然后从键盘上输入东西啦,标识符之间的内容将作为命令的输入
多命令顺序执行:
; 命令1;命令2 多个命令顺序执行,不论是否有命令报错,命令之间没有任何逻辑联系
&&命令1&&命令2 逻辑与,命令1正确时,命令2才会执行
||命令1||命令2 逻辑或,命令1执行不正确时,命令2才会执行
例:&& 和 || 可以帮助根据上条命令是否正确决定下一步操作(如: lsgdfsas && echo yes || echo no)
管道符:
命令1 | 命令2 | 命令3…… 将命令1 的正确输出作为 命令2 的操作内容
命令2、3、… 处可以放的命令:grep 文本搜索;wc ;……
netstat 查看所有的网络链接
通配符:* 匹配任意内容;? 匹配任意一个字符;[] 匹配任意一个中括号内的字符;[-] -代表一个范围,如[0-9]代表匹配一个数字;[^] 匹配不是中括号内的一个字符,如[^0-9]代表匹配一个不是数字的字符
其他特殊符号:
’’和”” 单引号中所有特殊符号都没有特殊含义,在双引号中$、`、\ 仍有特殊含义“调用变量的值”、“引用命令”、“转义符”
``和$() 引用系统命令,Bash会先执行它(为避免错误,少用反引号 `` )
# shell脚本中,注释以此开头
$ 调用和得到变量的值
\ 转义符,其后的特殊字符将失去特殊含义
正则表达式
终于听完了,happy,这部分命令基本都已执行过,最近期末考+毕设略忙,之后的内容可能要暂缓一下了