Skip to content

基础命令

  • date 列出当前日期
  • cal 列出当前日历
  • cd - 打开先前目录
  • cd ~username/ 打开用户目录
  • ls 查看当前目录下的文件信息
  • file 查看某一文件的具体信息

操作文件与目录

  • cp 复制文件或目录
  • mv 移动或重命名文件或目录
  • mkdir 创建目录
  • rm 移除文件或目录
  • ln 创建硬链接或符号链接

TIP

硬链接可以看作文件复制(且共享同一地址),修改、删除等操作互不影响。

而软连接则是看作快捷方式,当删除快捷方式时不受影响,删除源文件时,快捷方式则会受影响。

查看命令信息

所谓命令不外乎以下 4 种情况:

  1. 可执行程序。譬如 nginx npm 等等。
  2. shell内置命令。譬如 cd cp 等等。
  3. shell函数shell 函数是合并到环境变量中的小型 shell 脚本。
  4. alias命令。相当于自定义命令。
  • type 查看命令类型
  • which 查看可执行程序的位置
  • man 显示程序的手册页(man page
  • alias 创建自定义命令

重定向

在执行 linux 命令行时,在键盘上输入命令,然后结果输出到屏幕上。譬如:

shell
ls -l

在这个过程中,标准输入 standard input 来源是键盘,标准输出 standard output 目标是屏幕。

如果我们想要改变输出结果的目标,那么可以使用 > 重定向符号。

shell
ls -l > ls-output.txt

> 符号是从头写入,如果想要从尾追加的话,可以使用 >> 符号。

shell
ls -l >> ls-output.txt

假设在 linux 命令行执行过程中,出现标准错误。那么可以利用 2> 符号将标准错误输出到指定目标:

shell
ls -l 2> ls-error.txt

如果想要将标准输出和标准错误,统一输出到指定目标,那么可以使用 &> 符号:

shell
ls -l &> ls-result.txt
  • cat 意为 concat。它可以将文件或者普通文本内容连接读取。
  • sort 将结果排序。
  • uniq 将结果去重。
  • grep 以给定正则匹配结果(Global regular expression
  • head 打印结果头部的十行。可利用 -n 参数额外指定行数。
  • tail 打印结果尾部的十行。可利用 -n 参数额外指定行数。

键盘技巧

光标移动

组合键作用
Ctrl + A移动光标到行首
Ctrl + E移动光标到行尾
Ctrl + F光标向前移动一个字符,同右箭头
Ctrl + B光标向后移动一个字符,同左箭头
Ctrl + L清屏并把光标移动到左上角。clear 命令

修改文本

组合键作用
Ctrl + D删除光标处的字符
Ctrl + T光标处的字符和它前面的字符调换位置

剪切粘贴

  • 剪切 killing
  • 粘贴 yanking
组合键作用
Ctrl + K剪切从光标到行尾的文本
Ctrl + U剪切从光标到行首的文本
Ctrl + Ykill-ring 缓冲区中的文本粘贴到光标位置

历史命令

bash 默认会保存用户最近使用过的 500 个命令。

可使用 history 命令查看:

shell
history

打印结果会携带 id。可以使用 !id 来访问指定历史命令:

shell
10318* whatis nginx
shell
!10318

权限

linux 系统将权限角色划分为当前用户当前用户所在组以及其他用户

文件模式分类

文件模式分为读取修改以及执行

查看某一文件的可用模式权限,可以使用 ls -l 指令,譬如:

shell
ls -l foo.txt

打印结果可能如下:

shell
-rw-r--r--  1 user  staff  5  5 28 18:49 foo.txt

其中第一列标识的即是文件相关权限。共 10 位。

其中第一位表示文件类型后九位分别表示文件 所有者、文件所属群组以及其他所有用户对该文件的读取、写入和执行权限

文件类型一览:

属性文件类型
-普通文件
d目录文件
l符号链接。注意对于符号链接文件,剩下的文件属性始终是 rwxrwxrwx,它是个伪属性值符号链接指向的文件的属性才是真正的文件属性
c字符设备文件。该文件类型表示以字节流形式处理数据的设备,如终端或调制解调器
b块设备文件。该文件类型表示以数据块方式处理数据的设备,如硬盘驱动或者光盘驱动

关于 rwx 模式的解释如下:

属性文件目录
r允许打开和读取文件如果设置了执行权限,那么允许列出目录下的内容
w允许写入或者截短文件;如果也设置了执行 权限,那么目录中的文件允许被创建、被删除以及被重命名但是该权限不允许重命名或者删除文件。是否能重命名和删除文件由目录权限决定
x允许把文件当作程序一样来执行。用脚本语言写的程序文件必须被设置为可读,以便能 被执行允许进入目录下,例如 cd directory

修改文件模式

修改文件模式可以使用 chmod 命令,即 change mode

该命令支持两种表示法,八进制数字表示法以及符号表示法

八进制数字表示法

rwx 一共三位,单个位上各存在两种情况,譬如 -/r-/w-/x

根据概率论可知,组合共有 2*2*28 种。

因此,文件模式,可以利用八进制进行表示:

八进制二进制文件模式
0000---
1001--x
2010-w-
3011-wx
4100r--
5101r-x
6110rw-
7111rwx

同时使用 3八进制数字,我们就可以设置文件所有者、组成员和其他所有用户的文件模式。

shell
chmod 600 foo.tx

符号表示法

符号表示法分为三部分:

  1. 更改会影响谁;分为 ugo 以及 a
  2. 要执行哪个操作;分为 +-=
  3. 要设置哪种权限;分为 rwx
符号含义
uuser 的简写,表示文件或者目录的所有者
ggroup 的简写,表示文件所属群组
oothers的简写,表示其他所有用户
aall 的简写,是 ugo 三者的组合

TIP

如果上述选项在命令中都省略的话,那么等同于 all 选项。

符号含义
+添加权限
-删除权限
=只有指定的权限可用,其他所有的权限都被删除

譬如以下:

shell
# 给所有用户添加foo.txt的执行权限
chmod +x foo.txt

# 给当前用户添加foo.txt的执行权限
chmod u+x foo.txt

更改身份

  • sudo 以管理员身份运行
  • chown 更改文件所有者和所属群组。chown [owner]:[[group]] file...

更改用户密码

  • passwd [user]

如果拥有超级用户权限,那么可以利用 passwd [user] 为其他用户设置权限。

如果只是当前用户修改密码,那么可以直接使用 passwd 命令即可。

进程

  • ps 查看进程列表。
  • kill -[signal] pid 可以发送不同的信号给目标进程,来实现不同的操作,如果不指定信号,默认会发送 TERM 信号(15),即终止 terminal

TIP

signal 的数量很多,可以利用 kill -l 查看完整列表数据。

环境

环境变量

SHELL 中,环境数据大致分为以下几种:

  1. shell 变量
  2. 环境变量
  3. alias 别名和 shell 函数

环境相关的命令如下:

  • set 显示所有 shell 变量和环境变量;
  • printenv 显示所有环境变量或者显示某一环境变量;
  • echo $[VAR] 显示某一环境变量。
shell
# 显示所有环境变量
printenv

# 显示单个环境变量
printenv USER

# 显示单个环境变量
echo $HOME

定义环境变量

shell 会话分为两种:

  1. login shell 会话;
  2. non-login shell 会话。

login shell 会话意味着只会在登录完成后执行一次。对应执行文件有 ~/.bash_profile

non-login shell 会话则是每次登录或打开新 shell 窗口时都会执行。对应执行文件有 ~/.bashrc

所以一般优先把变量设置在 .bashrc 里面,这样我们重新打开 shell 会话时,变量就会生效。

如果定义在 .bash_profile,那么可以利用 source ~/.bash_profile 重启生效。

shell
# ~/.bashrc
export PATH="$PATH:$HOME/.rvm/bin"

alias list="ls -l"