添加环境变量 export PATH="$PATH:/home/user/bin";
echo中可以使用彩色输出,彩色文字为 \e[31 etc 彩色背景为彩色文字加10;
cat /pro/$PID/environ 可以查看运行时的环境变量;
pgrep 命令可以查看PID;
${#变量} 可以用于获取变量长度;
在数学运算时,let (()) [] 可以执行基本算数操作。
result=$((a+5))
let result=a+b 当使用let时不需要使用$
使用bc
echo “4 * 0.56” | bc
设置小数精度 添加 scale=
设置数制 添加 obase= ibase=
使用 > 会先清空文件
1> 标准输出 2>标准错误
Linux 重定向
利用后台作用使用 &>与&>>
利用文件描述符 B>&A 或者 B>>&B 将文件描述符B重定向到A
使用exec命令可以自定义文件描述符
$ exec 3<input.txt 使用文件描述符3打开读取文件
数组 a={1 2 3 4}
定义关联数组 $a={[index1]=call [index2]=xall}
使用别名 alias
获取终端信息
$IFS 定界符
可以用逻辑运算符 [ condition ] && action 如果condition 为真 则执行action
[ condition ] || action 如果condition 为假 则执行action
-gt >
-lt <
-ge >=
-le <=
-eq ==
-ne !=
-a 与
-o 或
cat 不仅可以从读取文件并拼接数据,还能过从标准输入中进行读取
录制与回放终端会话
$script -t 2> timing.log -a output.session
两个配置文件,timing.log储存时序信息,output.session储存命令输入信息
$scriptreplay timing.log output.session 回放操作
可以用作广播视频会话
打开两个终端,在terminal1和terminal2
在1中输入 $ mkfifo scriptfifo
在2中输入 $ cat scriptfifo
返回1 输入
$ script -f scriptfifo
$开始做事情了!!!
$exit
使用cat可以回放,同时也可以实时播放!
Find 命令
$find base_path 当前目录下所有文件
find . -print 打印匹配文件的文件名(路径)
$ find /home/slynux -name “*.txt” -print
使用 -iname 时忽略大小写
匹配多个条件中一个使用OR
$find . \( -name “*txt” -o -name “*.pdf”\) -print
-path 用路径名进行匹配
-regex用正则表达式进行匹配
-type 搜索文件类型
$ find . -type f -name “*.swp” -delete 删除当前目录下的所有.swp文件
$find . -type f -name “*.php” ! -perm 644 -print
将多行输入转换成单行输出
将单行输入转换成多行输出
$cat kk.txt | xargs -n 3
xargs -d . 定制分界符
Xargs 可以将包含参数的文件传递给一个命令
INPUT | xargs -n X 每次执行传递X个参数
$find . -type f -name “*.c” -print0 | xargs -0 wc -l
$cat files.txt | ( while read arg; do cat $arg; done ) 运用子shell读取参数
Tr 只能通过stdin 而无法通过命令行参数来接受输入
Tr [option] set1 set2
$echo “HELLO WORLD!” | tr “A-Z” “a-z” A-Z 与 a-z是集合
通过tr中使用集合该脸,我们可以将字符从一个集合映射到另一个集合,可以对数字进行加密和解密
$echo 12345 | tr ‘0-9’ ‘9876543210’
$echo 87654 | ///
tr -d 用于删除
校验和与核实
Md5sum与sha1sum
$md5sum filename
得到一串16进制串
将输出的校验和重定向到一个文件,然后用MD5文件核实数据的完整性:
$md5sum filename > filename_sum.md5
$md5sum -c file_sum.md5 校验数据完整性
Sha1sum 与 md5sum 非常相似 校验文件后缀变为.sha1
Sort -n 按数字排序
Sort -r 逆序排序
Unique 消除重复内容
随机文件命名与随机数
最适合储存临时数据的地方时/tmp 该目录中内容重启后会被清空
Temp_files=$(tempfile) 为变量temp_file 赋予了一个临时文件名
Temp_file=”/tmp/file-$RANDOM”
如果不使用tempile语法 可以
Temp_file=”/tmp/var.$$” .$$后缀会被扩展为当前脚本的进程ID
分割文件和数据
$dd if=/dev/zero bs=100k count=1 of=data.file
上面指令会创建一个大小为100KB的文件 且内容全部是0
$split -b 10k data.file
$ls
拼写检查 aspell 作用时拼写检查
在目录/usr/share/dict
两个脚本 aspellcheek.sh和checkword.sh 用于查找单词
更改所有权
$chown user.group filename
设置粘滞位
它是一种应用与目录的权限类型,通过设置粘滞位可以使得只有目录的所有者才能删除目录中的文件
Chmod a+t directory_name
Chattr 将文件设置为不可修改。
Chattr +i file
创建符号链接 ln -s target symbolic_link_name
脚本filestat.sh
Declare -A statarray 申明了一个数组
While read line;
Do something
Done< filename 将file重定向输入的方式将临时文件中的数据传递给while循环
生成ISO镜像
Dd if=/dev/cdrom of=image.iso
查找文件差异并进行修补
Diff
只列出目录的方法
Ls -d */
在命令行中用pushd和popd快速定位
它的实现基于栈结构,每次pushd的地址压入栈,popd的地址压出栈
为了压入并切换路径
$pushd /var/www
Grep match_pattern filename
Grep -E 使用正则表达式 等同于 egrep
$grep “text” . -R -n 在.(当前目录)递归查找文档
--include *.{c,cpp} 包括
--exclude “README” 排除
Sed 一个用法是文本替换
$sed ‘s/pattern/replace_string/’ file
$cat file | sed ‘s/pattern/replace_string/’ file
-i 用替换结果替换原文件
$sed ‘/^$/d’ file 移除空白行
/pattern/d 会移除匹配样式的行
Awk被用来设计数据流。
Awk ‘ BEGIN{ print “start” } pattern { command } END{ print “end” }’ file
Awk命令通常由三部分组成,BEGIN语句快 END语句块,和能够使用模式匹配的通用语句块/3部分时可选的。
1) 执行BEGIN 语句块的语句
2) 从文件或者stdin读取一行,然后执行pattern 重复这个过程知道文件被全部读取完毕
3) 当读至输入流的末尾时,执行END语句块
-v 将外部值传递给awk
-F “delimiter” 来指明一个定界符
从awk中读取命令输出
“command” | getline output ;
$echo | awk {}
对文件中的行 单词 字符进行迭代
While read line;
Do
Echo $line;
Done<file.txt
使用子shell
$cat file.txt | ( while read line; do echo $line;done )
迭代一行中的每一个单词
For word in $line;
Do
Echo $word;
Done
$ls -l | awk ‘{ print $1” : “ $8 }’
打印M行到N行的所有文本
Awk ‘NR==M,NR==N’ filename
$seq 5 | tac
网站下载
Wget 是一个用于文件下载的命令行工具
用wget可以下载网页和远程文件
Wget URL
Wget URL1 URL2 ...
可以根据URL用wget 下载文件
通常下载的文件名和URL的文件名一样,下载信息和进度保存到stdout
-O可以制定输出文件名 如果同名,会将同名文件清空,将新文件写入
可以-o指定一个日志文件
$wget ftp:...... -O dimmm.file -o log
-t 指定重试的次数
下载限速 --limit-rate
$wget --limit-rate 20k URL
断点续传
$wget -c URL
用cURL下载
$curl URL > index.html
与wget不同 curl将下载数据写到标准输出,所以需要重定向的文件
复制或镜像整个网站
Wget有一个选项可以使其像爬虫一样以递归的方式收集网上所有的URL链接,这样可以下载一个网站的所有页面
,并逐个下载 --mirror
$wget --mirror exampledomain.com
或者$wget -r -N -l DEPTH URL
$wget --user username --password pass URL
网页手动输入密码 --ask-password
从命令行访问Gmail
Ifconfig 用于显示网络接口 子网掩码等详细信息
Host 和nslookup 用于DNS查找
Route 路由表