linux使用和基础操作

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 发出警告声
      \b 退格键
      \t 插入 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获取外部命令帮助信息

  

上一篇:PS网页设计教程XXI——在Photoshop中创建一个光质感网页设计


下一篇:介绍一个小工具 Linqer