fazionlan blog in 51cto.July 22nd.
内核、版本信息
# 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 type cat /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 #新建同一台机器的screen screen -ls #显示已经打开的screen screen -x aaa #第二台机器加入aaa会话 第二台机器输入exit退出会话 Ctrl +a 、d (按住Ctrl{按a,松开按d) #取消当前screen screen -r aaa #恢复aaa的会话 |
echo回显函数,反引号`、单引号'、双引号"、$( )的区别
echo默认加换行;-n 末尾不换行 没有变量和命令时, ‘ ’ 与 “ ” 无区别 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天的年月日
|