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 发出警告声
     退格键
    	 插入 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获取外部命令帮助信息
原文地址:https://www.cnblogs.com/zyybky/p/12348034.html