基础命令
date
列出当前日期cal
列出当前日历cd -
打开先前目录cd ~username/
打开用户目录ls
查看当前目录下的文件信息file
查看某一文件的具体信息
操作文件与目录
cp
复制文件或目录mv
移动或重命名文件或目录mkdir
创建目录rm
移除文件或目录ln
创建硬链接或符号链接
TIP
硬链接可以看作文件复制(且共享同一地址),修改、删除等操作互不影响。
而软连接则是看作快捷方式,当删除快捷方式时不受影响,删除源文件时,快捷方式则会受影响。
查看命令信息
所谓命令不外乎以下 4
种情况:
- 可执行程序。譬如
nginx
npm
等等。 - shell内置命令。譬如
cd
cp
等等。 - shell函数。
shell
函数是合并到环境变量中的小型shell
脚本。 - alias命令。相当于自定义命令。
type
查看命令类型which
查看可执行程序的位置man
显示程序的手册页(man page
)alias
创建自定义命令
重定向
在执行 linux
命令行时,在键盘上输入命令,然后结果输出到屏幕上。譬如:
ls -l
在这个过程中,标准输入 standard input
来源是键盘,标准输出 standard output
目标是屏幕。
如果我们想要改变输出结果的目标,那么可以使用 >
重定向符号。
ls -l > ls-output.txt
>
符号是从头写入,如果想要从尾追加的话,可以使用 >>
符号。
ls -l >> ls-output.txt
假设在 linux
命令行执行过程中,出现标准错误。那么可以利用 2>
符号将标准错误输出到指定目标:
ls -l 2> ls-error.txt
如果想要将标准输出和标准错误,统一输出到指定目标,那么可以使用 &>
符号:
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 + Y | 把 kill-ring 缓冲区中的文本粘贴到光标位置 |
历史命令
bash
默认会保存用户最近使用过的 500
个命令。
可使用 history
命令查看:
history
打印结果会携带 id
。可以使用 !id
来访问指定历史命令:
10318* whatis nginx
!10318
权限
linux
系统将权限角色划分为当前用户、当前用户所在组以及其他用户。
文件模式分类
文件模式分为读取、修改以及执行。
查看某一文件的可用模式权限,可以使用 ls -l
指令,譬如:
ls -l foo.txt
打印结果可能如下:
-rw-r--r-- 1 user staff 5 5 28 18:49 foo.txt
其中第一列标识的即是文件相关权限。共 10
位。
其中第一位表示文件类型,后九位分别表示文件 所有者、文件所属群组以及其他所有用户对该文件的读取、写入和执行权限。
文件类型一览:
属性 | 文件类型 |
---|---|
- | 普通文件 |
d | 目录文件 |
l | 符号链接。注意对于符号链接文件,剩下的文件属性始终是 rwxrwxrwx ,它是个伪属性值。符号链接指向的文件的属性才是真正的文件属性。 |
c | 字符设备文件。该文件类型表示以字节流形式处理数据的设备,如终端或调制解调器 |
b | 块设备文件。该文件类型表示以数据块方式处理数据的设备,如硬盘驱动或者光盘驱动 |
关于 r
、w
和 x
模式的解释如下:
属性 | 文件 | 目录 |
---|---|---|
r | 允许打开和读取文件 | 如果设置了执行权限,那么允许列出目录下的内容 |
w | 允许写入或者截短文件;如果也设置了执行 权限,那么目录中的文件允许被创建、被删除以及被重命名 | 但是该权限不允许重命名或者删除文件。是否能重命名和删除文件由目录权限决定 |
x | 允许把文件当作程序一样来执行。用脚本语言写的程序文件必须被设置为可读,以便能 被执行 | 允许进入目录下,例如 cd directory |
修改文件模式
修改文件模式可以使用 chmod
命令,即 change mode
。
该命令支持两种表示法,八进制数字表示法以及符号表示法。
八进制数字表示法
rwx
一共三位,单个位上各存在两种情况,譬如 -/r
、-/w
、-/x
。
根据概率论可知,组合共有 2*2*2
即 8
种。
因此,文件模式,可以利用八进制进行表示:
八进制 | 二进制 | 文件模式 |
---|---|---|
0 | 000 | --- |
1 | 001 | --x |
2 | 010 | -w- |
3 | 011 | -wx |
4 | 100 | r-- |
5 | 101 | r-x |
6 | 110 | rw- |
7 | 111 | rwx |
同时使用 3
位八进制数字,我们就可以设置文件所有者、组成员和其他所有用户的文件模式。
chmod 600 foo.tx
符号表示法
符号表示法分为三部分:
- 更改会影响谁;分为
u
、g
、o
以及a
。 - 要执行哪个操作;分为
+
、-
、=
。 - 要设置哪种权限;分为
r
、w
、x
。
符号 | 含义 |
---|---|
u | user 的简写,表示文件或者目录的所有者 |
g | group 的简写,表示文件所属群组 |
o | others 的简写,表示其他所有用户 |
a | all 的简写,是 u 、 g 和 o 三者的组合 |
TIP
如果上述选项在命令中都省略的话,那么等同于 all
选项。
符号 | 含义 |
---|---|
+ | 添加权限 |
- | 删除权限 |
= | 只有指定的权限可用,其他所有的权限都被删除 |
譬如以下:
# 给所有用户添加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
中,环境数据大致分为以下几种:
shell
变量- 环境变量
alias
别名和shell
函数
环境相关的命令如下:
set
显示所有shell
变量和环境变量;printenv
显示所有环境变量或者显示某一环境变量;echo $[VAR]
显示某一环境变量。
# 显示所有环境变量
printenv
# 显示单个环境变量
printenv USER
# 显示单个环境变量
echo $HOME
定义环境变量
shell
会话分为两种:
login shell
会话;non-login shell
会话。
login shell
会话意味着只会在登录完成后执行一次。对应执行文件有 ~/.bash_profile
。
non-login shell
会话则是每次登录或打开新 shell
窗口时都会执行。对应执行文件有 ~/.bashrc
。
所以一般优先把变量设置在 .bashrc
里面,这样我们重新打开 shell
会话时,变量就会生效。
如果定义在 .bash_profile
,那么可以利用 source ~/.bash_profile
重启生效。
# ~/.bashrc
export PATH="$PATH:$HOME/.rvm/bin"
alias list="ls -l"