1、实现自动登录
为实现root用户直接登录系统,可进行如下配置:
# gedit # nano /etc/gdm/custom.conf [daemon] AutomaticLoginEnable=true AutomaticLogin=root
常用的与登录提示信息相关的配置文件:
# vim /etc/issue //修改登录前显示信息 # vim /etc/motd //修改登录后提示信息
2、终端terminal
设备终端(键盘鼠标显示器)
物理终端(控制台console,/dev/console)
虚拟终端(tty:teletypewriters,/dev/tty# #为[1-6],tty 可有n个可修改配置文件)
图形终端(/dev/tty7) startx, xwindows
CentOS 6: Ctrl + Alt + F7
CentOS 7: 在哪个终端启动,即图形终端位于哪个虚拟终端
串行终端(ttyS,/dev/ttyS#)
伪终端(pty, SSH远程连接,pty:pseudo-tty ,/dev/pts/#)
快捷键切换:Ctrl+Alt+F[1-6],Alt+F1/2/3/4/5/6(在图形界面情况下)
相关命令:
# chvt 3 //命令切换终端 # tty //查看当前的终端设备
3、交互式接口
GUI:Graphic User Interface
CLI:Command Line Interface
Linux Desktop:
GNOME (C, 图形库gtk)
KDE (C++,图形库qt)
XFCE (轻量级桌面)
# init 0/3/5/6 //模式切换 # runlevel //查看系统运行级别 5 3 //表示由图形模式切换到文本模式,若系统刚启动则为N 5 # startx //开启图形界面,区别init Ctrl+C //关闭图形界面快捷键
4、Shell简介
Shell 是Linux系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行
Shell也被称为LINUX的命令解释器(command interpreter),是一种高级程序设计语言。
# echo ${SHELL} //查看当前使用的shell # cat /etc/shells //显示系统支持的shell环境 # /bin/csh //shell环境切换 # exit //退回以前shell
5、命令提示符
说明:#表示管理员 、$表示普通用户
[root@centos6 ~] 字段说明:
其中,root为当前用户,centos6为主机名简称,~字段显示相对路径
# echo $PS1 //显示提示符格式 # PS1="{\u@\H \t}" //临时修改提示符格式 # nano /etc/profile.d/env.sh //永久修改提示符格式
环境变量颜色设置:
说明:PS1用到的配置文件:个人配置文件 ~/.bashrc 或者是全局配置文件 /etc/bashrc
PS1="\[\e[1;5;41;33m\][\u@\h \W]\\$\[\e[0m\]" ----->"5"为每5s闪烁一次
修改前:
PS1 默认值:
PS1='[\u@\h \W]\$ '
修改后:
PS1='\[\e[1;35m\][\[\e[1;33m\]\u@\h\[\e[1;31m\] \w\[\e[1;35m\]]\[\e[1;36m\]\$ \[\e[0m\]' PS1='\[\e[1;35m\][\[\e[1;34m\]\u@\h\[\e[1;31m\] \w\[\e[1;35m\]]\[\e[1;36m\]\$ \[\e[0m\]'
代码解释如下:
PS1='\[\e[1;35m\][ ------> 定义左边的“[”为洋红粗体 ------>“\[”一段不显示字串的开始 ------> “\e” 转义序列开始,等同于 “/033” ------> “[” 字体颜色开始 ------> “1”粗体;“0”默认 ------> “35m”洋红 ------> “\]”一段不显示字串的结束 ------> “[”提示符左边的“[” \[\e[1;33m\]\u@\h ------> 定义“\u@\h”为;×××粗体 \[\e[1;31m\]\w ------> 定义“\w”为:红色粗体 \[\e[1;35m\]] ------> 定义右边的“]”为:洋红粗体 \[\e[1;36m\]\$ ------> 定义“\$”为:青色粗体 \[\e[0m\]' ------> 文本颜色复位
可选的字体颜色代码:30(黑色)、31(红色)、32(绿色)、33(×××)、34(蓝色)、35(洋红)、36(青色)、37(白色)。
可选的背景颜色代码:40-47
6、内部命令(内存)、外部命令(磁盘)、别名
在shell中可执行的命令有两类内部命令、外部命令
1)内部命令:由shell自带的,开机加载到内存中,运行速度比较快
# help //内部命令列表(同时查看是否有星号,确定内部命令禁用) # enable cmd //启用内部命令 # enable –n cmd //禁用内部命令 # enable –n //查看所有禁用的内部命令(或使用help命令,显示为*)
2)外部命令:在文件系统路径下有对应的可执行程序文件,存储在磁盘里,在执行时才会缓存到内存
# type who //type命令区别内部、外部命令 # echo $PATH # yes //一直显示某字符 # which yes //查看外部命令yes的路径 选项: -a 显示所有路径 # whereis who //显示命令路径、一些文档的路径
hash缓存表
系统初始hash表为空,当外部命令执行时,默认会从PATH路径下寻找该命令,找到后会将这条命令的路径记录到hash表中,当再次使用该命令时,shell解释器首先会查看hash表,存在将执行之,如果不存在,将会去PATH路径下寻找。利用hash缓存表可大大提高命令的调用速率
常见用法:
# hash //查看缓存的命令 # hash -l //显示hash缓存,可作为输入使用 # hash –p path name //将命令全路径path起别名为name # hash –t name //打印缓存中别名name真实的路径 # hash –d name //清除name缓存 # hash –r //清除缓存
3)别名(alias)
# alias //显示当前所有命令别名 # alias abcd='df' //定义别名实例 # unalias cp //取消别名 选项: -a 取消所有别名 # nano ~/.bashrc //定义当前用户,区别全局/etc/bashrc # source ~/.bashrc //重新读取配置文件(或使用. ~/.bashrc,其中.为内部命令)
实验验证:
a)当别名与原命令同名情况,调用原命令(以ls为例):
# /bin/ls //此方法适用有路径的外部命令(使用原始命令也可用 \ls 、'ls'、command ls、"ls") # which --skip-alias ls //不显示alias信息,只显示路径
b)命令执行优先级判断实验:别名>内部>外部
以enable和yes两个内部命令,验证别名和内部命令的优先级
# alias enable=who //别名方式高于内部命令 # enable root :0 2018-03-31 15:48 (:0) root pts/0 2018-03-31 16:25 (192.168.50.1)
注意:
echo即是内部命令又是外部命令
c)缓存原理实验验证:
下面以yes为例进行命令路径缓存原理实验
# type yes yes is hashed (/usr/bin/yes) # echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin # cp /usr/bin/yes /usr/local/sbin/ # ll /usr/local/sbin/yes -rwxr-xr-x. 1 root root 28976 Mar 31 16:41 /usr/local/sbin/yes # ll /usr/bin/yes -rwxr-xr-x. 1 root root 28976 Nov 6 2016 /usr/bin/yes # yes # type yes yes is hashed (/usr/bin/yes) # hash # hash -r # yes # type yes yes is hashed (/usr/local/sbin/yes) # rm -f /usr/local/sbin/yes # yes -bash: /usr/local/sbin/yes: No such file or directory
d)小技巧总结:
终止执行:Ctrl+c 、Ctrl+d
命令组合使用;
命令换行使用\(注意空格)
7、时间、日期、时区和语言设置
1)时间:
有许多场合都使用时间戳的方式表示时间,unix/linux时间戳是按照从格林威治时间1970年1月1日期计算的一个秒数
# date //查看系统时间 # date 0327142019.30 //修改系统时间(月日时分年.秒) Wed Mar 27 14:20:30 CST 2019 # date +%s //表示当前系统时间到1970年1月1日隔多少秒 # date -d @1522488941 //时间戳转换为到现在的具体时间 # clock //查看硬件时间(或# hwclock) 选项: -s, --hctosys 以硬件时钟为准,校正系统时钟 -w, --systohc 以系统时钟为准,校正硬件时钟
2)日历:
# cal -y //显示日历 # cal 9 1752 //1752年调整时间
3)时区:
/etc/loacltime //设置时区(/usr/share/zoneinfo/Asia/Shanghai)
# timedatectl status //显示当前系统时区(RHEL7) # timedatectl list-timezones //显示所有时区(RHEL7) # timedatectl set-timezone Asia/Shanghai //设置时区(RHEL7) # tzselect //设置时区(RHEL6)
4)语言:
# echo $LANG //显示语言环境 # vim /etc/sysconfig/i18n //设置语言 LANG="en_US.UTF-8" # wall "你好" //发消息
8、简单命令
1)who命令:
# whoami //显示当前登录有效用户 # who //系统当前所有的登录会话 # w //系统当前所有的登录会话及所做的操作 # who am i //显示当前用户的登录会话(注意后两项可随便写)
2)screen命令:
说明:常用于备份操作,不依赖于网络状态
# screen -S help //创建一个help会话 # screen -ls //显示 # screen -x help //对端加入,必须为统一帐户连接 Ctrl+a,d //离开当前会话(先按Ctrl+a,松手按d ) # screen -r //重新加入
3)echo命令:
选项:
-E (默认)不支持\解释功能
-n 不自动换行
-e 启用\字符解释功能
说明:
启用命令选项-e,若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出
\a :发出警告声 \b :退格键 \v :垂直的TAB键 \c :最后不加上换行符号,即不换行 \n :换行且光标移至行首 \r :回车,即光标移至行首,但不换行 \t :同行中字符间插入TAB \\ :插入\字符 \0nnn :插入nnn(八进制)所代表的ASCII字符 \xHH :插入HH(十六进制)所代表的ASCII字
实验示例:
# echo -e "hello\n" # echo -e "hello\c" # echo -e "hello\tJerome" # echo -e "hello\vJerome\vTom" # echo -e "Jerome\a" # echo -e "Jerome\rTom\c" //光标移到前面Tom将Jerome前三个字母覆盖 # echo -e "\0141" # cat > file1 <<EOF > a > b > c > EOF # hexdump -C file1 //查看二进制文件 00000000 61 0a 62 0a 63 0a |a.b.c.| 00000006 # bc (ibase/obase=2/8/16进制) //计算器功能
9、命令套用及特殊字符
1)各种引号作用说明:
单引号:字符串、变量都不认
双引号:字符串、变量认一个
反向单引号:字符串、变量都认,一个命令调用另一个命令输出时使用,其中反向单引号``等同于$()
应用示例:
# echo My hostname is `hostname`! My hostname is centos7.guoguo.com! # echo My hostname is $(hostname)! My hostname is centos7.guoguo.com! # touch file-`date +%F`.log # ll *.log -rw-r--r--. 1 root root 0 Apr 3 15:25 file-2018-04-03.log
实验示例:
a)为区别双引号、单引号、反向单引号功能进行如下实验:
# echo $PS1 \[\e[1;35m\][\[\e[1;33m\]\u@\h\[\e[1;31m\] \W\[\e[1;35m\]]\[\e[1;36m\]\$ \[\e[0m\] # echo echo $PS1 echo \[\e[1;35m\][\[\e[1;33m\]\u@\h\[\e[1;31m\] \W\[\e[1;35m\]]\[\e[1;36m\]\$ \[\e[0m\] # echo "echo $PS1" echo \[\e[1;35m\][\[\e[1;33m\]\u@\h\[\e[1;31m\] \W\[\e[1;35m\]]\[\e[1;36m\]\$ \[\e[0m\] # echo 'echo $PS1' echo $PS1 # echo `echo $PS1` \[\e[1;35m\][\[\e[1;33m\]\u@\h\[\e[1;31m\] \W\[\e[1;35m\]]\[\e[1;36m\]\$ \[\e[0m\]
b)花括号{}:表示范围
# echo {23..16} 23 22 21 20 19 18 17 16 # echo {10..20..2} 10 12 14 16 18 20 # echo {a..Z} //显示ASCII表中a到Z a ` _ ^ ] [ Z # echo file{1,3,5} file1 file3 file5 # echo file{1,3,5}.{log,txt} //笛卡尔乘积的应用 file1.log file1.txt file3.log file3.txt file5.log file5.txt
2)Tab键使用说明:
内部和外部命令补全、路径补全(唯一则补全,否则再次TAB键列表),其中双击Tab键操作说明如下:
command 2Tab //所有子命令或文件补全 string2Tab //以string开头命令 /2Tab //显示所有根目录下一级目录,包括隐藏目录 ./2Tab //当前目录下子目录,包括隐藏目录 *2Tab //当前目录下子目录,不包括隐藏目录 ~2Tab //所有用户列表 $2Tab //所有变量 @2Tab //为/etc/hosts记录 (centos7不支持) =2Tab //相当于ls –A (centos7不支持)
10、执行历史命令
# history # echo $HISTSIZE //记录最近1000条,可修改/etc/profile的记录条数
1)特殊操作说明:
重复前一个命令,有4种方法: 重复前一个命令使用上方向键,并回车执 按 !! 并回车执行 输入 !-1 并回车执行 按 Ctrl+p 并回车执行 !:0 :执行前一条命令(去除参数) Ctrl + n :显示当前历史中的下一条命令,但不执行 Ctrl + j :执行当前命令 !n :执行history命令输出对应序号n的命令 !-n :执行history历史中倒数第n个 !string :重复前一个以“string”开头的命令 !?string :重复前一个包含string的命令 !string:p :仅打印命令历史,而不执行 !$:p :打印输出 !$(上一条命令的最后一个参数)的内容 !*:p :打印输出 !*(上一条命令的所有参数)的内容 ^string :删除上一条命令中的第一个string ^string1^string2 :将上一条命令中的第一个string1替换为string2 !:gs/string1/string2 :将上一条命令中所有的string1都替换为 string2 使用up(向上)和down(向下)键来上下浏览从前输入的命令 Ctrl-r:来在命令历史中搜索命令 (reverse-i-search)`’: Ctrl+g:从历史搜索模式退出 要重新调用前一个命令中最后一个参数 !$ 表示 Esc, . (点击Esc键后松开,然后点击 . 键) Alt+ . (按住Alt键的同时点击 . 键)
2)调用历史参数:
command !^ :利用上一个命令的第一个参数做cmd的参数 command !$ :利用上一个命令的最后一个参数做cmd的参数 command !* :利用上一个命令的全部参数做cmd的参数 command !:n :利用上一个命令的第n个参数做cmd的参数 command !n:^ :调用第n条命令的第一个参数 command !n:$ :调用第n条命令的最后一个参数 command !n:m :调用第n条命令的第m个参数 command !n:* :调用第n条命令的所有参数
实验示例:
# id -u admin1 1000 # !! id -u admin1 1000 # !-1 id -u admin1 1000 # id -u admin1 //使用Trcl+p 1000 # !:0 id uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 # !135 //执行历史命令的编号 id -u admin1 1000 # !-5 //倒序执行 # !echo echo $HISTSIZE 1000 # !?HI echo $HISTSIZE 1000 # touch /data/f1 /data/f2 # ^data^root touch /root/f1 /data/f2 # touch /root/f1 /data/f2 # touch /data/f1 /data/f2 # !:gs/data/root touch /root/f1 /root/f2 # !*:p /root/f1 /root/f2 # touch /root/f1 /root/f2 # !$:p /root/f2 # touch /root/f1 /root/f2 # ll !^ ll /root/f1 -rw-r--r--. 1 root root 0 Apr 3 16:47 /root/f1
11、查看命令帮助
help、--help、-h(/usr/share/man)
1)内部命令:
help COMMAND
man bash
2)外部命令:
a)COMMAND --help COMMAND -h b)使用手册(manual) man COMMAND c)信息页 info COMMAND d)程序自身的帮助文档 README INSTALL ChangeLog e)程序官方文档 官方站点:Documentation f)发行版的官方文档 g)Google
注意:
a)当前用户正常退出时,内存中命令命令会存入当前用户.bash_history(不实时更新)文件,不正常退出会部分丢失
b)命令history -c删除的是内存中的信息,要想彻底删除历史命令,应先删除.bash_history,再用history -c清理内存命令
3)man帮助章节说明
存放位置/usr/share/man
1: 用户命令
2: 系统调用
3: C库调用
4: 设备文件及特殊文件
5: 配置文件格式
6: 游戏
7: 杂项
8: 管理类的命令
9:Linux 内核API
# whereis ls //查看命令帮助存放路径 # man ls # whatis passwd //查看命令的简要描述,等价于# man -f passwd sslpasswd (1ssl) - compute password hashes passwd (1) - update user's authentication tokens passwd (5) - password file # man 5 passwd //指定章节号,查看相应章节 选项: -a 列出所有帮助,q推出跳入下一章节 -k 列出所有匹配的页面,相当于apropos -f 相当于whatis -w 打印man帮助文件的路径
注意:
whatis刚装好的系统不可立即使用,可以采用makewhatis(centos6)、mandb(centos7)制作数据库
4)bash的帮助:
# man bash //建议认真查看
存放所有内部命令、变量的用法,具体如下:
a)命令历史相关环境变量
HISTSIZE:命令历史记录的条数
HISTFILE:指定历史文件,默认为~/.bash_history
HISTFILESIZE:命令历史文件记录历史的条数
HISTTIMEFORMAT="%F %T " 显示时间,可存放在配置文件/etc/profie.d/env.sh
HISTIGNORE="str1:str2*:… " 忽略str1命令,str2开头的历史
b)控制命令历史的记录方式:
环境变量:HISTCONTROL
ignoredups 默认,忽略重复的命令,连续且相同为“重复”
ignorespace 忽略所有以空白开头的命令
ignoreboth 相当于ignoredups, ignorespace的组合
erasedups 删除重复命令
c)全局变量:export 变量名="值"
注意:
a)配置文件存放在 /etc/profile 或 ~/.bash_profile
b)涉及到环境变量的文件建议自己创建,放到/etc/profile.d目录下,便于维护
5)info查看帮助信息
# info ls
6)在/usr/share/doc目录下查看文件帮助
7)官网资料或知识库查询
# sosreport //收集日志文件,请求支持
8)网站和搜索
Openstack filetype:pdf //按文件类型查找
rhca site:redhat.com/docs
12、常用的快捷键
1)bash的快捷键小技巧:
Ctrl + l :清屏,相当于clear命令 Ctrl + o :执行当前命令,并重新显示本命令 Ctrl + s :阻止屏幕输出,锁定 Ctrl + q :允许屏幕输出 Ctrl + c :终止命令 Ctrl + z :挂起命令 Ctrl + a :光标移到命令行首,相当于Home Ctrl + e :光标移到命令行尾,相当于End Ctrl + f :光标向右移动一个字符 Ctrl + b :光标向左移动一个字符 Alt + f :光标向右移动一个单词尾 Alt + b :光标向左移动一个单词首 Ctrl + xx :光标在命令行首和光标之间移动 Ctrl + u :从光标处删除至命令行首 Ctrl + k :从光标处删除至命令行尾 Alt + r :删除当前整行 Ctrl + w :从光标处向左删除至单词首 Alt + d :从光标处向右删除至单词尾 Ctrl + d :删除光标处的一个字符 Ctrl + h :删除光标前的一个字符 Ctrl + y :将删除的字符粘贴至光标后 Alt + c :从光标处开始向右更改为首字母大写的单词 Alt + u :从光标处开始,将右边一个单词更改为大写 Alt + l :从光标处开始,将右边一个单词更改为小写 Ctrl + t :交换光标处和之前的字符位置 Alt + t :交换光标处和之前的单词位置 Alt + N :提示输入指定字符后,重复显示该字符N次 注意:Alt组合快捷键经常和其它软件冲突
2)gnome-terminal快捷键小技巧:
支持多个“标签”shell的图形化终端模拟器
Ctrl-Shift-n :创建新窗口 Ctrl-Shift-q :关闭当前窗口 Ctrl-Shift-t :创建一个标签页 Ctrl-Shift-w :关闭一个标签页 Ctrl-PaUp/PgUn :切换到下一个/前一个标签页 Ctrl-Shift-c :复制选中的文本 Ctrl-Shift-v :把文本粘帖到当前光标处
原文地址:http://blog.51cto.com/guogyangq/2104748