diff --git a/LearnShell/0Test.sh b/LearnShell/0Test.sh index c125c3b..05a7907 100755 --- a/LearnShell/0Test.sh +++ b/LearnShell/0Test.sh @@ -1,18 +1,2 @@ #!/bin/bash -# ?????? -DiskSpace=`df -h | awk '{print $5}' | grep % | sort -n | tail -1 | grep -v ?? | cut -d "%" -f 1` -case $DiskSpace in -[1-6]*) - Message="nothing";; -[7-8]*) - Message="Start thinking about cleaning out some stuff. There's a partition that is $space % full.";; -9[1-8]) - Message="Better hurry with that new disk... One partition is $space % full.";; -99) - Message="I'm drowning here! There's a partition at $space %!";; -*) - Message="I seem to be running with an nonexistent amount of disk space...";; -esac - -echo $Message diff --git a/LearnShell/LeapYear.sh b/LearnShell/LeapYear.sh index a409936..84bf878 100644 --- a/LearnShell/LeapYear.sh +++ b/LearnShell/LeapYear.sh @@ -1,25 +1,43 @@ #!/bin/bash +: ' +方法一 LeapYear=`date +%Y` -# 方法一 -# if [ $[$LeapYear % 400 ] -eq 0 ] ; then -# echo "闰年" -# elif [ $[$LeapYear % 4 ] -eq 0 ] ; then -# if [ $[$LeapYear % 100 ] -ne 0 ] ; then -# echo "闰年" -# else -# echo "不是闰年" -# fi -# else -# echo "不是闰年" -# fi +if [ $[ $LeapYear % 400 ] -eq 0 ] ; then + echo "闰年" +elif [ $[ $LeapYear % 4 ] -eq 0 ] ; then + if [ $[ $LeapYear % 100 ] -ne 0 ] ; then + echo "闰年" + else + echo "不是闰年" + fi +else + echo "不是闰年" +fi +' +: ' # 方法二,利用布尔运算实现 -if (( ("$LeapYear" % 400) == "0" )) || (( ("$LeapYear" % 4 == 0) && ("$LeapYear" % 100 != "0") )) ; then +LeapYear=`date +%Y` + +if (( ( "$LeapYear" % 400 ) == "0" )) || (( ( "$LeapYear" % 4 == 0 ) && ( "$LeapYear" % 100 != "0" ) )) ; then echo "闰年" else echo "不是闰年" fi -# 这相当于let语句。如果你尝试类似$ [$ year%400]的东西,你会在这里使用方括号卡住,因为在这里,方括号本身并不代表实际的命令。 \ No newline at end of file +# 这相当于let语句。如果你尝试类似$ [$ year%400]的东西,你会在这里使用方括号卡住,因为在这里,方括号本身并不代表实际的命令。 +' + +# 利用read命令进行交互式判断实例 +echo "请输入您想要判断是否为闰年的日期(四个数字),然后按enter:" + +read LeapYear + +if (( ("$LeapYear" % 400 ) == 0 )) || (( ("$LeapYear" % 4 == 0 ) && ( "$LeapYear" % 100 != 0 ) )); then + + echo "闰年" +else + echo "不是闰年" +fi \ No newline at end of file diff --git a/LinuxCommands/date.md b/LinuxCommands/date.md index 49432cc..51acbdf 100755 --- a/LinuxCommands/date.md +++ b/LinuxCommands/date.md @@ -1,4 +1,4 @@ -# date +# **date** ## 说明 diff --git a/LinuxCommands/echo.md b/LinuxCommands/echo.md index 8d6c4cd..7cfb92e 100755 --- a/LinuxCommands/echo.md +++ b/LinuxCommands/echo.md @@ -1,4 +1,4 @@ -# echo +# **echo** ## 说明 diff --git a/LinuxCommands/ifconfig.md b/LinuxCommands/ifconfig.md index 4548fa7..d33f9af 100644 --- a/LinuxCommands/ifconfig.md +++ b/LinuxCommands/ifconfig.md @@ -1,21 +1,48 @@ -ifconfig -=== - -配置和显示Linux系统网卡的网络参数 +# **ifconfig** ## 补充说明 **ifconfig命令** 被用于配置和显示Linux内核中网络接口的网络参数。用ifconfig命令配置的网卡信息,在网卡重启后机器重启后,配置就不存在。要想将上述的配置信息永远的存的电脑里,那就要修改网卡的配置文件了。 -### 语法 - -``` -ifconfig(参数) -``` - -### 参数 - -``` +## 用法: + +```sh +ifconfig [-a] [-v] [-s] [[]
] +[add
[/]] +[del
[/]] +[[-]broadcast [
]] [[-]pointopoint [
]] +[netmask
] [dstaddr
] [tunnel
] +[outfill ] [keepalive ] +[hw
] [mtu ] +[[-]trailers] [[-]arp] [[-]allmulti] +[multicast] [[-]promisc] +[mem_start ] [io_addr ] [irq ] [media ] +[txqueuelen ] +[[-]dynamic] +[up|down] ... + +=硬件类型。 +可能硬件类型列表: + loop (本地环回) slip (Serial Line IP) cslip (VJ Serial Line IP) + slip6 (6-bit Serial Line IP) cslip6 (VJ 6-bit Serial Line IP) adaptive (Adaptive Serial Line IP) + ash (Ash) ether (以太网) ax25 (AMPR AX.25) + netrom (AMPR NET/ROM) rose (AMPR ROSE) tunnel (IPIP Tunnel) + ppp (点对点协议) hdlc ((Cisco)-HDLC) lapb (LAPB) + arcnet (ARCnet) dlci (Frame Relay DLCI) frad (Frame Relay Access Device) + sit (IPv6-in-IPv4) fddi (Fiber Distributed Data Interface) hippi (HIPPI) + irda (IrLAP) ec (Econet) x25 (generic X.25) + eui64 (Generic EUI-64) +=地址族。默认:inet +可能的地址族列表: + unix (UNIX Domain) inet (DARPA Internet) inet6 (IPv6) + ax25 (AMPR AX.25) netrom (AMPR NET/ROM) rose (AMPR ROSE) + ipx (Novell IPX) ddp (Appletalk DDP) ec (Econet) + ash (Ash) x25 (CCITT X.25) +``` + +## 参数 + +```sh add<地址>:设置网络设备IPv6的ip地址; del<地址>:删除网络设备IPv6的IP地址; down:关闭指定的网络设备; @@ -36,11 +63,11 @@ IP地址:指定网络设备的IP地址; 网络设备:指定网络设备的名称。 ``` -### 实例 +## 实例 - **显示网络设备信息(激活状态的):** +显示网络设备信息(激活状态的): -``` +```sh [root@localhost ~]# ifconfig eth0 Link encap:Ethernet HWaddr 00:16:3E:00:1E:51 inet addr:10.160.7.81 Bcast:10.160.15.255 Mask:255.255.240.0 @@ -67,54 +94,34 @@ lo Link encap:Local Loopback **lo** 是表示主机的回坏地址,这个一般是用来测试一个网络程序,但又不想让局域网或外网的用户能够查看,只能在此台主机上运行和查看所用的网络接口。比如把 httpd服务器的指定到回坏地址,在浏览器输入127.0.0.1就能看到你所架WEB网站了。但只是您能看得到,局域网的其它主机或用户无从知道。 -* 第一行:连接类型:Ethernet(以太网)HWaddr(硬件mac地址)。 -* 第二行:网卡的IP地址、子网、掩码。 -* 第三行:UP(代表网卡开启状态)RUNNING(代表网卡的网线被接上)MULTICAST(支持组播)MTU:1500(最大传输单元):1500字节。 -* 第四、五行:接收、发送数据包情况统计。 -* 第七行:接收、发送数据字节数统计信息。 - - **启动关闭指定网卡:** +* 第一行:连接类型:Ethernet(以太网)HWaddr(硬件mac地址)。 +* 第二行:网卡的IP地址、子网、掩码。 +* 第三行:UP(代表网卡开启状态)RUNNING(代表网卡的网线被接上)MULTICAST(支持组播)MTU:1500(最大传输单元):1500字节。 +* 第四、五行:接收、发送数据包情况统计。 +* 第七行:接收、发送数据字节数统计信息。 -``` +```sh +# 启动关闭指定网卡: ifconfig eth0 up ifconfig eth0 down -``` `ifconfig eth0 up`为启动网卡eth0,`ifconfig eth0 down`为关闭网卡eth0。ssh登陆linux服务器操作要小心,关闭了就不能开启了,除非你有多网卡。 - **为网卡配置和删除IPv6地址:** - -``` +# 为网卡配置和删除IPv6地址: ifconfig eth0 add 33ffe:3240:800:1005::2/64 #为网卡eth0配置IPv6地址 ifconfig eth0 del 33ffe:3240:800:1005::2/64 #为网卡eth0删除IPv6地址 -``` - **用ifconfig修改MAC地址:** - -``` +# 用ifconfig修改MAC地址: ifconfig eth0 hw ether 00:AA:BB:CC:dd:EE -``` - - **配置IP地址:** - -``` -[root@localhost ~]# ifconfig eth0 192.168.2.10 -[root@localhost ~]# ifconfig eth0 192.168.2.10 netmask 255.255.255.0 -[root@localhost ~]# ifconfig eth0 192.168.2.10 netmask 255.255.255.0 broadcast 192.168.2.255 -``` - **启用和关闭arp协议:** +# 配置IP地址: +ifconfig eth0 192.168.2.10 +ifconfig eth0 192.168.2.10 netmask 255.255.255.0 -``` +# 启用和关闭arp协议: ifconfig eth0 arp #开启网卡eth0 的arp协议 ifconfig eth0 -arp #关闭网卡eth0 的arp协议 -``` - **设置最大传输单元:** - -``` +# 设置最大传输单元: ifconfig eth0 mtu 1500 #设置能通过的最大数据包大小为 1500 bytes -``` - - - \ No newline at end of file +``` \ No newline at end of file diff --git a/LinuxCommands/kill.md b/LinuxCommands/kill.md index 7af9563..7d66b0a 100755 --- a/LinuxCommands/kill.md +++ b/LinuxCommands/kill.md @@ -1,4 +1,4 @@ -# kill +# **kill** ## 说明 diff --git a/LinuxCommands/pidof.md b/LinuxCommands/pidof.md index 42f9ee9..6b230b7 100755 --- a/LinuxCommands/pidof.md +++ b/LinuxCommands/pidof.md @@ -1,4 +1,4 @@ -# pidof +# **pidof** ## 补充说明 diff --git a/LinuxCommands/poweroff.md b/LinuxCommands/poweroff.md index 7994e8b..def78e1 100755 --- a/LinuxCommands/poweroff.md +++ b/LinuxCommands/poweroff.md @@ -1,4 +1,4 @@ -# poweroff +# **poweroff** ## 选项 diff --git a/LinuxCommands/ps.md b/LinuxCommands/ps.md index ca73b65..fc94edd 100755 --- a/LinuxCommands/ps.md +++ b/LinuxCommands/ps.md @@ -1,4 +1,4 @@ -# ps +# **ps** ## 说明 diff --git a/LinuxCommands/read.md b/LinuxCommands/read.md index f075143..7190d81 100644 --- a/LinuxCommands/read.md +++ b/LinuxCommands/read.md @@ -1,87 +1,58 @@ -read -=== - -从键盘读取变量值 - -## 补充说明 +# **read命令说明** **read命令** 从键盘读取变量的值,通常用在shell脚本中与用户进行交互的场合。该命令可以一次读取多个变量的值,变量和输入的值都需要使用空格隔开。在read命令后面,如果没有指定变量名,读取的数据将被自动赋值给特定的变量REPLY -### 语法 - -``` -read(选项)(参数) -``` - -### 选项 +```sh +read: read [-ers] [-a 数组] [-d 分隔符] [-i 缓冲区文字] [-n 读取字符数] [-N 读取字符数] [-p 提示符] [-t 超时] [-u 文件描述符] [名称 ...] -``` --p:指定读取值时的提示符; --t:指定读取值时等待的时间(秒)。 -``` +从标准输入读取一行并将其分为不同的域。 -### 参数 +从标准输入读取单独的一行,或者如果使用了 -u 选项,从文件描述符 FD 中读取。 -变量:指定读取值的变量名。 +该行被分割成域,如同词语分割一样,并且第一个词被赋值给第一个 NAME 变量,第二 -### 实例 +个词被赋值给第二个 NAME 变量,如此继续,直到剩下所有的词被赋值给最后一个 NAME -下面的列表给出了read命令的常用方式: +变量。只有 $IFS 变量中的字符被认作是词语分隔符。 -``` -read 1987name -从标准输入读取输入并赋值给变量1987name。 +如果没有提供 NAME 变量,则读取的行被存放在 REPLY 变量中。 ``` -``` -read first last -从标准输入读取输入到第一个空格或者回车,将输入的第一个单词放到变量first中,并将该行其他的输入放在变量last中。 -``` +## 选项 -``` -read -从标准输入读取一行并赋值给特定变量REPLY。 -``` +```sh +选项: +-a array 将词语赋值给 ARRAY 数组变量的序列下标成员,从零开始。 +-d delim 持续读取直到读入 DELIM 变量中的第一个字符,而不是换行符 +-e 在一个交互式 shell 中使用 Readline 获取行 +-i text 使用 TEXT 文本作为 Readline 的初始文字 +-n nchars 读取 nchars 个字符之后返回,而不是等到读取换行符。但是分隔符仍然有效,如果遇到分隔符之前读取了不足 nchars 个字符。 +-N nchars 在准确读取了 nchars 个字符之后返回,除非遇到文件结束符或者读超时,任何的分隔符都被忽略 +-p prompt 在尝试读取之前输出 PROMPT 提示符并且不带换行符 +-r 不允许反斜杠转义任何字符 +-s 不显示终端的任何输入 +-t timeout 如果在 TIMEOUT 秒内没有读取一个完整的行则超时并且返回失败。TMOUT 变量的值是默认的超时时间。TIMEOUT 可以是小数。如果 TIMEOUT 是 0,那么仅当在指定的文件描述符上输入有效的时候,read 才返回成功。如果超过了超时时间,则返回状态码大于 128 +-u fd 从文件描述符 FD 中读取,而不是标准输入 -``` -read -a arrayname -把单词清单读入arrayname的数组里。 -``` +退出状态: -``` -read -p "text" -打印提示(text),等待输入,并将输入存储在REPLY中。 -``` - -``` -read -r line -允许输入包含反斜杠。 -``` +返回码为零,除非遇到了文件结束符,读超时,或者无效的文 -``` -read -t 3 -指定读取等待时间为3秒。 -``` - -``` -read -n 2 var -从输入中读取两个字符并存入变量var,不需要按回车读取。 -``` - -``` -read -d ":" var -用定界符“:”结束输入行。 +件描述符作为参数传递给了 -u 选项。 ``` ## read命令示例 -从标准输入读取输入并赋值给变量1987name。 +```sh +# 从标准输入读取输入并赋值给变量1987name。 +# 等待读取输入,直到回车后表示输入完毕,并将输入赋值给变量answer +read 1987name -``` -#read 1987name #等待读取输入,直到回车后表示输入完毕,并将输入赋值给变量answer -HelloWorld #控制台输入Hello +# 控制台输入Hello +HelloWorld -#echo $1987name #打印变量 +# 打印变量 +echo $1987name HelloWorld ``` diff --git a/LinuxCommands/reboot.md b/LinuxCommands/reboot.md index 5f39713..5f3e1ca 100755 --- a/LinuxCommands/reboot.md +++ b/LinuxCommands/reboot.md @@ -1,4 +1,4 @@ -# reboot +# **reboot** ## 选项 diff --git a/LinuxCommands/top.md b/LinuxCommands/top.md index 4b31c69..903e277 100755 --- a/LinuxCommands/top.md +++ b/LinuxCommands/top.md @@ -1,4 +1,4 @@ -# top +# **top** ## 补充说明 diff --git a/LinuxCommands/wget.md b/LinuxCommands/wget.md index 0109e80..8c74747 100755 --- a/LinuxCommands/wget.md +++ b/LinuxCommands/wget.md @@ -1,4 +1,4 @@ -# wget +# **wget** ## 说明