拾遗:基础知识回顾-00
a.vi查找文本
N,反方向搜索
b.查看外网ip
curl ifconfig.me
b.更改到上一次访问的目录
cd -
d.在组中删除用户:
gpasswd -d 用户名 组名
e.查看网卡速率
cat /sys/class/net/eth0/speed
f.host与guest之间的文件互传
rcp -r /localdir/ username@ip:/remotedir
rcp -r username@ip:/remotedir /localdir
g.find 相关
find / -path /usr [-a] -prune -o -name xxx.txt -perm /4000 -group wheel
注:-prune 排除/usr文件夹,/4000权限高于4000,对应于-4000;-path 与 -prune之间为隐式-a逻辑 #+4000的写法自2005年已经废弃
find / 2>&1 | grep xxx 合并处理true&false输出,因为重定向操作中默认仅有stdout(1)会传递
find -maxdepth 1 -regextype "egrep" -regex "\.\/\.{1}.+" 搜索当前目录下的隐藏文件,-maxdepth必须跟在目录名后面
-regex后匹配的对象是包含完整路径的,并非文件名!其“dirname”部分与find声明的路径名称要保持完全一致!!!
find省略搜索目录的时候,默认搜索路径为“.”
另例:find /home -regex "/home/\.xxx"
find -type f | xargs cp -t /somedir 注:cp -t destination source主要用于管道传递参数
find -type f -exec cp {} /somedir \; 注:效果同上
find /etc/ -name xxx 注:目标目录名称末尾附带“/”,可避免因搜索的目录名为软链接产生的异常
find -atime或-mtime或-ctime 注:按天搜索,如-3指3天以内,包含三天;+3指三天以前,不包含三天
find -amin或mmin或cmin 注:按分钟搜索
find -iname #忽略大小写
find -inum #按Inode搜索
find -samefile somefile #搜索某个文件的所有硬链接文件
find -links N #按文件或目录的硬链接数量搜索
find -user username #按属主名称搜索
find -uid uidnumber #按uid搜索
find -group groupname #按属组名称搜索
find -gid gidnumber #按gid搜索
find -nouser #属主名称为空的文件或目录
find -nogroup #属组名称为空的文件或目录
find -size SIZE #按文件大小搜索,如+40M指大小在40M以上的文件,不含40M
find ! -perm /222 -not -type d -o -name xxx -a -amin -3 #!、或-not取反,-a、-o和、或逻辑
h.sed&gawk 相关
sed '/xxx/{n;s@yyy@zzz@3}' text
注:搜索文件text中包含xxx的行,{n;}格式表示操作匹配到的每一行的下一行,本例中即将其下一行中的第3个yyy替换为zzz
sed -n '/xxx/p;/yyy/p' text 功能相当于grep
i.排除文本中包含某个单词(连续字符串)的行的几种方法
grep -v 'xxx' text
gawk '!/xxx/{print $0}' text
grep -P '\b(?!.*xxx).*\b' text
j. chroot /dir /bin/bash env -i +h
注:env -i指清除chroot之前所有环境变量,+h指取消历史命令缓存hash
k.who/whoami/who am i/w “四兄弟”
who 显示当前已登陆的用户列表
who am i 显示uid,即实际用户
whoami 显示eid,有效用户
w 显示更详细的信息,包括正在运行的程序
l.限制所有普通用户进程数量上限,例如200
echo "* hard nproc 200" >> /etc/security/limits.conf
m.剥离命令与其执行终端的关联
nohup+COMMMANDS
n.查找目录下所有文件内容中包含某个字符串的方法,例如:查找alias的系统配置文件
grep -rP '^\s*alias\s+' /etc/*
grep -l -r -P '^\s*alias\s+' /etc/* 仅显示文件名,不显示具体的匹配行
o.PS1变量设置
\d :日期
\H :主机名+域名
\h :主机名
\t :24小时格式,带秒 SS
\T :12小时整式,带秒 SS
\A :24小时格式,不带秒 HH:MM
\u :用户名
\v :BASH的版本信息
\w :完整的工作目录名称,家目录以 ~ 代替
\W :工作目录名称的basename
\# :当前终端执行的命令计数
\$ :提示字符,有效用户是root时,提示符为 # ,否则为 $
p.cp
-L 复制对象是软链接,则复制其真实指向的内容
-R/r 递归
-p 保留属性
-u 如果源文件的Modify时间比目标文件的Modify时间新,则执行复制,否则不复制
o.pwconv,pwunconv,grpconv,grpunconv
控制用户和用户组是否使用shadow文件保存密码
p.iconv文本转码
iconv -f ISO_8859-1 -t UTF-8 -o outfile infile
q.锁定用户(禁止登陆)
在/etc/passwd,/etc/group或/etc/shadow,/etc/gshadow中的密码位添加叹号或双叹号(!,!!)
r.显示所有内部命令(内部命令随BASH启动加载至内存,运行时不发起额外进程,运行效率较外部命令高)
f@z ~ $ enable enable . enable : enable [ enable alias enable bg enable bind enable break enable builtin enable caller ...
s.比较两个文件是否指向同一磁盘分区的相同Inode(即是否互为硬链接)
if [[ file1 -ef file2 ]]
t.查看、声明、清除全局变量;声明只读变量
查看:export、env、printenv
声明:export、declare -x
清除:unset vars
只读变量(常量):readonly var、declare -r var
u.整数运算、取随机数、变量递增
整数运算:let var=1+2、var=$((1+2))
随机数变量:$RANDOM,例:$(($RANDOM%20)),会随机得到一个0-19之间的整数
变量递增:let var+=2、let var++
v.BASH条件判断
-z:判断文件是否为空
-n:判断文件是否不为空
-e:判断文件或目录是否存在
-h、-L:判断文件是否为软链接
-S:判断文件是否为套接字文件
-p:判断文件是否为管道文件
-g:判断文件是否具有sgid权限位
-u:判断文件是否具有suid权限位
-k:判断文件是否具有sticky权限位
-s:判断文件是否存在且不为空
file1 -ef file2:判断两个文件是否互为硬链接,即Inode相同
w.read -p "Please input: " -t 4
提示“Please input: ”,等待用户输入,等待时间为4秒
x.bzip2、xz
-k选项指压宿的同时保留源文件
y.SSH密钥对登陆
主配置文件:/etc/ssh/sshd_config,在其中启用RSAAuthentication、PubkeyAuthentication,禁用PasswordAuthentication
生成密钥对:ssh-keygen -t rsa(或ecdsa、ed25519等),将生成的*.pub文件scp至服务端,并追加至 ~/.ssh/authorized_keys文件中
z.字体顔色设置
格式: \033[01;32;42;m 00 清除格式(格式截止符) 01 加粗 04 下划线 30-37 依次代表字体顔色:黑红绿黄 蓝紫青白 40-47 依次代表背景顔色:黑红绿黄 蓝紫青白 示例: echo -e '\033[01;32;41m你\033[00;m我\033[04;30;47m它\033[00;m' “你” 部分:加粗,绿色字体,红色背景 “我” 部分:无特殊格式 “它” 部分:下划线,黑色字体,白色背景