起步
1 2 3 4 5 6
   | 命令行前的 [root@localhost ~]
  root:        当前登录用户 localhost:   主机名 ~:           当前所在目录(家目录)
 
   | 
 
Linux 文件权限
1 2 3 4 5 6 7
   | -rw-r--r-- (其中, r: 读, w: 写, x: 执行) 共10位
  第1位:     文件类型(共7种, 常用3种 -: 文件, d: 目录, l: 快捷方式) 第2~4位:   所有者(u)权限 第5~7位:   所属组(g)权限 第8~10位:  其他人(o)权限
   | 
 
Shell 和 Bash
1. 常用快捷键
ctrl+c    强制终止当前命令; 
ctrl+l    清屏; 
ctrl+a    光标移动到命令行首; 
ctrl+e    光标移动到命令行尾; 
ctrl+u    从光标所在位置删除到行首; 
ctrl+z    把命令放入后台; 
ctrl+r    在历史命令中 搜索; 
Tab 自动补全目录或者命令 
2. 历史命令
<选项>:
- -c:清空历史命令;
 
- -w:把缓存中的历史命令写入历史命令保存文件   /root/.bash_history
 
cat .bash_history 可以查看这个文件,默认关机时会执行 history -w 命令;
历史命令默认保存 1000 条,可以在环境变量配置文件 /etc/profile 中进行修改,修改 HISTSIZE 的值;
!n   可以重复执行 history 里第 n 条命令;
!!   重复执行上一条命令;
!字符串   重复执行最后一条已该字符串开头的命令;
3. 输出重定向(很有用)
date > date.log   将时间信息输入到 date.log 文件中,而不是显示输出;
date >> date.log 将时间信息追加到  date.log 文件中,而 > 是覆盖;
date &>> date.log 同时保存正确和错误信息,如果有错误信息;
date >> date.log 2>> error.log 保存正确信息到 date.log,保存错误信息到 error.log;
4. 输入重定向
<选项>:
- -c:统计字节数;
 
- -w:统计单词数;
 
- -l:   统计行数;
 
例如:wc < date.log 或者直接 wc date.log 统计 date.log 文件里的字节数、单词数、行数;
5. 管道符
多命令顺序执行:
1 2 3
   | 命令1 ;  命令2    多个命令顺序执行,命令之间没有任何逻辑联系 命令1 && 命令2    逻辑与,只有当命令1正确执行,则执行命令2 命令1 || 命令2    逻辑或,只有当命令1执行不正确,才执行命令2
   | 
 
管道符:(命令 1 和 2 有数据传递)
6. 通配符
1 2 3 4 5
   | ?      :匹配一个任意字符; *      :匹配0个或任意多个任意字符,也就是可以匹配任何内容; [ ]    :匹配中括号内的任意一个字符,例如:[abc] 代表一定匹配一个字符,或者是a、或者是b、或者是c; [ - ]  :匹配中括号内的任意一个字符,- 代表一个范围,例如:[a-z] 代表匹配一个小写字母; [ ^ ]  :逻辑非,表示匹配不是中括号内的一个字符,例如:[^0-9] 代表匹配一个不是数字的字符;
   | 
 
7. 第一个脚本
a. 首先新建并打开一个文件
1 2 3
   | vim hello.sh
  vi hello.sh
   | 
 
b. 然后编辑内容
c. 脚本执行
1 2 3 4 5 6 7 8 9 10 11
   |  chmod 755 hello.sh
 
  ./hello.sh
 
  /root/hello.sh
 
  bash hello.sh
 
  | 
 
目录切换与查询
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
   |  cd ~
  cd
 
  cd -
 
  cd ..
 
  cd .
 
  cd /
 
  pwd
 
  | 
 
补充:Linux 目录说明
- 根目录下的 
bin 和 sbin、usr 目录下的 bin 和 sbin,这四个目录都是用来保存系统命令的;
bin 下的命令所用用户都可以执行,而 sbin 下的命令只有超级用户才可以执行。 
dev 目录内是一些硬件文件,没事别动。 
etc 目录下是系统的默认配置文件。 
lib 目录下是函数库,用的时候可以调用,不用就没必要调用,这样可以避免 Linux 变得臃肿。 
proc 和 sys 目录不能直接操作,这两个目录保存的是内存的挂载点,也就是内存的盘符。 
tmp 是临时目录。 
var 保存系统的可变文档目录。 
显示目录下的文件
<选项>:
-a   显示所有文件,包括隐藏文件 
-l   显示详细信息(ll = ls -l) 
-d   查看目录属性 
-h   人性化显示文件大小 
-i    显示 inode,查看 id 号 
获取帮助
查看用户登录信息
1 2 3 4 5 6 7 8 9 10 11
   |  w
 
  who
 
  last
 
  lastlog
 
  | 
 
文件操作
创建目录
1 2 3 4
   | mkdir <目录名>
 
  mkdir -p xiaomi/redmi
   | 
 
目录复制
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
   |  cp <选项> <原文件或目录> <目标目录>
 
  cp -p <原文件或目录> <目标目录>
 
  cp -d <原文件或目录> <目标目录>
 
  cp -r <原文件或目录> <目标目录>
 
  cp -a <原文件或目录> <目标目录>
 
  cp -rf folder1/* folder2
 
  | 
 
目录移动
目录重命名
文件/目录删除
1 2 3 4 5
   |  rm <文件名>
 
  rm -rf <目录名>
 
  | 
 
参考:
- linux 下文件夹的创建、复制、剪切、重命名、清空和删除命令
 
创建软链
1 2 3 4 5 6 7 8
   |  ln -s <原文件> <目标文件>
 
  ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx
 
  rm 软链
 
  | 
 
搜索文件/命令/字符串
搜索文件
locate
find
搜索条件:
-name: 按文件名索搜,只显示文件名一模一样的文件 
-iname: 不区分大小写 
通配符:(放在搜索格式结尾)
*: 匹配任意内容 
?: 匹配任意一个字符 
[]: 匹配任意一个中括号内的字符 
-user <用户名>: 按照所有者搜索 
-nouser: 查找没有所有者的文件 
-mtime <num>: 修改文件内容时间 
-atime <num>: 文件访问时间 
-ctime <num>: 改变文件属性时间
-10: 10 天内修改的文件 
10: 10 天当天修改的文件 
+10: 10 天前修改的文件; 
 
-size <num>: 按文件大小查找
-10k: 小于 10KB 的文件 /  -10M:小于 10MB 的文件(注意大小写) 
10k: 等于 10KB 的文件 
+10k: 大于 10KB 的文件; 
 
-inum <节点数>: 按 i 节点查找;(ls -i 查看文件的 i 节点) 
例子:
find /etc -size +20k -a -size -50k -exec ls -lh {} \
解释:
- 查找 
/etc 目录下大于 20KB 小于 50KB 的文件, 
-a: and   逻辑与,两个条件都满足, 
-o: or 逻辑或,两个条件满足一个即可, 
-exec <命令> {} \: 对搜索结果执行操作; 
搜索命令
whereis
选项:
-b:   只查找可执行文件; 
-m: 只查找帮助文件; 
which
搜索字符串
选项:
-i:   忽略大小写; 
-v: 排除指定字符串,也就是取反; 
压缩与解压
.zip 格式压缩(可以压缩目录和文件)
1 2 3 4 5 6 7 8
   |  zip <压缩文件名> <原文件>
 
  zip -r <压缩文件名> <原文件夹>
 
  unzip <原文件>
 
  | 
 
.gz 格式压缩(可以压缩目录和文件)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
   |  gzip <原文件>
 
  gzip -c <原文件> > <压缩文件>
  gzip -c meizu > meizu.gz
 
  gzip -r <目录>
 
  gzip -d <压缩文件名>
 
  gunzip <压缩文件名>
 
  | 
 
.bz2 格式压缩(只可以压缩文件)
1 2 3 4 5 6 7 8 9 10 11
   |  bzip2 <原文件>
 
  bzip2 -k <原文件>
 
  bzip2 -d <压缩文件名>
 
  bunzip2 <压缩文件名>
 
  | 
 
打包命令 tar(会保留原文件)
1 2 3 4 5 6 7 8 9
   |  tar -cvf <打包文件名> <原文件>
  tar -cfg meizu.tar meizu
 
  tar -xvf <打包文件名>
  tar -xvf meizu.tar
 
  | 
 
选项:
-c:   打包 
-v:   显示过程 
-f:   指定打包后的文件名 
-x:   解打包 
.tar.gz 格式压缩(可以压缩目录和文件)(会保留原文件)
其实 .tar.gz 格式是先打包为 .tar 格式,再压缩为 .gz 格式。
1 2 3 4 5
   |  tar -zcvf <压缩包名.tar.gz> <原文件> (<另一个原文件>)
 
  tar -zxvf <压缩包名.tar.gz>
 
  | 
 
选项:
-c:   压缩为 .tar.gz 格式 
-x:   解压缩 .tar.gz 格式的文件 
.tar.bz2 格式压缩(可以压缩目录和文件)(会保留原文件)
其实 .tar.bz2 格式是先打包为 .tar 格式,再压缩为 .bz2 格式。
1 2 3 4 5 6 7 8 9 10 11 12 13
   |  tar -jcvf <压缩包名.tar.bz2> <原文件>
 
  tar -jxvf <压缩包名.tar.bz2>
 
  tar -jxvf <压缩包名.tar.bz2> -C <其他目录>
  tar -jxvf meizu.tar.bz2 -C /tmp/;
 
  tar -jtvf <压缩包名.tar.bz2>
 
  | 
 
选项:
-j:   压缩为 .tar.bz2 格式 
-x:   解压缩 .tar.bz2 格式的文件 
-t:   查看里面的内容 
查询和挂载
查询命令
挂载命令
1
   | mount <-t 文件系统> <-o 特殊选项> <设备文件名> <挂载点>
   | 
 
<选项>:
-t 文件系统:加入文件系统类型来指定挂在的类型,可以 ext3、ext4、iso9660 等文件系统; 
-o 特殊选项:可以制定挂载的额外选项; 
挂载光盘
1 2 3 4 5 6 7 8 9 10 11 12 13
   |  mkdir /mnt/cdrom
 
  mount -t iso9660 /dev/sr0 /mnt/cdrom
 
 
  mount -t iso9660 /dev/cdrom /mnt/cdrom
 
 
  mount /dev/sr0 /mnt/cdrom
 
  | 
 
卸载光盘命令(挂载后必须卸载)
1 2 3 4 5 6 7 8
   | umount <设备文件名或挂载点>
 
  umount /dev/sr0
 
 
  umount /mnt/cdrom
   | 
 
挂载 U 盘
1 2 3 4 5 6 7 8
   |  fdisk -l
 
  mkdir /mnt/usb
 
  mount -t vfat /dev/ <U盘设备文件名> /mnt/usb
 
  | 
 
关机 / 重启 / 退出登录
关机命令
1 2 3 4 5 6 7 8 9 10 11
   |  shutdown -h now
 
  halt
 
  poweroff
 
  init 0
 
  | 
 
重启命令
1 2 3 4 5 6 7
   | shutdown -r now
 
  reboot
 
  init 6
   | 
 
退出登录命令
附录:
Systemd 常用命令:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
   |  systemctl start <单元>
 
  systemctl stop <单元>
 
  systemctl restart <单元>
 
  systemctl reload <单元>
 
  systemctl status <单元>
 
  systemctl is-enabled <单元>
 
  systemctl enable <单元>
 
  systemctl disable <单元>
 
  | 
 
参考:
- systemd-ArchWiki
 
- Systemd 入门教程:命令篇
 
Nginx 常用命令:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
   | 
  nginx -c /etc/nginx/nginx.conf
  nginx
 
 
  nginx -s stop
  nginx -s quit
  pkill -9 nginx
 
  nginx -s reload
 
  nginx -t
 
  | 
 
参考:
- systemd-ArchWiki
 
- Systemd 入门教程:命令篇
 
firewalld 常用命令:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
   |  firewall-cmd --version
 
  firewall-cmd --state
 
  firewall-cmd --list-ports
 
  firewall-cmd --zone=public --list-ports
 
  systemctl start firewalld.service
 
  systemctl restart firewalld.service
 
  systemctl enable firewalld.service
 
  systemctl disable firewalld.service
 
 
 
 
  firewall-cmd --zone=public --add-port=80/tcp --permanent
 
  firewall-cmd --permanent --zone=public --add-service=https
 
  firewall-cmd --zone=public --add-port=443/tcp --permanent
 
  firewall-cmd --reload
 
  |