[置顶] linux小命令

1.汉字转大五码

$ $JAVA_HOME/bin/native2ascii


2.git下载命令

$ git clone https://github.com/nicolasgramlich/AndEngine.git
Cloning into AndEngine...
remote: Counting objects: 26252, done.
remote: Compressing objects: 100% (4023/4023), done.
remote: Total 26252 (delta 17236), reused 25960 (delta 16977)
Receiving objects: 100% (26252/26252), 8.32 MiB | 118 KiB/s, done.
Resolving deltas: 100% (17236/17236), done.


3.ls命令

  ls 命令可以说是Linux下最常用的命令之一。它有众多的选项,其中有很多是很有用的,你是否熟悉呢?下面列出了 ls 命令的绝大多数选项。 
  
  -a 列出目录下的所有文件,包括以 . 开头的隐含文件。 
  -b 把文件名中不可输出的字符用反斜杠加字符编号(就象在C语言里一样)的形式列出。 
  -c 输出文件的 i 节点的修改时间,并以此排序。 
  -d 将目录象文件一样显示,而不是显示其下的文件。 
  -e 输出时间的全部信息,而不是输出简略信息。 
  -f -U 对输出的文件不排序。 
  -g 无用。 
  -i 输出文件的 i 节点的索引信息。 
  -k 以 k 字节的形式表示文件的大小。 
  -l 列出文件的详细信息。 
  -m 横向输出文件名,并以“,”作分格符。 
  -n 用数字的 UID,GID 代替名称。 
  -o 显示文件的除组信息外的详细信息。 
  -p -F 在每个文件名后附上一个字符以说明该文件的类型,“*”表示可执行的普通 
  文件;“/”表示目录;“@”表示符号链接;“|”表示FIFOs;“=”表示套 
  接字(sockets)。 
  -q 用?代替不可输出的字符。 
  -r 对目录反向排序。 
  -s 在每个文件名后输出该文件的大小。 
  -t 以时间排序。 
  -u 以文件上次被访问的时间排序。 
  -x 按列输出,横向排序。 
  -A 显示除 “.”和“..”外的所有文件。 
  -B 不输出以 “~”结尾的备份文件。 
  -C 按列输出,纵向排序。 
  -G 输出文件的组的信息。 
  -L 列出链接文件名而不是链接到的文件。 
  -N 不限制文件长度。 
  -Q 把输出的文件名用双引号括起来。 
  -R 列出所有子目录下的文件。 
  -S 以文件大小排序。 
  -X 以文件的扩展名(最后一个 . 后的字符)排序。 
  -1 一行只输出一个文件。 
  --color=no 不显示彩色文件名 
  --help 在标准输出上显示帮助信息。 
  --version 在标准输出上输出版本信息并退出。


4. bc计算命令

  Linux下的任意精度计算器bc:

  1. 文本计算器,方便快捷

  2. 任意精度,scale= precision 设定,启动时默认为整数计算,bc -l启动为20位小数

  3. 支持变量,循环操作,语法与C相似,详细可 man 查看

  4. 含数学函数库 s(x), c, a, l, e, j 函数

  5. 可运行自写的脚本文件,如a.txt内容为 sqrt(2), 命令 bc -l a.txt 输出 1.4142135623


5.tar压缩、解压缩命令

	$ tar -cvf testdx.tar testdx
	$ tar -cjvf testdx.tar.bz2 testdx
	$ tar -czvf testdx.tar.gz  testdx

执行结果 cz压缩效果最好,耗时最长

-rw-r--r--+ 1 pdh None 98232320 Sep 27 17:13 testdx.tar
-rw-r--r--+ 1 pdh None 94316617 Sep 27 17:14 testdx.tar.bz2
-rw-r--r--+ 1 pdh None 94083582 Sep 27 17:12 testdx.tar.gz




6.复制指定目录src下指定类型文件 .png到指定目录 dst中

不是linux命令,用wndows下xcopy命令,注意,是windows的方法,在go.bat文件运行

xcopy /s ..\misc\xcf\src\assets\*.png    .\dst\assets\.
再写一个带参数的例子
set CHANNEL=SUM_NAME
set DST=.\assets
set SRC=..\misc\xcf\%CHANNEL%\assets
xcopy /s /y  %SRC%\*.png    %DST%\.



7. find + xargs + cp命令

find . -name "*" | xargs -i cp {}  /home/users/

-i 表示 find 传递给xargs的结果 由{}来代替

谢谢XD 已经搞定

-I 必须指定替换字符 -i 是否指定替换字符-可选
举例:
find . | xargs -I {} cp {} $D_PATH
与
find . | xargs -i cp {} $D_PATH

8.awk命令,只用分割字符串功能,其它功能待学习

$ adb shell pm list package | grep -i -E "zte.*"
package:com.zte.backup.mmi
package:com.zte.bookmarklist
package:com.zte.emode
package:com.zte.music
package:com.zte.stopwatch
package:com.zte.tool
package:zte.com.cn.alarmclock
package:zte.com.cn.filer
package:zte.com.cn.globeltime
package:zte.com.cn.notepad
package:zte.com.cn.taskmanager
package:zte.com.cn.wo3G


$ adb shell pm list package | grep -i -E "zte.*" | awk -F ':' '{print $2}'
com.zte.backup.mmi
com.zte.bookmarklist
com.zte.emode
com.zte.music
com.zte.stopwatch
com.zte.tool
zte.com.cn.alarmclock
zte.com.cn.filer
zte.com.cn.globeltime
zte.com.cn.notepad
zte.com.cn.taskmanager
zte.com.cn.wo3G


9.  wc命令,统计字数

linux中统计字节数、字数、行数命令wc用法详解:

linux中的wc命令主要功能是统计指定文件中的字节数、字数、行数, 并将统计结果显示输出。

语法:
wc [选项] 文件…
说明:
该命令统计给定文件中的字节数、字数、行数。如果没有给出文件名,
则从标准输入读取。wc同时也给出所有指定文件的总统计数。字是由空格字符区分开的最大字符串。
该命令各选项含义如下:
c 统计字节数。
l 统计行数。
w 统计字数。
这些选项可以组合使用。
输出列的顺序和数目不受选项的顺序和数目的影响。
总是按下述顺序显示并且每项最多一列。
行数、字数、字节数、文件名
如果命令行中没有文件名,则输出中不出现文件名。
例如:
$ wc - lcw file1 file2
4 33 file1
7 52 file2
11 11 85 total
省略任选项-lcw,wc命令的执行结果与上面一样


10. find命令排除指定文件

$ find -name "*.*" ! -name "*.txt"
$ find -name "*" ! -type d ! -name "*.class"
./META-INF/MANIFEST.MF


11. sed命令修改版本号为20130215 ,这个命令挺有用,正则表达式以后再说

AppVersionCode=20130215

cat $XML | \
sed "s^android:versionCode=.*^android:versionCode=\"$AppVersionCode\"^"  |cat > AndroidManifest.xml


12. rsync命令

(1)

--include要在exclude前面,参数要用单引号括起来,不要用双引号,否则容易拷贝不成功

        rsync -az ${SRC_UI}/*  ${ASSETS_PATH} --progress --delete --include='*.json' --exclude='*.*'

在cygwin下从linux服务器同步指定文件夹,有中文文件夹名称同步后经常乱码,添加 --iconv=gbk,utf-8即可。在linux上从windows同步文件,将GBK与utf-8调换即可。

语法:--iconv=本地字符集,服务器端字符集

$ rsync -az dy@dypi:/mnt/d/shared/a/huo     ./   --progress  --iconv=gbk,utf-8 --delete


(2)

从linux服务器拷贝文件,免密码。如我的linux服务器密码是"mypasshh"。当要排除指定文件psd时,要用  --exclude  "psd"。注意用双引号,用空格连接,别用=单引号,否则排除规则无效。

错误示范如下:

#!/usr/bin/expect
set timeout 30
spawn rsync     -az dy@dypi:/mnt/d/shared/a/cikechuanshuo  ./   \
                --progress                                      \
                --iconv=gbk,utf-8                               \
                --exclude='assets'                              \
                --exclude='cocostudio'                          \
                --exclude='psd'                                 \
                --delete
expect "password:"
send "mypasshh\r"
interact

正确示范如下:

#!/usr/bin/expect
set timeout 30
spawn rsync     -az dy@dypi:/mnt/d/shared/a/cikechuanshuo  ./   \
                --progress                                      \
                --delete                                        \
                --iconv=gbk,utf-8                               \
                --exclude "assets"                              \
                --exclude "cocostudio"                          \
                --exclude "psd"
expect "password:"
send "mypasshh\r"
interact




13.find命令

查找指定大小的文件

查找等于2Byte的文件
find -size 2b
查找大于2K的文件
find -size +2k
查找小于2M的文件
find -size -2M
查找大于2G的文件
find -size +2G

14.shell函数

语法:

[ function ] funname [()]

{

    action;

    [return int;]

}

例子:

#!/bin/sh
  
 fSum 3 2;
 function fSum()
 {
     echo $1,$2;
     return $(($1+$2));
 }
 fSum 5 7;
 total=$(fSum 3 2);
 echo $total,$?;
                  
结果:

sh testfun1.sh
testfun1.sh: line 3: fSum: command not found
5,7
3,2
1
5

15. linux zip命令


zip -r myfile.zip ./*
将当前目录下的所有文件和文件夹全部压缩成myfile.zip文件,-r表示递归压缩子目录下所有文件.

2.unzip
unzip -o -d /home/sunny myfile.zip
把myfile.zip文件解压到 /home/sunny/
-o:不提示的情况下覆盖文件;
-d:-d /home/sunny 指明将文件解压缩到/home/sunny目录下;


16.数组

(1).第一种写法:

$ LIST1=(elem1 elem2  elem3 elem4 );  echo ${LIST1[2]}
结果:

elem3

(2).第二种写法:

$ LIST2[0]=elem1;  LIST2[1]=elem2; LIST2[2]=elem3; LIST2[3]=elem4;  echo ${LIST2[3]}
运行结果:

elem4

(3).数组长度

echo  ${#LIST2[*]}
运行结果:

(4).遍历素组:

$ LIST2[0]=elem1;  LIST2[1]=elem2; LIST2[2]=elem3; LIST2[3]=elem4;  for ((i=0;i< ${#LIST2[*]}; i++));do echo ${LIST2[$i]}; done
运行结果:

elem1
elem2
elem3
elem4


17. /usr/bin/except命令

参数意义:

 脚本代码如下:  
##############################################  
#!/usr/bin/expect  
set timeout 30  
spawn ssh -l username 192.168.1.1  
expect "password:"  
send "ispass\r"  
interact  
##############################################  
  
1. [#!/usr/bin/expect]  
    这一行告诉操作系统脚本里的代码使用那一个shell来执行。这里的expect其实和linux下的bash、windows下的cmd是一类东西。  
注意:这一行需要在脚本的第一行。  
  
2. [set timeout 30]    
    基本上认识英文的都知道这是设置超时时间的,现在你只要记住他的计时单位是:秒  
   
3. [spawn ssh -l username 192.168.1.1]   
    spawn是进入expect环境后才可以执行的expect内部命令,如果没有装expect或者直接在默认的SHELL下执行是找不到spawn命令的。所以不要用 “which spawn“之类的命令去找spawn命令。好比windows里的dir就是一个内部命令,这个命令由shell自带,你无法找到一个dir.com 或 dir.exe 的可执行文件。   
    它主要的功能是给ssh运行进程加个壳,用来传递交互指令。  
  
4. [expect "password:"]  
    这里的expect也是expect的一个内部命令,有点晕吧,expect的shell命令和内部命令是一样的,但不是一个功能,习惯就好了。这个命令的意思是判断上次输出结果里是否包含“password:”的字符串,如果有则立即返回,否则就等待一段时间后返回,这里等待时长就是前面设置的30秒  
  
5. [send "ispass\r"]  
    这里就是执行交互动作,与手工输入密码的动作等效。  
    温馨提示: 命令字符串结尾别忘记加上 “\r”,如果出现异常等待的状态可以核查一下。  
  
6. [interact]   
    执行完成后保持交互状态,把控制权交给控制台,这个时候就可以手工操作了。如果没有这一句登录完成后会退出,而不是留在远程终端上。如果你只是登录过去执行一段命令就退出,可改为[expect eof] 





你可能感兴趣的:([置顶] linux小命令)