linux常用命令

/images/all/linux_fiolder.jpg
图片来自菜鸟教程
注意
本文所有内容都基于ubuntu20.04发行版,不同发行版可能略有不同

下面介绍几个常用的目录

  • /: 根目录
  • ~: 用户对应的家目录,root用户对应于/root,user用户对应于/home/user
  • root: root用户家目录
  • home: 普通用户主目录,存储各个用户的家目录,每个用户在该文件夹中有一个同名的目录
  • etc: 这个目录用来存放所有的系统管理所需要的配置文件和子目录
  • sbin: Superuser Binaries的简写,保存着root用户使用的系统管理程序
  • tmp: 系统存储临时文件的位置,所有用户都可以访问和写入
  • opt: 安装第三方软件存放的目录
  • usr: unix shared resources,保存各种共享文件和数据,以前还包含用户的家目录,现在被/home代替,
    • /usr/local: 手工安装的软件保存位置, 我们一般建议源码包软件安装在这个位置
    • /usr/bin: 系统用户使用的应用程序,如lscatgcc等命令
    • /usr/sbin: 超级用户使用的比较高级的管理程序和系统守护程序,如rebootshutdown命令
  • /var:用于存储动态数据,例如缓存、日志文件、软件运行过程中产生的文件等
    • /var/log: 保存各种日志文件
    • /var/wwwRPM包安装的Apache的网页主目录
注意
关于各文件夹的详细介绍请点此
(1) ctrl c: 取消命令,并且换行
(2) ctrl u: 清空本行命令
(3) tab键:可以补全命令和文件名,如果补全不了快速按两下tab键,可以显示备选选项
(4) ls: 列出当前目录下所有文件,蓝色的是文件夹,白色的是普通文件,绿色的是可执行文件
	-a: 显示所有文件及目录(包括隐藏文件和文件夹)
	-l: 显示更多内容,包括权限、拥有者、文件大小等
(5) pwd: 显示当前路径
(6) cd XXX: 进入XXX目录下, cd .. 返回上层目录, cd ../../ 返回上上层目录
(7) cp XXX YYY: 将XXX文件复制成YYY,XXX和YYY可以是一个路径
	cp -r XXX YYY: 复制XXX文件夹的内容到YYY文件夹中
(8) mkdir XXX: 创建目录XXX
	-p: 当路径中某些目录不存在时会自动创建
(9) rm XXX: 删除普通文件
	rm XXX -r: 删除文件夹
	rm -rf XXX: 强制删除该文件夹及其子文件夹、隐藏文件夹中的文件(慎用)
(10) mv XXX YYY: 将XXX文件移动到YYY,和cp命令一样,XXX和YYY可以是一个路径;当YYY不存在时相当于重命名
(11) touch XXX: 创建一个文件
(12) 复制文本
    windows/Linux下:Ctrl + insert
(13) 粘贴文本
    windows/Linux下:Shift + insert

默认使用Makefile中的规则构建

也可以指定构建自定义规则文件

make -f rules.txt

构建

sudo make clean # 清除上次构建的目标文件
sudo make # 重新构建

查看文件内容:

cat ~/.ssh/id_rsa.pub

清空1.txt内容:

cat /dev/null > 1.txt

1.txt的内容写入2.txt

cat 1.txt > 2.txt

1.txt的内容追加写入 2.txt

cat 1.txt >> 2.txt

1.txt2.txt追加写入3.txt

cat 1.txt 2.txt >> 3.txt
# 压缩为.tar.gz
# 压缩指定文件夹
tar zcvf test.tar.gz ~/files/
# 压缩当前文件夹中的文件
tar zcvf test.tar.gz *

# 解压.tar.gz
tar zxvf test.tar.gz

# 查看压缩包中的文件
tar -tf test.tar.gz

# 压缩为test.tar.xz
# 1.压缩为tar文件
tar cvf test.tar ./files
# 2.压缩为.tar.xz文件
xz -z test.tar

# 解压.tar.xz文件
# 1.先解压.xz
xz -d test.tar.xz
# 2.再解压.tar
tar -xvf test.tar

# 压缩为.zip
# 压缩指定文件夹
zip -p -r test.zip ./files
# 压缩当前文件夹中的文件
zip -p -r test.zip *

# 解压zip
unzip test.zip

# 如果先要在.tar.gz中追加文件,必须按下面这么压缩
tar -cvf test.tar.gz  a.txt
# 追加文件b.txt
tar -cvf test.tar.gz  b.txt

对于一个文件来说,用户可以分为三类:

  • 文件的拥有者 - user
  • 文件的拥有者所在用户组 的其他成员 - group
  • 拥有者用户组 成员以外的其他用户 - others

linux的文件操作权限包括读、写、可执行,对应字母为r、w、x

/images/all/file_permission.png
一图了解linux文件权限
# 第一种方式:+、-、=变更权限
# u:所有者    g:用户组    o:其他人    a:所有人(u、g、o总和)
chmod u=rwx,g=rx file         # 表示该文件者拥有读、写、执行权限,同一用户组拥有读、执行权限,其他人未设置拥有之前的权限
chmod g+w file                # 表示该文件在原权限上添加同一用户组可写权限
chmod a-x file                # 表示该文件在原权限上取消所有人的执行权限
chmod +x file                 # 表示该文件同时给所有人加上可执行权限
# 第二种方式:通过数字变更权限
# r=4    w=2    x=1    -=0    如:rwx=4+2+1=7
chmod 755 file                # 相当于chmod u=rwx,g=rx,o=rx file

将文件或文件夹的拥有者改为指定的用户或组(或者同时修改)

一般情况下只有该文件的拥有者或者所属组的用户才能进行编辑(除非你设置了所有人可以编辑)

chmod owner:group a.txt # 修改某个文件
chown -R owner:group /var/www/blog/ # 将/var/www/blog/文件夹下的所有者修改为group下的owner用户所有

更改文件所在组

# 修改文件所属用户组
chgrp [-R] 用户组名称 文件或目录

文本搜索命令:查找文件中符合条件的字符串

语法: grep [模式] [选项] [文件]

模式支持正则匹配

常见选项

选项 作用
-i 忽略字母大小写
-v 输出不匹配行
-n 输出匹配结果的行号
-A numA-B numB 输出匹配结果的后numA行和前numB
-r 递归搜索某个文件夹中文件是否包含目标字符串
-l 显示包含目标字符串的文件名称
-E 使用拓展正则表达式
-G 使用基本正则表达式
-P 使用Perl正则表达式
-o 只查看匹配结果
ps -ef | grep sshd # 查询ssh进程
grep '^h' -i -n a.txt  # 输出以h开头的行(不区分大小写)
grep '[0-9]$' -n a.txt  # 输出以数字结尾的行
grep 'he' -i -h a.txt # 搜索字符串"he"所在行
grep '[0-9]$' -v a.txt # 输出非数字结尾的行
ls -l | grep *.cpp # 查询当前文件夹是否存在.cpp后缀文件
ls -l | egrep '*.c$' # 查询当前文件夹是否存在.c后缀文件

删除某个用户及其家目录前需要先要杀掉该用户的所有进程并切换到其他用户

sudo userdel -r username

查看命令的帮助文档,如man ls

  • G: 跳到末尾
  • g: 跳到开头
  • y:上一行
  • 回车: 下一行
  • 空格: 下一页
  • b: 上一页
  • q:退出

1.less: 分页查看文件内容

  • G: 跳到末尾
  • g: 跳到开头
  • y:上一行
  • 回车: 下一行
  • 空格: 下一页
  • b: 上一页
  • q:退出

2.head: 查看文件的前几行(默认为10行)

  • head -n 5 filename: 查看文件的前5行

3.tail: 查看文件的后几行(默认为10行)

  • tail -n 5 filename: 查看文件的后5行
  • ctrl + a: 光标移动到行首
  • ctrl + e: 光标移动到行尾
  • ctrl + u: 清空本行的命令
  • ctrl + k: 从光标所在位置删除到行尾
  • Ctrl + L :清空屏幕
  • Ctrl + insert:复制
  • Shift + insert : 粘贴
  • ctrl + shift + t: 新开一个shelltab
  • ctrl + shift + n: 新开一个shell窗口

root权限

lsof -i:端口号   # 查看端口占用情况
netstat -tunlp | grep 端口号 # 查看端口占用情况
kill -9 PID # 根据PID杀死进程

1.top:查看所有进程的信息(Linux 的任务管理器)

  • 打开后,输入 M:按使用内存排序

  • 打开后,输入 P:按使用 CPU 排序

  • 打开后,输入 q:退出

2.df -h:查看硬盘使用情况

3.free -h:查看内存使用情况

4.du -sh:查看当前目录占用的硬盘空间

5.ps aux:查看所有进程

6.kill -9 pid:杀死编号为 pid 的进程

7.netstat -nt:查看所有网络连接

8.w:列出当前登陆的用户

sudo shutdown -h 10 # 10分钟后关机
sudo shutdown -h 20:00 # 20:00关机
sudo shutdown -h now # 立即关机
sudo shutdown -r now # 重启
sudo shutdown -c # 取消关机任务
sudo reboot # 重启,和 sudo shutdown -r now 相同作用

相关文章