Linux备忘录
1.更改文件属组
chgrp [-R] 属组名 文件名
2.更改文件属主
chown [–R] 属主名 文件名chown [-R] 属主名:属组名 文件名
3.更改文件属性
rwx三种属性的权重分别是4,2,1;修改时的身份顺序是owner/group/other([-rwxrwxrwx])
chmod [-R] xyz 文件或目录
4.vi
1)0 或功能键[Home]:移动到这一行的最前面字符处
2)$ 或功能键[End]:移动到这一行的最后面字符处
3)G:移动到这个档案的最后一行
4)nG:n 为数字。移动到这个档案的第 n 行
5)gg:移动到这个档案的第一行
6)n:n 为数字。光标向下移动 n 行
7)dd:删除游标所在的那一整行
8)ndd:n 为数字。删除光标所在的向下 n 行
9)yy:复制游标所在的那一行
10)nyy:n 为数字。复制光标所在的向下 n 行
11)p, P:p 为将已复制的数据在光标下一行贴上,P 则为贴在游标上一行
12)yG:复制游标所在行到最后一行的所有数据
13)y0:复制光标所在的那个字符到该行行首的所有数据
14)y$:复制光标所在的那个字符到该行行尾的所有数据
Shell基础
1.for循环的用法(code为打印etc目录下的所有文件名)
for word in `ls /etc`; doecho "This is $ !"done
2. 关于变量
string="orsonwan"readonly string #只读变量,不可更改unset string #删除变量
3.字符串
string1 = 'wan'echo "orson$" #字符串拼接echo ${#string1} #获取字符串长度echo $ #从字符串第2个字符开始截取4个字符echo `"$string1" wa` #索引string1字符串中第一个字符是w或a的位置
4.数组
array=(value0 value1 value2)echo $ #索引从0开始echo ${#array[*]}echo $[#array[@]] #输出数组元素个数
5.注释
:
6.if的用法与参数传递
if [ -n "$1" ]; then echo "包含第一个参数"else echo "没有包含第一参数"fi
*当传入的参数含有空格时,使用“”将变量括起来,使作为一个整体传入
* $*和$@的区别在于,如果不用双引号括起来,前者作为一个参数输出,后者分别输出
7.运算(awk/expr:这里只介绍expr)
1)数值运算
val=`expr 2 + 2` #注意运算的空格 或者val=$[2 + 2]echo "两数之和为 : $val"
2)关系运算
3)布尔运算
if [ $a -lt 5 -o $b -gt 100 ]then echo "$a 小于 5 或 $b 大于 100 : 返回 true"else echo "$a 小于 5 或 $b 大于 100 : 返回 false"fi
4)逻辑运算
if [[ $a -lt 100 && $b -gt 100 ]]then echo "返回 true"else echo "返回 false"fi
5)字符串运算
6)文件测试运算
8.显示结果定向至文件
echo "It is a test" > myfile
9.while
while conditiondo commanddone
10.case
case 值 in模式1) command1 command2 ... commandN ;;模式2) command1 command2 ... commandN ;;esac
echo '输入 1 到 4 之间的数字:'echo '你输入的数字为:'read aNumcase $aNum in 1) echo '你选择了 1' ;; 2) echo '你选择了 2' ;; 3) echo '你选择了 3' ;; 4) echo '你选择了 4' ;; *) echo '你没有输入 1 到 4 之间的数字' ;;esac
11.函数
[ function ] funname [()]{ action; [return int;]}
在Shell中,调用函数时可以向其传递参数。在函数体内部,通过 $n 的形式来获取参数的值,例如,$1表示第一个参数,$2表示第二个参数
funWithParam(){ echo "第一个参数为 $1 !" echo "第二个参数为 $2 !" echo "第十个参数为 $10 !" echo "第十个参数为 $ !" echo "第十一个参数为 $ !" echo "参数总数有 $# 个!" echo "作为一个字符串输出所有参数 $* !"}funWithParam 1 2 3 4 5 6 7 8 9 34 73
*$10 不能获取第十个参数,获取第十个参数需要$。当n>=10时,需要使用$来获取参数
12.输入/输出重定向
Here Document
Shell 中一种特殊的重定向方式,用来将输入重定向到一个交互式 Shell 脚本或程序。将两个 delimiter 之间的内容(document) 作为输入传递给 command。
command
*结尾的delimiter 一定要顶格写,前面不能有任何字符,后面也不能有任何字符,包括空格和 tab 缩进;
*开始的delimiter前后的空格会被忽略掉;
13.包含外部脚本
. filename # 注意点号(.)和文件名中间有一空格或source filename
***实用指令awk:请见https://www.cnblogs.com/xudong-bupt/p/3721210.html
Tmux
用于在terminal中创建多窗口(window -> session -> panel)掉线时再次连入服务器可以回到工作现场。一般只用多个session,每个session处理一类工作,每个session里多个panel
1.创建并指定session名字,一般tmux直接新建一个session,然后 + $ 进行改名
tmux new -s $session_name
2.进入已存在的session,一般tmux a先进入,然后 + s 寻找对应的session
tmux a -t $session_name
3.删除已存在的session
tmux kill-session -t $session_name
4.列出session
tmux ls
5.快捷键
快捷建需要先按 ctrl + b:
我常用的:
1)% 水平方向划分出panel
2)$ 重命名session
3)s 切换session
4)z 把当前panel最大化,如果当前已经处于最大化状态则还原。
5)左右方向键 光标切换到对应的panel
6)[ 进入鼠标模式,此时可以向上滚屏
7)d detach 回到shell, 但是不终止session,可以用tmux a再次进来
我不常用的:
1)” 垂直方向划分出panel(问号的上面,shift+’)
2)o 切换到下一个panel, 或者用方向键
3)x 删除该panel
4)w 切换window
5)? 帮助
一个非常有用的技巧:
在远程服务器的~/.profile中添加如下代码, 这样每次启动自动进入tmux, 断开连接不会丢失.
if [ -z "$TMUX" ]; then
tmux attach -t default || tmux new -s default
fi
领取专属 10元无门槛券
私享最新 技术干货