目录
1、目录操作
1.1、ls
查看当前目录下文件
ls -a 查看所有文件包括隐藏文件(以.开头的文件)
ls -l 查看所有文件的详细信息(文件类型、文件权限)
ls /dir 查看指定目录(dir)下的所有目录和文件 如:ls/home
ls -c 以更改时间排序,显示文件和目录
ls -d 显示目录名称而非其内容
ls -S 用文件和目录的大小排序
蓝色----->目录
绿色----->可执行文件
白色----->一般文件(文本文件、配置文件)
黄色------设备文件
浅蓝色------>链接文件
红色------->压缩文件
灰色------->其他文件.
例子:
ls -al
ls /dir
ls -c
ls -S
1.2、 cd
切换当前所在的路径(进入某个目录)
cd / 进入根目录
cd . 进入当前目录
cd .. 进入当前目录的上一级目录
cd - 进入上次访问的目录
cd ~ 进入当前登录用户的家目录
绝对路径:登录用户不同,所在目录不同,相同路径含义一致(以根目录开头)。
相对路径:登录用户不同,所在目录不同,相同路径会有不同含义。
例子:
cd .. cd - cd ~
相对路径
1.3、mkdir
建立新目录
mkdir -p 目录1/目录2 递归建立目录1目录2
mkdir -m 777 目录 设定文件夹目录的权限
mkdir -v 目录 创建目录的时候显示创建过程信息。
例子:
创建从c.c目录下创建1.c,1.c目录下创建2.c。
创建文件夹a.c 并设置它的权限为所有者可读可写可执行,组成员及其他只有读权限。
1.4、rmdir
删除空的目录
rmdir -v 目录 删除目录的时候显示删除过程信息。
rmdir -p 目录1/目录2 递归删除目录1目录2
例子:
递归删除a.c目录下的b.c,b.c目录下的c.c,并显示删除过程信息。
1.5、mv
移动文件或将文件改名
mv -i 目标文件存在时,询问是否覆盖
mv -b 若需覆盖文件,则覆盖前先行备份
mv -f 目标文件存在时,不会询问是否覆盖,直接覆盖。
mv -t 移动多个源文件到一个目录的情况,目标目录在前,源文件在后。
例子:
将目录a.c的名字改为b.c。
将当前目录下的a.c目录,移动到c.c目录下,并修改名称为aaa。
将目录d.c,改为c.c, 如果c.c存在,则询问是否覆盖。
1.6、tree
以树状结构查看目录下的内容
tree -a 显示所有文件和目录
tree -d 显示目录名
tree -r 以相反的次序排列
tree -t 用文件和目录的更改时间排序
tree -f 在每个文件或者目录前,显示完整的相对路径名称。
通配符:
- * :匹配任意长度,任意字符的文件名
- ? :匹配一位长度,任意字符的文件名
- []:匹配一位长度,指定字符的文件名
- [1,3,5] 匹配1 3 5对应字符
- [^3] 匹配除了3以外的字符
- [1-5] 匹配1-5对应的字符
2、文件操作
2.1、touch
创建一个空文件
touch -a 修改文件的读取时间记录
touch -m 修改文件的修改时间记录
touch -t 设定时间与日期
touch -r 更新文件时间戳
例子:
创建空文件a.c。
更新文件a.c的时间和b.c的时间戳相同。
设定文件a.c的时间戳。
2.2、rm
删除文件或者目录
rm -i 删除文件之前询问
rm -r 递归删除
rm -f 强行删除一个文件,并且不要提示
rm -d 删除目录的硬链接,删除该目录
例子:
删除文件a.c之前询问是否删除。
递归删除c.c目录中的所有文件。
注:rm 命令是危险命令,在根目录中如果rm -rf *.c ,文件系统崩溃,因此使用rm命令时, 要小心谨慎。
2.3、cp
复制文件或目录
cp -a 复制整个目录,包括子目录及访问模式,所有者等属性。
cp -f 强行复制
cp -i 复制时询问
cp -r 递归复制
cp -p 保留源文件或者目录属性
cp -v 显示执行命令的过程
例子:
向文件b.c中输入hello world ,并将文件b.c复制给e.c。
将目录a.c 复制到本目录下,并给它新的名字aaa。
将文件b.c复制给e.c,复制时要有询问,并且显示复制过程。
2.4、chmod
修改传统文件或目录的访问权限
chmod -c 回报更改的部分
chmod -f 不显示错误信息
chmod -v 运行时显示详细处理信息
权限范围:
u :目录或者文件的当前的用户
g :目录或者文件的当前的群组
o :除了目录或者文件的当前用户或群组之外的用户或者群组。
a :所有的用户及群组
权限代号:
r:读权限,用数字4表示
w:写权限,用数字2表示
x:执行权限,用数字1表示
-:删除权限,用数字0表示
s:特殊权限,变更文件或目录的权限
例子:
增加所有用户组可执行权限 chmod a+x b.c e.c。
增加文件的当前用户执行权限 chmod u+x b.c e.c。
删除所有用户的可执行权限 chmod a-x b.c。
给文件的属主分配读写执行,所在组读、执行权限,其他用户执行权限
chmod 751 e.c
2.5、pwd
查看当前工作目录的完整路径
pwd -L 打印$PWD变量的值,如他包含当前的工作目录。
pwd -p 打印当前物理路径,不带任何的符号连接
例子:
打印当前的工作路径(包含当前工作目录)。
打印当前物理路径。
2.6、In
为文件在另外一个位置建立一个同步的链接,当在不同目录需要该问题时,就不需要为每一个目录创建同样的文件,通过 ln 创建的链接(link)减少磁盘占用量。
In -b 删除,覆盖以前建立的链接
In -s 软链接(符号链接)
In -v 显示详细处理过程
软链接:
In -s hello.c link.c
1.软链接,以路径的形式存在,类似于Windows操作系统中的快捷方式。
2.软链接可以 跨文件系统 ,硬链接不可以。
3.软链接可以对一个不存在的文件名进行链接。
4.软链接可以对目录进行链接。
硬链接:
In hello.c link.c
1.硬链接,以文件副本的形式存在,但不占用实际空间。
2.不允许给目录创建硬链接。
3.硬链接只有在同一个文件系统中才能创建。
注:
一:ln命令会保持每一处链接文件的同步性,也就是说,不论你改动了哪一处,其它的文件都会发生相同的变化。
二:ln的链接又分软链接和硬链接两种,软链接就是ln –s 源文件 目标文件,它只会在你选定的位置上生成一个文件的镜像,不会占用磁盘空间,硬链接 ln 源文件 目标文件,没有参数-s, 它会在你选定的位置上生成一个和源文件大小相同的文件,无论是软链接还是硬链接,文件都保持同步变化。
三:ln指令用在链接文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则会把前面指定的所有文件或目录复制到该目录中。若同时指定多个文件或目录,且最后的目的地并非是一个已存在的目录,则会出现错误信息。
文件的详细信息
文件类型:
b block 块设备文件
c character 字符设备文件
d directory 目录文件
- 普通文件
l link 链接文件
s socket 套接字文件
p pipe 管道文件
rwx:
r:读权限
w:写权限
x:执行权限
rwx:创建该文件的用户对文件是否拥有读写执行权限
rwx:创建该文件用户同组的用户对文件是否拥有读写执行权限
rwx:其余人对文件是否拥有读写执行权限
普通文件
r:文件是否能读
w:文件是否能写
x:文件是否能执行
目录文件
r:目录中的文件名是否能查看
w:目录中是否能创建文件
x:是否能进入目录文件
3、文件查看
3.1、cat
查看文件内容(一般为ASCII码文件)
cat [filename] 查看文件filename的内容
cat -n [filename] 查看附带行号的filename的内容
cat > [filename] 向filename文件中输入内容,回车后ctrl+d,结束添加
cat [file1] [file2] > [file3] 将文件file1与file2合并并输入到file3中
cat >> [filen] << EOF 在光标处输入追加的内容,输入EOF结束追加
例子:
查看文件b.c中的内容。
查看文件b.c的内容,并附加行号。
向文件c.c中输入内容,并显示在屏幕上。
将文件c.c与d.c合并并输入到e.c中。
追加内容给c.c文件,在光标处输入追加的内容,输入EOF结束追加。
3.2、head
查看文件开头内容(默认为10行)
head -n <m行数> filename 显示filename文件中m行内容
注:当行数m为负数时,表示从后往前数。
head -c <byte字节数> filename 显示filename特定数量字节数的内容
例子:
显示文件hello.c中前5行 head -n 5 hello.c。
显示文件hello.c中除了后5行外的所有 head -n -5 hello.c。
显示文件hello.c中100字节内容 head -c 100 hello.c。
3.3、tail
查看文件末尾内容(默认为10行),常用于实时查看日志。
tail -n <m行数> filename 显示filename最后m行内容
tail -f filename 显示filename尾部的内容,并不断更新
例子
tail -n 8 hello.c 查看hello.c文件末尾8行的内容
显示filename尾部的内容,并不断更新,(ctrl+c)结束更新。
3.4、more
按照分页方式查看文件内容
more -<number> 指定每屏的行数
more +<number> 从第number行显示
more -p filename 不以滚动的方式显示每一页,先清处输出再显示。
more +/<str> 在每个文档显示前搜索字串str,再显示字串之后的信息。
示例:
more f.c 分页显示f.c的文件内容。
more +30 f.c,从第30行开始显示f.c的内容。
查找文件中第一个出现"str"字符串的行,并且从该行的前两行显示 。
3.5、less
查看文件内容 输出进行分页显示
less filename 分屏查看文件内容
less file1 file2 打开多个文件,并在文件中切换:n 浏览file2 :p 浏览前一个文件file1。
ps -ef | less 查看进程信息并通过less分页显示
示例:
less hello.c 查看hello.c的文件信息。
less与more的区别?
less不必读整个文件,加载文件速度比more更快。
less可以按键盘上下方向键显示上下内容,more不能通过方向键控制,more不能后退。
less退出后shell不会留下刚显示的内容,more退出后会在shell上留下内容。
4、文件内容操作
4.1、whereis
在系统路径下查找二进制可执行程序
whereis -b filename 搜索名为filename的二进制文件。
whereis -s filename 搜索源文件filename,并将它显示在屏幕。
示例:
whereis ls
搜索名为pwd的二进制文件。
搜索源文件cp,并将它显示在屏幕 。
4.2、find
查找符合要求的文件名
find 目录名 -name 文件名 精准搜索目录名及文件名全部匹配。
find 目录名 -size n 文件名 n为正数时显示容量大于n的文件,n为负数相反。
fine 目录名 -mmin -n 查找目录下改变文件的内容。
示例:
find . -name stdio.h
在文件夹text中查找容量大于1的文件。
4.3、grep
在文件中搜索匹配的行并输出
grep 字符串 目录名 在目录中搜索匹配字符串的行输出。
grep -i 字符串 目录名 -i 搜索字符串时忽略大小写。
grep -n 字符串 文件 显示字符串匹配的行和行号。
grep -v 字符串 文件 搜索除了字符串的其他行,反向搜索。
例子:
将文件c.c中的数据打印出来,并搜索a字符输出在屏幕上。
搜索文件f.c 中字符串adjoin的行和行号。
搜索文件f.c中除了字符串ac的其他行,反向搜索,并显示行号。
4.4、awk
文本分析工具,在对数据分析并生成报告时用处比较
awk的工作流程:
(1)、读取文件之前执行的代码段(由BEGIN标识)。
(2)、主循环执行输入文件的代码段。
(3)、读取输入文件之后的代码段(由END标识)。
awk '{pattern + action}' {filename}; pattern 表示在数据中查找的内容,action是查找时所执 行的命令。
awk '{printf $1,$3}' hello.log
将hello.log切分,打印第1/3列内容
awk -F "," '{printf $2}' hello.log
以逗号为分隔符,切分数据,并打印第二列内容
awk -f {awk脚本} {filename}
先执行脚本awk后在文件查找内容
例子:
创建测试文件,输出测试文件第一列、第三列和第四列,并且按空格分隔 。
格式化输出对齐。
awk -F #这里的-F相当于内置变量FS,指定分割字符。
awk -f {awk脚本} {filename}
输出第一个变量大于2的所有行。
输出第三行的内容。
4.5、sed
替换文件内容
sed -i 's/^要替换的/替换后的/' filename
替换文件filename中的要替换的内容。
sed -i 's/hello/ni hao/g/' filename
g表示全部的hello都要替换,不加g只替换首个hello。
sed -i '/hello/d' filename
删除包含hello的行(d是删除的意思)。
例子:
替换文件e.c中的biejing替换成BEIJING。
将文件e.c中的所有的Hello替换成ni hao。
将文件e.c中的ni hao全部删除。
4.6、locate
从数据库查询,比find从磁盘查询更快速
locate -c ah 返回匹配到ah的文件的数量
locate -n 20 ah 返回匹配到ah的前20条记录
locate -i ah 查询匹配ah时不区分大小写
例子:
locate -c ah
locate -n 20 ah
locate -i ah
4.7、wc
wc -l filename 显示文件filename的行数(lines)
wc -w filename 显示文件filename的字数(words)
wc -m filename 显示文件filename的字符数(chars)。
wc -c filename 显示文件filename的字节数(bytes)。
wc -L filename 显示文件filename最长行的长度(length)。
例子:
wc -l
wc -w
wc -m
wc -c
wc -L
5.压缩解压命令
5.1、tar
将多个文件打包进一个文件
tar -c 创建压缩文件
tar -C 指定解压文件存放的位置
tar -t 查看内容
tar -x 解压文件
tar -z 有gizp属性的压缩
tar -v 显示所有过程
tar -f 要操作的文件的名字,f是最后一个参数。
示例:
tar -cvf 文件名.tar 文件夹/*
解包文件
压缩文件
解压缩文件
5.2、zip
压缩目录文件
zip -r 递归压缩,将指定目录下的所有文件和子目录一起处理。
zip -d 从压缩文件内删除指定的文件
zip -m 压缩完文件后,删除源文件,即把源文件移到压缩文件中。
zip -v 显示执行的过程
例子:
将目录a.c的所有文件及子目录压缩。
在压缩文件a.zip中,将文件e.c删除。
5.3、unzip
.zip压缩文件的解压缩命令
unzip -d <目录> 指定解压缩后文件存在那个目录下。
unzip -n 解压缩时不覆盖原有文件
unzip -o 解压缩后覆盖原有文件
unzip -v 执行时显示详细信息,或者查看压缩文件目录。
例子:
指定解压缩后文件存在指定目录下。
解压缩文件e.zip后覆盖原文件。
5.4、gzip
压缩文件后源文件后会多出-gz的扩展名
gzip -d 解压缩文件
gzip -v 显示执行时的详细信息
gzip -r 递归处理
gzip -l 列出压缩文件的详细信息
例子:
将文件c.c进行gzip的格式压缩,gzip压缩后不会保留源文件。
列出压缩文件c.c.gz的详细信息,并显示执行时的详细信息。
将压缩文件c.c.gz解压,并列出详细信息。
5.5、bzip2
用于创建和管理(包括解压缩)“.bz2”格式的压缩包
bzip2 -d 解压缩文件
bzip2 -t 测试压缩文件的完整性
bzip2 -c 将压缩与解压缩的结果送到标准输出
bzip2 -s 降低程序执行时的内存使用量
bzip2 -k bzip2在压缩或解压后,会删除原始文件,若要保留原始文件,使用-k选项。
例子:
利用bzip2压缩文件c.c。
解压缩c.c.bz2,得到c.c。
压缩c.c文件后要保留原文件。
将压缩与解压缩的结果送到标准输出。
6、管道和重定向
6.1、管道 |
将前面命令的输出作为后序命令的输入,即命令A|命令B --> 命令A的输出当作命令B的输入。
Linux 允许将 一个命令的输出 可以通过管道 做为 另一个命令的输入,管道一端为写段一端为读端,先执行写端在执行读端,在写的基础上读。
例子:
ps -ef | grep a.out
查找Desktop目录下的hello文件的内容。
6.2、覆盖重定向 >
将输出在终端的内容加入文件中(会覆盖源文件)。
例子:
echo hello world > test.c
6.3、追加重定向 >>
表示追加,会将输出的内容追加到文件的末尾,不会覆盖源文件。
练习:将/usr/include/stdio.h文件后100行与extern相关的内容写入到file.txt文件中。
tail -n 100 /usr/include/stdio.h | grep extern > file.txt
7、磁盘命令
7.1、df
统计磁盘空间或文件系统使用情况,显示磁盘分区上的可使用的磁盘空间。
df -a 列出所有分区空间的使用情况
df -h 显示磁盘大小单位
df -T 显示分区文件系统名称
例子:
显示所有分区空间的使用情况。
显示磁盘大小。
显示分区文件系统名称。
7.2、du
主要统计目录和文件占用磁盘空间大小
du -a 显示所有文件的大小
du -s 只列出当前目录占用磁盘空间大小,不显示子目录和子文件的大小。
du -h 使用习惯单位显示磁盘占用,例如 KB,MB等。
例子:
显示本目录下的所有文件大小。
只列出当前目录占用磁盘空间大小,不显示子目录和子文件的大小。
使用习惯单位显示磁盘占用,例如 KB,MB等 。
7.3、mount
用于挂载分区
挂载设备:mount 设备挂载点
自动挂载:修改 /etc/fstab 文件,添加一行 /dev/sdb1 /usb auto defaults 0 0
/dev/sdb1 挂载设备
/usb 挂载点
auto 自动挂载
defaults 默认选项,不需要修改
0 表示不备份,1 表示备份
0 不检查文件系统,1 检查文件系统
7.4、fdisk
用于 MBR 分区表格式磁盘的分区或者查询
fdisk -l 查看所有硬盘的分区信息,包括没有挂上的分区和USB设备。
fdisk -s 查看分区块的大小
fdisk -v 查看fdisk 的命令的版本。
例子:
查看所有硬盘的分区信息。
查看linux的分区块的大小。
查看fdisk 的命令的版本。
8.进程命令
8.1、top
查看进程信息(动态查看)
top -c 显示命令行
top -d +时间间隔 设置刷新时间间隔
top -i 禁止显示空闲进程
top -q 实时显示
top -s 安全模式
top -S 输出每个进程的总的CPU时间(时间片)
q 退出
- PID 进程ID
- USER 进程所有者
- PR 进程优先级,越小优先级越高
- NI nice优先级,越小优先级越高
- VIRT 进程需要占用的内存大小
- RES 进程当前实际占用内存大小
- SHR 进程与其他进程恭喜的内存大小
- S 进程状态
- %CPU CPU占有率
- %MEM 内存使用率
- TIME+ 进行CPU使用时间累加
- COMMAND 进程或命令名称
例子:
动态查看进程信息。
设置时间间隔,刷新动态进程。
8.2、ps
静态查看进程信息
ps -l 列出程序名和进程ID
ps -o 进程起始的ID
ps -n 进程终止的ID
ps -u 使用以用户为主的格式输出进程信息
ps -a 显示当前终端下的所有进程信息,包括其他用户的进程。
ps -x 显示当前用户在所有终端下的进程
ps -e 显示系统内的所有进程信息
结合管道操作和grep命令进行过滤,用于查询某一个进程的信息。
ps -ef | grep a.out
S 进程状态:
运行态 R
可唤醒等待态 S
不可唤醒等待态 D
暂停态 T
僵尸态 Z
结束态 X
ps -l
ps -o
ps -u
ps -a
ps -e
8.3、kill
通过进程的ID号向进程发送信号杀死进程
kill+信号量特有选项 + 进程的ID号
kill -l 显示所有的kill信号
kill -0 用来判断进程是否运行
kill -1 强制进程重读配置文件
kill -2 中止正在运行的进程
kill -9 强制杀死正在运行的进程
kill -15 终止正在运行的进程
信号量特有选项:
- SIGNUP启动被终止的进程
- SIGKILL强制中断进程
- SIGINT中断进程
- SIGTERM正常结束进程
- SIGSTOP暂停进程
例子:
kill -l
kill -9 + pid
9、网络命令
9.1、ifconfig
查看网卡信息,ip地址、子网掩码及默认网关
ifconfig -a 显示所有网卡信息
ifconfig -s 显示简要的网卡信息
ifconfig eth0 del 192.168.1.100 删除IP地址
ifconfig eth0 arp 启用ARP协议
sudo ifconfig eth0 up/down
up/开启 eth0 网卡 down/关闭 eth0 网卡
例子:
ifconfig -a
ifconfig -s
9.2、route
显示和控制IP路由表
route -n 显示数值形式的IP地址
route -A 设置地址类型
route -C 打印将Linux核心的路由缓存
route -v 详细信息模式
route -e netstat格式显示路由表
例子:
route -n
route -C
route -e netstat
9.3、ping
ping 测试主机与IP地址的网络是否通畅、数值越大、速度越慢。
ping -f 极限测试,大量发送网络封包给机器,看它的回应。
ping -R 记录路由的过程
ping -i 秒数 设定隔几秒发送一个网络封包
ping -q 不显示任何传送封包的信息,只显示最后的结果。
ping -n 只输出数值
例子:
ping 127.0.0.1,检查本地的TCP/IP协议是否正常。
指定要发送的信号请求数目ping -c n 。
9.4、netstat
显示与IP、TCP、UDP和ICMP协议的统计信息,检查本机端口的网络连接情况。
netstat -s 显示与IP、TCP、UDP和ICMP协议的统计信息。
netstat -e 显示以太网的统计信息
netstat -r 显示路由表,及接口列表
netstat -a 显示所有连接和侦听端口
例子:
netstat -s
netstat -e
netstat -r
netstat -a
10、用户管理命令:
10.1、useradd
添加用户
sudo useradd 用户名
sudo useradd -m 用户名
创建用户(家目录不存在则创建)
例子:
添加新用户pb,并显示用户pb 的信息。
1.口令文件 /etc/passwd
2.阴影文件 /etc/shadow
3.组文件 /etc/group
4.家目录 /home/用户名
10.2、passwd
设置密码
sudo passwd 用户名
passwd -S 用户名 显示账户密码相关信息
passwd -x d1 -n d2 用户 密码有效期d1天,过期d2天必须修改。
passwd -d 用户名 删除指定用户密码
例子:
给用户pb,设置密码。
显示账户pb 的相关信息。
删除指定用户pb的密码。
10.3、userdel
删除用户
sudo userdel 用户名
sudo userdel -r 用户名
删除用户(家目录存在同时删除)
例子:
删除用户pb,并查找他的信息。
10.4、su
切换用户,从普通用户切换到root用户。
su 用户名
例子:
切换到root用户。
sudo + 命令,实现root 用户的权限。
10.5、exit
退出用户
exit
例子:
root用户的权限用完,想要退出root 用户。
10.6、chown
改变文件所属用户
chown
例子:sudo chown 用户名 文件名
10.7、chgrp
改变文件所属组
chgrp
例子:sudo chgrp 组名 文件名
10.8、usermod
修改用户所属的组
usermod
例子:sudo usermod -g 组名 用户
11、系统命令
11.1、echo
显示字符串在终端上。
将字符串输入到文件中。
11.2、history
查看历史命令
history -n 显示最近的n条记录
history -a 将历史命令命令缓冲行的命令写入历史命令文件中。
history -d 删除历史记录中指定的行
例子:
history -n
history -d
11.3、date
查看日期
date + %F 年-月-日
date + %D 日/月/年
例子:
查看日期
date + %F 年-月-日
date + %D 日/月/年
11.4、od
将文件内容以不同形式呈现
od -c filename 将文件以ASCII或反斜杠标识
od -a filename 将文件具体字符显示,入换行符显示为nl。
od -o filename 将文件的size字节组成8进制整数o(size),size大小一般为 sizeof(int)。
od -x filename size字节组成一个16进制的整数,size=sizeof(int)。
例子:
od -c c.c
od -a c.c
od -o c.c
od -x c.c
11.5、whoami
查看当前登录的用户
who -m 查看当前登录的用户
who -q 显示登录用户的个数
例子:
whoami == who -m
who -q
11.6、uname
查看Linux内核版本号
uname -a 显示系统名,操作系统版本号、发行号等。
uname -r 显示操作系统的发行版号
例子:
uname -r
unname -a
11.7、sudo
使用超级用户的权限执行相应操作
12、dpkg工具集:
安装包 .deb .rpm
软件包名:
软件名_版本号_操作系统平台_处理器平台.deb
12.1、安装:
sudo dpkg -i 软件包名
12.2、查看是否安装成功
sudo dpkg -l 软件名
12.3、卸载:
sudo dpkg -P 软件名
参考文章:
https://blog.csdn.net/weixin_44895651/article/details/105289038
https://blog.csdn.net/qq_24047235/article/details/111055271
https://blog.csdn.net/GodGump/article/details/104148373