Linux Shell 与Linux常用命令
Linux的人际交互分为图形界面方式和命令行方式。
Linux本身只是一个操作系统内核,而由X Window图形用户接口为Linux提供图形用户界面功能。可以把X Window理解为一个运行在Linux操作系统上的应用程序,不同用户根据自己需要为自己配置不同的X Window。X Window可分为KDE和Gnome两大类,此外 ubuntu还提供了Unity图形界面。
shell,俗称“壳”,用以和“核”区别,是指“提供使用者使用界面”的软件(命令解释器),类似于windows下的cmd,用来接受用户命令。实际上,X Window也是shell的一种,只不过狭义的shell只用来表示以命令行形式提供的shell。
常见的shell包括ash/bash/ksh/csh/zsh 5种。ubuntu发行版本使用的bash。
启动shell时,先读取/etc/bash.bashrc文件对整个linux系统进行配置,再读取~/.bashrc文件对当前用户进行配置,如果这两个文件有冲突,后者为准。(这类似于vim的配置文件/etc/vim/vimrc和~/.vimrc)
用户可以安装多个shell。与Linux内核类似,shell只提供一个计算机和用户交互的”内核“,其具体的命令输入输出交流还是要通过终端(Terminal)完成。系统在启动时,会自动启动多个终端,如ubuntu会启用7个终端,1~6号终端是直接运行的一个”真实终端“,7号终端交给X Window使用,是图形界面下的终端,使用Ctrl+Alt+Fn在不同终端间切换(Fn=F1~F6)。注意,真实终端下通常无法显示中文字符。
——还可用通过SSH/Telnet实现远程控制shell。Telnet是一种TCP/IP协议,是Internet远程登录服务的标准协议和主要方式,SSH协议则为Telnet提供的远程主机工作能力提供安全保障。远程登录工具:PuttyMan。
shell的工作方式:1--作为命令行提供用户控制内核完成工作——“交互式”
2--作为一种编程语言供开发者使用
第一种方式很简单,与windows cmd类似,介绍一下第二种方式:Linux下存在一种特殊的可执行文件,内容是各种命令组成的纯文本文件(脚本文件),用以完成重复性较强的工作,shell对这种文件进行时别,并自动执行,是一种”非交互式“的工作方式。
shell和用户交互是在终端以字符串形式的输入命令和输出反馈实现的。输入命令格式为:
命令 选项 参数
选项必须以减号开头,Linux以此区分选项和参数。
shell的通配符主要用于模式匹配,比如文件名匹配、路径名搜索、字符串查找等,常用的有*、?和括在[ ]里的字符序列。*表示任意字符串,?表示任意一个字符,[ ]里的字序列表示文件名中[ ]处的字符必须在字符序列的指示范围内。
例如:*.c 表示所有当前目录下所有.c文件,??表示当前目录下所有文件名长为2个字符的文件,a[bc]d指示文件名为abd或acd的文件,a[b-d]e指示文件名为abe,ace,ade的文件。
shell中的引号有单引号、双引号、和反引号三种,单引号内部的字符序列全部作为普通字符被处理,双引号没有单引号那么“绝”,它还是会识别一些引号内的特殊字符,例如“$"、”\"、“`”,即当双引号中的字符序列中含有这几种特殊字符时,这些特殊字符的含义仍会被解释。反引号括起来的字符序列会被shell解释为命令行,在执行时,首先执行该命令行,并将其输出结果取代整个反引号部分(包括两个反引号)。
例如:特殊字符$用以引用变量的值,则对于环境变量PATH,$PATH获取了PATH的值,即一系列目录。而若定义一个字符串string,将$PATH用单引号括起来赋给string,那么$string就仅获取了“$PATH”这个单纯的字符串,而不会将PAT解释为一系列目录。可以用echo命令来查看这些它们的获取结果。
反引号的嵌套使用,内层的反引号需要用反斜杠转义:
string="-a"
abc=`ls \`echo $string\``
echo $abc
Linux的一些常用命令(只做一下整理):
mkdir 文件名 ——创建目录
rmdir 文件名 ——删除目录,只能删除空目录,若要删除非空目录,需要用“ rm -rf 文件名”;使用选项-p可以同时删除空目录上的空父目录。
pwd ——当前工作目录
cd 目录 ——切换当前工作目录 ,其中,.表示当前工作目录,..表示当前工作目录的上一级目录,/表示根目录,~表示当前用户home目录。
ls 选项 文件目录列表 ——显示目录下的文件信息,-a显示全部文件(包括隐藏文件),-l显示文件详细信息,-p在输出文件名的后面加上一个字符说明该文件类型,-1一行只输出一个文件
find 目录列表 匹配标准 ——用于查找文件。常用的有"find 目录 -name 文件名",查找目录下的指定文件名文件,该文件名中加入通配符可实现模糊查找;(我在测试 find -name选项时出现了错误提示“路径必须在表达式之前”,解释如下图)
cat 选项 文件列表 ——用以在命令行显示文件内容,-n可以在文件每行前显示行号;-v 以特殊形式显示控制字符,配以-T表示将TAB显示为uI,配以-E表示在每一行末尾显示一个$字符。其次,“cat 文件a 文件b > 文件c”还可以把文件b的内容连接到文件a后并将连接后的内容写入到新文件c中。
cp 选项 源文件或目录 目标文件或目录 ——用于文件和目录复制。-i可以在复制操作会导致已有文件被覆盖时发出提示请求确认操作,是一种交互式拷贝,更安全。
mv …… ——移动(相当于剪切操作)或者重命名。
wc …… ——统计文件内容
rm …… ——删除文件
ps …… ——显示进程列表,-aux详细输出,-w加宽显示,以完整显示进程信息,可叠加写 如www表示加宽三次,通常最多写三次
kill …… ——输出特定指令给指定进程号PID的进程,默认为终止该进程
ifconfig …… ——IP地址管理
man ——帮助
shutdown、halt、reboot ——用于关机和重启
uname ——查看内核
lsb_release ——查看发行版版本号,该命令需要安装lsb_core