shell常用命令&脚本编写
2016-01-12 本文已影响995人
蒲公英少年
常用命令
-
想看看你的Shell是哪一种,执行命令: echo $SHELL
在Linux中,$符号代表一个shell变量。所有的shell都用这种方式使用变量。有一些shell变量在你的系统启动 的时候就有了默认值。例如,$SHELL;$LOGNAME是你的登录名,而$PATH变量指明了你的shell命令的搜索范围。 echo命令的作用就是打印出你的输入。如果你的输入具有shell的特殊意义,例如shell变量,他就输出变量的值。
-
ls -la
这行命令的意义是输出当前目录的所有文件的文件名,l代表“long”,a代表“all”,有了l选项,你会发现,输 出的内容比较丰富,不只包括文件 名,还有文件的访问权限,所有者,所属组等。你会发现这个命令会在屏幕上 输出大量的信息,如果当前目录的文件比较多的话。现在就是“pipe”出场的时候了。 ls -la | more ls -l a* 这个命令会列出在当前工作目录下所有的以小写a开头的文件,比如说abc.txt,alpha.jpg等等。 ls a?cd 这条命令会列出所有以小写a开头隔一个未知字符以小写cd结尾的所有文件。例如adcd,axcd,但是不会列出adfdcd, 也不会列出axcd.txt。
-
man:如果你想了解每一个命令代表什么含义以及他的用法,你就可以使用man(意义为manual)命令,例如:
man ls ,man输出的内容是为系统管理员和开发者编写的,如果你想了解更多命令的用法,你可以去找网络上 的Linux命令文档,有一个非常方便的就是丹尼尔·巴雷特的Linux的袖珍指南。
-
su和sudo
su命令的作用是切换用户,这也被称为超级用户,因为在有些系统中su命令可以使你以系统的所有权限用户 root登录。除非你是系统管理员,否则我绝不推荐你使用su切换到root,因为这可能给你带来很多麻烦。 一个相对安全的多的办法是使用sudo命令,这个命令可以上你以root权限运行一个命令。这两个命令都需要 系统密码。在大多数Linux的桌面发行版中这两个是相同的,就是你系统的第一个用户设置的密码。
-
grep:grep是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。
例如: grep foo /etc/passwd 返回在password文件中所有的含有foo的行 grep -i “foo” /etc/passwd -i选项是忽略大小写,这就意味着若某一行含有FOO或FOo也会被搜索到。 grep还支持递归搜索: grep -r “foo” /home/sjvn 这条命令将会搜索/home/sjvn目录及其子目录下所有的包含“foo”的行 grep也通常与其他命令串连起来使用,例如: ls -la | grep foo* 列出当前目录下任何以foo开头的文件或目录。例如如下文件将被匹配:foo,foobar,foolish.txt等等。
-
history : 显示出最近使用的全部命令
-
! : 返回上一次使用的命令
如: ! ls 显示出上一次ls 命令的具体内容.选取哪一个命令后默认已经将该命令复制到剪切板, 直接command+v就可以粘贴该命令了.
-
cat + 文件名 : 列出该文件的内容
-
mv +旧文件名 + 新文件名 : 更改文件名
-
切换文件目录
cd : 根目录,即当前用户的目录 cd . : 当前目录 cd .. : 进入当前目录的上级目录
-
./可执行文件 : 执行当前文件
-
ls : 列出当前用户的所有文件夹
, -
ls -F : 列出当前用户的文件夹,如是文件夹,文件名后面有/
-
ls -lrt : 以文件修改的时间列出当前用户的文件夹
-
tab : 补齐正在输入的文件名
-
clear:如果你觉得你的屏幕上有太多的东西,看起来很讨厌,可以使用clear命令清空文件/目录命令
-
cp:cp代表copy,就是复制,他可以复制一个或多个文件到指定的一个或多个目录下。
一个通常的用法是: cp fred.txt ethel.txt 把fred.txt中的内容复制到当前文件夹中名为ethel.txt中 cp fred.txt /home/sjvn/docs/fred.txt 把fred.txt复制到指定文件中。 cp *.txt /home/sjvn/docs/ 复制当前目录下所有以.txt结尾的文件到指定的目录下。 cp -r /home/sjvn/docs/* /home/sjvn/backup 递归的复制在/home/sjvn/docs/目录下的所有文件到指定的文件夹。
-
hostname:显示你当前登录进去的计算机的名称。
-
mv:mv(意义为move)顾名思义就是移动,可以移动指定文件到指定位置。当然这个命令有的时候还可以用来实现重命名。
例如: mv fred.txt ethel.txt 这条命令的作用你可以简单的认为是重命名fred.txt为ethel.txt。 当然此命令还有其他用法,此处不再一一罗列,用法与cp类似,只是这条命令不再保留原文件。
-
rm:rm代表remove,是删除的意思,所以我运行:
rm fred.txt 我将删除fred.txt。 我强烈推荐你在执行rm命令的时候使用-i选项。这儿选项将在你执行命令的时候询问你是否要真的删除文件。就像这样: rm -i fred.txt
编写shell脚本
-
例如:find + <条件> 是执行命令,意思为查找文件
$ find ./ -size +200M -exec du -h {} \; //表示在当前目录下查找大于200M的文件
-
但是每一次输入这些命令,比较麻烦,如果有更多的命令需要一起执行,那将会更加麻烦,我们可以事先将我们需要执行的一系列命令放在一个文件中,这个文件就是一个脚本文件,以.sh结尾,然后编译脚本,最后执行脚本就可以得到我们想要执行一系列命令的结果,这对于我们经常用的一系列命令非常方便。
vim findLarger200M.sh //创建一个脚本并打开 find ./ -size +200M -exec du -h {} \; //在里面利用find写一个查找文件脚本 chmod u+x findLarger200M.sh //编译脚本,生成可执行脚本文件 ./findLarger200M.sh //执行,注意是 ./ + 脚本文件名