鸟哥linux学习笔记

gzip [-cdt#] filename用来压缩/解压缩gz文件
-d:解压缩
-#:1-9的压缩比


zcat filename.gz


bzip2 [-cds] filename
-c:将压缩过程产生到数据输出到屏幕上
-d:解压缩
-z:压缩
-#:不解释


bzcat filename.bz2


tar [-cxtzjvfpPN] file or dir(打包与压缩,解压缩)
-c:建立压缩文件
-x:解压缩
-t:查看tarfile内的文件
(c,x,t只能存在一个)
-z:是否需要用gzip压缩
-j:是否需要用bzip2压缩
-v:压缩过程中显示文件
-f:使用文件名(在f后要立刻接文件名)
-p:使用原来文件的属性
-P:可利用绝对路径来压缩


dd(备份)


Bash Shell内置命令
type [-tpa] name(显示内部或外部命令)可以用来查找命令
-p:如果后面接的name为命令,会显示完整文件名(外部命令)或显示内部命令


变量
获取变量
echo $var
echo ${bar}
设置变量:var=content(若有空格,则用"或'括起来,它俩区别如下,或用\进行转义)
引号(‘)的含义以及(‘)与(“)的区别
`之内的命令将优先执行,执行的结果作为外部输出信息(可以用$()来替换)
eg:cd /lib/modules/`uname -r`/kernel等同于 cd /lib/modules/$(uname -r)/kernel
“内的变量保留变量内容,‘内的变量名只为普通字符
扩展变量内容:"${var}"content或"$var content"
取消变量:通过unset取消变量


env(environment)列出当先shell下的环境变量


set列出所有变量(shell,自定义)
重要变量:
PS1提示符设置:PS1='content'
$:本shell的PID
?:上一个命令执行的回传码


export var:将自定义变量转成环境变量,如果没有var,则显示所有环境变量


locate语系设置
-a:显示linux支持的语系
LANG:主语言环境
LC_ALL:语言环境的整体设置
语系文件被保存在/usr/lib/locale/中,但是当前shell环境所支持的语系要根据SUPPORTED变量来确定
如果想修改系统语系支持时,可以修改/var/lib/locales/supported.d/local文件
默认配置文件/etc/default/locale


变量键盘读取,数组与声明
read [-pt] var(读取来自键盘输入的变量)
-p:后面接提示符
-t:接秒数


declare [-aixr] var声明变量属性等
-a:数组
-i:integer
-x:将var变成环境变量,同export
-r:readonly


数组定义:var[i]="xxxx",读取数组时,一般为${数组}


ulimit用户限制


附加的变量设置功能
guhe="/home/guhe/testing/testing.x.sh"
echo ${guhe##/*/}
echo ${guhe#/*/}
echo ${guhe%%/*}
echo ${guhe%/*}
echo ${guhe/testing/TEST}
echo ${guhe//testing/TEST}

变量的设置方式表
如var=${str:-expr}见《鸟哥》第二版P261


别名
alias command='alias'
单独的alias命令可以列出所有别名
unalias取消别名
别名可覆盖命令名


history命令
history [n]
history [-c]
history [-raw] histfiles
n:列出最近n行命令
-c:清除shell中的history
-a:将新增的history至histfiles,若没有,增至~/.bash_history
-r:将histfiles内容读入shell
-w:强制将当前历史写入histfiles

!number
number:执行第几条命令


!command执行以command开头的命令


!!执行上一个命令


$$与$?


配置文件:
环境配置文件:登录消息显示数据:/etc/issue
个人配置文件:~/.profile;~/.bashrc等


通过source或 . 可以不注销便能把配置文件加载到shell中


终端的环境设置
stty -a可以查看终端环境的设置
eg:stty erase ^h


set与终端环境设置有关
echo $-为显示所有set设置值


还有些按键设置在/etc/inputrc中


数据流重导向:
标准错误(2):stderr,用>(覆盖原文件)或>>(累加在源文件中)
标准输出(1):stdout,同上
标准输入(0):stdin,用<或<<
可以将正确输出和错误输出分别导向不同文件
eg:find /home -name testing > list_right 2> list_error
也可以导向相同文件
eg:find /home -name testing > list 2>&1
如果不想要错误输出则:
eg:find /home -name testing > list 2> /dev/null
标准输入<可以理解为:将原本需要键盘输入的数据,通过文件来读入。
<<为”结束的输入字符“,例如,当输入eof时,该次输入结束,则
eg:cat > file <<eof

tee [-a] file双重重导向
-a:以累加方式存到file中


命令执行判断依据:;,&&,||


管道|
常见管道命令:
cut -d '分隔符' -f1,2,3... fields
cut -c x-y
取出x-y之间的字符

grep [-acinv] '搜索字符串' filename 分析一行消息,-如有所需要信息,则该行取出
-a:将二进制文件以文本文件方式搜索数据
-c:计算找到'搜索字符串'的次数
-i:忽略大小写的不同
-n:顺便输出行号
-v:反选


排序
sort [-fbMnrtuk] [file or stdin]
-f:忽略大小写
-n:以纯数字进行排序,默认为文字排序(这点要注意,尤其是在对数字排序时一定要声明)
-u:即uniq,相同数据仅显示一行
-t:分隔符,默认为tab,与-k配合
-k:按那个字段来排序,与-t配合

uniq [-ic]
-i:忽略大小写
-c:进行计数

wc [-lwm] 统计文件中行数,字数,字符数
-l:显示行
-w:字
-m:字符


双重重导向
tee [-a] file


字符转换命令
tr [-ds] SET1
-d:删除消息中的SET1字符串
-s:替换重复字符
eg:last | tr '[a-z]' '[A-Z]'可以将小写字母替换成大写
更多字符请参考 man tr


col [-x]
-x:将tab转换成对应的空格键


join [-ti12] file1 file2
-t:join默认以空格为分和符,并比较第一个字段的数据,如果两个数据相同,则联成一行,比较的字段放在第一个
-i:忽略大小写
-1 x:第一个文件用x字段分析
-2 x:第二个文件用x字段分析

paste [-d] file1 file2与join一样,只不过是将两行贴在一起,以tab分开


expand [-t] file将tab换成空格
-t:指定一个tab换成多少字符
unexpand


文件拆分
split [-bl] file PREFIX
-b:接大小,按大小拆分
-l:按行数拆分
然后用数据流重导向cat filename* >> filename


参数代换
xargs [-0epn] command 即为将标准输入作为command的参数
-0:还原特殊字符
-e'string':eof,注意没有空格
-p:每执行一个命令,询问用户意见
-n:接次数,每次command执行时,要使用几个参数


正则表达式
[^]:字符反选
^,$:一行的首尾字符
.:绝对有一个任意字符
*:重复0个或多个前面的字符
{}:限定连续重复字符范围(需要转义,因为shell中{}有特殊意义)

扩展的正则表达式
egrep与|配合使用,|分割两组字符串
扩展的RE字符有:+;?;|;()


格式化显示
printf '打印格式' file
\a:警告声音的输出
\b:退格
\f:清屏
\n:输出新行
\r:enter
\t:水平制表tab
\v:垂直制表tabl
\xNN:NN为两位数字,将数字转换成字符
变量格式:
%ns:string
%ni:integer
%N.nf:floating


sed工具(整行处理)
sed [-nefr] 'action'
-n:silent模式
-e:直接在命令行模式上进行sed操作编辑
-f:直接将sed操作写入一个文件
-r:使用扩展ER的语法
action:[n1[,n2]] function
function:a;c;d;i;p;s
这个s可以用RE搜索,也可以利用x,ys/old/new/g形式进行替换


awk工具(分段处理)
awk '条件类型1{动作1} 条件类型2{动作2} ...' filename
awk默认以空格为分段符,以$n代表段,$0代表一整行数据
NF:每一行($0)拥有的字段数
NR:当前awk所处理的行数
FS:当前分隔符
awk后续所有操作用'括住,非变量的文字部分用",包括printf
BEGIN和END的用法(BEGIN {fs=":"})
{}内的操作通过;或回车来分


eg:cat printf_test | awk 'NR==1{printf "%10s\t %10s\t %10s\t %10s\t %10s\t %10s\t \n",$1,$2,$3,$4,$5,"total"} NR>1{total=$2+$3+$4; printf "%10s\t %10s\t %10s\t %10s\t %10s\t %10s\t \n",$1,$2,$3,$4,$5,total}'


文件数据比较与显示
diff [-bBi] from-file to-file(以行为单位来比较)

cmp [-s] file1 file2(以位为单位来比较,故可以比较二进制文件)


patch(可用来与diff配合制作补丁文件)


pr(打印,参数有很多)


shell脚本编程
数字运算前,需要用declare声明变量,也可以用var=$((运算内容))形式来进行运算


test判断,test -argu filename,具体参数见鸟哥P268


使用判断符号:[]
判断变量是否为空:[ -z "$var" ](注意每个组件必须用空格分开)


使用判断语句:
if []; then
command
elif []; then
command
else
command
fi


netstat -tuln:获取当前主机启动的服务


case $var in
"第一个变量的内容")
程序段
;;
"第二个变量的内容")
程序段
;;
*)
不包含第一和第二变量内容的执行其他程序段
exit 1
;;
esac


函数功能
function fname(){
程序段
}


while [condition]
do
程序段落
done


until [condition]
do
程序段落
done


for ((a;b;c))
do
程序片段
done


for var in con1 con2 con3...
do
程序片段
done
这个$var变量内容在循环工作时:
1,第一次循环,$var为con1
2,第二次循环,$var为con2
依此类推


脚本调试
sh [-nvx] scripts.sh
-n:不执行脚本,仅检查语法问题
-v:执行钱将脚本内容输出到屏幕
-x:将使用的脚本内容显示到屏幕


linux账户管理
ID帐号对应关系在/etc/passwd文件内,密码在/etc/shadow内


/etc/group与/etc/gshadow


有效用户组,初始用户组
初始用户组:在/etc/passwd的GID一栏中的便是用户的初始用户组,用户一登录便获得此用户组权限,若将该用户加入其他非初始用户组,则要在/etc/group中相应用户组的成员栏添加
有效用户组:指在创建新文件时,给新文件哪个用户组的权限
查看某用户所支持的用户组:groups
排第一个的用户组即为有效用户组
切换有效用户组:newgrp grpname

添加用户:useradd [一堆参数,具体见鸟哥291] username
添加用户时的参考文件:
/etc/passwd中的一些值,会参考/etc/default/useradd文件
用户的家目录会去参考/etc/skel/*
UID,GID有关设置文件在/etc/login.defs

passwd accountname:修改密码,如果修改本身密码,直接passwd即可
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值