#快捷键
移动
ctrl+a 命令行首
ctrl+e 命令行尾
ctrl+b 向后
ctrl+f 向前
删除
ctrl+w 删除到行首
ctrl+k 删除到行尾
ctrl+u 删除光标前整个命令行字符
ctrl+h 向行首删除一个字符
ctrl+d 向行尾删除一个字符
ctrl+p 上一个历史命令
ctrl+n 下一个命令
ctrl+m enter
ctrl+i tab
esc3次 显示所有命令
ctrl+[ esc
shell里面可以有linux命令
不是所有的linux命令都可以使用在shell中
#linux命令
ls
-a
-l
-t 按照时间降序
-r 升序
cat
-n
如何清空一个文件
使用vim工具
echo > filename
cat /dev/null >filename
find
-i
-amin过去几分钟被读取过
-atime过去几天被读取过
-cmin过去几分钟被修改过
-ctime过去几天被修改过
-name
-type
-size
less
y前一行
u前半页
enter后一行
space后一页
q/ZZ
cat
cat filename | sort | uniq
sort
-n 数字
-u 去掉重复数字
-r 倒序
-t 指定分隔符
-o 输出到指定文件中
-k 指定排序的列
uniq
-u 显示唯一的行
-d 显示重复的行
-c 去重并统计重复次数
cut
cat /etc/passwd | cut -f 1,6-7 -d ':' 打印所有用户和用户的家目录
-c 打印指定字符
tr文本转换
paste文本合并
-d指定分隔符
ps当前查询状态下进程瞬间的状态信息
pidof 查看pid
top动态查看进程
head
-n 指定开始number行
tail
-c 指定字符开始位置
-n
number 指定最后number行
+number 从指定行到最后
-f 监视文件增长
**ex.显示100行到300行**
cat filename | tail -n +100 | head -n 200
sed -n 100,300p
wc
文件行数 字数 字节数
-l
-w
-c 字符数
统计文件夹下的目录个数
ls -l ./ | grep "^-" | wc -l
统计文件夹下的文件个数
ls -l ./ | grep "^d" | wc -l
统计命令执行时间
time
real 实际使用时间
user 用户态使用时间
sys 内核态使用时间
read>user+sys 需要io操作,再次操作时间变短,是因为有缓存
-p 只显示时间数值(秒数),没有单位
tar
-zcvf 压缩
-zxvf 解压
定时任务
at执行一次
atq
atrm
\\
at now + 30 minutes
/sbin/shutdown-h down
ctrl + d 结束
cron周期性执行
* * * * *
vi
/向下查找
?向上查找 n向上,N向下
:1,$s/oldText/newText/g替换
dw 删除一个单词
de
d$ 删除一行
2w 移动两个单词
3e 移动三个单词尾
sed行
's/old/new/g' 字符串替换
's/old/&new/g' 在匹配的内容后添加
默认不保存修改后的文件,使用重定向或者 -i或者 '-n 1,2 w output'
n,mp 打印n,m行
-n '1,5' 打印1到5行
'1,5d' 删除1到5行
'5!d' 保留第5行
n,$d 删除n,最后一行
/^$/d 删除所有空行
-e 或者 ; 多重编辑
's/old/new/g' 字符串替换
'y/old/new' 字符替换
'2 i test' 在第二行之前插入
'2 a test' 在第二行之后插入
r 从其他文件读取后插入匹配行
p 只显示匹配的行或处理过的行
sed.rules
sed -f sed.rules filename
awk列
'print $1,$4' 打印第一列和第四列
'print $0' 打印所有列
'print NF' 打印列数
$NF 打印最后一列
'begin{total=0}{total+=$3}end{print total}' 打印第三列的列和
'begin{total=0}{total+=$3}end{print total/NR}' 打印第三列的平均值
sed '/^$/d' filename | awk 'NR==1{a=$1;next} {a=a<$1?a:$1}END{print a}' 打印最小值
sed '/^$/d' awk.sh | awk 'NR==1{a=$1;next} {b=b>$1?b:$1}END{print b}' 打印最大值
统计整体磁盘情况
df -h
查看文件夹大小
du -sh
#shell
解释型语言,每执行一次都要翻译一次,相对于编译型语言,效率较低
#! Shebang 幻数 指定解释器的绝对路径
#AUTHOR
#DATE
查看脚本默认解释器
echo $SHELL
grep root /etc/passwd
当前linux系统可用的shell
/etc/shells
执行shell脚本
sh test.sh
bash test.sh
zsh test.sh
在当前shell环境下执行
source
直接指定解释器运行
/bin/bash test.sh
作为可执行程序
chmod +x test.sh 执行./test.sh 使用全路径执行需要x权限
#单行注释
<<!
多行注释1
!
<<test
多行注释2
test
if false;then
多行注释3
fi
((0)) && {
多行注释4
}
引用
双引号" 弱引号/部分引用 $,`,\会被解析为特殊意义
单引号' 全引用
命令替换
``或$()
$? 取出之前命令的退出状态值
位置参数
$0 脚本名称
$1 第一个参数
$2
.
.
$N 第N个参数
$# 参数个数
$@/$* 所有参数
运算符
整数
$[] $(())
expr 操作符和操作数之间要有空格
算术运算符
关系运算符
[]中使用 [[]]中使用
-gt >
-ge >=
-lt <
-le <=
-ne !=
-eq =
字符串比较运算符
-z 是否为空
-n 是否不为空
文件测试运算符
-r
-w
-x
-b
-c
-d
-f
-s 文件是否为空
-e 是否存在
逻辑运算符
test和[]等同
[]中使用 [[]]中使用
-a &&
-o ||
! !
##内建命令
declare
-i 整数
-r 只读 readonly
-a 数组
echo打印字符
-n 不换行
-e 打印转义字符
-e 输出颜色
背景颜色范围 40-47
字体颜色范围 30-37 黑红绿黄蓝紫天蓝白
exec
列出所有文件
find / -name "*.conf" -exec ls -l {} \;
删除所有临时文件
find / -name "*.tmp" -exec rm -f {} \;
read
不指定变量,放入环境变量$REPLY
数组
声明
declare -a arr
arr[0]=test1
arr[1]=test2
arr=('test1','test2')
取值
${arr[0]}
${arr[@]}/${arr[*]}
${#arr[0]} 获取字符串元素的长度
${arr[@]:1:2} 截取第一二个元素
${arr[0]:1:2} 截取第一个元素的第一二个字符
(${#arr1[@]} ${#arr2[@]}) 连接两个数组
${#arr[@]}/test1/test2 替换数组内元素
unset 取消
判断
if []
then
else
fi
if []
then
elif
then
else
fi
fi结尾
循环
带列表的循环
for var in {1..100} / for var in `seq 1 100` / for var in $(seq 1 100)
do
done
seq 命令定义步长
for var in $(seq 1 2 100)
不带列表的循环 在运行脚本时通过参数的方式传递变量
for var / for var $@
类c的for循环
for((初始化;判断;变量修改))
for((i=1; i<=100;i++))
while
select var in test1 test2
do
case $var in
test1) ***;;
test2) ***;;
*) ***;;
esac
done
函数
set可以重置参数的值
shift移动位置参数
ex.计算脚本中所有参数的和
库函数
函数名以下划线开头
递归
bash -x 跟踪脚本运行细节
标准输入0
标准输出1
错误输出2
标准输出重定向 command > filename command 1> filename
标准错误重定向 command 2> filename
输出重定向到空设备文件 >/dev/null
标准输出和标准错误输出同时重定向 command >filename 2>filename
command >filename 2>&1
本文介绍了MAC开发环境中终端快捷键和常用Shell命令,包括移动、删除、历史命令、Linux命令如ls、cat、find、less、sort、uniq、cut等,以及文本处理工具如tr、paste、awk。还讲解了文件处理、进程查看、脚本编写基础知识,如tar、cron、vi/vim编辑器的使用,并提供了多个实用操作示例。
&spm=1001.2101.3001.5002&articleId=103761993&d=1&t=3&u=219955cbab2d4ebcaf388b463d48f490)
5570

被折叠的 条评论
为什么被折叠?



