Linux 就该这么学
Linux_Probe.pdf
第2章 新手必须掌握的 Linux 命令
EASY COMMAND
1 2 3 4 5 6 7 8 9 10
| echo [STRING] date reboot poweroff wget http://www.baidu.com top pidof [program] kill -9 [pid] killall [program] ps -aux
|
系统状态检测命令
1 2 3 4 5 6 7 8
| ifconfig ip addr uname -a uptime free -h whoami last history [-c]
|
工作目录切换命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| pwd cd ls -lt ls -ltr ls -ld ls -alhtr cat [filename] cat [filename] | less cat [filename] | more cat > 1.txt << EOF EOF head -n 20 [filename] tail -f [filename] cat [filename] | tr [a-z] [A-Z] wc -lwc [filename] stat [filename] cut -d: -f1 /etc/passwd diff [-c] [filename1] [filename2]
|
文件目录管理命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| touch -d "2017-05-04 01:12" [filename] mkdir -p a/b/c/d cp [-p|-d|-r|-i|-a] [file1] [file2] mv [file1] [file2] rm -rf * dd if=/dev/zero of=560_file count=1 bs=560M dd if=/dev/cdrom of=file_name.iso tar -cvf [new_filename] [dir] tar -xvf [filename] tar -t [filename] grep -Iinr "string" [filename] grep -v "string" [filename] find ./ -name "1.txt"
|
第3章 管道符、重定向与环境变量
重定向
- 标准输入重定向(STDIN,文件描述符0): 键盘、文件、命令中输入
- 标准输出重定向(STDOUT,文件描述符1):输出到屏幕
- 错误输出重定向(STDERR,文件描述符2):输出到屏幕
1 2 3 4
| ls xxx 1.txt >> 1.txt 2>&1 ls xxx 1.txt &>> 1.txt
ls xxx 1.txt 2>> 1.txt
|
管道
命令1 | 命令2 | 命令3
命令行通配符
1 2 3
| ls *.txt ls 1.tx? ls [0-9].txt
|
转义字符
- \ :转义字符
- ‘’ :转义所有变量变为字符串
- “” : 不转义
- `` :命令执行后的返回结果
环境变量
- HOME
- SHELL
- HISTSIZE
- HISTFILESIZE
- MAIL
- LANG
- RANDOM
- PS1
- PATH
- EDITOR
第4章 Shell命令脚本
shell传参
例如$0
对应的是当前 Shell 脚本程序的名称,$#
对应的是总共有几个参数,$*
对应的是所有位置的参数值,$?
对应的是显示上一次命令的执行返回值,而$1
、$2
、$3
……则分别对应着第 N 个位置的参数值。
1 2 3 4
| #!/bin/bash echo "当前脚本名称为$0" echo "总共有$#个参数,分别是$*" echo "第1个参数是$1,第5个参数是$5"
|
判断参数
条件表达式两边有一个空格
- 文件测试语句
- 逻辑测试语句
- 整数测试语句
- 字符串测试语句
运算符 |
作用 |
-d |
测试文件是否为目录类型 |
-e |
测试文件是否存在 |
-f |
判断是否为一般文件 |
-r |
测试当前用户是否有权限读取 |
-w |
测试当前用户是否有权限写入 |
-x |
测试当前用户是否有权限执行 |
0: 是, 1: 不是
与C语言不同,C语言0代表false,非0代表true
- &&:表示当前指令执行成功后才会执行;
- ||:表示当前指令执行失败后才会执行;
1 2 3 4 5 6 7 8
| #!/bin/bash [ -d $1 ] echo “$1是否为目录(0:是,1:不是):$?” [ -e $2 ] && echo "$2文件存在" || "$2文件不存在" [ -f $2 ] && echo "$2为一般文件" [ -r $3 ] && echo "当前用户对$3有read权限" [ -w $4 ] && echo "当前用户对$4有write权限" [ -x $4 ] && echo "当前用户对$4有execute权限"
|
运算符 |
作用 |
-eq |
是否等于 |
-ne |
是否不等于 |
-gt |
是否大于greater |
-lt |
是否小于lesser |
-le |
是否小于等于lesser equal |
-ge |
是否大于等于greater equal |
1 2 3 4
| #!/bin/bash free -m | grep Mem: | awk '{print $4}' FreeMem=$? [ $FreeMem -lt 1024 ] && echo "Insufficient Memory"
|
notes: awk {print $4}
表示只保留第4列,FreeMem=$?
赋值语句等号左右两边没有空格。
运算符 |
作用 |
= |
比较字符串内容是否相同 |
!= |
比较字符串内容是否不同 |
z |
比较字符串内容是否为空 |
1 2 3
| #!/bin/bash [ -z $1 ] && echo "参数1为:$1" || echo "没有字符串传参" [ $1 == $2 ] && echo "$1 == $2" || echo "$1 != $2"
|
流程语句
if 条件测试语句
1 2 3 4 5 6 7 8 9
| if [ ... ] then ...... elif [ ... ] then ...... else ...... fi
|
1 2 3 4 5 6 7 8 9 10 11
| #!/bin/bash read -p "Enter your score (0-100):" GRADE if [ $GRADE -ge 85 ] && [ $GRADE -le 100 ] then echo "$GRADE is Excellent" elif [ $GRADE -ge 70 ] && [ $GRADE -lt 85 ] then echo "$GRADE is Pass" else echo "$GRADE fall" fi
|
for 条件循环语句
1 2 3 4
| for ... in ... do ...... done
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| #!/bin/bash read -p "Enter The Users Password : " PASSWD for UNAME in `cat users.txt` do id $UNAME &> /dev/null if [ $? -eq 0 ] then echo "Already exists" else useradd $UNAME &> /dev/null echo "$PASSWD" | passwd --stdin $UNAME &> /dev/null if [ $? -eq 0 ] then echo "$UNAME , Create success" else echo "$UNAME , Create failure" fi fi done
|
while 条件循环语句
1 2 3 4
| while ... do ...... done
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| #!/bin/bash PRICE=$(expr $RANDOM % 1000) TIMES=0 echo "商品实际价格为 0-999 之间,猜猜看是多少?" while true do read -p "请输入您猜测的价格数目:" INT let TIMES++ if [ $INT -eq $PRICE ] then echo "恭喜您答对了,实际价格是 $PRICE" echo "您总共猜 g $TIMES 次" exit 0 elif [ $INT -gt $PRICE ] then echo "太高了!" else echo "太低了!" fi done
|
case 条件测试语句
1 2 3 4 5 6 7 8 9 10
| case ... in [a-z][A-Z]) ....... ;; [0-9]) ....... ;; *) ....... esac
|
1 2 3 4 5 6 7 8 9 10 11 12
| #!/bin/bash read -p "请输入一个字符,并按 Enter 键确认:" KEY case "$KEY" in [a-z]|[A-Z]) echo "您输入的是 字母。" ;; [0-9]) echo "您输入的是 数字。" ;; *) echo "您输入的是 空格、功能键或其他控制字符。" esac
|