Linux和gcc/g++常用命令总结

目录

Linux命令总结

文件操作相关命令

ls

cd

pwd

cp

mv

rm

cat

mkdir

rmdir

touch

文本处理操作命令

grep

awk

sed

进程管理操作相关命令

ps

top

htop

kill

pkill

killall

chmod

chown

网络操作相关命令

ping

ifconfig

netstat

ss

lsof

curl

wget

ssh

端口操作相关命令

nmap

系统信息查看相关命令

uname

df

du

free

查看CPU和内存使用相关命令

top

htop

ps

vmstat

free

gcc/g++编译器选项总结

编译链接选项

调优选项

警告和错误选项

其他选项


Linux命令总结

文件操作相关命令

ls

  1. ls:++列出目录中的文件和目录++

常用选项:

-a 显示包括隐藏文件在内的所有文件;

-l 以长格式显示文件信息,包括文件权限、所有者、大小等;

-t 按修改时间排序

示例:ls -al列出当前目录下所有文件的详细信息,包括隐藏文件

cd

2.cd :++切换目录++

常用选项:

.. 返回上一级目录;

~ 返回当前用户的主目录

示例:cd /home/user切换到 /home/user目录;cd ..返回上一级目录。

pwd

  1. pwd:显示当前工作目录

cp

4.cp :++复制文件或目录++

常用选项:

-r 复制目录时递归复制子目录

示例:cp file1.txt file2.txt复制/拷贝 file1.txt为 file2.txt;cp -r dir1 dir2复制/拷贝目录 dir1到 dir2。

mv

  1. mv :++移动或重命名文件或目录++

示例:mv file1.txt /home/user 将 file1.txt 移动到 /home/user目录;mv oldname.txt newname.txt将文件 oldname.txt重命名为 newname.txt

rm

6**.rm :++删除文件或目录++**。

常用选项:

-r 递归删除目录及其内容

示例:rm file.txt删除文件 file.txt;rm -r dir删除目录 dir及其内容

cat

7.cat :++查看文件内容++

示例:cat file.txt 显示 file.txt的内容

mkdir

8.mkdir:++创建目录++

示例:mkdir dir 创建一个名为 dir的目录

rmdir

9.rmdir :++删除空白目录++

示例:rmdir dir删除空白的 dir目录

touch

  1. touch :++创建空文件或更新文件的访问和修改时间++

示例:touch file.txt创建一个名为 file.txt的空文件

文本处理操作命令

grep

grep:在文件中搜索特定的字符串

awk

awk:强大的文本处理工具

sed

sed:流编辑器,用于文本的替换、插入、删除等操作

进程管理操作相关命令

ps

1.ps:++显示当前系统中的进程信息++

常用选项:

aux 显示所有进程,包括其他用户的进程;

-eo pid,ppid,%cpu,%mem,cmd 指定显示的列,如进程 ID、父进程 ID、CPU 使用率、内存使用率和命令等。

示例:ps aux显示系统中所有进程的信息;ps -eo pid,ppid,%cpu,%mem,cmd指定显示特定的列。

top

2**.top:++动态显示系统中进程的资源使用情况,包括 CPU 和内存使用情况等++。**

常用选项:

-d 后跟时间间隔,以秒为单位指定两次屏幕刷新之间的间隔时间

示例:top -d 2每 2 秒刷新一次屏幕,动态显示进程信息

htop

  1. htop:++类似于 top,但提供了更直观的界面和更多的功能++

常用选项:

可以通过方向键和各种快捷键来操作,如 F5以树形视图显示进程,F6按内存使用排序等

示例:直接输入 htop 启动该命令

kill

4.kill :++终止进程++

常用选项:

-9(信号) 强制终止进程

示例:kill 1234终止进程 ID 为 1234 的进程;kill -9 1234强制终止进程 ID 为 1234 的进程

pkill

  1. pkill:++通过进程名或其他属性终止进程++

示例:pkill firefox终止所有名为 firefox 的进程

killall

  1. killall:++通过进程名终止所有匹配的进程++

示例:killall firefox终止所有名为 firefox 的进程

chmod

  1. chmod:++更改文件或目录的权限++

chmod基本语法

bash 复制代码
chmod [选项] 权限模式 文件/目录
  • 权限模式:定义了文件的权限,可以使用数字表示(如 755 或 644),也可以使用符号表示(如 +rw 或 +x)。
  • 文件/目录:要更改权限的文件或目录的路径。

数字表示法

在数字表示法中,每个权限用一个数字表示:读权限(r)为 4,写权限(w)为 2,执行权限(x)为 1。通过将这些数字相加,可以为文件设置所需的权限。例如:

  • 7:读、写、执行权限(4+2+1)
  • 5:读、执行权限(4+1)
  • 4:只读权限
  • 6:读、写权限(4+2)

数字权限模式通常是三个数字的组合,分别代表用户(文件所有者)、组和其他用户的权限。例如:

  • 755:用户有读、写、执行权限,组和其他用户有读、执行权限。
  • 644:用户有读、写权限,组和其他用户有只读权限。

符号表示法

符号表示法使用操作符(+-=)和权限字母(rwx)来更改权限。例如:

  • chmod +x filename:为文件 filename 添加执行权限。
  • chmod -w filename:移除文件 filename 的写权限。
  • chmod u=rw filename:设置文件 filename 的用户权限为读和写。

常用选项

  • -R, --recursive:递归更改目录及其内容的权限。

示例

  1. 更改文件的权限
bash 复制代码
chmod 755 script.sh

script.sh 文件的权限设置为用户有读、写、执行权限,组和其他用户有读、执行权限。

  1. 为文件添加执行权限
bash 复制代码
chmod +x script.sh

script.sh 文件添加执行权限。

  1. 移除文件的写权限
bash 复制代码
chmod -w file.txt

移除 file.txt 文件的写权限。

  1. 递归更改目录及其内容的权限
bash 复制代码
chmod -R 755 myproject

递归地将 myproject 目录及其所有子目录和文件的权限设置为用户有读、写、执行权限,组和其他用户有读、执行权限。

  1. 设置文件的具体权限
bash 复制代码
chmod u=rw,g=rx,o=rx file.txt

设置 file.txt 文件的用户权限为读和写,组权限为读和执行,其他用户权限为读和执行。这也可以简写为 chmod u=rw,g+rx,o+rx file.txt 或使用数字表示法 chmod 655 file.txt(但注意,数字表示法无法直接表达只添加或移除特定权限,它总是设置完整的权限模式)

注意事项

  • 使用 chmod 命令时需要确保具有足够的权限,通常只有文件的所有者或超级用户(root)才能修改权限
  • 谨慎操作,避免不小心修改了文件的权限,导致数据丢失或其他安全问题。特别是使用 -R 选项时,要确保递归更改的范围是正确的

chown

8.chown:++更改文件或目录的所有者++

chown基本语法

bash 复制代码
chown [选项] [所有者][:[组]] 文件/目录
  • 所有者:指定新的文件所有者用户名或用户 ID。
  • :可选,指定新的文件所属组组名或组 ID。如果指定了组,它应该紧跟在所有者之后,并用冒号 (:) 分隔。如果只指定了组,前面应该加一个冒号。
  • 文件/目录:要更改所有权的文件或目录的路径。

常用选项

  • -R, --recursive递归更改目录及其内容的所有者和组
  • -v, --verbose显示处理的每个文件的详细信息。
  • -c, --changes仅显示更改的文件,对于未更改的文件不显示任何信息

使用如下:

  1. 更改文件的所有者
bash 复制代码
chown newowner filename

例如,将 file.txt 的所有者更改为 john

bash 复制代码
chown john file.txt
  1. 更改文件的所有者和组
bash 复制代码
chown newowner:newgrooup filename

例如,将 file.txt 的所有者更改为 john,组更改为 staff

bash 复制代码
chown john:staff file.txt
  1. 仅更改文件的组
bash 复制代码
chown :staff file.txt

例如,将 file.txt 的组更改为 staff

bash 复制代码
chown :staff file.txt
  1. 递归更改目录及其内容的所有者和组
bash 复制代码
chown -R newowner:newgroup directoryname

例如,将 myproject 目录及其所有子目录和文件的所有者更改为 john,组更改为 staff

bash 复制代码
chown -R john:staff myproject
  1. 显示更改的详细信息
bash 复制代码
chown -v newowner filename

例如,详细显示 file.txt 所有者的更改信息

bash 复制代码
chown -v john file.txt
  1. 仅显示更改的文件
bash 复制代码
chown -c newowner filename

如果 file.txt 的所有者已经是 john,则不会显示任何信息;如果所有者被更改,则会显示更改信息。

注意事项

  • 只有超级用户(root)或当前文件的所有者才有权限使用 chown 命令更改文件的所有者。
  • 如果指定的用户或组不存在,chown 命令会报错。
  • 使用 chown 命令时要小心,特别是与 -R 选项一起使用时,因为它会递归地更改目录及其内容的所有权。

假设你有一个目录 docs,其中包含多个文件和子目录,你想要将 docs 目录及其所有内容的所有者更改为 alice,组更改为 developers,并显示详细信息,你可以使用以下命令:

bash 复制代码
chown -Rv alice:developers docs

这将递归地更改 docs 目录及其所有子目录和文件的所有者和组,并显示每个被更改文件的详细信息。

网络操作相关命令

ping

1.ping :++测试网络连通性++

示例:ping google.com测试与 google.com 的网络连通性

ifconfig

2.ifconfig :++配置和显示网络接口信息++

示例:ifconfig 查看当前网络接口的配置信息

netstat

  1. netstat :++显示网络连接、路由表等信息,可以查看端口的使用情况++

常用选项:

-an 显示所有监听的和非监听的端口;

-tuln 显示监听的 TCP 和 UDP 端口

示例:netstat -an显示所有网络连接和端口信息;netstat -tuln显示监听的 TCP 和 UDP 端口。

ss

  1. ss :++类似于 netstat,用于查看套接字统计信息,可以更快速地显示端口的使用情况++

常用选项:

-antlp 显示所有监听的 TCP 端口及其对应的进程信息;

-anu 显示所有监听的 UDP 端口

示例:ss -antlp 显示所有监听的 TCP 端口及其对应的进程信息;ss -anu 显示所有监听的 UDP 端口

lsof

  1. sof :列出当前系统打开的文件和端口等信息

常用选项:

-i 后跟端口号,显示指定端口的使用情况。

示例:lsof -i :80 显示 80 端口的使用情况及对应进程信息

curl

6.curl :++用于从服务器传输数据或向服务器发送数据,常用于测试和操作网络请求++

示例:curl google.com获取 google.com 的网页内容;curl -X POST -d "key=value" google.com向 google.com 发送 POST 请求并携带数据

wget

  1. wget :++从网络上下载文件++

示例:wget google.com下载 google.com 的网页内容;wget -O output.html google.com将下载的内容保存为 output.html文件

ssh

  1. ssh:++用于远程登录到另一台计算机++

端口操作相关命令

ss

使用方法同上!!!

lsof

使用方法同上!!!

netstat

使用方法同上!!!

nmap

nmap 命令

功能:++网络探测工具,可用于扫描端口开放情况等++。

常用选项:

-p 后跟端口号或端口范围,指定扫描的端口;

-sS 进行 TCP SYN 扫描

示例:nmap -p 1-1000 192.168.1.1 扫描 192.168.1.1 主机的 1 到 1000 端口开放情况

系统信息查看相关命令

uname

  1. uname:++显示系统信息++

常用选项:

-a 显示所有系统信息,包括内核版本、主机名等;

-r 仅显示内核版本号。

示例:uname -a 显示所有系统信息;uname -r显示内核版本号

df

  1. df:++显示文件系统的磁盘使用情况++ ++。++

常用选项:

-h 以人类可读的格式显示磁盘空间,如自动根据大小选择合适的单位

示例:df -h显示文件系统的磁盘使用情况,包括每个文件系统的总空间、已用空间、可用空间等。

du

  1. du:++显示文件或目录的磁盘使用情况++

常用选项:

-h 以人类可读的格式显示磁盘空间;

-s 仅显示总计。

示例:du -h /home/user显示 /home/user目录及其子目录的磁盘使用情况;du -sh /home/user仅显示 /home/user目录的总计磁盘使用情况

free

  1. free:++用于显示系统中空闲、已用和交换的内存量,可以方便地查看内存的使用情++ ++况++。

常用选项:

-m 以 MB 为单位显示内存信息;

-h 以人类可读的格式显示内存信息,如自动根据大小选择合适的单位;

-s 指定更新时间间隔,持续显示内存信息。

示例:free -m表示以 MB 为单位显示内存信息;free -h以人类可读的格式显示内存信息;free -s 2 表示每 2 秒更新一次内存信息

查看CPU和内存使用相关命令

top

top命令

功能:提++供了动态的实时系统进程信息,可以查看 CPU 和内存的使用情况以及其他相关信息,如进程的用户、运行时间、命令等++

常用选项:

-d后跟时间间隔,以秒为单位指定两次屏幕刷新之间的间隔时间。

示例:top -d 2,表示每 2 秒刷新一次屏幕

htop

htop命令

功能:++是一个更高级的进程浏览器,它提供了比 top更直观的界面和更多的功能,可以方便地查看 CPU 和内存的使用情况,以及各个进程的信息++。

常用选项:

可以通过方向键和各种快捷键来操作,如 F5以树形视图显示进程,F6按内存使用排序等。

示例:直接输入 htop即可启动该命令

ps

ps命令

功能:++用于报告当前系统中的进程状态,结合不同的选项可以查看进程的 CPU 和内存使用情况++。

常用选项:

aux显示所有进程的信息,包括其他用户的进程。

eo pid,ppid,%cpu,%mem,cmd指定显示的列,包括进程 ID、父进程 ID、CPU 使用率、内存使用率和命令等。

示例:ps aux | less,表示分页显示所有进程的信息;ps -eo pid,ppid,%cpu,%mem,cmd,指定显示特定的列

vmstat

vmstat命令

功能:++报告虚拟内存的统计信息,包括进程、内存、分页、块设备、陷阱和 CPU 活动等信息,可以间接反映出 CPU 和内存的使用情况++。

常用选项:

1表示每秒更新一次。

-s以更易读的格式显示统计信息。

示例:vmstat 1,表示每秒更新一次虚拟内存统计信息;vmstat -s,以更易读的格式显示统计信息

free

free命令

功能:++用于显示系统中空闲、已用和交换的内存量,可以方便地查看内存的使用情况。++

++常用选项:++

-m 以 MB 为单位显示内存信息。

-h以人类可读的格式显示内存信息,如自动根据大小选择合适的单位。

-s指定更新时间间隔,持续显示内存信息。

示例:free -m,表示以 MB 为单位显示内存信息;free -h,以人类可读的格式显示内存信息;free -s 2,表示每 2 秒更新一次内存信息

gcc/g++编译器选项总结

编译链接选项

-c++只编译,不链接。++

示例:g++ -c main.cpp 将 main.cpp 编译成目标文件 main.o。
-o :++指定输出文件名++。

示例:g++ -o myprogram main.cpp将编译链接后的可执行文件命名为 myprogram。
-I :++添加头文件搜索路径++。(i大写)

示例:g++ -I /usr/local/include main.cpp指定在 /usr/local/include目录下搜索头文件
-L :++添加库文件搜索路径++。

示例:g++ -L /usr/local/lib main.cpp -lmylibc指定在 /usr/local/lib目录下搜索库文件 mylibc。
-l :++链接库文件++。(L小写)

示例:g++ main.cpp -lmylib 链接库文件mylib。
-shared :++生成共享库(动态库)++。

示例:g++ -shared -fPIC mylib.cpp -o libmylib.so 生成共享库 libmylib.so
-static :++生成静态库++。

示例:g++ -static mylib.cpp -o libmylib.a生成静态库 libmylib.a。

调优选项

-O1 :++启用基本的优化++。

示例:g++ -O1 main.cpp -o myprogram对生成的代码进行基本的优化
-O2 :++更高一级的优化,在 -O1的基础上增加更多的优化++。

示例:g++-O2 main.cpp -o myprogram对生成的代码进行更高级的优化
-O3 :++最高级别的优化,会在编译时进行更充分的优化,但可能会增加编译时间++。

示例:g++ -O3 main.cpp -o myprogram对生成的代码进行最高级别的优化
-Os :++优化代码大小,在优化代码执行效率的同时,尽可能减小生成的二进制文件大小++ 。

示例:g++-Os main.cpp -o myprogram优化代码大小
-g :++生成调试信息,便于使用调试器(如 GDB)进行调试++ 。

示例:g++ -g main.cpp -o myprogram在生成的可执行文件中包含调试信息

警告和错误选项

-Wall :++启用所有常见的警告++ 。

示例:g++ -Wallmain.cpp -o myprogram启用所有常见的警告
-Wextra :++启用额外的警告,比 -Wall更严格++ 。

示例:g++ -Wextra main.cpp -o myprogram启用额外的警告
-Werror :++将所有警告视为错误,如果出现警告,编译将失败++ 。

示例:g++-Werror main.cpp -o myprogram将所有警告视为错误

其他选项

-std=c++11指定使用 C++11 标准

示例:g++ -std=c++11 main.cpp -o myprogram指定使用 C++11 标准进行编译。
-fPIC++生成位置无关代码,通常用于生成共享库++

示例:g++ -fPIC mylib.cpp -shared -o libmylib.so生成位置无关代码生成共享库
-pg :++添加性能分析代码,用于性能分析工具++ (如 gprof)。

示例:g++ -pgmain.cpp -o myprogram添加性能分析代码
-v :++显示编译器版本信息和编译过程的详细信息++ 。

示例:g++ -v显示编译器版本信息

相关推荐
vortex55 分钟前
在Kali中使用虚拟环境安装python工具的最佳实践:以 pwncat 为例
linux·python·网络安全·渗透测试·pip·kali
椰椰椰耶16 分钟前
【redis】全局命令set、get、keys
数据库·redis·缓存
月落星还在24 分钟前
Redis 内存淘汰策略深度解析
数据库·redis·缓存
左灯右行的爱情28 分钟前
Redis- 切片集群
数据库·redis·缓存
LKAI.28 分钟前
MongoDB用户管理和复制组
linux·数据库·mongodb
linux修理工35 分钟前
moodle 开源的在线学习管理系统(LMS)部署
linux
PinkandWhite1 小时前
MySQL复习笔记
数据库·笔记·mysql
snpgroupcn1 小时前
ECC升级到S/4 HANA的功能差异 物料、采购、库存管理对比指南
运维·安全·数据库架构
熬夜苦读学习1 小时前
库制作与原理
linux·数据库·后端
晨曦启明7112 小时前
Linux云计算SRE-第十八周
linux·运维·云计算