# 1. 常用命令

# 重启网卡
1
2
systemctl restart network  
service network restart
# 用户切换
1
2
su hsy(普通用户)
su - (切换到root用户)
# 关机
1
2
3
4
5
halt  
shutdown -h now (立即关机)
shutdown -h +5(五分钟以后关机)
shutdown -c (取消关机)
init 0 (关机) ;init 6 (重启)
# 使用 ";" 一次输入多个命令
1
command1 ;  command2 ; command3
# 常用小技巧
  • 显示或操作命令历史列表
1
history
  • 补全路径

    • 文件或目录的首几个字母 + Tab
  • 显示上一条路径

    • Esc+. (点)

# 2. 操作文件和目录

# 删除文件
1
2
3
4
5
rm file 删除文件(可以不为空删除)
rm -f flie 强制删除
rm -r 目录名 递归删除目录(该目录下可以有其他文件,被一起删除)
rmdir 删除空目录

# 创建目录
1
2
3
4
mkdir--创建目录   
mkdir dir1创建一个目录
mkdir dir1 dir2 dir3 一次创建多个目录
mkdir -p dir1/dir2 递归生成目录dir1和dir2,即dir1为当前目录的子目录,dir2为dir1的子目录
# 复制文件和目录
1
2
3
cp item1 item2 将文件或目录item1复制到item2
cp -r 递归复制目录
cp -p 保留源文件的属性不变
# 移动和重命名文件
1
mv item1 item2 将文件或目录item1移动或重命名为item2
# 创建硬链接和链接符号
1
2
3
4
5
ln file link  创建硬链接   (就是为文件额外创建一个目录项)
a.硬链接不能引用目录,只能引用文件
b.硬链接不能跨物理设备
ln -s item link 创建链接符号 (item可以是文件和目录)
相当于用文本描述目标文件相对于符号链接的位置

# 3. 初步探索 Linux

# 使用 ls 命令之乐
1
2
3
4
5
6
.  (一个点) 表示在当前目录
ls 查看当前目录所包含的文件和子目录
ls -l 将输出结果改成长格式
ls -a 列出所有文件
ls -d 显示目录本身的属性,而非其内部的文件列表 (只显示目录本身)
ls -h 人性化显示容量信息,以K、M、G等单位表示文件大小。
# 使用 file 命令确定文件类型
1
file filename
# 使用 less 命令查看文本文件
  • 键 G 移动到文件末尾
  • 键 Q 退出 less 命令
# 通配符
1
2
3
4
5
6
7
*  匹配任意多个字符
ls -d /etc/*conf* 显示/etc目录下所有名字中包括“conf”的文件或目录。
ls -d /etc/pa* 列出/etc目录下所有以“pa”开头的文件或目录,j加上 -d 只显示目录本身,不显示其内容
? 匹配任意单个字符
ls -lh /dev/sa? 以长格式列出/dev目录中所有以“sd”开头并且文件名只有3个字符的文件信息。(sa给定,第三个字符任意(即?))
通配符“[ ]”可以匹配指定范围内的任意单个字符。
ls /dev/[a-c]*列出/dev/目录中以“a”、“b”、“c”开头的所有文件。
# 时间戳
  • 访问时间 (access time:atime): 上一次文件访问时间;
  • 内容修改时间 (modified time:mtime): 上次文件内容修改时间;
  • 元信息改变时间 (change time:ctime): 上次文件属性改变时间;
1
stat -[选项] [文件]   查看文件的元信息

# 4. 和命令打交道

# 识别命令
1
2
3
4
显示命令类型
type command(要检查的文件名)
显示可执行文件的位置
which command
# 获取命令文档
1
2
3
4
5
6
7
8
9
10
11
12
help--获取Shell内建命令的帮助信息
例如:help cd
--help 显示用法信息
mkdir --help
man 显示命令的手册页
例如 man ls
man section search_term ;section指明节号
man -k 根据关键字查找
显示适合的命令清单(根据关键字查找)
apropos partition(关键字)
whatis --显示手册页的简述
info--显示程序的info条目
# 使用 alias 创建自己的命令
1
2
alias name='string'    (name为自己所起的名字,string为命令)
使用unalias命令可以删除别名

# 5. 重定向

# 标准输出重定向
1
2
3
4
5
将ls -l /usr/bin  的输出结果保存在ls-output.txt中
ls - l/usr/bin > ls-output.txt (ls的结果本来应该输出在屏幕上)
将重定向的标准输出追加到文件尾,而不是将其从头覆盖
使用 >> : ls - l/usr/bin >> ls-output.txt
> 覆盖重定向 ; >> 追加重定向
# 标准错误重定向
1
2
标准错误重定向对应的描述符为2,以下将输出错误信息定向到 ls-error.txt
例:ls -l /bin/usr 2> ls-error.txt
# 标准输入重定向
1
2
3
4
5
cat 将键盘输入的内容在屏幕上原样输出
cat 命令读取一个或多个文件并将其复制到标准输出(显示文本文件内容)
创建一个文件存放从键盘输入的字符
a.cat lazy_dog.txt (换行)The quick brown fox jumped over the lazy dog.
b.查看lazy_dog .txt文件 例:cat lazy_dog.txt或者cat<lazy_dog.txt
# 管道
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
管道符“|”用于连接左右两个命令,将“I”左边命令的执行结果作为“|”右边命令的输入
将标准输出的命令用less命令将其结果逐页显示出来
ls -l /usr/bin | less
排序列表
ls /bin/usr/bin | sort | less
uniq--报告或忽略重复行
ls /bin/usr/bin | sort | uniq | less
wc 统计文件中换行符,单词以及直字节的数量
wc ls-error.txt (输出三个数字分别是:行数,单词数,字节数)
wc -l 限制只输出文件行数
grep 输出与模式匹配的行
grep pattren filename
-i 使grep命令在搜索的时候忽略字母的大小写
-v 使grep命令只输出不匹配指定模式的行
-r 可以匹配关键字在当前目录下的子目录中查找
head/tall 输出文件的开头/结尾部分(默认十行)
head -n 5 ls-output.txt (注意是文件)
运用在管道中:ls /usr/bin |tail -n 5
tail -f 持续观察文件,一旦文件中添加新行,立即显示在屏幕中,ctrl+c停止
tee 读取标准输入并将输出结果写入标准输出的文件id
diff file1 file2 比较两个文件的不同;结果中的a,b,c分别代表添加,删除和修改;以"<"开始的行属于文件1,以“>”开始的行属于文件2。

# 6. Shell 眼看世界

1
2
3
4
5
6
7
8
9
算术扩展(仅支持整数,不支持小数)
echo $((expression)) echo $((2+2))
/ : 除法 ,结果为整数
* : 求幂
花括号扩展
echo Front-{A,B,C}-Back
结果:Front-A-Back Front-B-Back Front-C-Back
echo {01..15}
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15

# 7. 高级键盘技巧

# 光表移动
  • Ctrl+A 将光标移动到首行
  • Ctrl+E 将光标移动到行尾
  • Ctrl+F 将光标 v 向前移动一个字符;等同于右方向键位
  • Ctrl+B 将光表向后移动一个字符;等同于左方向键位
  • Ctrl+L 清除屏幕,将光标移动到左上角。等同于 clear 命令
# 修改文本
  • Ctrl+D 删除光标处的字符
  • Ctrl+T 将光标出的字符与其之前的单词对调
# 剪切和粘贴文本
  • Ctrl+K 剪切从光标处到行尾的文本
  • Ctrl+U 剪切从光标处到行首的文本
  • Ctrl+Y 将 kill-ring 缓冲区内的文本粘贴到光标
# 搜索历史记录
  • Ctrl+P 移动到上一条搜索记录。等同于使用上方向建
  • Ctrl+N 移动到下一条搜索记录。等同于使用下方向建
  • Ctrl+R 反向增量搜索。从当前命令行开始向上增量搜索历史记录列表
  • Ctil+O 执行历史记录列表中的当前命令并移动到下一条命令。如果你想要重复执行历史列表中的一系列命令,该组合键非常方便
  • !! 重复上一条命令
  • !number 重复命令历史记录列表中第 number 个命令

# 8. 文件访问权限

# 文件权限修改
  • 3 种基本操作:读 ®, 写 (w), 执行 (x);

  • 3 类用户划分:文件拥有者 (user),文件所属组 (group),其他用户 (other);

  • 文件访问权限可以使用命令 chmod 修改;

    • chmod mode|octal-mode File…
      • 按照 mode 或 octal-mode 描述的方式设置 File 的访问权限
  • mode: 字符形式描述的权限:[ugoa][-+=][rwxXst]

  • ugoa:u (拥有者),g (所有组),o (其他用户),a (所有用户)

  • stat 命令查看文件元信息 文件类型 文件访问权限

  • -+=:-(删除权限),+(增加权限),=(重设权限)

  • rwxXst:r (读),w (写),r (执行),s (suid 或 sgid),t (sticky bit)

1
2
chmod a=rwx file   设置文件file的访问权限为所有用户可读/写/执行
修改后file的文件权限为:-rwxrwxrwx . u=rwx g=rwx o=rwx
  • octal-mode:八进制形式描述的权限:[-+=][0-7]+
    • -+=:-(删除权限),+(增加权限),=(重设权限)
    • [0-7]+:表示数 0-7 可重复多次,通常可以有 4 个
      • 第 1 个八进制数表示特殊权限:4 (suid),2 (sgid),1 (sticky bit)
      • 第 2 个八进制数表示拥有者权限:4®,2 (w),1 (x)
      • 第 3 个八进制数表示所属组权限:4®,2 (w),1 (x)
      • 第 4 个八进制数表示其他用户权限:4®,2 (w),1 (x)

# 文件默认权限 umark 掩码
  • 显示或修改 umask 掩码 (用于决定新建文件时如何赋予权限)

  • umask 掩码的默认值通常设置为 002 或 022;

  • 假设 umask 掩码值为 022:

  • 新建文件时:将文件权限设置为 666-022=644,即 rw-r–r--;

  • 新建目录时:将目录权限设置为 777-022=755,即 rwxr-xr-x;

  • umask

  • 查看 umask 掩码值;

  • umask nnn

  • 临时修改 umask 掩码值为 nnn (由 3 个八进制数组成);