fazionlan blog in 178Linux.July 20nd.
内核、版本信息 # uname -a # Get the kernel version# lsb_release -a # System release version
#cat /etc/redhat-release -> /etc/centos-release #可修改版本信息
#cat /etc/issue #用于用户登录提示的文件
#id -u (user) #查看用户uiduid = 0 是管理员,root不代表管理员 终端类型
物理终端:/dev/console #物理显示器和键盘
虚拟终端:/dev/pts/* #软件虚拟的
交互式接口:在终端附加的一个交互式应用程序GUI(Graphic User Interface):Desktop{GNOME(c,gtk)、KDE(c++,Qt)、XFCE}
CLI(Command Line Interface):Shell{sh、csh、tcsh、ksh、bash}
Shell 是Linux的命令解释器,在Linux中提供了用户与内核进行交互操作的接口,它接收用户命令并把它送到内核去执行
GNU Bourne-Again Shell(bash)是GNU计划中重要工具软件之一,目前是Linux标准的shell,与sh兼容
echo $SHELL #show current shell typecat /etc/shells #查看所有的shell类型
getent passwd fz
#getent passwd ftp #查看用户使用的shell Linux系统中Shell所处的位置

shell的内建命令与外部命令 shell内、外命令 eg:
#tpye ls
>ls is a shell builtin
#tpye ifconfig
>ifconfig is /sbin/ifconfig
内建命令:系统自带,集成在shell中,存放在/bin/bash,用户登录自动加载到内存
外部命令:存放在在可执行程序的路径中,$ hash查看已经加载的外部命令
echo $PATH #显示PATH变量定义的路径,外部命令的路径需加到环境尽量中别名命令―>内建命令 ―>缓存(已加载的外部命令)―>PATH变量中的目录(外部命令)―>找不到报错
如果缓存有但是命令已不在缓存的目录,用$ hash -d command清除缓存,或者hash -r清除所有缓存
#enable -n cd #禁用内建命令cd#enable cd #启用内建命令cd alias 查看所有命令别名 #unalias command
#alias ls='ls --color=auto' \ls = 'ls' = /bin/ls #执行原始命令
which找外部可执行程序的路径,通过 PATH环境变量 到该路径内查找可执行文件,所以基本的功能是寻找可执行文件
whereis 会在一个数据库文件中查找,可找到可执行命令和manpage(帮助文件)
/sbin #管理员使用的命令
/bin #普通用户使用的命令
安装可执行文件./file default(d) #使用安装过程所有默认选项,不需确认
命令格式 command options arguments
\ 断行,注意添加空格 ls \-l\ /etc
ls;pwd;date #执行多条命令,分号中间不能有空格
date命令 MMDDhhmm[CC]YY.ss #设置时间 [+FORMAT]%Y:四位年份 | %y: 2位年份 | %m: 月 | %M:分 | %d: 日 | %H: 时 | %S:秒 | %D: 日期 | %F: 日期
clock -w 以系统时间为准,校正硬件时钟
clock -s 以硬件时钟为准,校正系统时间
screen命令screen 是用于同一台机器上,同一用户的命令行的远程协助
先开启screen再执行备份,防止断网而中断备份
screen -S aaa #新建同一台机器的screenscreen -ls #显示已经打开的screen
screen -x aaa #第二台机器加入aaa会话
第二台机器输入exit退出会话
Ctrl +a 、d (按住Ctrl{按a,松开按d) #取消当前screenscreen -r aaa #恢复aaa的会话 echo回显函数,反引号`、单引号'、双引号"、$( )的区别
echo默认加换行;-n 末尾不换行;-e识别转义符号\
转义字符:\a 警示字符,通常是ASCII的BEL字符;
\b 退格;
\c 最后不加上换行符号,并且这个参数之后的任何字符都将被忽略掉;
\f 换行但光标仍旧停留在原来的位置(即竖直位置不变);
\n 换行且光标移至行首;
\r 回车符(光标移至行首,但不换行);
\t 水平制表符TAB;
\v 与\f相同;
\\ 反斜杠字符;
\0nnn 八进制数值;
没有变量和命令时, ‘ ’ 与 “ ” 无区别
echo $PATH #加 “ ”弱引用,识别变量; ‘ ’强引用,原样输出;
` ` = $() 识别命令和变量
${ } #引用变量时与其他字符相连
echo “echo $PATH ” = echo echo $PATH
echo ‘echo $PATH’
echo `echo $PATH` = echo $(echo PATH)

touch `date +%Y` #创建年的文件
touch `cal` #创建好多个文件
echo -e ' \a' #识别该声符\b退格\r覆盖
echo -e "\033[41-47;31-37mhello\033[0m" #hello的背景色;前景色reset #恢复终端乱码
/etc/DIR_COLORS #文件名的颜色
{ }实现全排列{ } 大括号的使用,实现全排列
touch 、rm f{1,2,3} . {pdf,txt}
echo f{1,3,5}.{pdf,txt}
Tab命令补全$ 2T All available commands(common) #命令行补全,我认为是 Bash 最好用的一点
$ (string)2T All available commands starting with (string)
$ /2T Entire directory structure including Hidden one
$ ./2T Only Sub Dirs inside including Hidden one
$ *2T Only Sub Dirs inside without Hidden one
$ ~2T All Present Users on system from "/etc/passwd" #第一次见到,很好用
$ $2T All Sys variables #写Shell脚本的时候很实用
$ @2T Entries from "/etc/hosts" #第一次见到
$ =2T Output like ls or dir #好像还不如 ls 快捷
manpage与help外部命令:bash根据PATH变量的路径搜索
whatis 在数据库中查找,显示命令的简要说明,显示在manpage的章节
#makewhatis #cent6生成数据库,忙等待#mandb #cent7生成数据库,速度快 #whatis passwd #显示/etc/passwd和passwd外部命令的man章节
help +内建命令 #内建命令不能用man page,不对的
type查看是否内部命令
man #外部命令或标准库的man page
man -f rm = whatis rm
man -k rm #所有带有‘rm’的命令或文件
history~目录/ .bash_history文件中存放历史命令,刚执行的命令保存在内存中即history命令看到的,当用户登出时写入.bash_history文件中
#↑(Ctrl+p) #显示上一条命令#↓(Ctrl+n) #显示下一条命令
#!num #执行命令历史列表的第num条命令
#!! #执行上一条命令
#!?string? #执行含有string字符串的最新命令
#Ctrl+r #然后输入若干字符,开始向上搜索包含该字符的命令,继续按Ctrl+r,搜索上一条匹配的命令
#Ctrl+s #与Ctrl+r类似,只是正向检索 练习1:用echo打印带颜色的闪烁倒三角 [fz@cent6 Desktop]$ c1=41
[fz@cent6 Desktop]$ c2=31
[fz@cent6 Desktop]$ k=0
[fz@cent6 Desktop]$ read -p "input line number:" num
input line number:30
[fz@cent6 Desktop]$ for i in `seq 0 $num`; do
> k=$[$i*2]
> while [ $k -lt $[$num*2-1] ]; do
> echo -ne "\033[$[${c1}+$[$k%5]];37m\033[4m\033[5m*\033[0m"
> k=$[$k+1]
> done
> echo
> for k in `seq 0 $i`; do
> echo -ne " "
> done
> done

练习2: 显示前10天的年月日; 显示后20天的年月日