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