/ 技术Geek  

Linux Shell脚本常用命令归档

最近在春招期间,一向以为对Linux & macOS的命令了如指掌的我 却接二连三被面试官问倒. 所以借此机会来整理一些Linux的常用命令以及shell脚本的使用方法
本文章仅用作笔记功能,所以会一直同步更新.更新速度取决于学习速度😁

alias别名配置功能

-w821
语句格式为 alias 别名=’曾用名’
但是这只是暂时性生效,在terminal关闭后则失效.如果要永久生效,则需要在 ~/.zshrc中添加你的alias语句.并且修改后在命令行中输入source ~/.zshrc使其生效

通配符

命令行里用的比较多的应该就是 通配符了,的作用就是模糊匹配.比如你想打开所有以.md结尾的文件.可以直接输入

1
open *.md

这样就可以直接打开了.

常用Linux/Shell命令

1.cd

1
2
3
4
cd [dirname]    跳转到目标目录
cd .. 回到上级目录
cd ../.. 回到上上级目录
cd ~ 回到home目录

2.echo

用于字符串的输出
-w783

3.grep

grep命令是一种强大的文本搜索工具

1
2
3
4
5
6
7
8
9
10
ps -ef | grep [name] //查找指定进程
ps -ef | grep [name] -c //查找指定进程个数
cat test.txt | grep -f test2.txt //从文件中读取关键词进行搜索
cat test.txt | grep -f test2.txt //从文件中读取关键词进行搜索且显示行号
grep 'linux' test.txt // 搜索目标字符串
grep -o 'string' test.txt | wc -l //搜索目标字符串在文件中出现次数
cat test.txt |grep ^u //找出已u开头的行内容
cat test.txt |grep ^[^u] //输出非u开头的行内容
cat test.txt |grep hat$ //输出以hat结尾的行内容
cat test.txt |grep -E "ed|at" //显示包含ed或者at字符的内容行

4.cat

Shell脚本编写规则

1.变量

1
2
3
4
5
6
7
8
9
10
11
12
13
定义变量:name = [definition]
使用变量: $name // 在变量名前加上一个$符合
readonly name :将变量变为只读
unset name: 删除变量
获取字符串长度:string="abcd"
echo ${#string} #输出 4
截取字符串部分:string="runoob is a great site"
echo ${string:1:4} # 输出 unoo
数组:array_name=(value0 value1 value2 value3)
读取数组: ${数组名[下标]}
取得数组元素的个数:length=${#array_name[@]}
或者:length=${#array_name[*]}
取得数组单个元素的长度:lengthn=${#array_name[n]}

2.注释

1
2
3
4
5
:<<EOF
注释内容...
注释内容...
注释内容...
EOF

其中的EOF可以换成其他的符号,比如!、’等

3.传递参数

Git常用命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
git clone -b "branch name" repo

git checkout -- readme.txt #把readme.txt文件在工作区的修改全部撤销

git reset HEAD readme.txt #把readme.txt在暂存区的修改全部撤销

git reset -- hard Head^ #把版本回推到上一个版本

git reflog # 查看所有命令的版本

git reset --hard ******** # 回滚到之前某一commit

git rm readme.txt # 从版本库中删除掉readme.txt一个文件

git checkout -b 分支名 # 创建一个新的分支 并 切换过去
也可以使用 git switch -c 分支名
#相当于这两条命令
git branch 分支名
git checkout 分支名 # git switch 分支名

git branch -d 分支名 #删除某一个分支

git merge 分支名 # 将分支merge到master分支

git log --graph # 分支合并图

git merge --no-ff -m "******" 分支名 #不删除分支信息的情况下合并分支

git stash # 暂时隐藏工作区的修改

git stash apply #恢复现场,但是stash内容并不删除

git stash pop #恢复的同时把stash内容也删除

git stash list #查看工作区的所有修改内容

git branch -D 分支名 强制性删除该分支

git remote #查看远程仓库的名称 一般为ori#gin

git push origin master # 提交到origin仓库里面的master分支

git checkout -b dev origin/dev # 创建远程的origin的dev分支到本地。