Linux中的可能需要命令

1、stty命令修改终端命令行的相关设置。

stty -echo   #禁止回显
stty echo    #打开回显

2、xargs命令#一个过滤器

         -n 3 #指定3列输出
         -d  X #指定X为定界符

#多行输入,单行输出
cat a.txt | xargs

#以"X"为定界符,进行分割
echo -n  "IDXNAMEXAGEXSEX" |xargs  -dX

#-I可以进行替换,这个字符会在扩展时,直接给替换掉
echo -n "aaa bbb ccc" |xargs -n1 -I {} echo -q {} -p
echo -n "aaa bbb ccc" |xargs -n1 |xargs -I {} echo -q {} -p


#复制文件到指定目录   find . -name "*.sh" -print |xargs -I {} cp {} ../asd/
#好像是可以统计行 find . -type f -name "*.php" -print0 | xargs -0 wc -l

-I,可以指定一个替换字符{} #当-I与xargs结合使用,每一个参数命令都会被执行一次:

3、date #时间命令

#在类UNIX系统中,日期被存储为一个整数,其大小为自世界标准时间(UTC)1970年1月1日0时0分0秒起流逝的秒数。

格式:date 选项 参数

选项
    -d    #显示字符串所指定的时间,字符串必须加上双引号
    -s    #设置时间,字符串必须加上引号
    -u    #显示GMT

参数 
#<+时间格式>
%H 小时,24小时制(00~23)
%I 小时,12小时制(01~12)
%k 小时,24小时制(0~23)
%l 小时,12小时制(1~12)
%M 分钟(00~59)
%p 显示出AM或PM
%r 显示时间,12小时制(hh:mm:ss %p)
%s 从1970年1月1日00:00:00到目前经历的秒数
%S 显示秒(00~59)
%T 显示时间,24小时制(hh:mm:ss)
%X 显示时间的格式(%H:%M:%S)
%Z 显示时区,日期域(CST)
%a 星期的简称(Sun~Sat)
%A 星期的全称(Sunday~Saturday)
%h,%b 月的简称(Jan~Dec)
%B 月的全称(January~December)
%c 日期和时间(Tue Nov 20 14:12:58 2012)
%d 一个月的第几天(01~31)
%x,%D 日期(mm/dd/yy)
%j 一年的第几天(001~366)
%m 月份(01~12)
%w 一个星期的第几天(0代表星期天)
%W 一年的第几个星期(00~53,星期一为第一天)
%y 年的最后两个数字(1999则是99)
%N #秒

例子:

#当前时间
date +"%Y-%m-%d %H:%M.%S"

#昨天时间
date -d "1 day ago" +"%Y-%m-%d %H:%M.%S"

#2秒钟后输出
date -d "2 second" +"%Y-%m-%d %H:%M.%S"

#123456890秒
date -d @1234567890  +"%Y-%m-%d %H:%M.%S %s"
2009-02-14 07:31.30 1234567890

#普通转格式:
date -d "2020-08-17" +"%Y/%m/%d %H:%M.%S"
2020/08/17 01:01.01

#apache格式转换:
date -d "Aug 17, 2020 01:01:01 AM" +"%Y-%m-%d %H:%M.%S"
2020-08-17 01:01.01

#格式转换后时间游走:
date -d "Aug 17, 2020 01:01:01 AM 2 year ago" +"%Y-%m-%d %H:%M.%S"
2020-08-17 01:01.01

#加减操作:
date +%Y%m%d                   //显示前天年月日
date -d "+1 day" +%Y%m%d       //显示前一天的日期
date -d "-1 day" +%Y%m%d       //显示后一天的日期
date -d "-1 month" +%Y%m%d     //显示上一月的日期
date -d "+1 month" +%Y%m%d     //显示下一月的日期
date -d "-1 year" +%Y%m%d      //显示前一年的日期
date -d "+1 year" +%Y%m%d      //显示下一年的日期

#设定时间:
date -s                        //设置当前时间,只有root权限才能设置,其他只能查看
date -s 20200817               //设置成20200817,这样会把具体时间设置成空00:00:00
date -s 01:01:01               //设置具体时间,不会对日期做更改
date -s "01:01:01 2020-08-17"  //这样可以设置全部时间
date -s "01:01:01 20200817"    //这样可以设置全部时间
date -s "2020-08-17 01:01:01"  //这样可以设置全部时间
date -s "20200817 01:01:01"    //这样可以设置全部时间

4、tr命令

可以对来自标准输入的字符进行替换、压缩和删除。它可以将一组字符变成另一组字符。

格式:tr 选项 参数

-c:取反,一般与-d一起使用
-d:删除字符
-s:去重字符

#删除空行:tr -s "[\012]" < plan.txt 或tr -s ["\n"] < plan.txt
#删除文件中的^M,并代之以换行:tr -s "[\015]" "[\n]" < file 或tr -s "[\r]" "[\n]" < file 或 cat file | tr -d "\r" > new_file
#计算:echo 1 2 3 4 5 6 7 8 9 | xargs -n1 | echo $[ $(tr '\n' '+') 0 ]


选项
-c或——complerment:取代所有不属于第一字符集的字符;
-d或——delete:删除所有属于第一字符集的字符;
-s或--squeeze-repeats:把连续重复的字符以单独一个字符表示;
-t或--truncate-set1:先删除第一字符集较第二字符集多出的字符。

参数
字符集1:指定要转换或删除的原字符集。当执行转换操作时,必须使用参数“字符集2”指定转换的目标字符集。但执行删除操作时,不需要参数“字符集2”;
字符集2:指定要转换成的目标字符集。

1、大小写转换
echo "HELLO world" |tr "A-Z" "a-z"
hello world

2、tr删除字符
echo "01HE23LLO 45 w6or7ld 89 " |tr -d "0-9"
HELLO  world  

3、制表符换成空格
cat t.txt 
H	e	l	l	o
cat t.txt |tr "\t" " "
H e l l o

4、 -c取反,通常与-d 一起用
echo "a1,.b2,c3.  d4 6 78 9./0 []" | tr -d -c '0-9 \n'
123 4 6 78 90

5、-s的去重
echo "hello world   " |tr -s "l" #指定那些字符去重
helo world  

6、还可用于计算
echo 1 2 3 4 5 6 7 8 9 | xargs -n1 | echo  $[ $(tr '\n' '+') 0 ] #输出然后在计算:echo 1 2 3 4 5 6 7 8 9 | xargs -n1 | echo  $(tr '\n' '+')0
45

7、 删除Windows文件“造成”的'^M'字符:
cat file | tr -s "\r" "\n" > new_file
或
cat file | tr -d "\r" > new_file
tr可用的字符类
格式:tr '[:lower:]' '[:upper:]'

[:alnum:]:字母和数字
[:alpha:]:字母
[:cntrl:]:控制(非打印)字符
[:digit:]:数字
[:graph:]:图形字符
[:lower:]:小写字母
[:print:]:可打印字符
[:punct:]:标点符号
[:space:]:空白字符
[:upper:]:大写字母
[:xdigit:]:十六进制字符

5、sort 排序

#sort命令既可以从特定的文件,也可以从stdin中获取输入。
#sort将文件/文本的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。

格式 sort 选项 参数

选项
-t:指定分隔符
-k:指定那列
-n:数字大小
-u:去重
-r:反向顺序

-b:忽略每行前面开始出的空格字符;
-c:检查文件是否已经按照顺序排序;
-d:排序时,处理英文字母、数字及空格字符外,忽略其他的字符;
-f:排序时,将小写字母视为大写字母;
-i:排序时,除了040至176之间的ASCII字符外,忽略其他的字符;
-m:将几个排序号的文件进行合并;
-M:将前面3个字母依照月份的缩写进行排序;
-n:依照数值的大小排序;
-o<输出文件>:将排序后的结果存入制定的文件;
-r:以相反的顺序来排序;
-t<分隔字符>:指定排序时所用的栏位分隔字符;
-u:去重
+<起始栏位>-<结束栏位>:以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。
1、 sort -u 的去重 或者 uniq
#sort -u 则是整个文本进行去重
#uniq 只是去掉连续重复的行

比如一个文件内容为
AAA
BBB
CCC
CCC
DDD
DDD
BBB
AAA

sort -u sort.txt 结果    |      uniq sort.txt 结果
AAA                      |      AAA
BBB                      |      BBB
CCC                      |      CCC
DDD                      |      DDD
                         |      BBB
                         |      AAA

-k的语法格式

FStart.CStart Modifie,FEnd.CEnd Modifier
-------Start---------,-------End--------
 FStart.CStart 选项  ,  FEnd.CEnd 选项

其中的逗号","分为两大部分,Start和End部分
Start部分由三部分组成,其中的Modified部分就是类似n个r的选项部分

Start部分中C.Start是可以省略的,省略就表示从本域的开头部分开始。
FStart.CStart,其中FStart就是表明使用的域,而CStart则表示在FStart域中从第几个字符开始算"排序首字符",同理在End部分中,可以设定FEnd.CEnd,省略.CEnd,则表示结尾到"域尾",即本域的最后一个字符。或者你将CEnd设定为0(零),也是表示结尾到"域尾"。

6、uniq

uniq命令用于报告或忽略文件中的重复行,一般与sort命令结合使用。

uniq 选项 参数
-c:记录每行的重复次数
-d:只显示重复行


选项
-c或——count:在每列旁边显示该行重复出现的次数;
-d或--repeated:仅显示重复出现的行列;
-f<栏位>或--skip-fields=<栏位>:忽略比较指定的栏位;
-s<字符位置>或--skip-chars=<字符位置>:忽略比较指定的字符;
-u或——unique:仅显示出一次的行列;
-w<字符位置>或--check-chars=<字符位置>:指定要比较的字符。

7、cut

cut命令用来显示行中的指定部分,删除文件中指定字段。cut经常用来显示文件的内容,类似于下的type命令。

说明:该命令有两项功能,其一是用来显示文件的内容,它依次读取由参数file所指 明的文件,将它们的内容输出到标准输出上;其二是连接两个或多个文件,如cut fl f2 > f3将把文件fl和几的内容合并起来,然后通过输出重定向符“>”的作用,将它们放入文件f3中。

当文件较大时,文本在屏幕上迅速闪过(滚屏),用户往往看不清所显示的内容。因此,一般用more等命令分屏显示。为了控制滚屏,可以按Ctrl+S键,停止滚屏;按Ctrl+Q键可以恢复滚屏。按Ctrl+C(中断)键可以终止该命令的执行,并且返回Shell提示符状态。

cut 选项 参数

-d:指定分隔符
-f:显示指定列
--complement:取反


-b:仅显示行中指定直接范围的内容;
-c:仅显示行中指定范围的字符;
-d:指定字段的分隔符,默认的字段分隔符为“TAB”;
-f:显示指定字段的内容;
-n:与“-b”选项连用,不分割多字节字符;
--complement:补足被选择的字节、字符或字段;
--out-delimiter=<字段分隔符>:指定输出内容是的字段分割符;
--help:显示指令的帮助信息;
--version:显示指令的版本信息。
指定字段的字符或者字节范围

cut命令可以将一串字符作为列来显示,字符字段的记法:
N-:从第N个字节、字符、字段到结尾;
N-M:从第N个字节、字符、字段到第M个(包括M在内)字节、字符、字段;
-M:从第1个字节、字符、字段到第M个(包括M在内)字节、字符、字段。


上面是记法,结合下面选项将摸个范围的字节、字符指定为字段:

-b 表示字节;
-c 表示字符;
-f 表示定义字段。


#打印1-3的字符
cut -c1-3 stu.txt

8、传输文件scp 和 rsync,这两个基于ssh协议传输

scp 传输文件,-P 指定目标ssh端口
scp -r $source $dest
scp -P $des_port  $source  $destip:/root/


rsync 传输文件, 如果目标ssh端口改变了则需要加-e 来指定
rsync -avP $source  $dest
rsync -r -e 'ssh -p 22222' ./$sourcefile  $destip:/root/

--------
未完待续

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值