回显命令:echo
内建命令
echo "How are you"
echo "$SHELL" 弱应用,显示变量中的值
/bin/bash
echo '$SHELL' 强引用类型,不会显示变量中的值
$SHELL
-n:禁止显示换行符,默认自动加换行符
-e:允许使用转义符
\n:换行
\t:制表符
echo -e "\n 哈哈"
显示文件的路径:which
which [OPTION] COMMAND
--skip-alias 不显示别名
whereis:locate the binary,source,and manual page files for a COMMAND
whatis
使用mkwhatis命令可将当前系统上所有的帮助手册及与之对应的关键字
创建一个数据库
Linux会自动运行创建这个数据库
系统管理类命令:
关机:
halt,poweroff,shutdown,init 0
shutdown是安全关机方式
重启:
reboot,init 6,shutdown
与用户登录有关的:
w,who,whoami
whoami:
看当前用户是谁
who:
显示当前有哪些用户登录系统
w: show who is logged on and what they are doing
关机或重启命令:
halt,poweroff,reboot
-f 强制关机,不建议。不保存。
-p 切断电源。
shutdown
shutdown [OPTION]... TIME [MESSAGE]
-r reboot
-h halt 切断电源。
-c cancel 取消shutdown
TIME:
now 0也是现在
+m:表示从命令提交开始m分钟之后
hh:mm 绝对时间。
MESSAGE:警告的内容
Linux的文件系统
根文件系统(rootfs):
root filesystem
LSB:FHS (FileSystem Heirache Standard)
/etc,/usr,/var,/root,/home,/dev
/boot:引导文件存放目录,内核文件(vmlinuz)、引导加载器(bootloader,grub)
都存放在此目录
/bin:供所有用户使用的基本命令:不能关联至独立分区,OS启动就用到的程序放在这里
/sbin:管理类的基本命令;不能关联至独立分区,OS启动就用到的程序放在这里.
/lib:基本的共享库和内核模块,以及内核模块文件(/lib/modules);
/lib64:专用于x86_64基本的共享库和内核模块,以及内核模块文件;
/etc:配置文件目录(纯文本文件)
/home/USERNAME:家目录
/root:管理员的家目录
/media:Mount point for removeable media
/mnt:Mount point for temporarily media
/dev:Device files;设备文件及特殊文件
b:block Device --可随机访问
c:character device --必须顺序访问
/opt Add-on application software packages
第三方应用程序的安装位置。
/srv:系统上运行的服务用到的数据
/tmp:临时文件存放位置
/usr:一般独立分区
universal shareable read-only data
必须有下列目录
bin:存放系统完成基本功能的程序,不是启动时的
sbin
lib
lib64
include:c程序的头文件存放位置
share:结构化独立的数据,例如doc,man等
src:源代码所在位置
local:Local hierachy;第三方应用程序的安装位置,目前最常见,也可以mount到独立的文件系统
bin,sbin,lib,lib64
/var: Hierarchy
经常发生变化的数据文件存放位置
cache:应用程序缓存数据目录
lib:应用程序状态数据
local:专用于为/usr/local下的应用程序存储可变数据
lock:应用程序的锁文件
log:日志文件
opt:专用于/opt下的可变数据
run:运行中的进程相关数据;通常用于存储进程的PID文件
spool:缓冲池
tmp:系统2次重启过程中的临时文件存放位置
/proc:伪文件系统,用于输出内核与进程信息相关的虚拟文件系统。
/sys:伪文件系统,用于输出当前系统上硬件设备相关信息的虚拟文件系统。
/selinux:security enhanced Linux,selinux相关的安全策略等信息的存储位置。
Linux上的应用程序的组成部分
二进制程序: /bin,/sbin,/usr/bin,/usr/sbin,/usr/local/bin,/usr/local/sbin
库文件: /lib,/lib64,/usr/lib,/usr/lib64,/usr/local/lib
配置文件:/etc,/etc/directory,/etc/local/etc
帮助文件:/usr/share/man,/usr/share/doc ,/usr/local/share/man,/usr/local/share/doc
Linux下的文件类型:
- (f):普通文件
d:目录文件
b:块设备:
c:字符设备
l:符号链接文件,软连接文件
p:管道文件;
s:套接字文件;socket文件
bash的基础特性:
(1) 命令历史
history
环境变量:
HISTSIZE:命令历史记录的条数:
HISFILE: ~/.bash_history;
HISFILESIZE; 命令历史文件记录历史的条数;
history -d OFFSET 删除指定条目的历史记录
-c 清空
history #:显示最近的number个历史记录
-a:append;手动追加当前会话缓冲区的命令历史至历史文件中。
调用历史中的命令:
!!:最近一次命令
!# :第#号命令
!string:最近一个已制定字符串开头的历史命令
调用上一条命令的最后一个参数
!$:
上一条命令: cat /etc/fstab
当前命令:ls -l !$ #相当于 ls -l /etc/fstab
ESC, .
控制命令历史的记录方式:
环境变量:HISTCONTROL
ignoredups:忽略重复的命令,连续而且相同
ignorespace:忽略所有以空白字符开头的命令
ignoreboth:以上二者都生效
修改环境变量的方式:(只对当前shell和子进程有效)
export 变量名=.....
(2)命令补全
bash执行命令:
内部命令:build in
外部命令:搜索$PATH环境变量定义的路径,自左向右在每个路径搜寻以用户给定
名命名的文件,第一次找到的即为要执行的命令。
(3) 路径补全
(4) 命令行展开
~:展开为用户的家目录
~USERNAME :展开为USERNAME的家目录
{}:可承载一个以逗号分隔的列表,并将其展开为多个路径。
/tmp/{a,b} = /tmp/a,/tmp/b
例子:
(1):如何创建/tmp/x/y1,/tmp/x/y2,/tmp/x/y1/a,
/tmp/x/y1/b,/tmp/x/y2/a,/tmp/x/y2/b
mkdir -p /tmp/x/{y1,y2}/{a,b}
(2):如何创建x_m,y_m,x_n,y_n
mkdir -p /tmp/{x,y}_{m,n}
(3):如何创建/tmp/bin,/tmp/sbin,/tmp/usr,/tmp/usr/bin,
/tmp/usr/sbin
mkdir -p /tmp/{bin,sbin,usr/{bin,sbin}}
(5) 命令的执行结果状态
bash使用特殊变量$?保存最近一条命令的执行状态结果。
0:成功
1-255:失败
目录管理类命令:
cd pwd,ls
mkdir rmdir ,tree
mkdir [option] /path/to/somewhere /path/to/somewhere2
可以用空格,一次创建多个目录。
-p:存在也不报错。如果需要,自动创建父目录。
-m mode ,创建目录时直接指定权限。
rmdir [option] /path
只能删除空目录
-p: 删空目录,一直追溯到不空的父目录
tree:
树状结构显示
-d 仅显示目录
-L:最多显示多少层级。
文件查看类命令
cat,tac
more,less,tail,head
more [option] [file]
less [option] [file]
head [option] [file]
-c #:指定获取前#个字节
-n #:指定获取前#行;默认就是前十行
tail [option] [file]
与head类似
-f 继续跟踪file新追加的内容。查看log文件特别有用
文件的时间戳管理工具
touch
文件:metadata,data
查看文件状态:stat
三个时间戳:
access time,atime: 访问时间,只要用可执行程序访问过,就更新此时间
modify time,mtime:修改时间,改变文件内容,更新这个数据
change time ctime: 改变时间,元数据改变,更新这个数据,而元数据包含这三个时间戳
所以,如果atime和mtime改变了。那么ctime也改变了。
touch [option] [file]
默认touch会改变文件的atime、mtime、ctime
-a: 只改变访问时间
-m:只改变修改时间戳
-t:指明时间戳
touch -m -t 201909011234666 /etc/fstab
-c: 如果文件不存在,那么不创建文件。