1、linux系统初使用
linux有图形终端和字符终端,关于linux学习以字符终端为主,即命令行操作:
[root@centos7 ~]#runlevel 查看当前工作模式
N 3 //3为字符终端,5为图形终端
[root@centos7 ~]#init3 //切换至字符终端
[root@centos7 ~]#init5 //切换至图形终端
[root@centos7 ~]#startx //只是启动图形,不是模式切换,[Ctrl]+c关闭图形
虚拟终端:[Ctrl]+[Alt]+F1~F6
图形终端:[Ctrl]+[Alt]+F7
切换终端:chvt 1~6,命令切换和按键切换一样
查看在线:who命令
查看当前的终端设备:tty命令
显示当前用户身份:whoami或who am i命令
显示谁在登录并做什么事:w命令
2、shell程序(bash shell)
shell是一种高级程序设计语言,也被称为linux的命令解释器:它提供了用户与内核进行交互操作的一种接口,接收用户输入的命令并把它送入内核去执行。
3、内部命令(集成在shell)和外部命令
enable命令 列出所有内部命令
enable -n cmd 禁用内部命令cmd
enable -n 查看所有禁用的内部命令
enable cmd 启用该cmd内部命令
type cmd 显示是内部命令还是外部命令:内部命令没路径,外部命令有路径
[root@centos7 ~]#enable
enable .
enable :
enable [
enable alias
......
[root@centos7 ~]#enable -n cd
[root@centos7 ~]#enable -n
enable -n cd
[root@centos7 ~]#enable cd
[root@centos7 ~]#type pwd
pwd 是 shell 内嵌
[root@centos7 ~]#type pstree
pstree 是 /usr/bin/pstree
4、PATH变量
[root@centos7 ~]#echo $PATH //echo显示变量后续介绍echo详细用法
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
优先级从左到右搜索,可以移动外部命令的位置,改变搜索优先级(哈希hash会记录外部命令的位置
[root@centos7 ~]#hash //可以看到hash记录的外部命令的缓存信息
命中命令
1/usr/bin/pstree
1/usr/bin/who
1/usr/bin/ls
[root@centos7 ~]#hash -d ls //清除ls的hash缓存
[root@centos7 ~]#hash
命中命令
1/usr/bin/pstree
1/usr/bin/who
[root@centos7 ~]#hash -r //清除hash所有缓存
[root@centos7 ~]#hash
hash: 哈希表为空
hash的更多参数选项:
hash //默认列出当前hash缓存
hash -d cmd //清除cmd缓存
hash -r //清除所有hash缓存
hash -t cmd //打印缓存中cmd的路径
hash -p path cmd //将命令全路径path起别名为cmd
hash -l //显示hash缓存,可作为输出使用
5、命令格式:
COMMAND [OPTIONS…] [ARGUMENTS…]
命令 选项 参数(命令的作用对象)
多个选项以及参数和命令之间使用空白字符分隔
取消和结束命令执行:Ctrl+c,Ctrl+d
多个命令可以用;分开
一个命令可以用分成多行
6、命令别名:
1>显示当前 shell 进程所有可用的命令别名
[root@centos7 ~]#alias
alias cp=‘cp -i‘
alias egrep=‘egrep --color=auto‘
......
2>定义别名 NAME,其相当于执行命令 VALUE
# alias NAME=’VALUE’
撤销别名:# unalias [-a] NAME1 NAME2... -a 撤销所有别名
3>在命令行中定义的别名,仅对当前 shell 进程有效
如果想永久有效,要定义在配置文件中:
仅对当前用户:~/.bashrc
对所有用户有效:/etc/bashrc
exit 退出生效;. 或 souce 后跟更改的配置文件使之不退出生效
4>如果别名同原命令同名,要使用原命令可以使用:
ALIASNAME、”ALIASNAME”、’ALIASNAME’或 command ALIASNAME
7、简单命令
1>关机:halt,poweroff
2>重启:reboot
选项:
-f:强制,不调用 shutdown
-p:切断电源
3>关机或重启:shutdown [OPTION]… TIME [MESSAGE]
选项:
-r:reboot
-h:halt
-c:cancel
TIME 无指定,默认相当于+1
Now:立刻,相当于+0
+m:相对时间表示法,几分钟之后(例如:+3)
hh:mm:绝对时间表示,指明具体时间
4>wall “广播内容” //发广播,当前这台机器上所有用户可见
5>用户登录信息查看命令:
whoami //显示当前登录有效用户
who //系统当前所有的登陆会话
w //系统当前所有的登陆会话及所做的操作
6>screen 命令:
screen -S [SESSION] //创建新screen会话
screen -ls //显示当前所有screen会话
screen -x [SESSION] //加入screen会话
exit //退出并关闭screen会话
[Ctrl]+a,[Ctrl]+d //剥离当前会话
screen -r [SESSION] //恢复某 screen 会话
7>echo 命令
功能:显示字符
语法:echo [-neE] [字符串]
说明:echo 会将输入的字符串送往标准输出。输出的字符串以空白字符隔开,并在最后加上换行号。
选项:
-E //(默认)不支持解释功能
-n //不自动换行
-e //启用字符的解释功能
a 发出警告声
退格键
插入 tab
……
显示变量:echo “$VAR_NAME”
8>命令行、括号扩展:
单引号’ ’ //引号之内只当做字符处理
双引号” ” //引号之内识别变量,不识别命令
反向单引号` ` //引号之内识别变量,识别命令
` `或$()用于一个命令调用另一个命令的输出
括号扩展:
打印重复字符串的简化形式
[yang@centos7 ~]$echo file{1,2,3}
file1 file2 file3
[yang@centos7 ~]$echo {1..9}
1 2 3 4 5 6 7 8 9
9>bc 计算器:
ibase=16 //输入:16进制数,输出:10进制数
61
97
obase=16 //输入:10进制数,输出:16进制数
97
61
10、编辑/etc/motd 文件,编辑登陆后提示信息;编辑/etc/issue 文件,编辑登录前提示信息
11、[Tab]键之命令补全、文件路径补全
12、查看历史命令:history
# echo $HISTSIZE //HISTSIZE 变量保存的是历史命令的条数
# vim /etc/profile //更改系统保存历史命令的条数
# ![条数] //执行历史中那条命令
[Ctrl]+r //搜索历史命令,[Ctrl]+g 退出
……
历史命令先保存在内存中,退出时再将数据写入磁盘文件(.bash_history)
13、文件通配符
*
匹配 0 个或多个字符
?
匹配任意单个字符
~
当前用户家目录
~yang
用户 yang 的家目录
~+
当前工作目录
~-
前一个工作目录
[0-9]、[a-z]、[A-Z]
匹配范围内的内容
[yang]
匹配列表中的任意一个字符
[^yang]
匹配列表中所有字符以外的字符
[[:upper:]]
所有大写字母
[[:lower:]]
所有小写字母
[[:alpha:]]
所有字母
[[:digit:]]
所有数字
[[:alnum:]]
所有的字母和数字
[[:blank:]]
水平空白字符
[[:space:]]
所有空白字符
[[:punct:]]
所有标点符号
[[:print:]]
可打印字符
[[:cntrl:]]
控制(非打印)字符
[[:graph:]]
图形字符
[[:xdigit:]]
十六进制字符
14>其他简单命令:
echo $RANDOM //生成随机数(0-32767)
openssl rand -base64 n //生成n位的随机字符数
last //显示成功登陆信息
netstat -nt //显示远程主机连接的次数
cd //切换目录(cd -:回退到上次目录,存放在$OLDPWD 变量里)
ls -a -A -R(递归) -l(显示长属性) -ld(目录和符号链接信息不加 d 显示子目
录文件长属性) -1(按字母顺序每行显示) -S(按大小倒序排序) -r(取反) -t(按时间
排序) ls -d */(只显示当前文件夹的目录)
atime:访问时间;mtime:修改时间(正常看到的);ctime:状态时间(属性、属组更改时间改变)
stat [file_name] //同时查看文件三个时间信息
touch //文件不存在创建空文件;刷新已存在文件的时间
-a 仅改变 atime 和 ctime
-m 仅改变 mtime 和 ctime
-t [[CC]YY]MMDDhhmm[.ss] 指定 atime 和 mtime 的时间戳(年月日小时分秒)
-c 如果不存在,则不创建
cp [选项]... [-T] 源文件 目标文件
cp [选项]... 源文件... 目录
cp [选项]... -t 目录 源文件...
cp -r 源目录 目标目录 //-r 复制目录
cp –r 源目录 目标目录 //cp:使用真cp不使用别名
cp -f //目标文件存在,先删除后复制
cp -p //保留所有者属性
cp -a //递归;保留链接(相当于-d);保留所有属性(备份手段)
cp -av //备份+显示信息
cp –backup=numbered 原文件 目标文件 //不用担心覆盖,会备份
备份:
cp file{,.bak} //{ }的使用
想批量备份文件,在每个文件后都加上一个.bak 后缀,cp 命令做不到。可以先复制成两份,再使用 rename 更改其中一份的文件名
rename "conf" "conf.bak" file* //搜索file*,使用conf.bak替换conf
mv:移动文件、更改文件名
-i 交互式(默认)
-f 强制
rm:删除
-r 递归
-f 强制删除
可以用 mv 代替 rm:rm=’mv -t /tmp’
tree [dir] //显示特定目录的目录树结构
tree -L 1 [dir] //显示特定目录下一层目录树结构
-d //只显示目录不显示文件
-P //pattern:只显示由 pattern 匹配到的路径
mkdir:创建目录
-p:递归创建
-v:显示详细信息
-m MODE:创建目录时直接指定权限
rmdir:删除空目录
-p:递归删除父空目录
-v:显示详细信息
rm -r:递归删除目录树
shred 文件 //安全删除文件
-z 最后一次用 0 覆盖;-v 看过程;-u 覆盖后删除;-n 6 覆盖 6 次
15>索引节点
inode(index node)表中包含文件系统所有文件列表
一个节点(索引节点)是在一个表项,包含有关文件的信息(元数据),包括:
文件类型,权限,UID,GID
链接数(指向这个文件路径名称个数)
该文件的大小和不同的时间戳
指向磁盘上文件的数据块指针
有关文件的其他数据
ls -i //查看节点编号,节点编号:用来唯一标识每个文件的唯一性(同一分区唯一)
df -i //查看节点数,每个分区有固定的文件节点数,满了就相当于磁盘满了
目录:
文件引用一个是 indoe 号
人是通过文件名来引导引用一个文件
一个目录是目录下的文件名和文件 indoe 号之间的映射
rm 命令:链接数递减,从而释放的 indoe 号可以被用,把数据块放到空闲列表中数据实际上不会马上被删除,但当另一个文件使用数据块时将被覆盖
所以可以使用 shred 安全删除(覆盖删除)
16>软硬链接
节点编号每个文件一个(可以使用 ln 创建硬链接实现一个节点编号对应对个文件名)
硬链接的本质:一个节点多个名字(平等关系)同一分区、针对于文件
目录创建(链接数默认为 2:.当前目录和目录名;在目录里在创建一个目录..上一级目录新加一个名,链接数变为 3)
软链接的本质:快捷方式;软链接的大小和路径有关和原文件大小无关
ln -s [旧文件名] [新文件名]
软链接不能写相对当前路径,相对的是软链接的路径
软硬链接的区别:
本质:
硬链接:同一个文件多个名字
软链接:一个文件对应快捷方式,是不同文件
表现:
链接数
跨分区
是否支持目录
与原始文件的关系
删除
大小
部署软件使用软链接实现版本切换
17>确定文件内容
文件可以包含多种类型的数据,检查文件的类型,然后确定适当的打开命令或应用程序使用
file [option]:
-b 列出文件辨识结果时,不显示文件名称
-f filelist 列出文件 filelist 中文件名的文件类型
-F 使用指定分隔符号替换输出文件名后默认的“ :”分隔符
-L 查看对应软链接对应文件的文件类型
8、获取多层次的帮助
1>Whatis 或 man -f //显示命令的简短描述,使用数据库,刚安装后不可立即使用(需使用 makewhatis | mandb 制作数据库)
2>command –help
man and info
/usr/share/doc/
3>网站搜索
4>man 帮助:
查看 man 手册页:man [章节] keyword
列出所有帮助:man -a keyword
搜索 man 手册:man -k ketword 列出所有匹配的页面
man 章节:
1:用户命令;2:系统调用;3:C 库调用;4:设备文件及特殊文件;5:配置文件格式;6:游戏;7:杂项;8:管理类命令;9:LINUX 内核 API
[root@centos7 ~]#whatis rm
rm (1p) - remove directory entries
rm (1) - remove files or directories
[root@centos7 ~]#man 1 rm //查看帮助信息
man 手册放在/usr/share/man;man 命令的配置文件:/etc/man.config | man db.conf
内部命令:help 命令 //使用help获取内部命令帮助信息
外部命令:man 命令、--help //使用man或--help获取外部命令帮助信息