Unix和Linux作为操作系统,有许多命令可供我们使用。下面列出了Unix/Linux中最常用的50个命令的攻略,让你了解每个命令的用法和功能。
1. lsls
命令用于列出当前目录下的文件和子目录。以下是一些示例:
# 列出当前目录下的所有文件和文件夹
ls
# 列出当前目录下的所有文件和文件夹,并以详细列表形式显示
ls -l
# 列出当前目录下的所有文件和文件夹,并按照时间顺序排序
ls -t
2. cd
cd
命令用于进入指定的目录。以下是一些示例:
# 进入当前用户的主目录
cd ~
# 进入上一级目录
cd ..
# 进入指定的目录
cd /usr/local
3. pwd
pwd
命令用于显示当前工作目录的全路径。以下是一些示例:
# 显示当前工作目录的全路径
pwd
4. mkdir
mkdir
命令用于创建目录。以下是一些示例:
# 创建名为test的目录
mkdir test
# 创建名为test,并且包含多级子目录a/b/c的目录
mkdir -p test/a/b/c
5. rm
rm
命令用于删除文件和目录。以下是一些示例:
# 删除名为file.txt的文件
rm file.txt
# 删除名为test的目录及其所有文件和子目录
rm -rf test
6. mv
mv
命令用于移动文件或目录,也可用于重命名文件或目录。以下是一些示例:
# 将文件test.txt移动到目录/data下
mv test.txt /data
# 将目录test重命名为test2
mv test test2
7. cp
cp
命令用于复制文件或目录。以下是一些示例:
# 将文件file.txt复制到目录/data下
cp file.txt /data
# 将目录test复制到目录/data下,保留原来的文件和子目录
cp -r test /data
8. cat
cat
命令用于显示文件的内容。以下是一些示例:
# 显示文件file.txt的内容
cat file.txt
# 将文件file1和file2的内容合并,输出到标准输出
cat file1 file2
9. less
less
命令用于分页显示文件的内容。以下是一些示例:
# 显示文件file.txt的内容,支持分页
less file.txt
# 显示文件file.txt的最后10行内容,支持分页
tail -n 10 file.txt | less
10. head
head
命令用于显示文件的开头部分内容。以下是一些示例:
# 显示文件file.txt的前10行内容
head -n 10 file.txt
# 显示目录当前目录下所有文件的开始部分内容
head *
11. tail
tail
命令用于显示文件的结尾部分内容。以下是一些示例:
# 显示文件file.txt的最后10行内容
tail -n 10 file.txt
# 实时显示文件file.log的最后10行内容
tail -f file.log
12. grep
grep
命令用于搜索指定文本。以下是一些示例:
# 在文件file.txt中搜索包含test的行
grep 'test' file.txt
# 在所有.cpp文件中搜索包含test的行
grep 'test' *.cpp
13. find
find
命令用于搜索指定目录下的文件或目录。以下是一些示例:
# 在当前目录下搜索名为file.txt的文件
find . -name file.txt
# 在当前目录下搜索大于10MB的文件
find . -size +10M
14. tar
tar
命令用于打包和压缩文件和目录。以下是一些示例:
# 将文件file1和file2打包成tar文件,命名为archive.tar
tar -cvf archive.tar file1 file2
# 将目录test打包成tar文件,并以gzip压缩,命名为archive.tar.gz
tar -czvf archive.tar.gz test
15. gzip
gzip
命令用于压缩文件。以下是一些示例:
# 压缩文件file.txt,生成文件file.txt.gz
gzip file.txt
# 压缩目录test,生成文件test.tar.gz
tar -czvf test.tar test; gzip test.tar
16. gunzip
gunzip
命令用于解压缩gzip压缩文件。以下是一些示例:
# 解压缩文件file.txt.gz,生成文件file.txt
gunzip file.txt.gz
# 解压缩文件test.tar.gz,生成目录test
gunzip test.tar.gz; tar -xvf test.tar
17. ssh
ssh
命令用于远程连接到另一台计算机。以下是一些示例:
# 连接到remote-host计算机
ssh remote-host
# 连接到remote-host计算机,以root用户身份登录
ssh root@remote-host
18. scp
scp
命令用于在计算机之间复制文件。以下是一些示例:
# 复制文件file.txt到远程计算机remote-host的目录/data下
scp file.txt remote-host:/data
# 从远程计算机remote-host的目录/data中复制文件file.txt到本地
scp remote-host:/data/file.txt .
19. wget
wget
命令用于从网络上下载文件。以下是一些示例:
# 从网络上下载文件file.txt
wget http://example.com/file.txt
# 从网络上下载文件file.txt,并保存到指定目录/data下
wget -P /data http://example.com/file.txt
20. curl
curl
命令用于与网络协议交互,支持多种协议。以下是一些示例:
# 以GET方式请求URL
curl http://example.com
# 以POST方式请求URL,请求体为json格式
curl -H "Content-Type: application/json" -X POST -d '{"key": "value"}' http://example.com
21. ping
ping
命令用于测试计算机之间的网络连接。以下是一些示例:
# 测试与远程计算机remote-host之间的网络连接
ping remote-host
# 持续测试与远程计算机remote-host之间的网络连接,每秒发送一个数据包
ping -c 1000 -i 1 remote-host
22. top
top
命令用于动态显示进程信息。以下是一些示例:
# 显示系统中所有进程的信息和运行情况
top
# 显示特定进程的信息和运行情况
top -pid 1234
23. ps
ps
命令用于显示进程信息。以下是一些示例:
# 显示系统中所有进程的信息
ps -ef
# 显示特定进程的信息,以进程ID排序
ps -o pid,ppid,%cpu,%mem,time,args -p 12345
24. kill
kill
命令用于终止进程。以下是一些示例:
# 终止进程ID为1234的进程
kill 1234
# 终止名称为nginx的进程
pkill nginx
25. su
su
命令用于切换用户身份。以下是一些示例:
# 以root用户身份登录
su -
# 切换到用户john
su john
26. sudo
sudo
命令用于以其他用户身份执行命令。以下是一些示例:
# 以root用户身份执行命令
sudo command
# 以apache用户身份重新启动Apache服务
sudo service httpd restart
27. uname
uname
命令用于显示系统信息。以下是一些示例:
# 显示系统的内核名称
uname -s
# 显示系统的主机名
uname -n
28. uptime
uptime
命令用于显示系统运行时间和负载情况。以下是一些示例:
# 显示系统运行时间和负载情况
uptime
29. free
free
命令用于显示系统内存使用情况。以下是一些示例:
# 显示系统内存使用情况,以MB为单位
free -m
# 每隔1秒钟显示一次系统内存使用情况
watch -n 1 free -m
30. df
df
命令用于显示文件系统磁盘空间使用情况。以下是一些示例:
# 显示文件系统磁盘空间使用情况
df -h
# 显示指定文件系统的磁盘空间使用情况
df -h /dev/sda1
31. du
du
命令用于显示目录或文件的磁盘空间使用情况。以下是一些示例:
# 显示当前目录下所有子目录的大小
du -sh *
# 显示当前目录下所有子目录及其文件的大小,按升序排序
du -h --max-depth=1 | sort -h
32. netstat
netstat
命令用于显示网络连接,路由表和网络接口信息。以下是一些示例:
# 显示所有TCP连接
netstat -at
# 显示所有UDP连接
netstat -au
33. ifconfig
ifconfig
命令用于显示网络接口信息。以下是一些示例:
# 显示所有网络接口信息
ifconfig -a
# 显示指定网络接口信息
ifconfig eth0
34. route
route
命令用于显示和修改IP路由表。以下是一些示例:
# 显示当前系统的IP路由表
route -n
# 添加静态路由,将网段10.0.0.0/24通过网关192.168.1.1访问
route add -net 10.0.0.0/24 gw 192.168.1.1
35. iptables
iptables
命令用于配置Linux的网络地址转换服务。以下是一些示例:
# 允许来自192.168.1.0/24网段的所有流量通过
iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT
iptables -A OUTPUT -d 192.168.1.0/24 -j ACCEPT
36. crontab
crontab
命令用于创建定时任务。以下是一些示例:
# 显示当前用户的所有定时任务
crontab -l
# 编辑当前用户的定时任务
crontab -e
# 添加一个每五分钟执行一次的定时任务
*/5 * * * * command
37. date
date
命令用于显示系统时间和日期。以下是一些示例:
# 显示当前日期和时间
date
# 设置系统时间为2021年7月1日10时30分
date -s "20210701 10:30:00"
38. echo
echo
命令用于打印文本。以下是一些示例:
# 打印文本Hello World!
echo "Hello World!"
# 输出变量的值
name="John"; echo "My name is $name"
39. touch
touch
命令用于更改文件的访问和修改时间,也可用于创建新文件。以下是一些示例:
# 更改文件file.txt的访问和修改时间为当前时间
touch file.txt
# 创建名为file.txt的新文件
touch file.txt
40. chmod
chmod
命令用于更改文件或目录的访问权限。以下是一些示例:
# 将文件file.txt的所有者和组的读、写和执行权限设为可用,其他用户的权限设为只能读
chmod 755 file.txt
# 将目录test以及它的所有子目录和文件的所有者、组和其他用户的读、写和执行权限设为不可用
chmod -R 700 test
41. chown
chown
命令用于更改文件或目录的所有者和组。以下是一些示例:
# 将文件file.txt的所有者更改为john
chown john file.txt
# 将目录test以及它的所有子目录和文件的所有者更改为john,组更改为www
chown -R john:www test
42. useradd
useradd
命令用于创建新用户。以下是一些示例:
# 创建名为john的新用户
useradd john
# 创建新用户,同时指定用户ID和组ID
useradd -u 1001 -g 1001 john
43. userdel
userdel
命令用于删除用户。以下是一些示例:
# 删除名为john的用户
userdel john
# 删除用户及其所有文件
userdel -r john
44. groupadd
groupadd
命令用于创建新用户组。以下是一些示例:
# 创建名为test的新用户组
groupadd test
# 创建用户组,并指定组ID
groupadd -g 1001 test
45. groupdel
groupdel
命令用于删除用户组。以下是一些示例:
# 删除名为test的用户组
groupdel test
46. passwd
passwd
命令用于修改用户的密码。以下是一些示例:
# 修改当前用户的密码
passwd
# 修改名为john的用户的密码
passwd john
47. hostname
hostname
命令用于显示或设置主机名。以下是一些示例:
# 显示当前主机名
hostname
# 设置主机名为example.com
hostname example.com
48. whoami
whoami
命令用于显示当前登录的用户名。以下是一些示例:
# 显示当前登录的用户名
whoami
49. uname
uname
命令用于显示系统信息。以下是一些示例:
# 显示系统的内核名称
uname -s
# 显示系统的主机名
uname -n
50. history
history
命令用于显示最近使用的命令。以下是一些示例:
# 显示最近使用的命令
history
# 显示最近20条使用的命令
history 20
以上是Unix/Linux中最常用的50个命令的攻