1、vi,vim编辑文件
1)查找替换
/word
“/”后输入要查找内容”word”
n
查找下一个
:1,$s/word1/word2/gc
从第一行到最后一行查找word1替换为word2(c表是否需要确认替换)
2)跳转
:1
,gg
跳转到第一行
:$
,G
跳转到最后一行
nG
跳转到第n行
n<Enter>
向下移动n行
0
移动到该行最前
$
移动到该行最后
3)翻页
Ctrl+f
向前翻页
Ctrl+b
向后翻页
4)显示行数
:set nu
5)复制删除粘贴
yy
复制当前行
nyy
固执当前向下的n行
dd
删除当前行
ndd
删除当前行向下的n行
p
粘贴到下一行
P
粘贴到上一行
6)实现全选
ggVG
解释如下
gg
让光标移到首行,在vim才有效,vi中无效
V
是进入Visual(可视)模式
G
光标移到最后一行
选中内容以后就可以其他的操作了,比如:
d
删除选中内容
7)多窗口
:new <filename>
(打开另一个文件到多窗口)
ctrl+w后w
在窗口间切换
2、环境变量
1)临时设置
export PATH=/opt/android-studio/bin:$PATH
2)当前用户的全局设置
vim ~/.profile
添加行:
export PATH=/opt/android-studio/bin:$PATH
使生效:
source ~/.profile
3)所有用户的全局设置
vim /etc/profile
添加行:
export PATH=/opt/android-studio/bin:$PATH
使生效:
source /etc/profile
4)查看
echo $PATH
3、无法获得锁/var/lib/dpkg/lock
解决方法
sudo rm /var/lib/dpkg/lock
4、有关cp复制
参数和选项:
-a :文件的某些属性/权限也保持一致复制(常用)
-i :若目标档(destination)已经存在时,在覆盖时会先询问动作的进行(常用)
-p :连同文件的属性一起复制过去,而非使用默认属性(备份常用);
-r :递回持续复制,用于目录的复制行为;(常用)
5、deb文件安装
sudo dpkg -i XXX.deb
6、撷取命令grep
一般来说, 撷取讯息通常是针对“一行一行”来分析的。
grep [-acinv] [--color=auto] '搜寻字串' filename
选项与参数:
-a : 将 binary 文件以 text 文件的方式搜寻数据
-c : 计算找到 ‘搜寻字串’ 的次数
-i : 忽略大小写的不同, 所以大小写视为相同
-n : 顺便输出行号
-v : 反向选择, 即显示出没有 ‘搜寻字串’ 内容的那一行
–color=auto : 将找到的关键字部分加上颜色显示
7、程序的观察ps(静态)
选项与参数:
-A : 所有的 process 均显示出来, 与 -e 具有同样的效用;
-a : 不与 terminal 有关的所有 process ;
-u : 有效使用者 ( effective user) 相关的 process ;
x : 通常与 a 这个参数一起使用, 可列出较完整信息。
输出格式规划:
l : 较长、 较详细的将该 PID 的的信息列出;
j : 工作的格式 ( jobs format)
-f : 做一个更为完整的输出。
1)仅观察自己的 bash 相关程序
ps -l
字段含义:
F:代表这个process flags, 说明程序的总结权限。4 表示权限为 root,1表示程序仅进行复制(fork) 而没有实际执行( exec)。
S:代表这个程序的状态 (STAT)。R ( Running),S ( Sleep,可以被唤醒),D (不可被唤醒的睡眠状态,通常可能在等待 I/O),T ( stop),Z ( Zombie,僵尸状态, 程序已终止却无法被移除至内存外)。
UID/PID/PPID:UID(拥有者id),PID (进程id),PPID(父程序id)。
C:代表 CPU 使用率, 单位为百分比。
WCHAN:程序是否运行中,-(正在运行)。
CMD:程序的实际指令。
2)观察系统所有程序
ps -lA
字段同“ps -l”。
ps aux
字段含义:
STAT: 程序的状态, 与 ps -l 的S字段含义相同( R/S/T/Z)。
START: 程序被触发启动的时间。
COMMAND: 程序的实际指令。
8、程序的观察top(动态)
top 则可以持续侦测程序运行的状态。
top [-d 数字]
top [-bnp]
选项与参数:
-d : 后面整个程序画面更新的秒数,默认是 5 秒。
-b : 以批次的方式执行 top , 通常会搭配数据流重导向来将批次的结果输出成为文件。
-n : 与 -b 搭配, 意义是, 需要进行几次 top 的输出结果。
-p : 指定某些个 PID 来进行观察监测而已。
在 top 执行过程当中可以使用的按键指令:
? :显示在 top 当中可以输入的按键指令。
P :以 CPU 的使用资源排序显示。
M :以 Memory 的使用资源排序显示。
N :以 PID 来排序。
T :由该 Process 使用的 CPU 时间累积 ( TIME+) 排序。
k :给予某个 PID 一个讯号 ( signal)。
r :给予某个 PID 重新制订一个 nice 值。
q :离开 top 软件的按键。
9、sed命令
一个管线命令, 可以分析standard input! 而且 sed 还可以对数据进行取代、 删除、 新增、 撷取特定行等。
sed [-nefr] [动作]
选项与参数:
-n :使用 silent 模式。 在一般 sed 用法中, 所有来自 STDIN 的数据一般都会被列出到屏幕上。但加上 -n 后, 只有经过 sed 特殊处理的那行( 或者动作) 才会被列出。
-e :直接在命令行界面上进行 sed 的动作编辑。
-f :直接将 sed 的动作写在一个文件内, -f filename 则可以执行 filename 内的 sed 动作。
-r :sed 的动作支持的是延伸型正则表达式的语法( 默认是基础正则表达式语法)。
-i :直接修改读取的文件内容, 而不是由屏幕输出。
动作说明:
[n1[,n2]]function
n1, n2 :代表“选择进行动作的行数”。
function 有:
a : 新增, 后面接新增字串( 目前的上一行)。
c : 取代, 后面接字串, 用于取代 n1,n2 之间的行。
d : 删除, 后面什么也没有。
i : 插入, 后面接字串, 字串会在新的一行出现( 目前的上一行)。
p : 打印, 将某个选择的数据印出。通常与参数 sed -n 一起运行。
s : 取代, 可以直接进行取代的工作, 通常可以搭配正则表达式。例如 1,20s/old/new/g
。
10、awk命令
sed常常作用于一整个行的处理, awk 则比较倾向于一行当中分成数个“字段”来处理。
awk '条件类型1{动作1} 条件类型2{动作2} ...' filename
awk 后接单引号并加大括号 {} 来设置想要对数据进行的处理动作。
awk 可以处理后续接的文件, 也可以读取来自前个指令的 standard output 。
awk 主要是处理每一行的字段内的数据, 而默认的字段的分隔符号为 “空白键” 或 “[tab]键”。
整个 awk 的处理流程是:
1. 读入第一行, 并将第一行的数据填入 $0, $1, $2…. 等变量当中;
2. 依据 “条件类型” 的限制, 判断是否需要进行后面的 “动作”;
3. 做完所有的动作与条件类型;
4. 后续的“行”重复上面 1~3 的步骤。
awk 的内置变量:
NF: 每一行 ( $0) 拥有的字段总数
NR: 目前 awk 所处理的是“第几行”数据
FS: 目前的分隔字符, 默认是空白键
awk 后续动作是以“ ’ ”括住的,所以 awk 的格式内容想要以 print 打印时,需要使用双引号来定义。
awk 的逻辑运算字符:
> < >= <= == !=
利用利用 BEGIN 这个关键字,可以预先设置变量,在第一行就起作用。
参考自 《鸟哥的Linux私房菜》