shell脚本编程入门教程(1)

发布时间:2020-06-09编辑:脚本学堂
本节是shell脚本编程入门教程的第一节,介绍下man命令的用法,ls、ll、ln、mv等命令的用法,需要的朋友参考下。
shell脚本编程入门教程 第二部分
按文件大小输出并排序ll -S -h 这个在运维时候,很有用,用来查找大文件
 

复制代码 代码示例:
[root@h1 ~]# ll -S -h 
总用量 321M 
-rw-r--r--  1 root   root 138M 7月  28 19:30 abc1.txt 
-rwx------. 1 root   root  92M 11月 20 2013 jdk-7u25-linux-x64.gz 
-rw-r--r--. 1 root   root  92M 6月   9 17:27 hadoop-2.2.0.tar.gz 
-rw-r--r--. 1 root   root 7.9K 6月  13 19:06 install.log 
drwxr-xr-x  3 root   root 4.0K 7月  29 04:47 hivesrc 
drwxr-xr-x. 8 search  143 4.0K 6月   6 2013 jdk1.7.0_25 
drwxr-xr-x  3 root   root 4.0K 7月   9 04:08 login 
drwxr-xr-x  3 root   root 4.0K 6月  20 02:51 tsethadoop 
-rw-r--r--. 1 root   root 3.4K 6月  13 19:06 install.log.syslog 
-rw-r--r--. 1 root   root 2.1K 6月  16 13:10 initserver.sh 
-rw-------. 1 root   root 1.1K 6月  13 19:06 anaconda-ks.cfg 
-rw-r--r--  1 root   root 1.1K 6月  19 03:31 setlimit.sh 
-rw-r--r--  1 root   root   52 7月  31 19:46 count.txt 

按文件名,排序ll -X
 

复制代码 代码示例:
[root@h1 ~]# ll -X 
总用量 328444 
drwxr-xr-x  3 root   root      4096 7月  29 04:47 hivesrc 
drwxr-xr-x  3 root   root      4096 7月   9 04:08 login 
drwxr-xr-x  3 root   root      4096 6月  20 02:51 tsethadoop 
drwxr-xr-x. 8 search  143      4096 6月   6 2013 jdk1.7.0_25 
-rw-------. 1 root   root      1087 6月  13 19:06 anaconda-ks.cfg 
-rw-r--r--. 1 root   root  96183833 6月   9 17:27 hadoop-2.2.0.tar.gz 
-rwx------. 1 root   root  96316511 11月 20 2013 jdk-7u25-linux-x64.gz 
-rw-r--r--. 1 root   root      7995 6月  13 19:06 install.log 
-rw-r--r--. 1 root   root      2111 6月  16 13:10 initserver.sh 
-rw-r--r--  1 root   root      1048 6月  19 03:31 setlimit.sh 
-rw-r--r--. 1 root   root      3384 6月  13 19:06 install.log.syslog 
-rw-r--r--  1 root   root 143775368 7月  28 19:30 abc1.txt 
-rw-r--r--  1 root   root        52 7月  31 19:46 count.txt 

ll -i显示文件或目录的索引节点inode,第一列的参数
 

复制代码 代码示例:
[root@h1 ~]# ll -i 
总用量 328444 
655837 -rw-r--r--  1 root   root 143775368 7月  28 19:30 abc1.txt 
659103 -rw-------. 1 root   root      1087 6月  13 19:06 anaconda-ks.cfg 
674329 -rw-r--r--  1 root   root        52 7月  31 19:46 count.txt 
660638 -rw-r--r--. 1 root   root  96183833 6月   9 17:27 hadoop-2.2.0.tar.gz 
663837 drwxr-xr-x  3 root   root      4096 7月  29 04:47 hivesrc 
660644 -rw-r--r--. 1 root   root      2111 6月  16 13:10 initserver.sh 
654083 -rw-r--r--. 1 root   root      7995 6月  13 19:06 install.log 
654084 -rw-r--r--. 1 root   root      3384 6月  13 19:06 install.log.syslog 
659106 drwxr-xr-x. 8 search  143      4096 6月   6 2013 jdk1.7.0_25 
659105 -rwx------. 1 root   root  96316511 11月 20 2013 jdk-7u25-linux-x64.gz 
663800 drwxr-xr-x  3 root   root      4096 7月   9 04:08 login 
663149 -rw-r--r--  1 root   root      1048 6月  19 03:31 setlimit.sh 
663148 drwxr-xr-x  3 root   root      4096 6月  20 02:51 tsethadoop 
[root@h1 ~]#  

ls命令还支持,文件过滤,熟悉正则的同学应该都很熟悉
ls -l i* 代表显示以i开头文件或目录
 

复制代码 代码示例:
[root@h1 ~]# ls -l i*      
-rw-r--r--. 1 root root 2111 6月  16 13:10 initserver.sh 
-rw-r--r--. 1 root root 7995 6月  13 19:06 install.log 
-rw-r--r--. 1 root root 3384 6月  13 19:06 install.log.syslog 
intest: 
总用量 0 
 

-rw-r--r-- 1 root root 0 7月  31 21:19 abc.txt 
更多命令语法支持,请使用man命令,还记得用法么?好吧man ls这个命令。

3,touch命令,用来创建一个新文件,还可以改变文件的访问时间,在实际开发中使用较少,请使用man命令,来学习即可。

4,cp 命令 用法: cp source  destination,实际开发使用较多,
例子:
 

 cp test.txt test2.txt 拷贝当前的test.txt并新命令一个test2.txt
cp test.txt /home 拷贝test.txt到home目录下,名字不变
cp -a /abc/  /xyz 拷贝abc文件夹下所有内容到xyz下,xyz目录可以不用提前建立
cp -R /a /b  递归的拷贝文件或文件夹,到另一个目录下。

5,介绍下linux中的软链接和硬链接的区别 (www.jb200.com 脚本学堂)

软链接类似windows下的快捷方式,引用的文件还是原始文件,软链接,可以跨挂载的存储设备使用。
命令: ln -s source  destination

硬链接软件开发中双写模式,建立硬链接的文件,只要向其中一个写入内容,所有的硬链接的内容都会改变,但是硬链接的文件是各自独立的,只能同一个挂载的存储设备下使用。
命令 ln -d source destination

延伸阅读:

实际开发中用的较多的是软链接:
例子,演示了散仙对jdk所建立的一个软连接:
 

复制代码 代码示例:
[root@h1 ~]# ll 
总用量 328464 
-rw-r--r--  1 root   root 143775368 7月  28 19:30 abc1.txt 
-rw-------. 1 root   root      1087 6月  13 19:06 anaconda-ks.cfg 
-rw-r--r--  1 root   root        52 7月  31 21:29 count2.txt 
-rw-r--r--  1 root   root        52 7月  31 19:46 count.txt 
-rw-r--r--. 1 root   root  96183833 6月   9 17:27 hadoop-2.2.0.tar.gz 
-rw-r--r--  1 root   root         1 7月  31 21:25 hh.txt 
drwxr-xr-x  3 root   root      4096 7月  29 04:47 hivesrc 
-rw-r--r--. 1 root   root      2111 6月  16 13:10 initserver.sh 
-rw-r--r--. 1 root   root      7995 6月  13 19:06 install.log 
-rw-r--r--. 1 root   root      3384 6月  13 19:06 install.log.syslog 
drwxr-xr-x  2 root   root      4096 7月  31 21:19 intest 
drwxr-xr-x. 8 search  143      4096 6月   6 2013 jdk1.7.0_25 
-rwx------. 1 root   root  96316511 11月 20 2013 jdk-7u25-linux-x64.gz 
drwxr-xr-x  3 root   root      4096 7月  31 21:33 li 
drwxr-xr-x  3 root   root      4096 7月   9 04:08 lo 
drwxr-xr-x  3 root   root      4096 7月   9 04:08 login 
-rw-r--r--  1 root   root      1048 6月  19 03:31 setlimit.sh 
drwxr-xr-x  3 root   root      4096 6月  20 02:51 tsethadoop 
[root@h1 ~]# ln -s jdk1.7.0_25/ jdk 
[root@h1 ~]# ll 
总用量 328464 
-rw-r--r--  1 root   root 143775368 7月  28 19:30 abc1.txt 
-rw-------. 1 root   root      1087 6月  13 19:06 anaconda-ks.cfg 
-rw-r--r--  1 root   root        52 7月  31 21:29 count2.txt 
-rw-r--r--  1 root   root        52 7月  31 19:46 count.txt 
-rw-r--r--. 1 root   root  96183833 6月   9 17:27 hadoop-2.2.0.tar.gz 
-rw-r--r--  1 root   root         1 7月  31 21:25 hh.txt 
drwxr-xr-x  3 root   root      4096 7月  29 04:47 hivesrc 
-rw-r--r--. 1 root   root      2111 6月  16 13:10 initserver.sh 
-rw-r--r--. 1 root   root      7995 6月  13 19:06 install.log 
-rw-r--r--. 1 root   root      3384 6月  13 19:06 install.log.syslog 
drwxr-xr-x  2 root   root      4096 7月  31 21:19 intest 
lrwxrwxrwx  1 root   root        12 7月  31 21:45 jdk -> jdk1.7.0_25/ 
drwxr-xr-x. 8 search  143      4096 6月   6 2013 jdk1.7.0_25 
-rwx------. 1 root   root  96316511 11月 20 2013 jdk-7u25-linux-x64.gz 
drwxr-xr-x  3 root   root      4096 7月  31 21:33 li 
drwxr-xr-x  3 root   root      4096 7月   9 04:08 lo 
drwxr-xr-x  3 root   root      4096 7月   9 04:08 login 
-rw-r--r--  1 root   root      1048 6月  19 03:31 setlimit.sh 
drwxr-xr-x  3 root   root      4096 6月  20 02:51 tsethadoop 
[root@h1 ~]#  

6. 重命名一个文件使用命令mv
用法mv source destination

重命名目录或文件都可以,例子:
mv a.txt b.txt 重名名a文件为b文件名字

具体详细的用法,请使用man mv查看,退出按q即可!