linux基础
- linux 由目的单一的小程序组成,组成的小程序完成复杂的任务
- 所有都是文件
- 配置文件保存的都是纯文本
Shell
Shell简介
Shell俗称壳(用来区别于核),是指“为使用者提供操作界面”的软件(命令解析器)。它类似于DOS下的command.com和后来的cmd.exe。它接收用户命令,然后调用相应的应用程序。
常见的shell有两种,一种是图形界面,即GUI,一种是命令行终端,即CLI。
常用的GUI:Graphic User Interface
- Windows
- X-Window
Gnome
KDE
Xfce
常用的CLI:Command Line Interface
bash
sh
csh
zsh
ksh
tcsh
Redhat 和 Centos使用的是:bash shell
Linux基础命令
命令 [选项] [参数]
选项:(可以有0个或多个)
短选项:-
多个选项可以组合: -a -b = -ab
长选项:--
长选项通常不能组合
参数:命令的作用对象(可以有0个或多个)
命令类型
- 内部命令:shell内置,也称shell内嵌命令;
- 外部命令:在文件系统的某个路径下有一个与命令名称相应的可执行文件,存放在一个文件中,使用时需要去文件中查找,这些文件被定义在$PATH
type //显示指定命令属于哪种类型
[root@localhost ~]# type cd
cd is a shell builtin //cd是shell内建
[root@localhost ~]# type echo
echo is a shell builtin //echo 是shell 内建
基础命令
目录管理命令
目录管理
ls
ls 列出目录内容
-l 长格式
以长格式显示的第一段含义:
第一个字符:文件类型
- 普通文件(f)
d 目录文件
b 块设备文件(block)
c 字符设备文件(character)
l 符号链接文件(symbolic link file)
p 命令管道(pipe)
s 套接字文件(socket)
后面九位字符:文件权限
9位,每3位一组,每一组:rwx(读,写,执行)
以长格式显示的第二段含义:
文件硬链接的次数
以长格式显示的第三段含义:
文件的属主(owner)
以长格式显示的第四段含义:
文件的属组(group)
以长格式显示的第五段含义:
文件大小(size),单位是字节
以长格式显示的第六,七,八段含义:
时间戳(timestamp),最近一次被修改的时间
访问 //access,访问的时间
修改 //modify,文件内容被修改的时间
改变 //change,metadata(元数据)变化的时间
-h 做单位转换
-a 显示以.开头的隐藏文件
. 表示当前目录
.. 表示父目录
-d 显示目录自身属性
-i 显示文件的inode(index node)
-r 逆序显示
-R 递归(recursive)显示
cd
切换目录
- 表示回到刚刚的目录
.. 表示切换到目前的上一级目录
pwd
查看当前所在目录路径
tree
查看目录树
-d 只显示目录
-L level 指定显示的层级数目
-P 字符串 显示指定字符串匹配到的文件
文件管理命令
文件管理
mkdir
创建目录
-p 创建目录时若父目录不存在则自动创建
-v 显示目录创建过程
rmdir
删除目录,只能删除空目录
touch
创建一个空文件,touch还有一个作用是修改文件的时间戮
stat
显示文件或文件系统的状态
rm
删除文件,删除命令默认会提示是否需要删除,如果要使用命令本身可以在命令前加一个\。
例如:\rm,这样删除就不会有提示了
-r 递归删除,删除目录时必须使用此选项
-f 强制删除,不询问
cp
复制文件,一个文件到一个文件,多个文件到一个目录
-r 递归拷贝,拷贝目录时必须使用此选项
-p 拷贝时保留原权限
-a 相当于-rp
mv
移动文件
install
复制文件并且设置属性
-m MODE 复制时修改权限
-o OWNER 复制时修改文件属主
-g GROUP 复制时修改属组
识别文件类型
file
file
-b 列出辨识结果时,不显示文件名称。
-c 详细显示指令执行过程,便于排错或分析程序执行的情形。
-f<名称文件> 指定名称文件,其内容有一个或多个文件名称时,让file依序辨识这些文件,格式为每列一个文件名称。
-L 直接显示符号连接所指向的文件的类别。
-m<魔法数字文件> 指定魔法数字文件。
-v 显示版本信息。
-z 尝试去解读压缩文件的内容。
[文件或目录...] 要确定类型的文件列表,多个文件之间使用空格分开,可以使用shell通配符匹配多个文件。
文件内容查看命令
cat
将文件内容输出至标准输出(屏幕)
-n 显示行号
注意:使用cat查看文件内容时会将文件的所有内容加载至内存,所以应避免使用cat打开巨大文件
tac
倒序打印文件内容至标准输出
more
全屏查看文本文件内容,只能从前往后,不能从后往前。
文件内容显示完后自动退出
less
全屏查看文本文件内容,可从前往后亦可从后往前。推荐使用
head
从头部开始打印文件内容,默认打印10行
-n 指定要打印的行数,-n 可以是15也可以是-15
tail
查看文本文件尾部内容
-n 指定要打印的行数,可以是-n 15也可以是-15
-f 实时监测文件末尾内容
主机管理命令
主机名管理
hostname
查看或临时修改主机名,重开终端有效,重启失效
hostnamectl 查看或永久修改主机名,重开终端生效,重启依然有效
time
显示命令的执行时间,例如time ls /etc
clear
清屏
whoami
显示当前登录用户
who
查看当前在线用户
w
显示当前在线用户并显示其在运行的命令
which
显示指定命令的绝对路径
date
显示或设置日期与时间
不带参数的date用于显示当前系统日期与时间
格式化输出时间:+
%Y 年
%m 月
%d 日
%F 年-月-日
%H 时
%M 分
%S 秒
-s 以字符串方式设置时间
cal
打印日历
bc
Linux中的计算器
-l 使用标准数学库
echo 'scale=2;5/2'|bc -l
scale=2表示保留两位小数
ldd
查看指定程序有哪些依赖库文件
程序组成:
二进制程序
库文件
配置文件
帮助文件
获取命令帮助
man
内部命令
help COMMAND
外部命令
COMMAND --help
在线文档
info COMMAND
命令手册 manual
man COMMAND
文档
/usr/share/doc
whatis COMMAND 用于查看COMMAND出现在man的哪一章节中。
查询man帮助中此命令的作用
man是分章节的,以下是每一章节的内容介绍:
1 用户命令(/bin,/usr/bin,/usr/local/bin);
2 系统调用;
3 库调用;
4 特殊文件(设备文件);
5 文件格式(配置文件 的语法);
6 游戏;
7 杂项(Miscellaneous);
8 管理命令(/sbin,/usr/sbin,/usr/local/sbin)
man手册注意事项:
[] 可选
<> 必选
... 可以出现多次
| 多选一
{} 分组
NAME 命令名称及功能简要说明
SYNOPSIS 用法说明,包括可用的选项
DESCRIPTION 命令功能的详尽说明,可能包括每一个选项的意义
OPTIONS 说明每一个选项的意义
FILES 此命令相关的配置文件
BUGS 报告bug
EXAMPLES 使用示例
SEE ALSO 另外参照
man翻屏
SPACE 向后翻一屏
b 向前翻一屏
enter 向后翻一行
k 向前翻一行
查找
/text 向后
?text 向前
n 下一个
N 前一个
q 退出
bash
bash的特性
bash支持以下特性:
支持命令历史、命令补全
支持管道、重定向
支持命令别名
支持命令行编辑
支持命令行展开
支持文件名通配
支持变量
支持编程
bash支持的引号
"" 双引号,弱引用,可以实现变量替换
'' 单引号,强引用,不完成变量替换
`` 反引号,键盘左上角Esc下面的键,用于命令替换
$() 与反引号用法相同
bash的常用操作
光标跳转
Ctrl+a 跳到命令行首
Ctrl+e 跳到命令行尾
Ctrl+u 剪切光标至命令行首的内容
Ctrl+k 剪切光标至命令行尾的内容
Ctrl+<- 光标定位到离自己最近的一个单词前面
Ctrl+p 重复上一次命令
Ctrl+w 剪切前面的字符至上一个空格处
Ctrl+y 粘贴或者恢复上次的删除。
Ctrl+l 清屏
Ctrl+s 暂时冻结当前shell的输入
Ctrl+q 解冻
tab键命令和路径补全
在命令行输入命令时,如果只记得命令的开头几个字母,可使用tab键补全命令;如果有多个命令都是以某字母开头,按两次tab,可以列出所有以该字母开头的命令,供用户选择。
在命令行输入文件路径时,如果忘记文件路径全称,则只需要输入文件路径开头几个字母,也可以使用tab键进行补全。
命令行常见特殊符号
~ 展开为用户的家目录
~USERNAME 展开为指定用户的家目录
{} 列表,可用于存放数据
\ 转义,使得后面一个特殊字符没有任何特殊含义
&& 前面的命令执行成功后才执行后面的命令
|| 前面的命令执行失败后才执行后面的命令
; 不管前面的命令执行成功还是失败都执行后面的命令
文件名通配符
* 匹配任意长度的任意字符
? 匹配任意单个字符
[] 匹配指定范围内的任意单个字符
例如:[abc],[a-m],[0-9]
[[:space:]] 表示空白字符
[[:punct:]] 表示标点符号
[[:lower:]] 表示小写字母
[[:upper:]] 表示大写字母
[[:alpha:]] 表示大小写字母
[[:digit:]] 表示数字
[[:alnum:]] 表示数字和大小写字母
[^] 匹配指定范围之外的任意单个字符
环境变量
PATH 命令搜索路径
HISTSIZE 命令历史缓冲区大小
SHELL 当前shell
bash内置变量
RANDOM 保存着0-32768之间的随机数
命令历史
history
history 查看命令历史
-c 清空命令历史
-d OFFSET [n] 删除指定位置的命令历史
-w 保存命令历史至历史文件~/.bash_history中
命令历史的使用技巧
!n 执行命令历史中的第n条命令
!-n 执行命令历史中倒数第n条命令
!! 执行上一条命令
!string 执行命令历史中最近一个以指定字符串开头的命令
!$ 引用前一个命令的最后一个参数
esc,. 按下esc松开后按.,引用前一个命令的最后一个参数