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

发布时间:2020-06-09编辑:脚本学堂
本节是shell脚本编程入门教程的第一节,介绍下man命令的用法,ls、ll、ln、mv等命令的用法,需要的朋友参考下。

学习linux系统管理,shell命令和编程会让系统管理员大展身手,如何学习linux shell编程呢?
既然是学习,就从最基础的开始,一步一步循序渐进。

本节内容:
man命令的用法,ls、ll、ln、mv等命令的用法

1,man命令是一个帮助我们快速掌握某个命令的使用方法的命令,当然前提是安装了man命令模块。linux手册man使用笔记

man命令的用法,man command,后面跟自己不了解的命令,如果你的系统没有安装,先执行命令,yum install man* 安装。

用法如下:
 

[root@h1 ~]# man ls 
LS(1)     User Commands  LS(1) 
 
NAME 
       ls - list directory contents 
 
SYNOPSIS 
       ls [OPTION]... [FILE]... 
 
DESCRIPTION 
       List information about the FILEs (the current directory by default).  Sort entries alphabetically if none of -cftuvSUX nor --sort. 
 
       Mandatory arguments to long options are mandatory for short options too. 
 
       -a, --all 
              do not ignore entries starting with . 
 
       -A, --almost-all 
              do not list implied . and .. 
 
       --author 
              with -l, print the author of each file 
 
       -b, --escape 
              print octal escapes for nongraphic characters 
 
       --block-size=SIZE 
              use SIZE-byte blocks.  See SIZE format below 
 
       -B, --ignore-backups 
              do not list implied entries ending with ~ 
 
       -c     with  -lt:  sort by, and show, ctime (time of last modification of file status information) with -l: show ctime and sort by name otherwise: sort 
              by ctime 
 
       -C     list entries by columns 
 
       --color[=WHEN] 
              colorize the output.  WHEN defaults to ‘always’ or can be ‘never’ or ‘auto’.  More info below 
 
       -d, --directory 
              list directory entries instead of contents, and do not dereference symbolic links 
 
       -D, --dired 
              generate output designed for Emacs’ dired mode 
 
       -f     do not sort, enable -aU, disable -ls --color 
 
       -F, --classify 
              append indicator (one of */=>@|) to entries 
 
       --file-type 
              likewise, except do not append ‘*’ 
 
       --format=WORD 
              across -x, commas -m, horizontal -x, long -l, single-column -1, verbose -l, vertical -C 

2,cd命令,cd命令时linux目录下,切换路径的命令,主要用法是用来浏览文件系统,和遍历目录所需。linux cd命令切换目录命令用法详解

用法(一)cd  绝对路径
例如cd /etc/profile.d,cd /home等等
用法(二)cd  相对路径
例如cd ../ 上一级目录 cd ./当前目录 cd ../../上一级的上一级

3,ls命令,显示当前目录下所有文件盒目录

[root@h1 ~]# ls 
abc1.txt         count.txt            hivesrc        install.log         jdk1.7.0_25            login        tsethadoop 
anaconda-ks.cfg  hadoop-2.2.0.tar.gz  initserver.sh  install.log.syslog  jdk-7u25-linux-x64.gz  setlimit.sh 
[root@h1 ~]#  

ls -F参数,可以给目录后面加/号,更容易区别文件和目录,注意是大写的-F。
 

[root@h1 ~]# ls -F 
abc1.txt         count.txt            hivesrc/       install.log         jdk1.7.0_25/            login/       tsethadoop/ 
anaconda-ks.cfg  hadoop-2.2.0.tar.gz  initserver.sh  install.log.syslog  jdk-7u25-linux-x64.gz*  setlimit.sh 
[root@h1 ~]#  

ls -F -R 可以递归打印某个目录下所有嵌套文件等多级路径。
ls -F -a 可以显示系统隐藏的文件比如我们的公钥文件.ssh/等
 

[root@h1 ~]# ls -F -a 
./        anaconda-ks.cfg  .bash_profile  .cshrc               initserver.sh       jdk1.7.0_25/            .m2/            .ssh/        .viminfo 
../       .bash_history    .bashrc        hadoop-2.2.0.tar.gz  install.log         jdk-7u25-linux-x64.gz*  .mysql_history  .tcshrc 
abc1.txt  .bash_logout     count.txt      hivesrc/             install.log.syslog  login/                  setlimit.sh     tsethadoop/ 
[root@h1 ~]#  

ls -l可以以换行格式,显示更详细的信息。
 

[root@h1 ~]# ls -F -l 
总用量 328444 
-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 19:46 count.txt 
-rw-r--r--. 1 root   root  96183833 6月   9 17:27 hadoop-2.2.0.tar.gz 
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. 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月   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/ 

解释一下,这几个东西分别代表的含义,
1,第一列第一个字符目录(d),文件(-),字符文件(c),块文件(b)
2,第一列第二个rw,drwx,等等,代表文件权限,这个散仙会在后面的文章里介绍
3,第二列数字,代表硬链接总数(??不知道硬链接是啥?,没关系,下文会介绍)
4,第三列,代表用户名
5,第四列代表组名
6,第五列文件的大小
7,第六列,文件的修改时间
8,第七列,具体的文件或目录

更人性化的输出大小ls -F -l -h 命令将字节转为M来显示
 

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

这么多命令是不是很烦,试试这个ll这个命令,散仙经常用的,一个加强命令
 

复制代码 代码示例:
[root@h1 ~]# ll 
总用量 328444 
-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 19:46 count.txt 
-rw-r--r--. 1 root   root  96183833 6月   9 17:27 hadoop-2.2.0.tar.gz 
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. 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月   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 ~]#  

解释:
有些命令时不同的linu系统,演化而来,不用的linux分支演化可能不支持,命令是在centos下使用的。