linux常用命令记录
管理员 发布于 4年前   388
命令别名
alias CMDALIAS='COMMAND [options] [arguments]'
在shell中定义的别名公在当前shell生命周期中有效:别名的有效范围仅为当前shell进程
ualias CMDALIAS 撤消别名
\CMD 使用命令本身,跳过别名
命令替换
把命令中某个子命令替换为其执行结果的过程
$(CMD) `CMD`反引号
bash支持的引号:
``:命令替换
"":弱引用,可以实现变量替换
'':强引用,不完成变量替换
文件名通配,globbing
*:任意长度的任意字符
?:任意单个字符
[]:匹配指定范围内的任意单个字符
[abc],[a-m],[a-z],[A-Z],[0-9],[a-zA-Z],[0-9a-zA-Z]
以下再括一层[] [[:space:]]
[:space:]空白字符
[:punct:]标点符号
[:lower:]小写字母
[:upper:]大小字母
[:alpha:]大小写字母
[:digit:]数字
[:alnum:]数字和大小写字母
# man 7 glob 看帮助说明
[^]:匹配指定范围之外的任意单个字符
用户:UID,/etc/passwd
组:GID,/etc/group
影子口令:
用户:/etc/shadow
组:/etc/gshadow
用户类别:
管理员:0
普通用户:1-65535
系统用户:1-499
一般用户:500-60000
用户组:
管理员组:
普通组:
系统组:
一般组:
用户组类别:
基本组:用户的默认组
私有组:创建用户时,如果没有为其指定所属的组,系统会自动为其创建一个与用户名同名的组
附加组,额外组:默认组以外的其它组
/etc/passwd
accout:登录名
password:密码
UID:
GID:基本组ID
comment:注释
HOME DIR:家目录
SHELL:用户的默认shell
/etc/shadow
account:登录名
encrpyted password:加密的密码
加密方法:
对称加密:加密和解密使用同一个密码
公钥加密:每个密码都成对儿出现,一个为私钥(secret key),一个为公钥(public key)
单向加密,散列加密:提取数据特征码
1.雪崩效应
2.定长输出
MD5:128位定长输出
SHA1:160位定长输出
useradd username 新加用户
passwd username 改密码
/etc/default/useradd 增加用户配置文件
groupadd groupname 增加组
用户管理:
useradd,userdel,usermod,passwd,chsh,chfn,finger,id,chage
useradd -u 1000 user1
useradd [options] USERNAME
-u UID
-g GID(基本组)
-G GID,...(附加组)
-c "COMMENT" 指定注释信息
-d /path/to/somedirectory 指定家目录
-s /bin/bash 指定shell
-m -k /etc/skel/ 强行家目录
-M 不可创建家目录
-r:添加系统用户
/etc/login.defs useradd配置文件
userdel: 默认不删除家目录
userdel [option] USERNAME
-r:同时删除用户的家目录
id:查看用户的帐号属性信息
-u 用户
-g 组
-G 所有组
-n 名称
finger 查看用户帐号信息
finger USERNAME
修改用户帐号属性
usermod [option] USERNAME
-u UID
-g GID
-a -G GID附加组 不使用-a选项,会覆盖之前的附加组
-c
-d -m 改家目录 -m移动之前家目录文件到新目录
-s shell
-l 改用户名
-L 锁定帐号
-U 解锁帐号
chsh: 改用户默认shell
chfn: 修改用户注释信息
密码管理
passwd [USERNAME]
--stdin标准输入
-l 锁定
-u 解锁
-d 删除用户密码
pwck 检查用户帐号完整性
环境变量:
PATH
HISTSIZE
SHELL
组管理:
groupadd,groupdel,groupmod,gpasswd
创建组
groupadd
-g GID
-r 添加为系统组,系统用户没有家目录
groupmod
-g GID
-n GRPNAME
groupdel
gpasswd 为组设定密码
newgrp GRPNAME <-->exit 登录组
chage
-d 最近一次的修改时间
-E 过期时间
-I 非活动时间
-m 最短使用期限
-M 最长使用期限
-W 警告时间
权限管理:
chown,chgrp,chmod,umask
r:只读
w:可写
x:可执行
三类用户:
u: 属主
g: 属组
o: 其它用户
chown: 改变文件属主(只有管理员可以使用此命令)
# chown USERNAME file,...
-R 修改目录及其内部文件的属主
--reference=/path/to/somefile file,... 引用参考
chown USERNAME:GRPNAME file,...
-R
chown USERNAME.GRPNAME file,...
# chgrp GRPNAME file,...
-R
--reference=/path/to/somefile file,...
chmod: 修改文件的权限
修改三类用户的权限:
chmod MODE file,...
-R 递归
--reference=/path/to/somefile file,...
修改某类用户或某些类用户权限:
u,g,o,a
chmod 用户类别=MODE file,...
修改某类用户的某位或某位权限:
u,g,o,a
chmod 用户类别+|-MODE file,...
文件默认不能具有执行权限,如果算得的结果中有执行权限,则奖其权限加1;
umask:遮罩码
666-umask 文件
777-umask 目录
站在用户登录的角度来说SHELL的类型:
登录式shell:
正常通常某终端登录
su - USERNAME
su -l USERNAME
非登录式shell:
su USERNAME
图形终端下打开命令窗口
自动执行的shell脚本
bash的配置文件:
全局配置
/etc/profile, /etc/profile.d/*.sh, /etc/bashrc
个人配置
~/.bash_profile, ~/.bashrc
profile类的文件:
设定环境变量
运行命令或脚本
bashrc类的文件:
设定本地变量
定义命令别名
登录式shell如何读取配置文件?
/etc/profile --> /etc/profile.d/*.sh --> ~/.bash_profile --> ~/.bashre --> /etc/bashrc
非登录式shell如何读取配置文件?
~/.bashrc --> /etc/basrc --> /etc/profile.d/*.sh
bash:脚本解释器
I/O重定向
Linux
>: 覆盖输出
>>: 追加输出
set -C: 禁止对已经存在文件使用覆盖重定向;
强制覆盖输,则使用 >|
set +C: 关闭上述功能
2>: 重定向错误输出
2>>: 追加方式
&>: 重定向标准输出或错误输出至同一个文件
<: 输入重定向
<<: 此处文档
<< EOF
# cat >> /tmp/file.txt << EOF
把输入的内存追加到/tmp/file.txt里
管道:命令
命令1|命令2|命令3| ...
tee 输出到文件和标准输出
wc -l /etc/passwd 输出文件行数
正则表达式(贪婪模式)
.: 表示任务单个字符
[]: 匹配指定范围内的任意单个字符
[^]: 匹配指定范围外的任意单个字符
[abc],[a-m],[a-z],[A-Z],[0-9],[a-zA-Z],[0-9a-zA-Z]
以下再括一层[] [[:space:]]
[:space:]空白字符
[:punct:]标点符号
[:lower:]小写字母
[:upper:]大小字母
[:alpha:]大小写字母
[:digit:]数字
[:alnum:]数字和大小写字母
匹配个数:
*:匹配其前面的字符的任意次
.*:任意长度的任意字符
\?:匹配其前面的字符1次或0次
\{m,n\}:匹配其前面的字符至少m次,至多n次
位置锚定:
^:锚定行首,此字符后面的任意内容必须出现在行首
$:锚定行尾,此字符前面的任意内容必须出现在行尾
^$:空白行
\<或\b:锚定词首,其后面的任意字符必须作为单词首部出现
\>或\b:锚定词尾,其前面的任意字符必须作为单词的尾部出现
\<root\>
分组:
\(\)
\(ab\)* ab可以出现任意次
后向引用
\1: 引用第一个左括号以及与之对应的右括号所包括的所有内容
\2:
\3:
He love his lover.
She like her liker.
He like his lover.
bash
变量声明
本地变量:
VARNAME=VALUE 作用域为整个bash进程:
局部变量
local VARNAME=VALUE 作用域为当前代码段
环境变量:作用域为当前shell进程及其子进程;
export VARNAME=VALUE
VARNAME=VALUE
export VARNAME
"导出"
脚本在执行时会启动一个子shell进程;
命令行中启动的脚本会继承当前shell环境变量;
系统自动执行的脚本(非命令行启动)就需要自我定义需要各环境变量;
位置变量:
$1,$2,$3, ...
shift 踢除参数
./filetest.sh /etc/fstab /etc/inittab
$1:/etc/fstab
$2:/etc/inittab
特殊变量
$? :上一命令的执行状态返回值
程序执行结果
程序状态返回代码(0-255)
0:正确执行
1-255:错误执行,1,2,127系统预留
$# : 参数的个数
$* : 参数列表
$@ : 参数列表
输出重定向:
>
>>
2>
2>>
&>
撤消变量:
unset VARNAME
查看当前shell中变量:
set
查看当前shell中的环境变量:
printenv
env
export
脚本:命令的堆砌,按实际需要,结合命令流程
bash中如何实现条件判断?
条件测试类型:
整数测试
字符测试
文件测试
条件测试的表达式:
[ expression ]命令
[[ expression ]]关键字
test expression
整数比较:
-eq:测试两个整数是否相等:比如 $A -eq $B
-ne:测试两个整数是否不等:不等,为真;相等,为假;
-gt:测试一个数是否大于另一个数:大于,为真,否则,为假;
-lt:测试一个数是否小于另一个数:小于,为真,否则,为假;
-ge:大于或等于
-le:小于或等于
命令间的罗辑关系:
逻辑与: &&
第一个条件为假时,第二个条件不用再判断,最终结果已经有;
第一个条件为真时,第二个条件必须得判断;
逻辑或: ||
条件判断,控制结构:
单分支if语句
if 判断条件; then
statement1
statement2
...
fi
双分支的if语句:
if 判断条件; then
statement1
statement2
...
else
statement3
statement4
...
fi
多分支的if语句
if 判断条件1; then
...
elif 判断条件2; then
...
elif 判断条件3; then
...
else
...
fi
shell中如何进行算术运算:
A=3
B=6
1. let 算术运算表达式
let C=$A+$B
2. $[算术运算表达式]
C=$[$A+$B]
3. $((算术运算表达式))
C=$(($A+$B))
4. expr 算术运算表达式,表达式中各操作数及运算符之间要有空格,而且要使用命令引用
C=`expr $A + $B`
exit: 退出脚本
exit #可自定义状态码
如果脚本没有明确定义退出状态码,哪么,最后执行的一条命令的退出码即为脚本的退出状态码
文件测试:
-e FILE:测试文件是否存在
-f FILE:测试文件是否为普通文件
-d FILE:测试指定路径是否为目录
-r FILE:测试当前用户对指定文件是否有读取权限
-w 写
-x 执行
[ -e /ec/inittab ]
[ -x /etc/rc.d/rc.sysinit ]
测试脚本是否有语法错误
bash -n *.sh
bash -x *.sh 单步执行
/dev/null:软件设备,bit bucket,数据黑洞
编程能力:
脚本编程
grep,sed(流编辑器),awk
sed基本用法:
sed: Stream EDitor
行编辑器(全屏编辑器:vi)
sed: 模式空间
默认不编辑原文件,仅对模式空间中的数据做处理;而后,处理结束后,将模式空间打印至屏幕
sed [options] 'AddressCommand' file ...
-n: 静默模式,不再显示模式空间中的内容
-i: 直接修改原文件
-e: SCRIPT -e SCRIPT:可以同时执行多个脚本
-f /PATH/TO/SED_SCRIPT
sed -f /path/to/scripts file
-r: 表示使用扩展正则表达式
Address:
1. StartLine,EndLine
比如1,100
$: 最后一行
2. /RegExp/
/^root/
3. /pattern1/,/pattern2/
第一次被pattern1匹配到的行开始,至第一次被pattern2匹配到的行结束,这中间的所有行
4. LineNumber
指定的行
5. StartLine, +N
从startLine开始,向后的N行;
Command:
d: 删除符合条件的行;
p: 显示符合条件的行;
a \string: 在指定的行后面追加新行,内容为string
\n: 可以用于换行
i \string: 在指定的行前面添加新行,内容为string
r FILE: 将指定的文件的内容添加至符合条件的行处
w FILE: 将地址指定范围内的行另存至指定的文件中
s/pattern/string/修饰符: 查找并替换,默认只替换每行中第一个被模式匹配到的字符串
加修饰符
g: 全局替换
i: 忽略字符大小写
s///: s###, s@@@
\(\), \1, \2
l..e: like --> liker
love --> lover
sed 's#l..e#&r#g' sed.txt
set 's#\(l..e\)#\1r#g' sed.txt
set 's#l\(..e\)#L\1r#g' sed.txt
&: 引用模式匹配整个串
字符测试:
==: 等号两端要有空格,否则会显示为赋值,相等为真,不等为假
!=:是否不等,不等为真,等为假.
>
<
>=
<=
-n string: 测试指定字符串是否为空,空为真,不空为假
-s string: 测试指定字符厦是否不空,
fuser -mk 设备名 踢出正在访问该设备的所有用户
请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!
该博客于2020-12-7日,后端基于go语言的beego框架开发
前端页面使用Bootstrap可视化布局系统自动生成
是我仿的原来我的TP5框架写的博客,比较粗糙,底下是入口
侯体宗的博客
文章标签
友情链接