概述
命令提示符
家目录是什么?Linux系统是纯字符界面,用户登录后,要有一个初始登录的位置,这个初始登录位置就称为用户的家。
●超级用户的家目录:/root/
●普通用户的家目录:/home/用户名/
用户在自己的家目录中拥有完整权限
常用命令
ls
ls是最常见的目录操作命令,主要作用是显示目录下的内容。
命令格式
-a选项中的a是all的意思,也就是显示隐藏文件。在Linux中以“.”开头的文件是隐藏文件,只有通过“-a”选项才能查看。
-l”是长格式(long list)的意思,也就是显示文件的详细信息。
我们已经知道“-l”选项用于显示文件的详细信息,那么“-l”选项显示的这7列分别是什么含义?
-d 这个命令会显示目录下的内容,而不会显示这个目录本身的详细信息。如果想显示目录本身的信息,就必须加入“-d”选项。
“ls -l”显示的文件大小是字节,但是我们更加习惯的是千字节用KB显示,兆字节用MB显示,而“-h”选项就是按照人们习惯的单位显示文件大小的
“-i”选项每个文件都有一个被称作inode(i节点)的隐藏属性,可以看成系统搜索这个文件的ID,而“-i”选项就是用来查看文件的inode号的
cd
Linux的命令按照来源方式分为两种:Shell内置命令和外部命令。所谓Shell内置命令,就是Shell自带的命令,这些命令是没有执行文件的;而外部命令就是由程序员单独开发的,是外来命令,所以会有命令的执行文件。Linux中的绝大多数命令是外部命令,而cd命令是一个典型的Shell内置命令,所以cd命令没有执行文件所在路径。
命令格式
绝对路径、相对路径
tar
打包命令
解打包命令
-c: 建立压缩档案
-x:解压
-t:查看内容
-r:向压缩归档文件末尾追加文件
-u:更新原压缩包中的文件
这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。下面的参数是根据需要在压缩或解压档案时可选的。
-z:有gzip属性的
-j:有bz2属性的
-Z:有compress属性的
-v:显示所有过程
-O:将文件解开到标准输出
目录结构
tm源码分析
在/usr/include/time.h中找到tm结构体定义的源码
tm_sec的范围允许临时闰秒或双闰秒。
time_t
通常能确定时间和日期对一个程序来说是非常有用的。程序可能希望记录它运行的时间,或者可能需要在某些时候改变它的运行方式。例如,一个游戏可能拒绝在工作时间运行,或者一个定时备份程序可能想等到每天的凌晨才开始一个自动备份。
所有的UNIX系统都使用同一个时间和日期的起点:格林尼治时间(GMT)1970年1月1日午夜(0点)。这是“UNIX纪元的起点”, Linux也不例外。Linux系统中所有的时间都以从那时起经过的秒数来衡量。这和MS-DOS处理时间的方法类似,只是MS-DOS纪元始于1980年。其他系统使用其他的纪元起始时间。
时间通过一个预定义的类型time_t来处理。这是一个大到能够容纳以秒计算的日期和时间的整数类型。在Linux系统中,它是一个长整型,与处理时间值的函数一起定义在头文件time.h中。
实验time函数
下面这个简单的程序envtime.c演示了time函数的用法:
#include<time.h>
#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
int main()
{
int i;
time_t tt;
for(i = 1; i <= 10; i++)
{
tt = time(NULL);
printf("The time is %ldn", tt);
sleep(2);
}
exit(0);
}
运行这个程序,它会在20秒时间内每两秒钟打印一次底层的时间值。
这个程序用一个空指针参数调用time函数,返回以秒数计算的时间和日期。程序休眠两秒后再重复调用time函数,总共调用10次。
以从1970年开始计算的秒数来表示时间和日期,对测算某些事情持续的时间是很有用的。你可以把它考虑为简单地把两次调用time得到的值相减。然而ISO/ANSIC标准委员会经过审议,并没有规定用time_t类型来测量任意时间之间的秒数,他们发明了一个函数difftime,该函数用来计算两个time_t值之间的秒数并以double类型返回它。
实验gmtime函数
下面这个程序ggtime.c利用tm结构和gmtime函数打印出当前时间和日期:
#include<time.h>
#include<stdio.h>
#include<stdlib.h>
int main()
{
struct tm *tm_ptr;
time_t tt;
time(&tt);
tm_ptr = gmtime(&tt);
printf("Raw time is %ldn", tt);
printf("gmtime gives:n");
printf("date:%02d/%02d/%02dn", tm_ptr->tm_year, tm_ptr->tm_mon+1, tm_ptr->tm_mday);
printf("time:%02d:%02d:%02dn", tm_ptr->tm_hour, tm_ptr->tm_min, tm_ptr->tm_sec);
exit(0);
}
这个程序调用time函数得到底层的时间值,然后调用gmtime将该值转换为一个包含有用的时间和日期值的结构。最后,程序用printf将这些信息打印出来。严格来说,你不应该用这种方法打印原始时间值,因为我们并不能保证它在所有系统上都是long类型的值。我们在运行gmtime程序后立即运行date命令以比较它们的输出。
不过,这儿有个小问题。如果在格林尼治标准时间(GMT)之外的时区运行这个程序,或者所在的地方像本例中那样采用了夏令时,你会发现时间(可能还有日期)是不对的。这是因为gmtime按GMT返回时间(现在GMT被称为世界标准时间,或UTC)。Linux和UNIX这样做是为了同步全球各地的所有程序和系统。不同时区同一时刻创建的文件都会有相同的创建时间。要看当地时间,你需要使用localtime函数。
localtime
ggtime.c修改版
#include<time.h>
#include<stdio.h>
#include<stdlib.h>
int main()
{
struct tm *tm_ptr;
time_t tt;
time(&tt);
tm_ptr = localtime(&tt);
printf("Raw time is %ldn", tt);
printf("localtime gives:n");
printf("date:%02d/%02d/%02dn", tm_ptr->tm_year, tm_ptr->tm_mon+1, tm_ptr->tm_mday);
printf("time:%02d:%02d:%02dn", tm_ptr->tm_hour, tm_ptr->tm_min, tm_ptr->tm_sec);
exit(0);
}
~
asctime函数和ctime函数
实验ctime函数
在本例中,使用下面的代码来查看ctime函数的用法:
#include<time.h>
#include<stdio.h>
#include<stdlib.h>
int main()
{
time_t timeval;
time(&timeval);
printf("The date is:%s", ctime(&timeval));
exit(0);
}
时间编程
timmy.c
#include<stdio.h>
#include<time.h>
int main()
{
struct tm *ptr;
time_t lt;
//获取日历时间
lt = time(NULL);
//转化为本地时间
ptr = localtime(<);
//以本地时间的字符串方式打印
printf("%sn", asctime(ptr));
printf("%sn", ctime(<));
return 0;
}
小试身手题目
如果喜欢我的文章,请记得三连哦,点赞关注收藏,你的每一个赞每一份关注每一次收藏都将是我前进路上的无限动力 !!!↖(▔▽▔)↗感谢支持,下期更精彩!!!
最后
以上就是传统秀发为你收集整理的嵌入式Linux基础——目录操作命令、时间编程附小试身手题目命令提示符常用命令目录结构tm源码分析时间编程小试身手题目的全部内容,希望文章能够帮你解决嵌入式Linux基础——目录操作命令、时间编程附小试身手题目命令提示符常用命令目录结构tm源码分析时间编程小试身手题目所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复