查看更清晰格式github地址:
https://github.com/smallbug-vip/repo/blob/master/note/linux/note.mjs
?
#####################################################################################################
第四,五章 首次登陆
#####################################################################################################
?
注意:
单词前面两个-
?
-----------------------------------------
bc计算器
scale=10保留10位数
-----------------------------------------
?
cal显示日历
2016一年的日历
12 2016某月的日历
?
?
-----------------------------------------
date显示时间
+%Y
?
-----------------------------------------
?
ls显示文件(list)
-a显示所有文件
-l显示文件详细信息
-h将占用的字节人性化显示
-d显示目录信息
-i显示 inode ID
-s 显示大小
-1 一行行显示
--time=atime 显示访问时间
--time=ctime 显示创建时间
-R 递归显示
?
-----------------------------------------
?
history查看历史命令
!numner执行历史命令
?
-----------------------------------------
?
whatis查看命令简短信息
makewhatis ?生成whatis库
?
-----------------------------------------
?
whereis查找命令的目录及帮助文档的目录
-b 只显示二进制文件
-m 显示帮助文档
?
-----------------------------------------
?
which查找命令所在的路径及有无别名
?
-----------------------------------------
?
apropos查看配置文件简短信息
?
-----------------------------------------
?
man查看命令帮助
/search
n/N ?查找
^search ?开头
mannumber ?passwd查看第几张
man-k clocl查找命令片段
q ?退出
?
-----------------------------------------
?
sync将缓存中的内容写到磁盘中去
-----------------------------------------
?
shutdown?
-r now重启
-k显示通知信息不会真的关机
-h 10 10分钟后关机
-h 8:20到时间自己关机
?
reboot重启
-f强制重启
?
poweroff关机
-f强制关机
?
-----------------------------------------
?
运行级别
0 关机
1 单用户
2 不带网络的多用户
3 带网络的多用户
4 保留,用户可以自给定义
5 图形界面的多用户
6 重起系统
?
位置:/etc/rc.d
K 开头表示不运行
S 开头表示运行
?
1,设置开机模式为:命令模式
systemctl set-default multi-user.target
?
2,设置开机模式为:图形模式
systemctl set-default graphical.target
?
runlevel ?//显示当前环境级别
?
init number //改变当前环境的级别
?
startx//开启xwindow
?
?
#####################################################################################################
第六章 Linux的文件权限与目录配置
#####################################################################################################
?
用户信息存放目录:
/etc/passwd
用户密码存放目录:
/etc/shadow
组的存放目录:
/etc/group
?
-----------------------------------------
?
文件类型
-普通文件
d 文件夹
b 块设备(U盘)
c 字符型设备文件(鼠标)
l 快捷方式(软连接)
?
-----------------------------------------
?
chmod修改权限
[{ugoa}{+-=}{rwx}][文件或目录]
[rwx=421][文件或目录]
-R递归修改
?
-----------------------------------------
?
chown -R root 修改文件所有者
chown -R root[:.]root /aa修改文件所有者及所属组
?
-----------------------------------------
?
chgrp -R root /aa修改所属组
?
-----------------------------------------
?
文件夹的 x 代表是否可以进入该文件夹,如果没有 x,即使有w,其他用户也不可操作该文件将夹下的文件
文件夹的 w 代表是否可以操作文件夹中的文件,当文件夹有 w 时,即使其他用户没有读该文件夹中文件的权限,该用户也可以删除文件
文件夹没有 r 时,其他用户可以进入该文件夹但是不能读取该文件夹中的文件,但是可以创建文件,操作文件
?
-----------------------------------------
?
file filename查看文件类型
?
-----------------------------------------
目录结构
?
/bin
/sbin
相当于win32的作用
?
/boot
主要存放启动Linux系统所必需的文件,包括内核文件、启动菜单配置文件等
?
/dev
设备文件,字符设备,存储设备
?
/etc?
主要存放系统配置文件
?
/lib
主要存放一些库文件
?
/media 自动挂载
/mnt 手动挂载
在某些Linux的发行版中用来挂载那些USB接口的移动硬盘(U盘)等
?
/opt
可以理解为安装可选程序的地方。安装源码包
?
/proc
内核参数,不占用磁盘大小
?
/root
根用户的家目录。里面存放根目录的数据、文件等。
?
/usr
主要存放安装的软件、系统共用的文件、内核源码等。
?
/tmp
临时文件
?
/var
缓存,日志,数据库文件
?
-----------------------------------------
1>
uname //查看是什么系统
-i //架构
-r //内核
-a //查看所有
?
2>
cat /etc/redhat-release //CentOS Linux release 7.1.1503 (Final)
?
3>
hostnamectl
status 查看操作系统信息
--static查看静态主机名
--transient 查看瞬态主机名
--pretty 查看灵活主机名
4>
hostname ? ?//主机名
?
?
#####################################################################################################
第七章 Linux文件与目录管理
#####################################################################################################
?
mkdir创建目录(make directories)
-p递归创建
-p small/{bug,cat,hadoop}
?
-----------------------------------------
?
echo $PATH
命令默认会在这些目录中去查找
?
PATH=$PATH:/home
添加查找目录
?
-----------------------------------------
?
cp[item] resource target复制文件(copy)
-r复制目录
-p保留文件属性
-u ?新文件覆盖旧文件(旧文件不会覆盖新文件)
-l ?生成硬链接
-f 强制
-a = -rfp
-d 默认情况下拷贝链接会把原文件拷贝出来,可以加该参数拷贝链接
?
ln创建软硬链接
-s创建软连接
-----------------------------------------
?
mv移动和改名(move)
-i 询问要不要删除(默认)
-r 递归
-f 强制
?
-----------------------------------------
?
alias ll
显示别名
?
alias ll=‘ls -lh --color=auto‘
修改别名
?
-----------------------------------------
?
basename 只显示文件名
dirname 只显示目录名
?
-----------------------------------------
?
cat浏览小文件信息
-n显示行号
?
-----------------------------------------
?
tac反向浏览文件
?
-----------------------------------------
?
nl ? 不算空行显示行号
-d 算空行显示行号
?
-----------------------------------------
?
more浏览文件信息
(空格)或f翻页
(Enter)换行
q或Q退出
?
-----------------------------------------
?
less浏览文件信息
(空格)或f翻页
(Enter)换行
q或Q退出
上箭头向上翻一行
pgup向上翻一页
/XXX搜索
n下一个搜索结果
-N 显示行号
?
-----------------------------------------
?
head显示文件前几行
-5显示前5行
?
-----------------------------------------
?
tail-tailf显示文件后几行
-n显示后几行
-f动态显示文件末尾内容(监视日志)
?
-----------------------------------------
?
od 查看非文本文件
-t c 以ASCII码格式显示输出
?
strings显示二进制文本文件
?
-----------------------------------------
?
rm删除文件
-r删除目录
-f强制删除
?
rm -rf !(keep1 | keep2) ? ?删除keep1,keep2文件之外的文件
?
-----------------------------------------
?
pwd显示当前目录(print working directory)
?
-----------------------------------------
?
rmdir删除空目录(remove empty directories)
?
-----------------------------------------
?
touch创建文件
?
touch filename 如果filename存在的话就修改其修改时间为当前时间
?
-----------------------------------------
?
umask 权限过滤符
文件 : 666 - umask
目录 : 777 - umask
-----------------------------------------
?
lsattr列出文件隐藏属性
chattr修改文件隐藏属性
+a (文件不可写,文件夹只可创建不可删除)
+i (文件夹中,不可添加也不可删除文件)
?
-----------------------------------------
?
SUID ?在命令所有者的位置上出现S代表其他人在执行该命令时具有所有者的权限
chmod u+s xx
chmod 4333 xx
?
SGID 如果一个文件夹的的所属组中出现了S,代表着之后在该文件夹下创建的文件都将会继承该文件夹的所属组
chmod g+s xx
chmod 2333 xx
?
SBIT 只出现在文件夹的其他人权限位,意思是除了root和所有者外其他人即使有权限也不能删除
chmod o+t xx
chmod 1333 xx
?
-----------------------------------------
?
echo "hostname is `hostname`"在字符串中执行命令
echo "hostname is $(hostname)"
输出 : hostname is smallbug
?
-----------------------------------------
?
locate快速搜索(每天跟新一次数据库,新创建的文件可能找不到)
-i不区分大小写
?
updatedb更新资料库
/var/lib/mlocate/mlocate.db ?数据库位置
?
-----------------------------------------
?
find path -option [argu] 查找文件
?
-or 或关联关系
-name根据名称查找
-size +5M根据大小查找
-size -5M -size +3M ?查找大于3M小于5M的文件
-user smallbug根据所有者查找
-group根据所属组查找
-ctime +1 ?创建超过1天的文件
-cmin +1创建时间超过一分钟
-amin访问时间
-newer filename 查找比当前文件比较新的文件
-perm 222根据权限查找(2 -> o, 22 -> go)
+222 ugo只要有一个写权限就行
-222 ugo必须都有写权限
?
?
#####################################################################################################
第八章 Linux磁盘与文件系统管理
#####################################################################################################
?
MBR->[分区]->[分区]
?
引导程序(446) + 分区表(64) + 结束符(2)
?
一个分区需要16字节
-----------------------------------------
?
[分区]
?
boot sector -> super block -> inode -> block(默认4K)
?
[super block 记录inode信息和block信息。例如,使用情况]
[inode 每记录一个文件消耗128bit,相当于一本书的目录]
?
-----------------------------------------
[分区]
?
[block group]
boot sector -> {?
[super block->文件系统描述信息->块位图->inode位图->inode表->block],
[super block->文件系统描述信息->块位图->inode位图->inode表->block],
[super block->文件系统描述信息->块位图->inode位图->inode表->block]
}
?
super block : 记录inode和block信息
文件系统描述信息 :记录一个分区中的 block group 信息。
块位图 :记录block区域中哪些block使用了,哪些没使用。
inode位图:同上
inode表:记录文件存放在哪些block中(128/4只能指向32个block)
|--→直接区(12)
|--→间接区(1)
|--→二间接区(1)
|--→三间接区(1)
?
-----------------------------------------
?
filefrag -v cc ? 查看文件在哪些block中
?
-----------------------------------------
?
dumpe2fs ?/dev/sda3 ? 查看分区信息
?
-----------------------------------------
?
du 显示文件夹大小
-s 单层显示
-h 人性化显示
?
-----------------------------------------
?
VFS(虚拟文件系统) ?不需要考虑要操作什么文件系统
?
-----------------------------------------
?
df ? 显示已挂载磁盘信息
-h ?人性化显示
-T ? 显示文件类型
?
-----------------------------------------
?
硬链接不能跨分区
?
-----------------------------------------
?
[分区]
?
1>
fdisk -l ? ? ? ? ? ?查看分区情况(有多个硬盘的话可以加硬盘名)
?
2>
fdisk /dev/sda ? ? ?给sda分区
3>?
## m查看帮助
? ?a ? toggle a bootable flag ? ? ? ? ? ? ? ?
? ?b ? edit bsd disklabel
? ?c ? toggle the dos compatibility flag
? ?d ? delete a partition //删除分区
? ?g ? create a new empty GPT partition table
? ?G ? create an IRIX (SGI) partition table
? ?l ? list known partition types //列出分区类型
? ?m ? print this menu
? ?n ? add a new partition //创建一个新的分区
? ?o ? create a new empty DOS partition table
? ?p ? print the partition table //显示分区表
? ?q ? quit without saving changes //不保存退出
? ?s ? create a new empty Sun disklabel
? ?t ? change a partition‘s system id //修改分区类型
? ?u ? change display/entry units
? ?v ? verify the partition table
? ?w ? write table to disk and exit //保存并推出
? ?x ? extra functionality (experts only)
?
4>
partprobe [/dev/sda] ? ?//更新分区表
?
5>?
mkfs -t ext3 /dev/sda5 ? ?格式化分区(=mkfs.ext3 /dev/sda5)
mkfs -t ext3 -b 4096 /dev/sda5 ? //每一个block是4k
?
6>
mount /dev/sda5 /mnt ? //挂载
umount /dev/sda5 ? ? //卸载
?
mount -o remount,ro /mnt ? //以只读的形式挂载
mount -o remount,rw /mnt //读写权限
mount -o remount,noexec /mnt ?//无执行权限
mount -o loop xx.iso /mnt //挂载镜像
vim /etc/fstab ? //永久挂载(/dev/sda5 ? /home/smallbug/workspace ? ext3 ? ?defaults ? 0 0)
?
-----------------------------------------
?
fsck -f(强制检查) -C(显示进度) ?检查磁盘
?
-----------------------------------------
?
badblock ?-sv(进度) ? ?检查坏道
?
-----------------------------------------
?
fuser -mv /mnt ? ?//查看哪个进程占用该磁盘
?
-----------------------------------------
?
tune2fs -l /dev/sda5 ? ?查看分区信息
?
-----------------------------------------
?
/proc/swaps ? ?//查看交换分区
?
-----------------------------------------
?
unix2dos -n 123 345 ? ?将Linux文件格式转换为windows格式
?
#####################################################################################################
第九章 文件与文件系统的压缩与打包
#####################################################################################################
?
gzip压缩文件为 *.gz
-d ? ?解压
gzip -c hosts > hosts.gz ? ?压缩时保留源文件
?
zcat ? ? ? ? ? ?查看gzip压缩过的文件
?
gunzip(gzip -d)解压缩文件
?
-----------------------------------------
?
zip -r压缩目录
解压:unzip FileName.zip
压缩:zip FileName.zip DirName
?
-----------------------------------------
?
bzip2压缩文件
-k产生压缩文件后保留原文件
-d ?解压
bzip2 -c hosts > hosts.bz2 ? ?缩时保留源文件
?
bzcat 查看bzip2压缩过的文件
?
bunzip2解压缩文件
?
-----------------------------------------
?
tar打包文件
-c打包(-x解包)
-v显示详细信息
-f指定文件名
-z打包同时压缩(解压缩)(gzip)
-j打包同时压缩(解压缩)(bzip2)
-t ?不解档的情况下,查看文件内容
-C 目录 ? 指定解档目录
?
tar zcvf mkd.tar.gz ./mkd/
?
-----------------------------------------
?
.Z
解压:uncompress FileName.Z
压缩:compress FileName.tar.Z
?
-----------------------------------------
?
增量备份:之备份增加的部分
?
差异备份:只备份全量备份之后的数据
?
-----------------------------------------
?
备份:
-0 全备份
? 增量备份 ? 备份顺序:012345
? 差异备份 ? 备份顺序:09876
dump?
-u ? 记录时间,写入到 /etc/dumpdates
-f ? 指定目录
dump -0u -f /home/back/1.dump /dev/sda3
?
?
restore -r -f /root/rhce/1.dump ? 恢复备份
? ? -r ?恢复所有数据
? ? -i ?交互(恢复部分文件)
? ? -t不恢复查看内容
?
-----------------------------------------
?
创建ISO镜像
mkisofs -o xx.iso file1 file2 file3
?
-----------------------------------------
?
cp /dev/cdrom xxx.iso
直接将光盘中的文件复制成iso镜像
?
-----------------------------------------
?
dd if=/dev/sda5 of=test ? 将sda5分区中的数据备份到test中
?
-----------------------------------------
?
cpio
-o ? 压缩
-i ? 解压
?
find -name ‘file*‘ | cpio -o > xx.cpio
cpio -iu < xx.cpio ? //解档 ?
-u ? 如果解档文件更新的话,就覆盖?
?
?
#####################################################################################################
第十章 vim程序编辑器
#####################################################################################################
?
Vim文本编辑器
?
vi filename(进入)--->命令模式
:wq(退出)------>命令模式
|?
|ESC
|
iao------------>插入模式
?
a在光标所在字符后插入
A在光标所在行尾插入
i在光标所在字符前插入
I在光标所在行行首插入
o在光标下插入新行
O在光标上插入新行
?
:set nu设置行号
:set nonu取消行号
?
gg到第一行
G到最后一行
nG到第n行
:n到第n行
?
$移至行尾
0移至行首
?
x删除光标所在处字符
nx删除光标所在处后n个字符
dd删除光标所在行
ndd删除n行
dG删除光标所在行到文件末尾内容
D删除光标所在处到文件末尾内容
:n1,n2d删除指定范围的行
?
yy复制当前行
nyy复制当前行以下n行
dd剪切当前行
ndd剪切当前行以下n行
p、P粘贴在当前光标所在行下或行上
?
r取代光标所在处字符
R从光标所在处开始替换字符,按ESC结束
u取消上一步操作
?
/string搜索指定字符串
搜索时忽略大小写:set ic
n搜索指定字符串的下一个出现的位置
?
:%s/old/new/g(不询问)c(询问)全文替换指定的字符串
:n1,n2s/old/new/g在一定范围内替换指定字符串
?
:W保存修改
:W new_filename另存为指定文件
:wq保存修改并退出
ZZ快捷键,保存修改并退出
:q!不保存修改退出
:wq!保存修改并退出(文件所有者及root可以使用)
?
:r 文件名将文件中的所有内容导入到该文件中
: !命令执行命令
:map Ctrl+v Ctrl+()增加快捷键
?
:n1,n2s/^/#/g注释多行
?
:ab 打出a换成b
:sp ? ? ? ?分屏
ctrl+w ? ? 切换
:only ? ? ?取消分屏
?
/home/username/.vimrc普通用户设置vim快捷键
/root/.vimrcroot用户设置vim快捷键
?
vim插件:
1>https://github.com/ma6174/vim
编写python程序
?
自动插入头信息:
#!/usr/bin/env python
# coding=utf-8
输入.或按TAB键会触发代码补全功能
:w保存代码之后会自动检查代码错误与规范
按F6可以按pep8格式对代码格式优化
按F5可以一键执行代码
多窗口操作
?
使用:sp + 文件名可以水平分割窗口
使用:vs + 文件名可以垂直分割窗口
使用Ctrl + w可以快速在窗口间切换
编写markdown文件
?
编写markdown文件(*.md)的时候,在normal模式下按 md 即可在当前目录下生成相应的html文件
生成之后还是在normal模式按fi可以使用firefox打开相应的html文件预览
当然也可以使用万能的F5键来一键转换并打开预览
如果打开过程中屏幕出现一些混乱信息,可以按Ctrl + l来恢复
快速注释
?
按\ 可以根据文件类型自动注释
?
2>https://github.com/amix/vimrc
?
#####################################################################################################
第十一章 认识与学习bash
#####################################################################################################
?
whoami ?查看当前用户
?
-----------------------------------------
?
[smallbug@smallbug ~]$ cat /etc/shells 显示系统的所有shell
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/bin/tcsh
/bin/csh
?
切换:直接敲shell的名称
?
echo $$
输出当前shell ID
?
-----------------------------------------
?
: ? ?隔开同一行敲的多个命令使用
?
\ 另起一行 \
?
-----------------------------------------
?
变量名=值
变量名不能以数字开头
等号两边不能有空格
值用双引号引起来
定义变量时不加$,引用时需要加$
在终端敲该命令,所得的变量时当前shell的变量
单引号引用的变量不会被解析
?
declare -x dd=12 / export yy=10
定义环境变量
可以影响到所有子shell
?
declare +x dd
将环境变量变成本地变量
?
declare -r dd (readonly dd)
将变量设为只读
?
-----------------------------------------
?
echo 输出变量
-n 输出不换行
?
unset 取消变量
?
set 显示所有变量
set 1 2 3 4 5 ?设置参数
?
env 显示所有环境变量
export 显示所有环境变量
export -p显示所有环境变量
?
-----------------------------------------
?
$0 ? ?文件的名字
$# ? ?参数的个数
${12} 文件的第12个参数
$* ? ?所有的参数
?
-----------------------------------------
?
全局变量
$PATH
$HOME
$USER
$PS1 ? 提示符([\u@\h \W]\$)
$LAGN ? 系统当前编码
$REPLY read默认赋予的变量
$? 记录上面的命令是否执行成功,0表示失败,非0表示成功
-----------------------------------------
?
locale -a 系统所支持的所有编码
?
-----------------------------------------
?
read -p "pleace input word:" name
相当于先输出再读取变量
?
-----------------------------------------
?
数组操作
xx=(aa bb cc dd) 赋值
echo ${xx[0]} 取值
echo ${xx[*]} ?
echo ${xx[@]} 取所有
echo ${!xx[@]} 查看所有下标
echo ${#xx[@]}查看元素个数
?
-----------------------------------------
?
ulimit -a
查看系统限制
?
core file size ? ? ? ? ?(blocks, -c) 0
data seg size ? ? ? ? ? (kbytes, -d) unlimited
scheduling priority ? ? ? ? ? ? (-e) 0
file size ? ? ? ? ? ? ? (blocks, -f) unlimited
pending signals ? ? ? ? ? ? ? ? (-i) 7866
max locked memory ? ? ? (kbytes, -l) 64
max memory size ? ? ? ? (kbytes, -m) unlimited
open files ? ? ? ? ? ? ? ? ? ? ?(-n) 1024
pipe size ? ? ? ? ? ?(512 bytes, -p) 8
POSIX message queues ? ? (bytes, -q) 819200
real-time priority ? ? ? ? ? ? ?(-r) 0
stack size ? ? ? ? ? ? ?(kbytes, -s) 8192
cpu time ? ? ? ? ? ? ? (seconds, -t) unlimited
max user processes ? ? ? ? ? ? ?(-u) 4096
virtual memory ? ? ? ? ?(kbytes, -v) unlimited
file locks ? ? ? ? ? ? ? ? ? ? ?(-x) unlimited
?
-----------------------------------------
?
r=${path#*kkk/bin}
删除path变量中的按 *kkk/bin 匹配的字符串,然后赋值给r(第一个匹配开始处理)
r=${path##*kkk/bin}
删除path变量中的按 *kkk/bin 匹配的字符串,然后赋值给r(最后一个匹配开始处理)
?
#删除前面的字符串,%删除后面的字符串
?
-----------------------------------------
?
r=${xx-"hello"} 如果变量xx存在就将xx值赋予r否则将hello赋值给r
r=${xx:-"hello"} 在上面的基础上还要判断是否为空
r=${xx:="hello"} 在上面的基础上将字符串赋值给xx
r=${xx:?"error"} ?检查xx是否为空,如果是空的话显示字符串警告信息
r=${xx:+"hello"} ?如果xx非空将后面的字符串赋值给r
?
-----------------------------------------
?
type -a ls 查看命令执行顺序
?
-----------------------------------------
?
用户登录时读取配置文件顺序:
vim /etc/profile 环境变量
/etc/inputrc 快捷键
~/.bash_profile
-----------------------------------------
?
set -u 开启当所用到的变量没有被设置时就会报错
+u 关闭
-x 追踪每一个操作
+x 关闭
?
-----------------------------------------
?
ls -a > a.txt 文件重定向(清空)
ls -a >> a.txt 文件重定向(追加) ?
xx 2> a.txt只重定向错误的结果
xx & >> a.txt 不管正确还是错误全部都追加
?
-----------------------------------------
?
tr ‘a-z‘ ‘A-Z‘ < hosts
将hosts文件中的字母从小写转为大写并输出到屏幕
?
-----------------------------------------
?
cat > filename << end
将输入字符保存到filename中,直到end结束
?
-----------------------------------------
?
grep搜索文件中的内容
-i不区分大小写
-v排除指定字符串 ^表示开头
?
-----------------------------------------
?
cut xx | tee xx | grep aa
将输出信息保存在xx文件中
?
-----------------------------------------
?
cut -d: -f1 /etc/passwd
以:作为分隔符,查看分割后的第一本分文件
?
-----------------------------------------
?
sort -n 以数字的行驶排序
?
sort -t: -k3 -n passwd
-u排除重复(== ? | uniq)
-----------------------------------------
?
wc 统计字符
?
-----------------------------------------
?
col expand ? 将Tab键转化为空格
?
-----------------------------------------
?
paste 将文件组合在一起
join
-----------------------------------------
?
split -b 10k /etc/services xxx
?将services文件以每块10k前缀为xxx进行切分
?
-----------------------------------------
?
diff 判断两个文件是否相同
?
-----------------------------------------
?
xargs 让ls类似的不能使用管道的命令使用管道
?
?
未完待续
原文:http://smallbug-vip.iteye.com/blog/2286468