深入解析Linux 常用命令--cp
1.概述cp常用于复制文件或目录。
2.格式cp命令复制时,有如下几种组合:
cp [OPTION] 源文件 目标文件
cp [OPTION] 源文件 目标路径
cp [OPTION] 源文件 目标路径/目标文件
cp [OPTION] 源路径 目标路径
cp [OPTION] 源路径 目标路径
3.强制复制cp -f SRC DEST,把SRC复制到DEST。当DEST文件存在时,将去先移除DEST,再把SRC复制到DEST。
12345678[root@smart linux]# cp b.txt k.txt[root@smart linux]# cp b.txt k.txtcp: overwrite `k.txt'? y [root@smart linux]# cp -f b.txt k.txtcp: overwrite `k.txt'? y[root@smart linux]# \cp -f b.txt k.txt[root@smart linux]# alias cp='cp'[ro ...
深入解析Linux 常用命令--alias
1.概述alias常用于重命名已有命令、定义组合命令等
2.格式格式:alias [name]=[value]。如alias cp=’cp -v’,这样重命名后复制会有信息输出。
特别注意:[name]和[value]与等号之间不能有空格!!!
12345[root@smart Desktop]# cp ls.txt ls.txt.bak[root@smart Desktop]# rm -rf *.bak[root@smart Desktop]# alias cp='cp -v'[root@smart Desktop]# cp ls.txt ls.txt.bak`ls.txt' -> `ls.txt.bak'
#3.已重命名变量输出
alias -p ,可以输出所有已重命名的变量。
alias -p [name],可以检测重命名为[name]的命令,同时也可以检测是否已定义某个变量。
1234567891011121314151617181920212223242526[root@smart Deskto ...
TensorFlow深度学习笔记-1
Tensorflow深度学习框架已学习了一段时间,对其已有一定的了解,由于当时太过于追求速度,没有及时的记录学习过程,不利于打牢基础,遂特意从基础入门开始编写Tensorflow框架学习笔记。
前言 首先,在学习Tensorflow前,你最好能够对Python的基本语法能够有一定的了解。可以从w3cschool学习一些基本知识,建议使用Python3版本,因为很多新开源的代码不兼容Python2。
其次,熟悉Python软件包安装方法。如果接触过Linux的话,这个就很简单了。建议使用pip进行安装。安装命令也就几个,如:pip install tensorflow,pip install tensorflow –upgrade, pip uninstall tensorflow。对于有些国外网站下载速度慢的问题,大家可以把安装包先下载下来,采用其他方式进行安装。
最后,你要熟悉Python的一些IDE(Pycharm,subline等)的使用,IDE推荐Pycharm,有了IDE工具,可以省去很多麻烦,简单又实用。
正文 Tensorflow的安装网上有很多的教 ...
(*(volatile unsigned long *)详解
(*(volatile unsigned long *)
对于不同的计算机体系结构,设备可能是端口映射,也可能是内存映射的。如果系统结构支持独立的IO地址空间,并且是端口映射,就必须使用汇编语言完成实际对设备的控制,因为C语言并没有提供真正的“端口”的概念。如果是内存映射,那就方便的多了。
以 #define IOPIN(*((volatile unsigned long *) 0xE0028000)) 为例:作为一个宏定义语句,define是定义一个变量或常量的伪指令。首先(volatile unsigned long *)的意思是将后面的那个地址强制转换成volatile unsigned long * ,unsigned long *是无符号长整形,volatile是一个类型限定符,如const一样,当使用volatile限定时,表示这个变量是依赖系统实现的,以为着这个变量会被其他程序或者计算机硬件修改,由于地址依赖于硬件,volatile就表示他的值会依赖于硬件。
volatile 类型是这样的,其数据确实可能在未知的情况下发生变化。比如,硬件设备的终端更改了它,现在硬件 ...
深入解析Linux 常用命令--ls
从今天开始,开始分享Linux常用命令系列。今天从ls命令开始。
1.概述ls常用于查看当前路径或指定路径下的文件or文件夹等信息。
2.显示所有文件ls –a 显示所有文件,不忽略以.开头文件及目录
ls -A 显示所有文件及路径,忽略以.开头文件及目录(linux下隐藏文件及目录)
[root@smart linux]# ls -a
. .. a abcde a.txt b.c b.txt c d .dir e .test
[root@smart linux]# ls -A
a abcde a.txt b.c b.txt c d .dir e .test
3.列出当前目录详细信息ls -l
[root@smart linux]# ls -l --sort=extension
total 20
-rw-r--r--. 1 root root 8 Nov 3 19:47 a
drwxr-xr-x. 2 root root 4096 Nov 3 19:52 abcde
-rw-r--r--. 1 root root 0 N ...
关于交叉编译log4cplus库的问题
近日在使用log4cplus日志库,当然一直都是在PC上使用,也就没有进行过交叉编译,可是应用程序最终是要下载至ARM开发板上去的,于是对库按照网络上的说法,加上了几个参数,进行编译,很快就编译完成了,可是在使用的时候,编译器一直提示/opt/tools/4.5.1/bin/../lib/gcc/arm-none-linux-gnueabi/4.5.1/../../../../arm-none-linux-gnueabi/bin/ld: skipping incompatible /opt/tools/4.5.1/bin/../lib/gcc/arm-none-linux-gnueabi/4.5.1/../../../../arm-none-linux-gnueabi/lib ...
printf问题
printf问题近日在工作中遇到一个奇怪问题,A程序发送一个结构给B程序,在B程序接收后,B程序按照A程序的结构进行解析,但始终不对。看过结构定义后,虽然知道有可能会出现字节对齐问题,一直怀疑是他们消息传输构造不对。经过GDB确认A程序发出的结构是正确的,在B程序接收处也同样没问题。当调试到转化处时才发现确实是字节对齐导致的。下面举例说明(32bit Linux Gcc)。
12345678910111213141516171819202122#include <stdio.h>typedef struct{ unsigned int a; short int b; long long int c; unsigned int d;}type1; int main(int argc,char *argv[]){ type1 A={1,2,0x1234567890123456LL,0x87654321},B,*C; B=A; C=&A; printf("B= ...
字节对齐
近日在工作中遇到一个奇怪问题,A程序发送一个结构给B程序,在B程序接收后,B程序按照A程序的结构进行解析,但始终不对。看过结构定义后,虽然知道有可能会出现字节对齐问题,一直怀疑是他们消息传输构造不对。经过GDB确认A程序发出的结构是正确的,在B程序接收处也同样没问题。当调试到转化处时才发现确实是字节对齐导致的。下面举例说明(32bit Linux Gcc)。
server.c
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162#include <stdio.h>#include <string.h>#include <sys/socket.h>#include <arpa/inet.h>#pragma pack(1)typedef struct{ unsigned int a; short int b; long long int ...
Linux协程分析
协程是一种用户态的轻量级线程。
实际上,每个运行上下文(ucontext_t)就直接对应于“协程”概念,对于协程的“创建”(Create)、“启动” (Spawn)、“挂起” (Suspend)、“切换” (Swap)等操作,很容易通过上面的4个API及其组合加以实现,需要的工作仅在于设计一组数据结构保存暂不运行的context结构,提供一些调度的策略即可。
1.1 ucontext_t结构体typedef struct ucontext //用户级线程上下文
{
unsigned long int uc_flags;
struct ucontext *uc_link; //保存当前context结束后继续执行的context记录
stack_t uc_stack; //该context运行的栈信息
mcontext_t uc_mcontext; //保存具体的程序执行上下文——如PC值、堆栈指针、寄存器值等信息
__sigset_t uc_sigmask; / ...