Linux入门笔记

终端terminal

  • 设备终端:键盘,鼠标,显示器
  • 物理终端(/dev/concole):控制台console
  • 虚拟终端(tty:teletypewriters,/dev/tty# #为1-6):tty可有n个,Ctrl+Alt+F[1-6]
  • 图形终端(/ev/tty7) startx,xwindows:CentOS 6:Ctrl+Alt+F7 CentOS7:在那个终端启动,即位于哪个终端
  • 串行终端(/dev/ttyS#):ttyS
  • 伪终端(pty:presudo --t,/dev/pts/#):tty,SSH远程连接
  • 查看当前的终端设备:tty

交互式接口

  • 交互式接口:启动终端后,在终端设备附加一个交互式应用程序
  • GUI:Graphic User Interface
    X protocol,window manager,desktop
    Desktop:GNOME(C,图形库gtk) KDE(C++,图形库qt) KFCE(轻量级桌面)
  • CLI:Command Line Interface
    shell程序:sh(bourn 史蒂夫·伯恩)csh tcsh ksh(korn) bash(bourn again shell)GPL zsh
    不同的shell语法不一样,例如csh不支持用">"创建文件.

什么是shell

  • Shell是Linux系统的用户界面,提供了用户和内核进行交互操作的一种接口,它接收用户输入的命令并把它送入内核去执行
  • shell也被称为Linux的命令解释器(command interpreter)
  • shell是一种高级程序设计语言
    Linux入门笔记_第1张图片

bash shell

  • GNU Bourne-Again Shell(bash)是GNU计划中重要的工具软件之一,目前也是Linux标准的shell,与sh兼容
  • CentOS默认使用
  • 显示当前使用的shell
echo ${SHELL}
  • 限时当系统使用的所有shell
cat /etc/shells

命令提示符

  • 命令提示符:prompt
[root@localhost~]#
#管理员
$普通用户
  • 显示提示符格式
[root@localhost~]#echo $PS1
  • 修改提示符格式
    PS1 = “[\e[1;5;41;33m][\u@\h \W]\$[\e[0m]”
    \e \033 \u 当前用户
    \h 主机名简称 \H 主机名
    \w 当前工作目录 \W 当前工作目录基名
    \t 24小时时间格式 \T 12小时时间格式
    ! 命令历史数 # 开机后命令历史数

执行命令

  • 输入命令后回车
    提请shell程序找到键入命令所对应的可执行程序或代码,并由其分析后提交给内核分配资源将其运行起来。
  • 在shell中可执行的命令有两类(用type+COMMAND可以查看命令类型)
    内部命令(可通过help查看):由shell自带的,而且通过某种命令形式提供。
    help 内部命令列表
    enable cmd 启用内部命令
    enable -n cmd 禁用内部命令(命令前带有*)
    enable -n 查看所有禁用的内部命令
    外部命令:在文件系统路径下有对应的可执行程序文件
    查看路径:which -a | --skip-alias; where is
    命令执行时先查看是否是内部命令(依赖shell,各自shell中的内部命令不一样,外部命令可以支持备用–在不同的bash中)
  • 执行命令的顺序:alias–>内部命令–>hash表(记录外部命令的路径)–>$PATH–>命令找不到

执行外部命令

  • Hash缓存表
    系统初始hash表为空,当外部命令执行时,默认会从PATH路径下寻找该命令,找到后会将这条命令的路径记录到hash表中,当再次使用该命令时,shell解释器首先会查看hash表,存在将执行之,如果不存在,将会去PATH路径下寻找,利用hash缓存表可大大提高命令的调用速率。
  • hash常见用法
    hash 显示hahs缓存
    hash -l 显示hash缓存,可作为输入使用
    hash -p path name 将命令全路径path起别名为name
    hash -t name 打印缓存中name的路径
    hash -d name 清除name缓存
    hash -r 清除缓存
    缓存cache:将硬盘上刚用过的数据存放在内存中,下次使用该数据时直接从内存中取出,速度变快。
    命令别名
  • 显示当前shell进程所有可用的命令别名
alias
  • 定义别名NAME,其相当于执行命令VALUE
alias NAME='VALUE'
  • 在命令行中定义的别名,仅对当前shell进程有效
  • 如果想永久有效,要定义在配置文件中
仅对当前用户: ~/.bashrc
对所用用户有效:/etc/bashrc

让改过的文件生效(将硬盘上的文件读取到内存中)的方法:source filename或者. filename

  • 编辑配置给出的新配置不会立即生效
  • bash进程重新读取配置文件
source /path/to/config_file
. /path/to/config_file
  • 撤销别名:unalias
unalias [-a] name [name...]
-a 取消所有别名
  • 如果别名同原命令同名,如果要执行原命令,可使用
\ALIASNAME
"ALIASNAME"
'ALIASNAME'
command ALIASNAME
/path/command #针对外部命令

命令格式

  • COMMAND [OPTIONS…] [ARGUMENTS]
id -u username

选项:用于启用或关闭命令的某个或某些功能
短选项: -c 例如: -l,-h
长选项:-- word 例如:–all,–human-readable
参数:命令的作用对象,比如文件名,用户名等
注意:
多个选项以及多参数和命令之间使用空白字符分隔
取消和结束命令执行:Ctrl+c,Ctrl+d
多个命令可以用;符号分开
一个命令可以用\分成多行
日期和时间

  • Linux的两种时钟:
    系统时钟:由Linux内核通过CPU的工作频率进行的
    硬件时钟:主板
  • 相关命令
    date 显示和设置系统时间
    date +%s
    date -d @1509536033
    hwclock,clock:显示硬件时钟
    -s,–hctosys 以硬件时钟为准,校正系统时钟
    -我,–systohc 以系统时钟为准,校正硬件时钟
  • 时区:/etc/localtime
  • 显示日历:cal -y
  • 设置时间:date MMDDHHmmYYYY.SS
    简单命令
  • 关机:halt,poweroff
  • 重启:reboot
    -f:强制,不调用shutdown
    -p:切断电源
  • 关机或重启:shutdown
    shutdown [OPTION]… [TIME][MESSAGE]
    -r:reboot
    -h:halt
    -c:cancel
    TIME:无指定,默认相当于+1(CentOS7)
    now:立刻,相当于+0
    +m:相对时间表示法,几分钟之后;例如+3
    hh:mm:绝对时间表示,指具体时间
  • screen命令:
screen -S [SESSION] #创建新screen会话
screen -x [SESSION] #加入screen会话
exit #退出并关闭screen会话
Ctrl+a,d #剥离当前screen会话
screen -ls #显示所有已经打开的screen会话
screen -r [SESSION] #恢复某screen会话
  • echo命令
    功能:显示字符
    语法:echo [-neE] [字符串]
    说明:echo会将输入的字符出纳送往标准输出。输出的字符串间以空白字符隔开,并在最后加上换行号。
    选项:-E (默认)不支持\ 解释功能
    -n 不自动换行
    -e 启用 \ 字符的解释功能
    显示变量:
echo "$VAR_NAME" #变量会替换,弱引用
echo '$VAR_NAME' #变量不会替换,强引用
  • 启动命令选项-e,偶字符串中出现一下字符,则特别加以处理,而不会将它当成一般文字输出。
\a #发出警告声
\b #退格键
\c #最后不加上换行符号
\n #换行且光标移至行首
\r #回车,即光标移至行首,但不换行
\t #插入tab
\\ #插入\字符
\0nnn #插入nnn(八进制)所代表的的ASCII字符
echo -e '\033[43;32;5mLibra\033[0m'
\xHH #插入HH(十六进制)所代表的ASCII数字(man 7 ascii)

字符集和编码

  • ASCII码:计算机内部,所有信息最终都是一个二进制。上世纪60年代,美国制定了一套字符编码,对英语字符与二进制位之间的而关系,做了统一规定。ACII码一共规定了128个字符的编码,占用了一个字节的后面7位,最前面的以为统一规定为0。
  • Unicode:用于表示世界还是那个所有语言中的所有字符。每一个符号都给予一个独一无二的编码数字,Unicode是一个很大的集合,现在的规模可以容纳100多万个符号。Unicode仅仅只是一个字符集,规定了每个字符对应的二进制代码,置于这个二进制代码如何存储则没有规定。
  • Unicode编码方案
    UTF-8:变长,1到4个字节
    UTF-16:变长,2或4个字节
    UTF-32:固定长度,4个字节
  • UTF-8是目前互联网上使用最广泛的一种Unicode编码方式,可变长存储。使用1-4个字节表示一个字符,根据字符的不同变换长度。编码规则如下:
    对于单个字节的字符,第一位设为0,后面的7位对应这个字符的Unicode码。因此,对于英文中的0-127号字符,与ASCII码完全相同。这意味着ASCII码的文档可用UTF-8编码打开。
    对于需要使用N个字节来表示的字符(N>1),第一个字节的前N为都设为1,第N+1位设为0,剩余的N-1个字节的前两位都设为10,省下的二进制位则使用这个字符的Unicode码来填充。
  • 编码转换和查询
    在线转换
    在线编码转换
    中日韩Unicode编码

命令行扩展,被括起来的集合

  • 命令行扩展:$() 或 ``
    把一个命令的输出打印给另一个命令的参数
echo "This system's name is $(hostname)"
#输出This system's name is XXXXX
echo "I am `whomai`"
#输出I am XXX
  • 括号扩展:{}
    打印重复字符串的简化形式
echo file{1,3,5} #结果为file1 file 3 file5
rm -f file{1,3,5}
echo {1..10}
echo {a..z}
echo {000..20..2}

你可能感兴趣的:(Linux)