Linux 学习Shell

学习shell

什么是shell

shell 就是一个程序,它接受从键盘输入的命令, 然后把命令传递给操作系统去执行

  • df 查看磁盘空间剩余数量
  • free 显示空闲内存数量
  • exit 结束终端会话

文件系统跳转

文件命名规则

  • 以”.”开头的文件名是隐藏文件,使用ls -a显示
  • 文件名大小写敏感
  • 没有文件扩展名概念
  • 文件名可能包含空格标点,但是标点符号仅限使用”.”,”-“,”_”,最好不要使用空格

操作系统

一些命令

  • less 浏览文件内容
  • ls 可以列出多个指定目录的内容
  • ls -a 全部
  • ls -d 目录
  • ls -F 在名字后面加上指示符
  • ls -h 以刻度格式列出
  • ls -l 长格式显示结果
  • ls -r 相顺序来显示结果
  • ls -S 按文件大小排序
  • ls -t 按修改时间来排序

确定文件类型

  • file filename

less命令

  • Page UP or b 向上一页
  • Page Down or space 向下一页
  • UP Arrow 向上一行
  • Down Arrow 向下一行
  • G 移到最后一行
  • 1G or g 移到开头一行
  • /characters 向前查找指定字符串
  • n 向前查找下一个出现的字符转
  • h 显示帮助屏幕
  • q 退出less程序

linux系统中的目录

  • / 根目录
  • /bin 包含系统启动和运行所需的二进制程序
  • /boot 包含Linux内核,初始RAM磁盘映像
  • /dev 包含所有设备节点
  • /etc 包含系统层面的配置文件
  • /home 用户目录
  • /lib 包含核心系统程序送所需共享库
  • /mnt 可移动介质挂载点
  • /opt 安装商业软件
  • /usr 包含普通用户所需的所有程序和文件

符号链接

一个文件可能被子多个文件名所指向

操作文件和目录

基本命令

  • cp
  • mv
  • mkdir
  • rm
  • ln

通配符

  • * 匹配任意多个字符(包括0个)
  • ? 匹配任意一个字符(不包括0个)
  • [characters] 匹配任意一个字符集中的字符
  • [!characters] 匹配任意一个不是字符集中的字符
  • [[:class:]] 匹配任意一个属于指定字符类的字符
  • [:alnum:] 匹配任意一个字符或数字
  • [:alpha:] 匹配任意一个字母
  • [:digit:] 匹配任意一个数字
  • [:lower:] 匹配任意一个小写字母
  • [:upper:] 匹配任意一个大写字母

cp复制文件和目录

  • -a 复制文件和目录以及属性
  • -i 在重写已存在的文件之前提示用户确认
  • -r 递归复制目录以及目录中的内容
  • -u 当把文件从一个目录复制到另一目录
  • -v 显示具体的操作信息

mv移动和重命名文件

  • -i 提示确认
  • -u 只移动不存在的文件夹
  • -v 显示具体的操作信息

rm删除文件和目录

  • -i 提示确认
  • -r 递归删除
  • -f 忽视不存在文件
  • -v 显示具体操作信息

小心rm命令

  • rm * .html 这会删除所有数据

ln创建链接

  • ln file link 符号链接
  • ln -s item link 硬链接

硬链接

每个文件默认有一个硬链接,硬链接给予文件名字。每创建一个硬链接,就为一个文件创建了一个额外的目录项。
硬链接的局限:
硬链接不能关联所在文件系统之外的文件,也不能关联一个目录。

符号链接

类似于快捷方式,关联修改但是不关联删除。

使用命令

基本命令

  • type 解释一个命令名
  • which 显示可执行程序的位置
  • man 显示命令手册页
  • apropos 显示一系列适合的命令
  • info 显示命令info
  • whatis 显示一个命令的简洁描述
  • alias 建立命令别名

什么是命令

  • 可执行程序
  • 内建于shell自身的命令
  • 一个shell函数
  • 一个命令别名

重定向

命令简介

  • cat 连接文件
  • sort 排序文本行
  • uniq 报道或省略重复行
  • grep 打印匹配行
  • we 打印文件中的换行符,字和字节个数
  • head 输出文件第一部分
  • tail 输出文件最后一部分
  • tee 从标准输入读取数据

标准输出

  • “>” 将标准输出重定向到除屏幕以外的一个文件
  • “>>” 追加

标准错误

shell内部使用0、1、2来重定向文件。
0标准输入,1标准输出,2错误
eg: ls -l /bin/usr 2 > ls-error.txt

标准输出和错误到同一文件

2>&1
eg: > ls-output.txt 2>&1 注意输出与错误的顺序
eg: 2>&1 > ls-output.txt 定向到屏幕

处理不需要的输出

ls -l /bin/usr 2> /dev/null

标准输入重定向

eg:cat > lazy_dog.txt
eg: cat < lazy_dog.txt

管道线

“|”一个命令的标准输出可以通过管道送至另一个命令的标准输入

过滤器

过滤器接受输入,以某种方式改变它,然后输出它
eg: ls /bin /usr/bin | sort | less

uniq报道或忽略重复行

常与sort命令结合
eg: ls /bin /sur/bin | sort | uniq | less

wc打印行数、字数、字节数

grep打印匹配行

eg: grep pattern [file…]
eg: ls /bin /usr/bin | sort | uniq | grep zip
方便选项:
-i 使得执行搜索时忽略大小写
-v 会告诉grep只打印不匹配的行

head / tail

打印文件开头部分/结尾部分,
用在管道中:
ls /usr/bin | tail -n 5

tee

从Stdin读取数据,并同时输出到Stdout和文件
eg: ls /usr/bin | tee ls.txt | grep zip

从shell眼中看世界

(字符)展开

eg: echo * 将目录下文件名字展开

路径名展开

eg: echo D or echo [[upper]]

隐藏文件路径名展开

eg: echo . 会显示工作目录和父目录
eg: ls -d .[!.]?
以圆点开头,第二个字符不包含圆点,再包含至少一个字符

算术表达式展开

eg: echo $((expression))
取幂:**

花括号展开

eg: echo Front-{A,B,C}-Back
Front-A-Back Front-B-Back Front-C-Back
eg: echo Number_{1..5}
Number_1 Number_2 Number_3 Number_4 Number_5
eg: echo a{A{1,2},B{3,4}}b
aA1b aA2b aB3b aB4b
那么这对什么有好处呢?最常见的应用是,创建一系列的文件或目录列表

参数展开

eg: echo $USER

命令替换

eg: echo $(ls)

双引号

双引号可以阻止单词分割

单引号

参数与表达式都不能生效,直接使用字符串

转义字符

反斜杠

权限

拥有者、组成员和其他人

uid gid group

读取、写入、执行

使用ls命令列出文件信息时,可以看到类似-rwxrwxrwx的字符串
第一个字符表明文件类型:

  • - 普通文件
  • d 一个目录
  • l 符号链接,符号链接的权限属性是虚拟的,真正的权限是所指向文件的属性
  • c 字符设备文件
  • b 块设备文件

后九个字符是权限属性:

  • 前三个是所有者的权限
  • 中间三个是所有者的组成员的权限
  • 后面三个是所有人的权限

chmod改变文件模式

八进制表示法
符号表示法

进程

查看进程

  • ps 查看进程
  • ps x 展示所有进程,不管由什么终端控制
  • aux “BSD风格”结果,可以查看进程USE,%CPU,%MEM,VSZ,RSS,START

进程状态 Stat

  • R 运行中
  • S 正在睡眠
  • D 不可中断睡眠
  • T 已停止
  • Z 死进程
  • < 高优先级进程
  • N 低优先级进程

top 动态查看进程

进程放置到后台

&

进程前后台切换

jobs 查看后台进程
fg %job序号
bg %job序号

停止一个进程

kill pid
kill [-signal] PID

  • HUP 挂起 1
  • INT 中断(Crtl-c) 2
  • KILL 杀死 9
  • TERM 终止 15
  • CONT 继续 18
  • STOP 停止 19

默认为TERM

killall

给多个进程发送信号,杀死所有用户启动的进程

更多相关命令

  • pstree 树形结构进程
  • vmstat 输出系统资源使用快照,要看到连雪的结果,则在命令后加上更新操作延时的时间
  • tload 在终端中的xload程序