Linux shell 简介
Linux shell指的是一种程序,有了它,用户就能通过键盘输入指令来操作计算机了。这种面向命令行的用户界面被称为 CLI(Command Line interface)。
专业的 Linux用户认为Shell是一个非常有用的工具,学习 Linux时一定要学习Shell,至少要掌握一些基础知识和基本的命令。
启动shell
在启动Linux桌面系统后,Shell已经在后台运行起来了,但并没有显示出来。如果想让它显示出来,
按如下的组合键就可以:
<Ctrl> + <Alt> + <F2>
组合键中的F2可以替换为F3、F4、F5、F6。
如果要回到图形界面,则按如下组合键:
<Ctrl> + <Alt> + <F7>
另外,在图形桌面环境下运行“系统终端”也可以执行Shell命令,与用组合键切换出来的命令行界面是等效的。“系统终端”启动后是一个命令行操作窗口,可以随时放大缩小,随时关闭,比较方便,推荐使用。启动“系统终端”的方法是:
【开始】 → 【应用程序】 → 【附件】 → 【系统终端】
该软件允许建立多个Shell客户端,它们相互独立,可以通过标签
在彼此之间进行切换。
关闭shell
看来应该以 shutdown 命令来结束本次讨论。当您需要手动关闭时,您可以使用以下命令立即进行关闭:
$ shutdown -h now
您可以使用以下命令手动地重新启动系统:
$ shutdown -r now
注意这两个命令都需要指定时间。您可以指定 "now" 或使用带有时间秒数的 -t 选项。
Shell命令基本规则
一般格式
Shell命令的一般格式如下:
命令名 【选项】 【参数1】 【参数2】...
【选项】是对命令的特别定义,以减号(-)开始,多个选项可以用一个 减号(-)连起来,如ls -l -a 与ls -la 相同。
【参数】提供命令运行的信息,或者是命令执行过程中所使用的文件名。
使用分号(可以将两个命令隔开,这样可以实现一行中输入多个命令。命令的执行顺序和输入的顺序
相同。
命令补全
在送入命令的任何时刻,可以按<Tab>键,当这样做时,系统将试图补全此时已输入的命令。如果已经输入的字符串不足以唯一地确定它应该使用的命令,系统将发出警告声。再次按<Tab>键,系统则会给出可用来用来补全的字符串清单。使用命令补全功能,可以提高使用长命令或操作较长名字的文件或文件夹的都是非常有意义的。
历史命令
系统会把过去输入过的命令记忆下来,只要按方向键中的上下箭头,就可以选择以前输入过的命令了。
联机帮助
可以通过man命令来查看任何命令的联机帮助信息。它将命令名作为参数,该命令的语法格式为:
man 【命令名】
在任何命令之后给help参数,也可以显示该命令的帮助信息。
键入 q 键退出
常用的Shell命令
目录和文件操作
pwd----------------查看当前目录相对于根目录的位置
ls---------------查看当前目录内容
ls -l-------------以长格式查看当前目录内容。对应每个文件的条目将包括连接数目、所有者、大小、最后修改时间、权限等内容
cd [目的目录名]-------------改变当前目录。目的目录名可用相对路径表示,也可以用绝对路径表示。
cd ..------------转移到上一级目录
cd ~ ---------------回到根目录
创建目录
mkdir [新目录名]
例:
mkdir /var/ftp
删除空目录
rmdir [目录名]
例:
rmdir /var/ftp
递归删除一个目录中的所有文件和该目录本身。
rm -r [目录名]
复制文件
cp [源文件名] [目标文件名]
重命名文件
mv [源文件名] [目标文件名]
例:
mv /etc/rc.d/rc3.d/K50xinetd /etc/rc.d/rc3.d/S50xinetd
删除文件
rm [文件名]
不需确认地删除多个文件
rm -f [带通配符的文件名]
硬链接文件。不能对目录文件做硬链接,不能在不同的文件系统之间做硬链接。
ln [源文件名] [目标文件名]
如下面的例子。源文件abc.png存储在/root下,硬链接myabc.png存储在用户workman的家目录下。
做了这个链接之后,用户root和workman就可以使用不同的文件名来读写同一个图形文件。即使root把abc.png删除,这个图形文件仍然存在,只有当workman把myabc.png也删除后,这个文件才会彻底从计算机上消失。
ln /root/abc.png /home/workman/myabc.png
软链接文件。也就是符号链接。可用此法创建文件的快捷方式。
ln -s [源文件或文件夹名] [目标名]
按文件名查找文件。
find / -name nametofind -print
改变文件所有者。
例:
chown workman.workgroup /data/pub/upload
改变文件访问权限
例:
chmod -R 755 /usr/local/LumaQQ
查看一个文件有多少行
wc -l usr.bin
查看一个文件有多少字节
wc -c usr.bin
查看文本文件的内容
cat usr.bin
用户管理
改变身份。如果不指定用户名,则默认将用户身份换至root。从root身份切换到其他任何身份都不需
要口令。
su [username]
添加用户
例:
adduser -c "MyW" -d /home/workman -g root workman
设置用户口令
例:
passwd workman
安装和卸载软件
安装rpm软件
例:
rpm -Uvh kdevelope-3.1-1.i386.rpm
卸载rpm软件
例:
rpm -e kdevelope
配置、编译、安装、卸载源码发布的软件包。
./configure
make
make install
make clean
卸载源码发布的软件包
make uninstall
文件的打包和解包
.tar
解包:tar xvf FileName.tar
打包:tar cvf FileName.tar DirName
---------------------------------------------
.tar.Z
解压:tar Zxvf FileName.tar.Z
压缩:tar Zcvf FileName.tar.Z DirName
---------------------------------------------
.zip
解压:unzip FileName.zip
压缩:zip FileName.zip DirName
---------------------------------------------
.rar
解压:rar x FileName.rar
压缩:rar a FileName.rar DirName
---------------------------------------------
.rpm
解包:rpm2cpio FileName.rpm | cpio -div
---------------------------------------------
.deb
解包:ar p FileName.deb data.tar.gz | tar zxf -
---------------------------------------------
.deb
解包:ar p FileName.deb data.tar.gz | tar zxf -
---------------------------------------------
挂装一个iso文件
mount umount 命令
首先把光盘安放好以后,执行以下命令:
mount -t iso9660 /dev/cdrom /mnt/cdrom
把光驱挂装到/mnt/cdrom目录
-t参数是指定光盘的文件系统类型,一般来说,光盘都是用的iso9660标准的格式。
接下来的/dev/cdrom是你的光驱对应的设备文件,我们前面说过每一个硬件设备都对应了一个标准的设备文件。
最后一个/mnt/cdrom目录是你的一个本地硬盘上的目录,在使用以前如果发现没有这个目录,可以建立一个。当然也不一定非要使用这个目录,你甚至可以很变态的使用mount /dev/cdrom /root命令把你的光驱挂装到你的的/root目录,这样一来你的/root的内容将不再是原来的内容,直到你取消挂载。
下面的命令取消挂载:
umount /mnt/cdrom 或 umount /dev/cdrom
这两个命令都可以把刚才挂装上去的光盘取消挂载,只有这样你的光盘才能取出。
生成一个iso文件
cp /dev/cdrom /home/gsh/TomJerry1.iso
远程Shell登录
ssh远程登录进行命令行操作
ssh -l workman 192.168.0.101
ssh远程登录进行文件的传送
sftp workman@192.168.0.101
管 道
将一个程序的标准输出写道一个文件中去,再将这个文件的内容作为另一个命令的标准输入,等效于通过临时文件将两个命令结合起来。这种情况很普遍,需要Linux系统提供一种功能:它不需要或不必使用临时文件,就能将两条命令结合在一起。这种功能就是管道。
管道的操作符是一个竖杠 “|”。管道是可以嵌套使用的,因此可以把多个命令结合在一起。
接上例,如果执行下面的命令将直接返回/usr/bin中的文件列表的行数,而不是列表的内容。
ls /usr/bin | wc -l
----------------------------------
我们希望用一个文件来纪录ls的命令显示的所有结果,难道需要用手工输入?不需要,我们介绍两个管道符号:“>”“>>”,也就是大于符号啦。
ls /dev > filenames.txt
还有一个管道符号是由两个大于号组成的“>>”,它和刚才“>”的区别在于一个大于符号的管道是用来创建一个新的文件filenames.txt,如果已经有了同名的文件就复盖掉以前的内容;而两个大于符号的管道是用来在已经存在的文件后面追加新的内容,如果没有这个文件就创建它。
现在我们vi filenames.txt看看一共有多少行,是不是1000多行啊?我们运行
ls /dev >> filenames.txt
再来vi filenames.txt看看,是不是一共2000多行啦?
其实这两个管道符号很容易记忆,向左边的箭头意思就是把前面命令的内容输入到后面的文件中去,刚才那个“|”管道符号是用来把前面命令的输出结果当作后面一个命令的输入数据。下面我们看一个和刚才“>>”刚刚相反的管道符号“<<”:
cat >> friends << "EOF"
> a
> b
> c
> EOF
运行第一行以后,意思就是把我们接下来的输入内容保存到friends文件里面,当我们输入“EOF”的时候结束。“<<”的意思就是向前面的命令传送一个数据。
中间我象征性的输入了a b c三行,每一行前面的“>”是系统自动产生的提示符号。第四行输入“EOF”系统就保存刚才输入的a b c三行到一个叫做friends的文件里面去。
现在我们cat friends看看是不是刚才的输入成功的保存了。怎么样,同样的命令,使用不同的管道符号,即可以显示文件内容,也可以用来创建文件,这就是管道符号的强大。
远程Shell服务
支持远程操作是Linux的一个非常重要的特点。利用此功能,用户从另一台计算机远程登录上来,进行Shell命令的操作。
红旗Linux4.1桌面版已经安装了支持远程操作的安全Shell服务软件OpenSSH。在默认情况下,此软件并没有运行起来。可以通过服务控制启动OpenSSH来支持远程操作。下面介绍一下操作方法。
首先,从开始菜单启动服务管理工具,方法是:
【开始】→【设置】→【控制面板】→【服务】
从服务管理工具中找到sshd(安全Shell服务),如图9-2。选中它,从操作菜单中就可以启动安全Shell服务 了:
【操作】→【启动】
如果希望,每次启动计算机时,自动启动安全Shell服务 ,可以选中它,修改它的属性:
【操作】→【属性】
修改属性的界面,把启动类别改成自动即可。
提示:如果想用一台装有windows系统的电脑进行远程操作,要在这台电脑上安装ssh客户端程序。
可以使用运行于Windows上的专用客户端程序SSHSecureShellClient。另外使用putty等通用的ssh客户端软件也能进行远程操作。