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
3. pwd:显示当前工作目录。
cp
4. cp :复制文件或目录。
常用选项:
-r 复制目录时递归复制子目录。
示例:cp file1.txt file2.txt复制/拷贝 file1.txt为 file2.txt;cp -r dir1 dir2复制/拷贝目录 dir1到 dir2。
mv
5. 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
10. 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
3. htop:类似于 top,但提供了更直观的界面和更多的功能。
常用选项:
可以通过方向键和各种快捷键来操作,如 F5以树形视图显示进程,F6按内存使用排序等。
示例:直接输入 htop 启动该命令。
kill
4. kill :终止进程。
常用选项:
-9(信号) 强制终止进程。
示例:kill 1234终止进程 ID 为 1234 的进程;kill -9 1234强制终止进程 ID 为 1234 的进程。
pkill
5. pkill:通过进程名或其他属性终止进程。
示例:pkill firefox终止所有名为 firefox 的进程。
killall
6. killall:通过进程名终止所有匹配的进程。
示例:killall firefox终止所有名为 firefox 的进程。
chmod
7. chmod:更改文件或目录的权限。
chmod基本语法
chmod [选项] 权限模式 文件/目录
- 权限模式:定义了文件的权限,可以使用数字表示(如 755 或 644),也可以使用符号表示(如 +rw 或 +x)。
- 文件/目录:要更改权限的文件或目录的路径。
数字表示法
在数字表示法中,每个权限用一个数字表示:读权限(r)为 4,写权限(w)为 2,执行权限(x)为 1。通过将这些数字相加,可以为文件设置所需的权限。例如:
7
:读、写、执行权限(4+2+1)5
:读、执行权限(4+1)4
:只读权限6
:读、写权限(4+2)数字权限模式通常是三个数字的组合,分别代表用户(文件所有者)、组和其他用户的权限。例如:
755
:用户有读、写、执行权限,组和其他用户有读、执行权限。644
:用户有读、写权限,组和其他用户有只读权限。符号表示法
符号表示法使用操作符(
+
、-
、=
)和权限字母(r
、w
、x
)来更改权限。例如:
chmod +x filename
:为文件filename
添加执行权限。chmod -w filename
:移除文件filename
的写权限。chmod u=rw filename
:设置文件filename
的用户权限为读和写。常用选项
-R, --recursive
:递归更改目录及其内容的权限。示例
- 更改文件的权限
chmod 755 script.sh
将
script.sh
文件的权限设置为用户有读、写、执行权限,组和其他用户有读、执行权限。
- 为文件添加执行权限
chmod +x script.sh
为
script.sh
文件添加执行权限。
- 移除文件的写权限
chmod -w file.txt
移除
file.txt
文件的写权限。
- 递归更改目录及其内容的权限
chmod -R 755 myproject
递归地将
myproject
目录及其所有子目录和文件的权限设置为用户有读、写、执行权限,组和其他用户有读、执行权限。
- 设置文件的具体权限
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基本语法
chown [选项] [所有者][:[组]] 文件/目录
- 所有者:指定新的文件所有者用户名或用户 ID。
- 组:可选,指定新的文件所属组组名或组 ID。如果指定了组,它应该紧跟在所有者之后,并用冒号 (
:
) 分隔。如果只指定了组,前面应该加一个冒号。- 文件/目录:要更改所有权的文件或目录的路径。
常用选项
使用如下:
-R, --recursive
:递归更改目录及其内容的所有者和组。-v, --verbose
:显示处理的每个文件的详细信息。-c, --changes
:仅显示更改的文件,对于未更改的文件不显示任何信息。
- 更改文件的所有者
chown newowner filename
例如,将
file.txt
的所有者更改为john
chown john file.txt
- 更改文件的所有者和组
chown newowner:newgrooup filename
例如,将
file.txt
的所有者更改为john
,组更改为staff
chown john:staff file.txt
- 仅更改文件的组
chown :staff file.txt
例如,将
file.txt
的组更改为staff
chown :staff file.txt
- 递归更改目录及其内容的所有者和组
chown -R newowner:newgroup directoryname
例如,将
myproject
目录及其所有子目录和文件的所有者更改为john
,组更改为staff
chown -R john:staff myproject
- 显示更改的详细信息
chown -v newowner filename
例如,详细显示
file.txt
所有者的更改信息chown -v john file.txt
- 仅显示更改的文件
chown -c newowner filename
如果
file.txt
的所有者已经是john
,则不会显示任何信息;如果所有者被更改,则会显示更改信息。注意事项
- 只有超级用户(root)或当前文件的所有者才有权限使用
chown
命令更改文件的所有者。- 如果指定的用户或组不存在,
chown
命令会报错。- 使用
chown
命令时要小心,特别是与-R
选项一起使用时,因为它会递归地更改目录及其内容的所有权。假设你有一个目录
docs
,其中包含多个文件和子目录,你想要将docs
目录及其所有内容的所有者更改为alice
,组更改为developers
,并显示详细信息,你可以使用以下命令:chown -Rv alice:developers docs
这将递归地更改
docs
目录及其所有子目录和文件的所有者和组,并显示每个被更改文件的详细信息。
网络操作相关命令
ping
1. ping :测试网络连通性。
示例:ping google.com测试与 google.com 的网络连通性。
ifconfig
2. ifconfig :配置和显示网络接口信息。
示例:ifconfig 查看当前网络接口的配置信息。
netstat
3. netstat :显示网络连接、路由表等信息,可以查看端口的使用情况。
常用选项:
-an 显示所有监听的和非监听的端口;
-tuln 显示监听的 TCP 和 UDP 端口。
示例:netstat -an显示所有网络连接和端口信息;netstat -tuln显示监听的 TCP 和 UDP 端口。
ss
4. ss :类似于 netstat,用于查看套接字统计信息,可以更快速地显示端口的使用情况。
常用选项:
-antlp 显示所有监听的 TCP 端口及其对应的进程信息;
-anu 显示所有监听的 UDP 端口。
示例:ss -antlp 显示所有监听的 TCP 端口及其对应的进程信息;ss -anu 显示所有监听的 UDP 端口。
lsof
5. 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
7. wget :从网络上下载文件。
示例:wget google.com下载 google.com 的网页内容;wget -O output.html google.com将下载的内容保存为 output.html文件。
ssh
8. 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
2. df:显示文件系统的磁盘使用情况。
常用选项:
-h 以人类可读的格式显示磁盘空间,如自动根据大小选择合适的单位。
示例:df -h显示文件系统的磁盘使用情况,包括每个文件系统的总空间、已用空间、可用空间等。
du
3. du:显示文件或目录的磁盘使用情况。
常用选项:
-h 以人类可读的格式显示磁盘空间;
-s 仅显示总计。
示例:du -h /home/user显示 /home/user目录及其子目录的磁盘使用情况;du -sh /home/user仅显示 /home/user目录的总计磁盘使用情况。
free
4. 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++ -Wall main.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++ -pg main.cpp -o myprogram添加性能分析代码。
-v :显示编译器版本信息和编译过程的详细信息。
示例:g++ -v显示编译器版本信息。