0%

linux

Basic

Shortcut

Usage

  • ctrl + a:移动到行首
  • ctrl + b:左移一个字
  • ctrl + c:杀死进程
  • ctrl + d:删除光标处的字符 或者 退出(exit)或者登出(logout)
  • ctrl + e:移动到行尾
  • ctrl + f:右移一个字
  • ctrl + g:退出历史搜索
  • ctrl + h:删除光标前的字符
  • ctrl + i:输入制表符(Tab
  • ctrl + j:输入换行符(Newline
  • ctrl + k:从光标处剪切到行尾
  • ctrl + l:清除屏幕
  • ctrl + m:输入确认符(Enter
  • ctrl + n:后一个历史命令(推荐用箭头)
  • ctrl + o:执行历史命令
  • ctrl + p:前一个历史命令(推荐用箭头)
  • ctrl + q:解冻屏幕
  • ctrl + r:搜索历史命令
  • ctrl + s:冻结屏幕
  • ctrl + t:交换光标处和光标前的字(alt + t:交换光标处和光标前的词)
  • ctrl + u:从光标前剪切到行首
  • ctrl + v:粘贴(剪切板)到光标前 或者 进入原始字符输入模式
  • ctrl + w:从光标前剪切到词首
  • ctrl + x:在当前位置和行首之间切换
  • ctrl + y:粘贴(寄存器)到光标前
  • ctrl + z:切入后台(可用fg命令切回前台)

Edit

Basic

  • 全选(Select All):
  • 删除(Delete):backspace、delete
  • 剪切(Cut):
  • 复制(Copy):ctrl + shift + c
  • 粘贴(Paste):ctrl + shift + v、ctrl + v
  • 保存(Save):

ps:ctrl + a:移动到行首
ps:ctrl + e:移动到行尾
ps:ctrl + x:在当前位置和行首之间切换
ps:ctrl + c:杀死进程
ps:ctrl + z:切入后台(可用fg命令切回前台)
ps:ctrl + s:冻结屏幕
ps:ctrl + q:解冻屏幕

Skill

Delete

  • 删除光标前的字符:ctrl + h(推荐用backspace)
  • 删除光标处的字符:ctrl + d(推荐用delete)

ps:ctrl + d 还可以表示退出(exit)或者登出(logout)
ps:ctrl + l 表示清屏,而不是删除光标处的字符

Cut

  • 从光标前剪切到行首:ctrl + u
  • 从光标处剪切到行尾:ctrl + k
  • 从光标前剪切到词首:ctrl + w
  • 从光标处剪切到词尾:alt + d

ps:ctrl + u 在ubuntu中是删除整行

Paste

  • 粘贴(剪切板)到光标前:ctrl + v
  • 粘贴(寄存器)到光标前:ctrl + y

Transform

  • 转大写(UpperCase):alt + u
  • 转小写(LowerCase):alt + l
  • 转标题(Capitalize):alt + c

u :upper, l :lower, c :capital

Undo

撤销(Undo):

Redo

重做(Redo):

Move

Basic

  • 常规性移动:mouse pointer(鼠标指针)、arrow(键盘箭头)

Skill

  • 左移一个字符:arrow left、ctrl + b
  • 右移一个字符:arrow right、ctrl + f
  • 左移一个单词:ctrl + arrow left、alt + b
  • 右移一个单词:ctrl + arrow right、alt + f
  • 移动到行首:home、ctrl + a
  • 移动到行尾:end、ctrl + e

b :backward, f :forward, a :字母表首字母, e :end

Select

Process

  • 杀死进程:ctrl + c
  • 切入后台:ctrl + z
  • 切回前台:fg

Screen

  • 清除屏幕:ctrl + l
  • 冻结屏幕:ctrl + s
  • 解冻屏幕:ctrl + q

History

  • 搜索历史命令:ctrl + r
  • 退出历史搜索:ctrl + g
  • 执行历史命令:ctrl + o
  • 前一个历史命令(推荐用箭头):ctrl + p
  • 后一个历史命令(推荐用箭头):ctrl + n

Parameter

  • 输入上一个命令的第一个参数:alt + 1 + .
  • 输入上一个命令的第二个参数:alt + 2 + .
  • 输入上一个命令的最后一个参数:alt + .

System

Cmd

方括号:表示可选参数
尖括号:表示必填参数

Help

Type

Query

History

Parameter

Find

文件查找:find locate

文本搜索:grep sed awk

Shell

shell 切换

Ops

Login

ssh ssh-kengen ssh-copy-id

Logout

Exit

Env

Glob

Quote

引号的作用是将引号内的视为整体,并禁用 shell分割 和某些或者全部 shell扩展

ps:当变量的值中包含IFS(空格、制表符、换行符)时需要加双引号避免shell分割

  • 单引号:单引号里面都视为普通字符
  • 双引号:双引号里面除了美元符($)、反引号(`)、反斜线(\)都视为普通字符

— 变量取值无引号时 —

1
hello="hello world";for arg in $hello;do echo $arg;done

等价于

1
for arg in hello world;do echo $arg;done

会输出

1
2
hello
world

— 变量取值有引号时 —

1
hello="hello world";for arg in "$hello";do echo $arg;done

等价于

1
for arg in "hello world";do echo $arg;done

会输出

1
hello world

Split

IFS(Input Field Separator):包含空格、制表符、换行符

Expand

  • brace expansion(花括号扩展)
  • tilde expansion(代字符号扩展)
  • parameter expansion(参量扩展)
  • variable expansion(变量扩展)
  • command substitution(命令替换)
  • arithmetic expansion(算术扩展)
  • process substitution(过程替换)
  • word splitting(词项分离)
  • file name expansion(路径扩展)

Script

$*$@ 只在被双引号包起来的时候才会有差异(没有双引号时遇到IFS都会分割)

  • $*:被双引号包起来时,视为单个整体,遇到IFS不会分割
  • $@:被双引号包起来时,视为多个子项,遇到IFS会分割

— 各种括号的用法 —

  • ()
    • ():命令组(在当前shell执行)或者数组
    • (()):算数运算(推荐)
    • $():执行命令(在子shell执行)
    • $(()):取算数运算的结果
  • []
    • []:等同于test命令
    • [[]]:等同于test命令(更好用)
    • $[]:算数运算(不推荐)
    • $[[]]
  • {}
    • {}:命令组(在子shell执行)
    • {{}}
    • ${}:取变量的值
    • ${{}}
    • {0..9}:生成0到9的序列

Terminal

terminal window stty

terminal和shell的区别

  • shell:能够解析和执行命令的程序
  • terminal:支持输入和输出的终端软件,有窗口,关联了一个shell程序

File

Concept

Type

Path

Stat

文件名只是对inode的引用,删除文件名的本质是删除引用关系,删除文件名时如果inode没有其他引用时才会删除inode对应的文件

Codec

  • 制表符(\t):TAB -> ^I
  • 回车符(\r):CR -> ^M
  • 换行符(\n):LF -> $

Command

File

Create

touch

Remove

rm

Write

cat with EOF

Read

View

more、less、cat、tac、head、tail

nl:显示文件的行号
od:可以以进制的形式显示文件
wc:统计文件的字节数、单词数、行数

Modify

vim、sed with i

Dir

Create

mkdir

Remove

rmdir

Change

cd

Ops

Local

List

ls

Tree

tree

Copy

cp

  • 源头
    • 文件:拷贝文件
    • 目录:会根据参数-r决定是递归拷贝目录里的文件和目录还是拷贝目录内容
  • 目标
    • 存在
      • 目标是文件:会根据参数-f决定是覆盖还是拒绝
      • 目标是目录:拷贝源头文件或者源头目录到目标目录里面
    • 不存在
      • 源头是文件:拷贝源头文件(新文件的路径为目标路径)
      • 源头是目录:拷贝源头目录(新目录的路径为目标路径)

ps: cp 命令不受路径末尾的斜杠影响

Move

mv

  • 源头
    • 文件:移动文件
    • 目录:会根据参数-r决定是递归移动目录的文件和目录还是移动目录自身
  • 目标
    • 存在
      • 目标是文件:会根据参数-f决定是覆盖还是拒绝
      • 目标是目录:移动源头文件或者源头目录到目标目录里面
    • 不存在
      • 源头是文件:移动源头文件(新路径为目标路径)
      • 源头是目录:移动源头目录(新路径为目标路径)

ps: mv 命令不受路径末尾的斜杠影响
ps: mv 命令源头和目标的上一级路径相同时相当于重命名(rename)操作

Rename

rename

Find

locate

find

find -type

find -newermt

Diff

diff -qr

diff -r 目录
diff -q 输出文件名

Remote

Scp

scp

Rsync

ps: rsync 命令会受路径末尾的斜杠影响

rsync inotify

FTP

ftp sftp

Permission

chmod chown chattr

Text

Concept

Command

  • 文本查找:grep、sed with p、awk with print
  • 文本排序:sort
  • 文本去重:uniq
  • 文本截取:cut
  • 文本替换:tr、sed、awk

grep

sed

awk

Process

Concept

Command

process thread pipe

process ps pstree
process pgrep pidof lsof
process kill killall pkill
process pstack
process strace ltrace

主要信号的产生情况(可用 kill -l 命令查看所有的信号)

  • 关闭终端产生SIGHUP信号
  • ctrl + c 产生SIGINT信号
  • ctrl + d 产生EOF信号
  • kill -9产生SIGKILL信号(强杀信号)
  • kill -15产生SIGTERM信号(终止信号)

ps 进程 线程

pipe xargs -I {} -0 -exec

Task

nohup & fg bg jobs

  • nohup:忽略挂断(hup)信号,直接关闭终端或者长时间无交互,导致连接断开时会产生挂断(hup)信号
  • &:忽略退出(exit)或者登出(logout)信号,使用ctrl + d 快捷键退出时,会产生退出(exit)或者登出(logout)信号

Resource

Concept

Command

  • summary
    • top:可以查看cpu负载、进程的cpu和mem占用
    • vmstat:可以查看系统的cpu、mem、disk的使用情况
    • pidstat:可以查看进程的cpu、mem、disk的使用情况
  • cpu
    • mpstat:可以查看系统的cpu的使用情况
  • mem
    • free:可以查看系统的mem的使用情况
  • disk
    • iostat:可以查看系统的disk的读写情况
  • net
    • netstat:可以查看系统的net的连接情况

ps:top可以使用更好的替代者htop或者nmon

Cpu

cpu /proc/cpuinfo
cpu mpstat top

Memory

mem /proc/meminfo
mem free top

Disk

disk df(disk free) du(disk usage) dd
disk iostat iotop
disk mount umount check

Network

net ping ifconfig ip route arp
net host hostid hostname nslookup dig etc/host etc/resolve
net netstat ifstat iftop
net telnet ssh
net tcpdump netcat(nc ncat)

Kernel

sysctl ulimit

User

Concept

Command

user pwd who whoami useradd userdel usergroup passwd su

Other

Tools

Package

yum

apt

Browser

Download

Compress

Date

1
date -d '2007-01-01 00:00:00' +%s
1
date -d @1167580800 +"%Y-%m-%d %H:%M:%S"

Time

Watch

Uname

Service

Task

crontab

Time

ntp

System

只想买包辣条