read [-pt] variable
-p:提示
-t:等待输入的时间
declare:宣告变量的类型
declare [-aixr] variable
-a:表示variable为数组类型
-i:表示variable为整数数字
-x:和export作用一样
-r:将变量设置为readonly类型
new_var=${old_var-content}:如果old_var存在且有值,那么将old_val的值赋给new_val,否则,将content的值赋给new_var
new_var=${old_var:-content}:如果old_var的值未设置或者是空字符串.那么将content赋给new_var
1>:标准输出 2>:错误输出(覆盖)
1>>:标准输出 2>>:错误输出(追加)
find / -name "sima" 1>right_file 2>error_file
find / -name "sima" >file 2>&1:错误和正确的输出到file文件中,但是分开的.
/dev/null:指向该地址的都会被删掉.find / -name "sima" 2> /dev/null :只显示正确的输出
<:将某个文件内容导入到某个地方:cat > hh < /etc/passwd
<< :由屏幕输入的时候,设置一个标志结束符:cat >hh <<"end": 当输入end时,表示输入结束
cmd1 && cmd2 :若cmd1正确执行($?=0),则执行cmd2,否则不执行cmd2
ls /simadaxia 2> /dev/null && echo "exist" || echo "not exist" : 若存在,输出exist,否则输出not exist
CUT:
cut -d: -f1,2 :-d表示以:来进行分割,-f表示取出分割后的第几个元素(分割后从1开始).-f也可以是一个区间(-f1,3)
cat /etc/hosts | cut -c 13-22 表示输出第13到22个字符之间的所有字符
GREP
grep [-acvin] --color=auto '搜寻的字符串' filename
-a :将 binary 档案以 text 档案癿方式搜寻数据
-c :计算找到字符串的次数
-i :忽略大小写
-n :输出所在行的行号
-v :反向选择,显示不满足条件的那一行!
--color=auto :将找到的关键字显示颜色
SORT:
sort [-fbnrutk] file|stdin
-f:忽略大小写
-b:忽略最前面的空格部分
-n:以数字来进行排序
-r:反向排序
-u:uniq(相同数据只出现一次)
-t:分隔符(默认以tab进行分割)
-k:以某个区间进行排序(-k1,2) cat /etc/passwd | sort -t':' -n -k3
UNIQ
uniq [-ic] : -i : 忽略大小写 -c: 进行统计.
last | cut -d' ' -f1 | sort -i | uniq -c : 统计登录的人以及次数.
TEE:双向重导向:既可以导入一个文件,也可以输出到屏幕
tee [-a] : 以追加的方式... find / -name "sima" 2> /dev/null | tee result : 查找到的结果既可以输出到屏幕,也可以输出到result文件中.
tr:可以删除也可以进行替换
tr [-ds] str : 既可以将str删除掉,也可以替换掉. tr [a-z] [A-Z] 转换为大写的.
-d : 删除str 字符
-s : 取代掉重复的元素
SED:
sed -[nefri] actions : sed 是以[行]为最小单位进行处理
选项参数:
-n :使用安靜(silent)模式。在一般 sed 的用法中,所有來自 STDIN 的資料一般都會被列出到螢幕上。
但如果加上 -n 参数,則只有经过 sed 特殊处理的那一行(或者动作)才会被列出來。
-e :直接在指令列模式上進行 sed 的动作编辑;
-f :直接将 sed 的动作写在一個档案內, -f filename 则可以执行 filename 內的 sed 动作;
-r :sed 的動作支援的是延伸型正規表示法的語法。(預設是基礎正規表示法語法)
-i :直接修改讀取的檔案內容,而不是由螢幕輸出。
動作說明: [n1[,n2]]function
n1, n2 :不見得會存在,一般代表『選擇進行動作的行數』,舉例來說,如果我的動作
是需要在 10 到 20 行之間進行的,則『 10,20[動作行為] 』
function 有底下這些咚咚:
a :新增, a 的後面可以接字串,而這些字串會在新的一行出現(目前的下一行)~
c :取代, c 的後面可以接字串,這些字串可以取代 n1,n2 之間的行!
d :刪除,因為是刪除啊,所以 d 後面通常不接任何咚咚;
i :插入, i 的後面可以接字串,而這些字串會在新的一行出現(目前的上一行);
p :列印,亦即將某個選擇的資料印出。通常 p 會與參數 sed -n 一起運作~
s :取代,可以直接進行取代的工作哩!通常這個 s 的動作可以搭配正規表示法!
例如 1,20s/old/new/g 就是啦!
cat -b test.txt | sed '1a hehe\
> haha' :表示在第一行的下一行添加新的字符,\表示换行,即添加了两行内容
cat -b test.txt | sed '2,$c simadaxia' : 表示将第2行到最后一行替换为对应的字符串
cat -b test.txt | sed '2d' :表示删除第2行
cat test.txt | sed '/^#.*$//g' | grep '/^$/d' : 表示将# 开头的删除,注意此时删除空行不能显示行号.
AWK
awk '條件類型1{動作1} 條件類型2{動作2} ...' filename
有几个内置的变量: FS 表示进行切分的字符,默认为空格或是tab
$0 :表示整行的信息
NF:每一行所拥有的列数
NR:当前处理的是第几行.
cat /etc/passwd | awk 'BEGIN{FS=":"} $3 < 5 {print $1 "\t" $3}'
相当于条件成立才会去处理{}中的内容,BEGIN 表示一开始就要执行的内容