linux 使用和基础操作
第一节:linux 系统初使用
linux 有图形终端和字符终端,关于 linux 学习以字符终端为主,即命令行操作:
[root@centos7 ~]#runlevel #查看当前工作模式(3为字符终端,5为图形终端) [root@centos7 ~]#init3 #切换至字符终端 [root@centos7 ~]#init5 #切换至图形终端 [root@centos7 ~]#startx #只是启动图形,不是模式切换,[Ctrl]+c关闭图形
虚拟终端:[Ctrl]+[Alt]+F1~F6 图形终端:[Ctrl]+[Alt]+F7 切换终端:chvt 1~6,命令切换和按键切换一样 查看当前的终端设备:tty 命令
1.1 shell 程序(bash shell)
shell 是一种高级程序设计语言,也被称为 linux 的命令解释器:它提供了用户与内核进行交互操作的一种接口,接收用户输入的命令并把它送入内核去执行。
1.2 内部命令和外部命令
#列出所有内部命令 enable #禁用内部命令 cd enable -n cd #查看所有禁用的内部命令 enable -n #启用该内部命令(cd命令) enable cd #显示命令类型 type cmd
1.3 PATH 变量
[root@centos7 ~]#echo $PATH #显示PTTH环境变量 /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
#默认列出当前hash缓存命令的缓存信息 hash
#清除cmd命令缓存 hash -d cmd
#清除所有hash缓存 hash -r
#打印缓存中cmd命令的路径 hash -t cmd
#将命令全路径path起别名为cmd hash -p path cmd
#显示hash缓存,可作为输出使用 hash -l
1.4 命令格式
COMMAND [OPTIONS…] [ARGUMENTS…] #命令 选项 参数(命令的作用对象) #多个选项以及参数和命令之间使用空白字符分隔 #取消和结束命令执行:Ctrl+c,Ctrl+d #多个命令可以用;分开 #一个命令可以用\分成多行
1.5 命令别名
(1)显示当前 shell 进程所有可用的命令别名
[root@centos7 ~]#alias alias cp='cp -i' alias egrep='egrep --color=auto' ......
(2)定义别名、撤销别名
[root@centos7 ~]#alias NAME=’VALUE’ [root@centos7 ~]#unalias [-a] NAME1 NAME2... #-a取消所有,参数可选
(3)在命令行中定义的别名,仅对当前 shell 进程有效,如果想永久有效,要定义在配置文件中:
仅对当前用户:~/.bashrc
对所有用户有效:/etc/bashrc
exit 退出重新登录生效;. 或 souce 后跟更改的配置文件使之不退出生效
(4)如果别名同原命令同名,要使用原命令可以使用:
[root@centos7 ~]#alias ls
alias ls='ls --color=auto'
[root@centos7 ~]#\ls [root@centos7 ~]#"ls" [root@centos7 ~]#'ls' [root@centos7 ~]#command ls
1.6 简单命令
(1)关机
[root@centos7 ~]#halt [root@centos7 ~]#poweroff [root@centos7 ~]#shutdown -h now
(2)重启
[root@centos7 ~]#reboot -[f|p] -f:强制,不调用 shutdown -p:切断电源
(3)shutdown
[root@centos7 ~]#shutdown [OPTION]… TIME [MESSAGE] -r:reboot -h:halt -c:cancel
TIME 无指定,默认相当于+1 TIME指定now:立刻,相当于+0 +m:相对时间表示法,几分钟之后(例如:+3) hh:mm:绝对时间表示,指明具体时间
(4)wall 命令
[root@centos7 ~]#wall "+5min reboot"
(5)用户登录信息查看命令
[root@centos7 ~]#whoami #显示当前登录有效用户 [root@centos7 ~]#who #系统当前所有的登陆会话 [root@centos7 ~]#w #系统当前所有的登陆会话及所做的操作
(6)screen 命令
#创建名为help的screen会话 [root@centos7 ~]#screen -S help
#显示当前所有screen会话 [root@centos7 ~]#screen -ls
#加入screen会话 [root@centos7 ~]#screen -x help
#剥离当前会话 [Ctrl]+a,[Ctrl]+d
#退出并关闭screen会话 [root@centos7 ~]#exit
#恢复某 screen 会话 [root@centos7 ~]#screen -r [SESSION]
(7)echo 命令
功能:显示字符、显示变量 语法:echo [-neE] [字符串] 说明:echo 会将输入的字符串送往标准输出。输出的字符串以空白字符隔开,并在最后加上换行号。 选项: -E (默认)不支持\解释功能 -n 不自动换行 -e 启用\字符的解释功能 \a 发出警告声 \b 退格键 \t 插入 tab ……
(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 计算器
[root@centos7 ~]# bc 1+2+3 6 ibase=16 #输入:16进制数,输出:10进制数 61 97 [root@centos7 ~]# bc obase=16 #输入:10进制数,输出:16进制数 97 61
(10)编辑/etc/motd 文件,编辑登陆后提示信息;编辑 /etc/issue 文件,编辑登录前提示信息
(11)[Tab]键之命令补全、文件路径补全
(12)查看历史命令
历史命令先保存在内存中,退出时再将数据写入磁盘文件(.bash_history)
[root@centos7 ~]# history #查看历史命令 [root@centos7 ~]# echo $HISTSIZE #HISTSIZE 变量保存的是历史命令的条数 1000 [root@centos7 ~]# !280 #执行第280条历史命令 echo $HISTSIZE 1000 [root@centos7 ~]# vim /etc/profile #编辑文件更改系统保存历史命令的条数 (reverse-i-search)`echo': echo $HISTSIZE #[Ctrl]+r搜索历史命令,[Ctrl]+g退出
1.7 文件通配符
* | 匹配 0 个或多个字符 |
? | 匹配任意单个字符 |
~ | 当前用户家目录 |
~yang | 用户 yang 的家目录 |
~+ | 当前工作目录 |
~- | 前一个工作目录 |
[0-9]、[a-z]、[A-Z] | 匹配范围内的内容 |
[yang] | 匹配列表中的任意一个字符 |
[^yang] | 匹配列表中所有字符以外的字符 |
[[:upper:]] | 所有大写字母 |
[[:lower:]] | 所有小写字母 |
[[:alpha:]] | 所有字母 |
[[:digit:]] | 所有数字 |
[[:alnum:]] | 所有的字母和数字 |
[[:blank:]] | 水平空白字符 |
[[:space:]] | 所有空白字符 |
[[:punct:]] | 所有标点符号 |
[[:print:]] | 可打印字符 |
[[:cntrl:]] | 控制(非打印)字符 |
[[:graph:]] | 图形字符 |
[[:xdigit:]] | 十六进制字符 |
1.8 其他简单命令
[root@centos7 ~]# echo $RANDOM #生成随机数(0-32767)
[root@centos7 ~]# openssl rand -base64 12 #生成12位的随机字符数
[root@centos7 ~]# last #显示成功登陆信息
[root@centos7 ~]# netstat -nt #显示远程主机连接的次数
[root@centos7 ~]# cd /etc/ #切换目录(cd -:回退到上次目录,存放在$OLDPWD 变量里)
[root@centos7 ~]# ls -a #显示文件,参数:-ARld1Srt
[root@centos7 ~]# stat anaconda-ks.cfg #显示:atime,mtime,ctime即访问时间,修改时间,状态时间
[root@centos7 ~]# touch #文件不存在创建空文件;刷新已存在文件的时间 -a 仅改变 atime 和 ctime -m 仅改变 mtime 和 ctime -t [[CC]YY]MMDDhhmm[.ss] 指定 atime 和 mtime 的时间戳(年月日小时分秒) -c 如果不存在,则不创建
[root@centos7 ~]# cp #拷贝 cp [选项]... [-T] 源文件 目标文件 cp [选项]... 源文件... 目录 cp [选项]... -t 目录 源文件... cp -r #复制目录 cp -f #目标文件存在,先删除后复制 cp -p #保留所有者属性 cp -a #递归;保留链接(相当于-d);保留所有属性(备份手段) cp -av #备份+显示信息 cp –backup=numbered 原文件 目标文件 #不用担心覆盖,会备 #实现批量备份:先使用cp命令复制,再使用rename更改文件名 [root@centos7 ~]# rename "conf" "conf.bak" file*
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:递归删除目录树
[root@centos7 ~]# shred #安全删除文件 -z 最后一次用 0 覆盖;-v 看过程;-u 覆盖后删除;-n 6 覆盖 6 次
1.9 索引节点
inode(index node)表中包含文件系统所有文件列表,一个节点(索引节点)是在一个表项,包含有关文件的信息(元数据),包括:
文件类型,权限,UID,GID
链接数(指向这个文件路径名称个数)
该文件的大小和不同的时间戳
指向磁盘上文件的数据块指针
有关文件的其他数据
总结:rm 命令删除可以使链接数递减,从而释放的 indoe 号可以被用,把数据块放到空闲列表中数据实际上不会马上被删除,但当另一个文件使用数据块时将被覆盖,所以可以使用 shred 安全删除(覆盖删除)。
1.10 软硬链接
节点编号每个文件一个(可以使用 ln 创建硬链接实现一个节点编号对应对个文件名)
硬链接的本质:一个节点多个名字(平等关系)同一分区、针对于文件
目录链接数默认为 2:.当前目录和目录名;在目录里在创建一个目录,则有:..上一级目录,链接数变为 3)
软链接的本质:快捷方式;软链接的大小和路径有关和原文件大小无关
ln -s 命令创建软连接,软链接不能写相对当前路径,相对的是软链接的路径
软硬链接的区别:
本质:
硬链接:同一个文件多个名字
软链接:一个文件对应快捷方式,是不同文件
表现:
链接数
跨分区
是否支持目录
与原始文件的关系
删除
大小
部署软件使用软链接实现版本切换
1.11 确定文件内容
文件可以包含多种类型的数据,检查文件的类型,然后确定适当的打开命令或应用程序使用
file [option]: -b 列出文件辨识结果时,不显示文件名称 -f filelist 列出文件 filelist 中文件名的文件类型 -F 使用指定分隔符号替换输出文件名后默认的“ :”分隔符 -L 查看对应软链接对应文件的文件类型
1.12 获取多层次的帮助
[root@centos7 ~]# whatis cp [root@centos7 ~]# man -f cp
[root@centos7 ~]# command –help
[root@centos7 ~]#man 1 rm
man 帮助: 查看 man 手册页:man [章节] keyword 列出所有帮助:man -a keyword 搜索 man 手册:man -k ketword 列出所有匹配的页面 man 章节: 1:用户命令;2:系统调用; 3:C 库调用;4:设备文件及特殊文件; 5:配置文件格式;6:游戏;7:杂项; 8:管理类命令;9:LINUX 内核 API
man 手册放在/usr/share/man;man 命令的配置文件:/etc/man.config | man db.conf
内部命令:help 命令 #使用help获取内部命令帮助信息 外部命令:man 命令、--help #使用man或--help获取外部命令帮助信息