linux 整理

ls 命令

list,列出目录下的内容.

  • -l long,显示详细信息.

  • -a all,显示全部文件,包括隐藏文件.

cd 命令

Change Directory,切换工作目录.

  • cd 切换到HOME目录.

  • cd / 切换到根目录.

pwd 命令

Print Work Directory,输出当前工作目录.

特殊路径符

  • . 表示当前目录.

  • .. 表示上一级目录.

  • ~ 表示HOME目录.

mkdir 命令

Make Directory,创建文件夹.

  • -p,parent,自动创建不存在的父目录

touch 命令

创建文件.

cat 命令

查看文件内容.

more 命令

查看文件内容,支持翻页.

按空格翻页,按 q 退出.

cp 命令

copy,复制文件文件夹.

第一个参数表示被复制的文件/文件夹,第二个参数表示要新建的文件/文件夹.

  • -r,recursion,表示递归,复制文件夹时使用.

mv 命令

move,移动文件/文件夹.

第一个参数表示被移动的文件/文件夹,第二个参数表示移动到的位置.

rm 命令

remove,删除文件/文件夹.

  • -r,recursion,表示递归,删除文件夹时使用.

  • -f,force,强制删除(不弹出确认信息),普通用户删除不会弹出确认信息,只有 root 用户会有.

which 命令

查找命令的程序文件地址.

find 命令

查找文件.

按文件名查找.

语法:find 起始路径 -name “文件名”.

按文件大小查找.

语法:find 起始路径 -size +|-n[kMG].

  • +,- 表示大于小于.

  • n 表示常数.

  • k 表示 kb,M 表示 MB,G 表示 GB.

例如

  • find /work -size -10k,查找小于 10kb 的文件.

  • find /work -size +1G,查找大于 1G 的文件.

grep 命令

在文件中通过关键字过滤文件行.

语法:grep "关键字" 文件路径

wc 命令

Word Count,统计文件的行数、单词数量等.

  • -c,统计字节数量.

  • -m,统计字符数量.

  • -l,lines,统计行数.

  • -w,words,统计单词数量.

如果不加选项,依次输出行数,单词数,字节数量.

管道符

|,将管道符左边命令的结果,作为管道符右边命令的输入.

echo 命令

输出内容

可以用飘号包裹输出的内容,飘号中的内容会被当成命令执行,输出飘号中命令输出的结果.

echo `pwd`.

重定向符

  • >,将左边的结果覆盖写入右边的文件.

  • >>,将左边的结果追加写入右边的文件.

tail 命令

查看文件尾部内容.

  • -[num],查看尾部多少行的内容.

  • -f,follow,持续追踪修改.

head 命令

查看文件头部内容.

  • -[num],查看头部多少行的内容.

date 命令

输出当前时间.

+ 格式化输出.

例如: date +"%Y-%m-%d %H:%M:%S"

vim 编辑器

有三个模式,命令模式,输入模式和底线命令模式.

初始在命令模式,按 i 切换到输入模式,按 : 切换到底线命令模式,在输入模式或底线命令模式按 esc 切换到命令模式.

在底线命令模式输入 wq 保存并退出.

su 命令

Switch User,切换用户.

语法:su [-] [用户名]

  • - 表示是否在切换用户后加载环境变量.

  • 用户名参数省略表示切换到 root.

输出 exit 或按 ctrl+d 回退到上一个用户.

从普通用户切换到 root 用户需要输入密码,从 root 用户切换到普通用户无需密码.

sudo 命令

Super User Do,为某条命令暂时赋予 root 用户权限.

不是所有用户都有权利使用 sudo 命令,需要为普通用户配置 sudo 权限.

用户和用户组管理

groupadd 命令

添加用户组.

语法:sudo groupadd 用户组名.

groupdel 命令

删除用户组.

语法:sudo groupdel 用户组名.

useradd 命令

创建用户.

语法:sudo useradd [-g -d] 用户名.

  • -g git,指定用户的组,如果不指定 -g,会创建同名用户组加入;如果已存在同名用户组,必须指定 -g.

  • -d,home-dir,指定用户的 HOME 目录,如果不指定,默认在 /home/用户名.

userdel 命令

删除用户.

语法:sudo userdel [-r] 用户名.

  • -r,remove,删除用户对应的 HOME 目录.

id 命令

查看用户信息.

usermod -aG 命令

User Modify,将指定用户加入指定用户组.

语法:sudo usermod -aG 用户名 用户组名.

一个用户可以属于多个用户组.

gzip 命令

压缩文件.

  • -d,--decompress,解压文件,是 gunzip 命令的等价形式.

  • -k,--keep,保留原文件.

  • -f,--force,如果输出文件已存在,直接覆盖不提示.

  • -r,--recursive,压缩目录下的所有文件.

tar 命令

Tape ARchiver,用于打包文件/文件夹.

语法:tar [选项] [归档文件名] [要操作的文件/文件夹列表].

操作模式:

  • -c,--create 打包.

  • -x,--extract 解包.

  • -t,--list 列出归档文件中的内容(不解包).

压缩选项:

  • -z,--gzip.

其他选项:

  • -f,--file,指定归档文件名,f 后必须紧跟归档文件名.

  • -p,--preserve-permissions,保留文件权限.

  • -A,--catenate,将另一个 tar 归档追加到当前归档,只能操作未压缩的 tar 文件.

ln 命令

link,创建软链接(类似快捷方式).

语法 ln -s 参数1 参数2.

  • 参数1 表示被链接的文件/文件夹.

  • 参数2 表示要链接去的目的地.

链接完成之后,可以通过参数2访问参数1.

权限信息

总共十位.

第一位:

  • - 表示文件.

  • -d directory,表示文件夹.

  • -l symbolic link,表示软链接.

剩下九位,前三位表示所属用户权限,中间三位表示所属用户组权限,后三位表示其他用户权限.

权限的三位分别是 rwx,分别表示:

  • r read,可读.

  • w write,可写.

  • x execute,可执行.

如果对应位为 - 表示没有对应的权限.

权限可以使用数字表示,权限的三位可以用三位二进制表达,然后转成十进制拼接.

例如 r-x--xr-xr-x 为 5,--x 为 1,r-x 为 5,因此权限为 515.

chmod 命令

change mod,修改文件权限.

语法:chmod [选项] [u/g/o/a] [+/-/=] [r/w/x] 文件.

  • -R recursive,对文件夹内所有内容执行相同操作.

  • u 表示 user,g 表示 group,o 表示 others,a 表示 all.

  • +/- 表示添加/移除权限,= 表示精确设置权限.

chown 命令

change owner,修改文件/文件夹所属的用户或用户组.

语法:sudo chown [选项] [用户] [:] [用户组] 文件或文件夹.

  • -R recursive,对文件夹内所有内容执行相同操作.

shell 脚本

shell 脚本均以 #!/bin/bash 开头.

编写完 shell 脚本后,需要赋予其可执行权限.

shell 语法

定义变量

变量名=值,注意等号两边不能有空格.

撤销变量

unset 变量名.

read

读入数据.

  • -p,prompt,指定读入的提示词.

  • -t,timeout,指定读入的等待时间(s),超过时间不再等待.

算数运算

$(()).

例如,输出 a+b:

#!/bin/bash
read a b
echo $((a+b))

条件判断

[ condition ] 注意内容要与括号有空格.

字符串比较: =.

整数比较:

  • -eq 等于.

  • -ne 不等于.

  • -lt 严格小于.

  • -le 小于等于.

  • -gt 严格大于.

  • -ge 大于等于.

if 语句

if [ condition1 ]
then
    ...
elif [ condition2 ]
then
    ...
else
    ...
fi

case 语句

case $变量名 in

"值1")
...
;;

"值2")
...
;;

#都不符合
*)
...
;;

esac

从命令行读入数据

  • $1 第一个参数

  • $* 全部参数,将全部参数当成一个参数对待.

  • $@ 全部参数,将全部参数当成多个参数对待.

  • $# 参数个数

for 循环

for 变量 in 值1 值2 ...
do
    ...
done

for ((变量;循环条件;变化))
do
    ...
done

while 循环

while [ condition ]
do
    ...
done

自定义函数

语法:函数名(){...}.

调用:函数名 参数1 参数2 ...

传参和命令行传参一致,return 只能返回0~255的整数,一般不使用.

可以通过命令替换 $() 捕获函数内输出的内容.

例如,计算 a+b:

#!/bin/bash
add(){
    echo $(($1+$2))
}

read a b
res=$(add $a $b)
echo "$res"

下载命令

sudo apt-get install ... .

打开终端快捷键

ctrl+alt+t.

关闭终端快捷键

ctrl+d.

查看 ubuntu 版本信息

uname -a.

ping 命令

检查与目标主机是否连通.

wget 命令

从网络上下载内容.

语法:wget [选项] URL.

  • -O,--output-document,将下载内容保存为指定文件名.

  • -P,--directory-prefix,将文件保存到指定目录.

git 命令

git init 命令

初始化仓库.

git add 命令

添加文件到暂存区.

git commit 命令

提交暂存区文件到版本库.

  • -m messege,附带版本的信息说明.

Makefile

由若干条规则组成,形式如下:

目标: 依赖1 依赖2 ...
    命令

例如,将 main.c 编译成 out.

out: main.c
    gcc main.c -o out

自动变量

  • $@ 目标文件名.

  • $< 第一个依赖文件名.

  • $^ 所有依赖.

模板

#编译器
CC=gcc
#目标可执行文件名
TARGET=out
#所有.c文件
SRCS=main.c add.c sub.c
#对应的.o文件
OBJS=$(SRCS:.c=.o)

#生成可执行文件
$(TARGET): $(OBJS)
    $(CC) $^ -o $@

#编译每个.c为.o
%.o: %.c
    $(CC) -c $< -o $@

#删除所有生成的文件
clean: 
    rm -f $(OBJS) $(TARGET)

#声明伪目标
.PHONY: clean

输入 make 执行,输入 make clean 执行 clean.

crontab 命令

cron table,设置定时任务.

  • -e edit,编辑当前用户的 crontab 文件.

  • -l list,列出所有定时任务.

  • -r romove,删除当前用户所有定时任务.

crontab 命令格式如下:

分 时 日 月 周 要执行的命令

特殊符号:

  • * 表示所有可能的值.

  • - 表示范围.

  • / 表示步长,例如在分字段使用 */15 表示每隔 15 分钟执行一次.

posted @ 2026-06-07 11:37  kzssCCC  阅读(19)  评论(0)    收藏  举报