Linux常用命令-练习记录

具体命令

1.复制文件到指定目标,若目录不存在则创建目录

mkdir 和 cp 结合使用

mkdir ../dst/sh_test && cp sh_test/hello_os.sh "$_"
# mkdir [target address] && cp [current file] "$_"

2.shell脚本变量自增

a=1

a=$[$a+1]
a=$(($a+1))		# unknown
a=`expr $a + 1`		# 利用expr命令
let a++			# 利用let命令:支持自增/自减/简写
let a+=1
((a++))			# unknown

3.文本查找命令grep

grep int file	# (内容加不加引号都行
grep -r abc .
# grep [-参数] 内容 文本
# 内容含空格打引号就好
# 关于参数
# -w: 精确匹配,不会有杂七杂八的东西混进来
# -n: 显示符合内容样式的行号和该行内容
# -c: 显示符合内容样式的行数
# -r: grep -r content directory 从当前directory开始递归查找包含content的文本(文件)

4.文件查找命令find

find . -name "stdarg.*"
# find 路径 [参数]
# 关于参数
# -name: 后接文件名,正则
# -type: 后接类型, f:一般文件 d:目录
# ...

5.文本处理命令awk

awk -F: '{print $1}' file
# awk [-参数] '条件 {命令}' 文本
# 关于参数
# -F fs: 拆分,-F后为“拆分分隔符”,一般连着写;之后$1 $2等依次为分隔后的组

6.文本处理命令sed

sed: stream editor 流编辑器

sed -i 's/int/char' file
# sed [-参数] '命令' 文本
# 关于参数
# -n: 安静模式。一般sed会将文本所有内容输出,-n屏蔽启动输出。
# -i: 直接修改文本内容

# 关于命令
# p: 打印选择内容,通常与-n一同食用。 e.g. `3p` - 打印第三行
# s: 替换。 e.g. 's/pattern/replace_string/g' - 若最后没有g,仅会替换每行第一个匹配的字符串

对了要使用变量的话记得改单引号为双引号

7.连接/打印文本cat命令

cat afile > bfile
cat afile >> bfile	# 重定向-追加
# cat [-参数] 文件

一种用法:清空文件

cat /dev/null > file
# /dev/null是一种特殊设别文件-空设备,丢弃一切写入其中的数据并认为写入成功(类似$0寄存器)

8.git版本变更基本操作

# 基础操作
git init 			# 当前文件架建立git版本库

git branch -m oldname newname	# 修改分支名字(注意应该在当前分支)

git remote add shortname url	# 添加远程仓库
git remote -v			# 查看已添加的远程仓库(有push/fetch两种方法)

git push origin master		# 经典例子 origin为远程仓库名(shortname),master为本地分支名
# git push [remote远程仓库名] [local本地分支名]:[remote远程分支名]	# 推送到版本库
# git push -u [remote远程仓库名] [local本地分支名]...使用一次后,之后相同的推送可以直接用git push解决
# 1.工作区回退(未add)
git clean [file] -f 	# 直接清理新加的untracked file
git restore file
git checkout -- file 	# 将所选not staged file复原;.则表示当前目录下所有文件
# 2.工作区回退(已add)
git reset HEAD [file] 	# 先将暂存区复原
情况已变为1,再使用1状态方法
# 3.版本库回退(即已commit)
git reset --hard HEAD/HEAD^/HEAD^^/.../HEAD~100
git reset --hard commitid	# 通过 git log 查看,知道这个就什么都能还原(甚至回到未来,即误回退的原版本库)
	# 若丢失了未来版本库的id,可以通过 git reflog 查看历史命令
# 4.移除文件
rm file			# 删除工作区文件
git rm file		# 删除工作区文件,将操作放入暂存区(当暂存区有file文件时报错)
git rm -f file		# 删除工作区和暂存区的文件, 将操作放入暂存区
git rm --cached [file]	# 删除暂存区文件,将操作放入暂存区(保留工作区文件,即变为untracked file)

9.dump类命令

hexdump 二进制文件查看工具

[https://blog.csdn.net/T146lLa128XX0x/article/details/81880048]

hexdump -x filename -n 64
# 以16进制打印filename前64字节内容

# 关于参数
# -d: 双字节10进制显示
# -o: 双字节8进制显示
# -x: 双字节16进制显示,类似 457f 464c 0102
# -C: 单字节16进制+ascii码,一行中输出完16进制形式后后输出ascii形式,类似一些文本查看工具
# -c: ascii码显示
# -n num: 显示前n个字节内容

objdump

objdump -DS filename
# 反汇编文件

# 关于参数
# -d: --disassemble ... 反汇编处指定section
# -D: --disassemble-all 反汇编所有section
# -s: --full-contents ... 显示指定section完整内容
# -S: --source 尽可能反汇编出源代码

Shell脚本基础

#!/bin/bash
# 这老记不清;文件名不加sh后缀也能运行

1.for循环

模式一:for - in
注意,没有所谓“元组”接收迭代数据的办法

for var in a b c
do
	...
done

模式二:for - 类C

for ((i=0;i<3;i++))
do
	...
done

Makefile使用基础

一些规则:

  • Makefile中每行命令在单独的shell中执行,这些Shell之间没有继承关系。(当然可以使用.ONESHELL改变这一点)

1.make命令-参数

--director=DIRECTOR	#在执行前切换到DIRECTOR目录 

2.嵌套使用Makefile

posted @ 2022-03-12 23:49  Xlucidator  阅读(74)  评论(0编辑  收藏  举报