0%

linux命令大全

linux终端快捷键

ctrl+l: 清屏

ctrl+c: 中止

ctrl+d: 退出

ctrl+a: 光标移到命令行的头部

ctrl+e: 光标移到命令行的尾部

ctrl+u: 删除光标前所有字符

ctrl+k: 删除光标后所有字符

ctrl+y: 撤销

ctrl+r: 搜索历史命令

ctrl+z:暂停前台进程

esc+.: 上一条命令的最后一个参数

up/down:查看历史命令

ctrl+R:搜索历史命令

shell命令

基础命令

histroy/!

history: 历史命令

!20:执行第20条历史命令

!str:执行历史最近中以str开头的命令

!$:上一个命令的最后一个参数

!!:执行上一个命令

man

man command: command手册

man -f command: 查看command的所在所有章节

man 1 command: 查看第1章节中的command手册

alias

alias ll=ls -l: 别名

unalias ll: 取消别名

  • 查看命令的别名

    type -a ls: 查看所有ls命令的类型

    1
    2
    3
    # 上述命令的输出
    ls is aliased to `ls --color=auto'
    ls is /bin/ls

    ls: 系统默认使用别名
    \ls: 使用原ls命令

echo

echo "123":返回或者输出123,会输出换行

echo -n "123":不换行输出

which/whereis

which command: 查看命令的目录(根据PATH目录)

whereis command: 整个文件索引数据库查找命令

用户操作

id username: 查看用户

whoami: 显示当前用户

useradd cetrol: 添加用户

groupadd/groupdel/useradd/userdel

groupadd groupname 添加

userdel [-r] username: 删除用户(去掉home目录)

passwd/gpasswd

passwd username: 为用户设置密码

gpasswd -a username groupname: 将用户添加到组

gpasswd -d username groupname: 将用户移除组

目录与文件操作

pwd: 当前工作目录

ls

ls:当前目录内容

ls -a: list all 所有,包含隐藏文件

ls dir: dir目录下的内容

ll -h: 人性化显示

ll -t: 按照时间排序,最新在前

ll -rt: reverse,逆序

ll dir: 查看目录下所有文件的详情

ll -d dir: 只查看目录的详情

cd

cd: 到home目录

cd ~: 到home目录

cd dir: 到dir目录

cd -: 回到上一目录

mkdir

mkdir dir1, dir2: 创建目录

mkdir -v dir: verbose,显示详细信息

mkdir -p dir: 如果父目录不存在,会自动创建父目录

touch

touch file1 file2: 创建文件

touch file{1..20}: 创建多个文件

cp

cp file1 file2: 拷贝文件

cp -r dir1 dir2: 递归拷贝目录

mv

mv file1 file2: 剪切文件

rm

rm -rf dir: 递归删除目录

chmod/chown/chgrp

u g o
rwx rw- r-- user group
属主权限 属组权限 其他人权限 属主 属组

chown [-r] user file/dir: 改变file的所属组(递归修改目录)

chgrp [-r] group file/dir: 改变file的所属组(递归修改目录)

chown [-r] user.group file/dir: 同时修改主和组

chmod u/g/o+w/r/x file: 相应的u/g/o添加w/r/x权限

chmod [a]+w/r/x file: 所有组添加w/r/x权限

chmod ug=rw file: u和g添加rw权限

chmod o=-: o去掉所有权限

chmod 777 file: 所有组添加rwx权限

tar

tar -czf test.tar.gz dir: 调用gzip将dir目录打包并压缩为test.tar.gz

tar -cjf test.tar.bz2 dir: 调用bzip2将dir目录打包并压缩为test.tar.bz2

tar -cJf test.tar.xz dir: 调用xz将dir目录打包并压缩为test.tar.xz

tar -tf test.tar.xz: 显示压缩包中的内容

tar -xzvf test.tar.gz: 指定使用gzip解压

tar -xvf test.tar.gz: 自行判断解压工具解压

tar -xvf test.tar.gz -C dir: 解压后重定向到dir目录下

tar -czf - /etc | tar -xzf - -C dir: 将/etc打包后保存在内存中,然后通过管道解压后dir目录下;相当于复制文件到另一个目录(许多小文件复制时速度快)

du

du -h dir: 查看目录dir下所有文件夹的大小

du -sh dir: 查看目录dir总大小

文件增删改查

cat

cat file: 查看文本文件

cat -n file: 显示行号

head/tail

head -5 file: 查看头5行

tail -5 file: 查看尾5行

tail -f file: 动态查看

vi/vim

vi file: 编辑文件

sort

sort file: 按照字典序递增排序

sort -r file: 递减排序

sort -n file: 按照数字大小排序

sort -t":" -k3 -n /etc/passwd: 以:分割后按照第3列排序

uniq

uniq: 去重(只能把接近的去掉,所以一般先sort

uniq -c: 去重,并显示个数

wc

wc -l: 统计行数

tr

tr(translate) 可以用来替换、删除文本字符内容

tr -d a file: 将文本中所有字符a删掉

tr -d a-z file: 将文本中所有小写字母删掉

tr -d ab file: 将文本中字符ab删掉

tr -s a file: 将文本中连续出现多个的字符a压缩成单个字符a

tr -s ab file: 将文本中连续出现多个字符a,多个字符b分别压缩成单个字符ab

tr -s a b file: 将文本中连续出现多个字符a压缩并替换成单个字符b

tr a b file: 将文本中的每个字符a替换成b

tr -s ab c file: 将文本中连续出现多个字符a, 多个字符b压缩并替换成单个字符c

tr ab c file: 将文本中每个字符a,b替换成c

tr ab cd file: 将文本中每个字符a,b分别替换成cd

tr -s a-z A-Z file: 将文本中连续出现多个字符a, 多个字符b分别压缩并替换成单个字符c和单个字符d

tr a-z A-Z file: 将文本中每个字符a, b分别替换成cd

tr -c -d 'a\n' file: 将文本中除了a\n外的字符都删掉

awk

awk是一种编程语言,用与逐行处理文本和数据

awk -F":" '{print $1}' /etc/passwd: 以:分割输出第1列

awk 'BEGIN{} {} END{}':文件处理前 行处理 文件处理后

awk 'BEGIN{FS=":",OFS="---"} {print $1,$2}':输入字段以:分割,输出字段之间---输出,FS为输入分割符,OFS为输出字段分割符,OFS默认值为空格

awk 'BEGIN{RS=":",ORS="---"} {print $1,$2}':输入行以:分割,输出行之间---输出,RS为记录分割符,ORS为输出记录分割符,RSORS默认值为换行符

awk pattern filename:正则匹配输出

awk '/root/{action}' filename:匹配到root的行再执行action

awk '{print NR,FNR}'NR表示总的记录行号,FNR表示当前文件的记录行号

awk '{print NF}'NF表示字段的个数

awk '{printf "%-15s %-d %-f", $1,$2,$3}'printf格式化输出,%s表示字符串,%d表示整形数据,%f表示浮点数,-表示左对齐,15表示长度为15

awk '$0~/root/' /etc/passwd:正则匹配行,等效于awk '/root/ /etc/passwd'

awk '$0!~/root/' /etc/passwd:正则不匹配,等效于awk '!/root/ /etc/passwd'

awk '$1=="root"' /etc/passwd:关系运算符

awk '$1>100' /etc/passwd:关系运算符

awk '{if($3>100){print $3} else if(){} else{print $1}}':条件运算符

awk '{$1*10}':算术运算符

awk '{if($1>10 && $2<10){print $0}}':条件运算符

awk {length($1)==10 {print $1}}length函数表示字符串长度

awk '{i=1; while(i<=7) {print $i; i++}}':while循环

awk '{for(i=1;i<=NF;i++) {print $i}}':for循环

awk '{color[++i]}=$1' END{for(i=1;i<i;i++) {print i,color[i]}}:数组

awk '{color[++i]}=$1' END{(for i in color) {print i,color[i]}}:数组,for循环使用in遍历获取的是索引

sed

sed是一种非交互式编辑器,一次处理一行内容

sed action file:从文件file中每次读入一行,执行action动作,不会修改文件内容,只做输出

sed -i action file:会修改文件内容

sed "d" file:删除输出(相当于什么都不输出)

sed "4d" file:删除第四行

sed "3{d;}"{}里面的命令按照;分割,可以执行多个目录

sed "4,7d" file:删除第4到7行

sed "4,$d" file:删除第4到最后一行

sed -r "0~2d":从0开始,每2行删除,(相当于删除偶数行)

sed -r /root/,5d file:删除从root到第5行

sed -r /root/,+5d file:删除root,再删其后5行

sed -r /root/!d file:删除非root行

sed "p" file:打印输出(默认)

sed "4p" file:只打印第4行输出(默认)

sed -r [s]/sth./sth./[gi]:使用正则匹配

sed -r "s/red/yellow/" file:查找red并替换为yellow,只替换每一行第一个

sed -r "s/red/yellow/g file":加上g,表示global,替换所有

sed -r "s/red/yellow/g file":加上i,表示ignore-case,忽略大小写

sed -r "s#red#yellow#g file"/其实可以替换成任意字符

sed -r "3,5s/red/yellow/g file":只有3到5行替换

sed -r "s/(.*)/#&/ file":所有行前面加入#(.*)表示匹配行所有内容,&表示前面匹配的所有内容

sed -r "2r/new_file" file:读到第2行时读取文件内容,r表示读入

sed -r "2w/new_file" file:读到第2行时写入到新文件,w表示读入

sed -r "2a/new_file" file:读到第2行时追加新内容或到新文件,a表示追加(行后)

sed -r "2i/new_file" file:读到第2行时插入新内容或到新文件,i表示插入(行前)

sed -r "/root/{n;d} file":找到root行,然后去下一行并删除 ,n表示下一行

时间相关命令

date

date +%F: 格式化输出时间

time

time command: 显示命令执行的时间

进程相关命令

ps/top

ps aux: 查看进程运行状态(快照模式)(process state)

ps aux --sort [-]%cpu: 以cpu占用排序查看进程状态

ps auxf: 加上f,显示进程的层级关系

ps -ef: 查看PID(进程ID)和PPID(进程父ID)

top: 动态模式

kill

kill -1 PID: 1为重启信号

kill [-15] PID: 默认为15即停止信号

kill -9 PID: 9为强制关闭信号

fg/bg/jobs

jobs:查看所有后台进程

fg pid:将后台pid任务切换至前台运行

bg pid:将前台pid任务切换至后台运行

硬件相关命令

lscpu

lscpu: 查看cpu信息

lsblk

lsblk: 显示硬盘分区

fdisk/gdisk/partprobe

fdisk: MBR分区工具

fdisk /dev/sda: 硬盘分区工具

fdisk -l /dev/sda: 查看分区信息

gdisk: GPT分区工具

gdisk /dev/sda: 硬盘分区工具

gdisk -l /dev/sda: 查看分区信息

partprobe:让kernel读取分区信息

mkfs

mkfs: 创建文件系统(格式化)

mkfs.ext4 /dev/sda1: 将硬盘sda的分区1格式化为ext4格式

mount/umount

mount /dev/sda1 dir 将设备挂载到目录下dir

mount命令只是临时挂载,长期挂载需在/etc/fstab文件中设置

mount -a: 从/etc/fstab中查找并挂载所有

umount /dev/sda1:

df

df: 查看分区信息

df -T: 显示分区文件系统格式

df -h: 以G,T显示分区大小

管道相关命令

>/>>/</<<

描述符 含义 对应文件
0 标准输入 键盘设备文件
1 标准输出 终端设备文件
2 标准错误 终端设备文件

ls 1>out.txt 2>err.txt: 标准输出到out.txt,错误输出到err.txt

ls >out.txt: 等效于ls 1>out.txt: 标准输出到out.txt

ls >>out.txt: 追加到文件

ls &>out.txt: 混合输出(包括标准输出和错误输出)

ls 2>&1: 错误输出(2)到标准输出(设备描述符1)中

ls &>/dev/null: 混合输出到空设备(垃圾桶)

ls 2>/dev/null: 错误输出到空设备

cat >out.txt: 将终端输入重定向到out.txt

cat >out.txt <<EOF: 输入直到遇到EOF结束输入

grep 'root' < /etc/passwd: 输入重定向,grep 'root'的输入重定向到/etc/passwd

|/mkfifo

|: 匿名管道

command 1 | command 2: 管道,命令1的输出重定向为命令2的输入

mkfifo /tmp/fifo1:命名管道,可以跨终端传输数据

tee

ls -l | tee result.txtls -l的结果不仅输出到result.txt中,而且会显示到屏幕上

ls -l | tee -a result.txt:追加

搜索相关命令

locate/find

locate string: 从数据库中查找包含string的文件

数据库为/var/lib/mlocate/mlocate.db,可以使用updatedb命令手动更新该数据库

find dir: 查找dir 目录下所有文件(显示所有文件)

find dir [-name] "string": 查找dir目录下包含string的所有文件

find dir -iname "string": 查找文件,忽略大小写

find dir -size +5M: 查找大于5M`的文件

find dir -maxdepth 3 -a -name "string": 查找文件且深度为3(-a表示and,-o表示or)

find dir -mtime +5: 修改时间超过5天内的文件

find dir -user username: 用户为username的文件

find dir -group groupname: 查看组为groupname的文件

find dir -nouser -o -nogroup: 没用户没组的文件

find dir ! -user username: !表示取反

find dir -type d: 查找为d(目录)的文件

find dir -perm 666: 查找权限大于等于666的文件

find dir -regex 'regular expression': 以正则表达式查找

find {sth} -delete: 查找后删除

find {sth} -print/-ls: 查找后打印(ls更详细)

find {sth} -exec/-ok command \; : 查找后执行command shell命令(-ok有交互,会询问是否如此操作)

grep正则命令

grep/egrep

grep pattern file1 [file2]:从文件中过滤出匹配到模式的字符串

grep -q pattern file1:不打印结果,只返回输出码(0表示找到,1表示没找到,2表示文件不存在)

grep -v:取反,未匹配到的打印输出

grep -i:忽略大小写

grep -o:只输出匹配到的内容

grep -n:输出匹配到的行号

grep -r[-R] dir:递归遍历dir目录匹配

grep -E(egrep)egrep可以直接使用扩展元字符?+{}|(),但是在grep中需要使用\转义才能使用扩展元字符

其他

screen

screen -S session_name: 新开一个名字叫session_name的screen作业

screen -ls: 查看所有screen作业

screen -r: 恢复上一次的作业

screen -r session_name: 恢复session_name的作业(attached)

screen -d: 离线当前作业(detached)

ctrl+a d:离线当前作业

screen -d session_name: 离线session_name作业(detached)

exit: 在attached的screen作业下输入该命令,终止该screen作业

kill pid: pid为screen的进程id,终止该screen作业

screen -wipe: 清理掉没用的(deaded)screen作业

seq

seq 10:产生1到10的序列

seq 2 10:产生从2到10的序列

seq 1 2 10:产生从1到10的序列,递增为2