杂记

1.用scp一次复制多个文件命令

scp /home/wangchangshuai/{test.c,input.txt,output.txt} [email protected]:/home/test/


2.在shell中获得当前用户名:

echo $LOGNAME


3.adb命令实现文件在电脑与android手机之间都传输

一.手机中文件导出到电脑上 
    1.通过adb shell,确保手机连接到电脑上 

    2.运行adb 

    3.拷贝所需要的文件目录  例如: 

    D:\adb shell>adb pull /data/app d:\   adb pull src org   

    src:手机文件路径 

    org:电脑拷贝到的文件路径  
二.电脑上文件push到手机中 

    1.通过adb shell,确保手机连接到电脑上 

    2.运行adb 

    3.拷贝所需要的文件目录  例如: 

    D:\adb shell>adb push d:\test_algorithm_host /data/app   adb pull src org 

    src:电脑拷贝到的文件路径   

    org:手机文件路径 

4.shell 多条件if语句

shell中逻辑连接符如下:

==================================================
-a/&&:与
-o/||:或
! :非
==================================================
例如:
if [ $a = "aa" -a $b = "bb" ] || [$c = "cc" -a $d = "dd" ];
then
  echo "success"
fi

5.免输入密码使用sudo

the password of server
password="wangchangshuai"
sudo -S touch /etc/hellolllllllllllllllll <<EOF
yizhan
#EOF
或者
echo 密码 | sudo ******

6.判断shell输入参数个数

if [ $# != 1 ] ; then 
echo "USAGE: $0 TABNAME" 
echo " e.g.: $0 CDR_CALL_20040701" 
exit 1; 
fi 

位置参数 $1, $2,..., $N,$#代表了命令行的参数数量, $0代表了脚本的名字 

7.shell脚本的各种判断

  
  
  
  
1、字符串判断 str1 = str2      当两个串有相同内容、长度时为真 str1 != str2      当串str1和str2不等时为真 -n str1        当串的长度大于0时为真(串非空) -z str1        当串的长度为0时为真(空串) str1           当串str1为非空时为真 2、数字的判断 int1 -eq int2    两数相等为真 int1 -ne int2    两数不等为真 int1 -gt int2    int1大于int2为真 int1 -ge int2    int1大于等于int2为真 int1 -lt int2    int1小于int2为真 int1 -le int2    int1小于等于int2为真 3 文件的判断 -r file     用户可读为真 -w file     用户可写为真 -x file     用户可执行为真 -f file     文件为正规文件为真 -d file     文件为目录为真 -c file     文件为字符特殊文件为真 -b file     文件为块特殊文件为真 -s file     文件大小非0时为真 -t file     当文件描述符(默认为1)指定的设备为终端时为真 3、复杂逻辑判断 -a         与 -o        或 !        非

8.使用gcc编译包含pthread.h头文件都源文件使需注意

由于pthread库不是Linux系统默认的库,连接时需要使用库libpthread.a,
所以在使用pthread_create创建线程时,在编译中要加-lpthread参数:
gcc myThread.c -lpthread -o myThread
在ubuntu下测试,以下命令不可行(网上有的文章说可行):
gcc test.c  -o -lpthread test
gcc -lpthread -o test test.c
gcc -o test -lpthread test.c

9.ubuntu显示桌面都快捷键

Ctrl+Windows键+D

10.警告:隐式声明函数‘close’ [-Wimplicit-function-declaration]

在Ubuntu下,用套接字编程时用到了close函数来关闭套接字,没想到编译的时候遇到了警告:

 警告: man一下close

原来需要包含<unistd.h>

#include <unistd.h>

================================================== 本以为close能关闭套接字和文件描述符,就会和文件操作函数或套接字函数定义在同样的文件中。看来是想当然了。

11.deb包安装方式

sudo dpkg -i ssh_5.3p1-3ubuntu3_all.deb

12. \r 和 \n的区别

\r 是换行 (不回到行首,只是换了1行,位置不变)
\n 是回车(回到行首,不一定换行)
在windows里,判断是否回车换行要同时判断有没有\r 和 \n。而在linux里则只需要判断是不是\n就可以了。

13.linux c 获取当前时间,获取时间差

time_t b_time,b_time2;
	struct tm *tim,*tim2;  
         b_time = time(NULL );
	tim = localtime(&b_time);
	printf("当前时间:%d-%d-%d %d:%d:%d\n", tim->tm_year + 1900,tim->tm_mon+1,tim->tm_mday,tim->tm_hour,tim->tm_min,tim->tm_sec);
	sleep(2);

	b_time2 = time(NULL );
	tim2 = localtime(&b_time2);

	int temp = b_time2-b_time;
	printf("时间差为:%d\n",temp);

14.使用 APT 自动满足依赖关系

通常使用 deb 包管理方式的 Linux 发行版都已经安装了 APT(AdvancedPackaging Tool) ,比如 Ubuntu,我们可以使用命令:

sudo apt-get -f install

来自动满足未满足的依赖关系。输入该命令后只需一路回车即可,待依赖关系自动满足后,只需要重复安装软件包的命令即可。

15.shell sleep

睡眠脚本
sleep 时间(秒)

16.linux怎么根据进程名得到pid

ps -e|grep 进程名(或者进程名的一部分)

17.字符串转换为数字

atof(将字符串转换成浮点型数)
atoi(将字符串转换成整型数)
atol(将字符串转换成长整型数)
strtod(将字符串转换成浮点数)
strtol(将字符串转换成长整型数)
strtoul(将字符串转换成无符号长整型数)
toascii(将整型数转换成合法的ASCII 码字符)
toupper(将小写字母转换成大写字母)
tolower(将大写字母转换成小写字母)

18.怎么给pthread_create()函数传递多个参数

涉及多参数传递给线程的,都需要使用结构体将参数封装后,将结构体指针传给线程
定义一个结构体
struct mypara
{
       var para1;//参数1
       var para2;//参数2
}
将这个结构体指针,作为void *形参的实际参数传递
struct mypara pstru;
pthread_create(&ntid, NULL, thr_fn,& (pstru));
函数中需要定义一个mypara类型的结构指针来引用这个参数 
void *thr_fn(void *arg)
{
       mypara *pstru;
       pstru = (* struct mypara) arg;
       pstru->para1;//参数1
       pstru->para2;//参数2	
}

19.linux 创建连接命令 ln -s 软链接

这是linux中一个非常重要命令,请大家一定要熟悉。它的功能是为某一个文件在另外一个位置建立一个同不的链接,这个命令最常用的参数是-s,具体用法是:ln -s 源文件目标文件。 当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在其它的 目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间。例如:ln -s /bin/less /usr/local/bin/less -s 是代号(symbolic)的意思。 这里有两点要注意:第一,ln命令会保持每一处链接文件的同步性,也就是说,不论你改动了哪一处,其它的文件都会发生相同的变化;第二,ln的链接又软链接 和硬链接两种,软链接就是ln -s ** **,它只会在你选定的位置上生成一个文件的镜像,不会占用磁盘空间,硬链接ln ** **,没有参数-s, 它会在你选定的位置上生成一个和源文件大小相同的文件,无论是软链接还是硬链接,文件都保持同步变化。 如果你用ls察看一个目录时,发现有的文件后面有一个@的符号,那就是一个用ln命令生成的文件,用ls -l命令去察看,就可以看到显示的link的路径了。

20.linux c 判断文件(夹)是否存在

用函数int   access(const   char   *filename,   int   amode);
注意必须加上头文件 #include <unistd.h>
代码如下:
#include <unistd.h>

int main(int argc , char *argv[])
{
	if (access("fileName", 0) == -1) //access函数是查看文件夹是不是存在
	{
		if (mkdir("fileName", 0777)) //如果不存在就用mkdir函数来创建
		{
			printf("创建文件夹fileName失败!\n",);
			return;
		}
	}
}
lsb_release -a
结果如下:
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 13.04
Release:	13.04
Codename:	raring


21.将错误写入标准错误变量中

fprintf(stderr, "Can't open pid file %s", path);

==================================================

你可能感兴趣的:(杂记)