-
一个shell小案例(创建日期目录)
2020-09-15 15:46:38需要在多个目录中 (如:beijing shanghai tianjin guangzhou 等等) 创建子目录(以年份命名),然后进入子目录,新建目录并以当天的日期命名 -
2020 零基础 git指令 创建子分支并推送到码云 【附图解】
2020-01-18 16:57:53文章目录1、背景2、常用命令2.1 第一步2.2 第二步2.3 第三步2.4 图解3、结束语 点击进入Vue❤学习专栏~ 1、背景 我们平常开发的时候,对于不同模块的功能,最好是创建一个新的分支去开发,或者分工开发,到时候就...1、背景
我们平常开发的时候,对于不同模块的功能,最好是创建一个新的分支去开发,或者分工开发,到时候就可以整合到master中,方便模块并行开发。
2、常用命令
以创建rights分支为例,起初如下图所示,我们是没有分支的
2.1 第一步
创建rights子分支,指令如下:
git checkout -b rights
2.2 第二步
查看创建分支是否成功,并查看当前所处分支
git branch
2.3 第三步
把本地的rights分支推送到云端并以rights名保存分支
git push -u origin rights
2.4 图解
最后,我们返回码云,查看,已经创建好了rights分支了~
3、结束语
至此,我们的功能就完成了!
Vue全家桶开发电商管理系统码云地址,欢迎一起来学习~
https://gitee.com/Chocolate666/vue_shop
最后,看完本篇博客后,觉得挺有帮助的话,可以继续查看专栏其它内容嗷,一起来学习Vue吧~
点击进入Vue❤学习专栏~
学如逆水行舟,不进则退
-
得到一个简单的子目录内容清单
2017-06-28 15:58:00要求:得到一个简单的子目录内容清单。...打开子目录创建一个子目录流,并判断该目录是否存在。 进入该目录 While该目录不为空 do 1) 将文件的状态信息取到一个结构体中 2) 判断该文件是否为目录 ...要求:得到一个简单的子目录内容清单。子目录中的每一个文件单独列在一行上。如果是一个下级子目录,在它的名字后面加一个斜线字符“/”。下级子目录中的文件在缩进4个空格后一次排列。
- 打开子目录创建一个子目录流,并判断该目录是否存在。
- 进入该目录
- While该目录不为空 do
1) 将文件的状态信息取到一个结构体中
2) 判断该文件是否为目录
是:a、判断是否是“.”或“..”目录
是:回到while循环
否:打印子目录名等,然后进行递归调用
否:打印文件名
4.退出该目录
5.关闭子目录流
1 /* 2 ============================================================================ 3 Name : GetDirInfo.c 4 Author : 5 Version : 6 Copyright : Your copyright notice 7 Description : Hello World in C, Ansi-style 8 ============================================================================ 9 */ 10 11 #include <unistd.h> 12 #include <stdio.h> 13 #include <dirent.h> 14 #include <string.h> 15 #include <sys/stat.h> 16 #include <stdlib.h> 17 18 int main() { 19 printf("Directory scan of /home/fjnucse:\n"); 20 printdir("/home/fjnucse", 0); 21 printf("done.\n"); 22 23 exit(0); 24 } 25 26 void printdir(char * dir, int depth) { 27 DIR * dp; //子目录处理操作 28 struct dirent *entry; //目录数据项 29 struct stat statbuf; //通过文件名查到的状态信息 30 31 if ((dp = opendir(dir)) == NULL) //打开目录 32 { 33 fprintf(stderr, "cannot open direntory:%s\n", dir); 34 return; 35 } 36 37 chdir(dir); //创建子目录流 38 39 while ((entry = readdir(dp)) != NULL) 40 //读目录 41 { 42 lstat(entry->d_name, &statbuf); //通过文件名查到的状态信息 43 44 if (S_ISDIR(statbuf.st_mode)) //文件权限和文件类型信息 45 { 46 if (strcmp(".", entry->d_name) == 0 47 || strcmp("..", entry->d_name) == 0) { 48 continue; 49 } 50 51 printf("%*s%s/\n", depth, "", entry->d_name); 52 printdir(entry->d_name, depth + 4); 53 } else { 54 printf("%*s%s/\n", depth, "", entry->d_name); 55 } 56 } 57 58 chdir(".."); //关闭子目录流 59 closedir(dp); //退出该目录 60 }
本文转自陈哈哈博客园博客,原文链接http://www.cnblogs.com/kissazi2/archive/2013/01/19/2868041.html如需转载请自行联系原作者
kissazi2
-
add git 目录及子目录_Git原理入门
2021-01-07 14:54:04Git 是最流行的版本管理工具,也是程序员的必备技能之一。即使天天使用它,很多人也未必了解它的原理。...一、初始化首先,让我们创建一个项目目录,并进入该目录。$ mkdir git-demo-project$ cd...Git 是最流行的版本管理工具,也是程序员的必备技能之一。
即使天天使用它,很多人也未必了解它的原理。Git 为什么可以管理版本?git add、git commit这些基本命令,到底在做什么,你说得清楚吗?
这篇文章用一个实例,解释 Git 的运行过程,帮助你理解 Git 的原理。
一、初始化
首先,让我们创建一个项目目录,并进入该目录。
$ mkdir git-demo-project$ cd git-demo-project
我们打算对该项目进行版本管理,第一件事就是使用git init命令,进行初始化。
$ git init
git init命令只做一件事,就是在项目根目录下创建一个.git子目录,用来保存版本信息。
$ ls .gitbranches/configdescriptionHEADhooks/info/objects/refs/
上面命令显示,.git内部还有一些子目录,这里先不解释它们的含义。
二、保存对象
接下来,新建一个空文件test.txt。
$ touch test.txt
然后,把这个文件加入 Git 仓库,也就是为test.txt的当前内容创建一个副本。
$ git hash-object -w test.txte69de29bb2d1d6434b8b29ae775ad8c2e48c5391
上面代码中,git hash-object命令把test.txt的当前内容压缩成二进制文件,存入 Git。压缩后的二进制文件,称为一个 Git 对象,保存在.git/objects目录。
这个命令还会计算当前内容的 SHA1 哈希值(长度40的字符串),作为该对象的文件名。下面看一下这个新生成的 Git 对象文件。
$ ls -R .git/objects.git/objects/e6:9de29bb2d1d6434b8b29ae775ad8c2e48c5391
上面代码可以看到,.git/objects下面多了一个子目录,目录名是哈希值的前2个字符,该子目录下面有一个文件,文件名是哈希值的后38个字符。
再看一下这个文件的内容。
$ cat .git/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391
上面代码输出的文件内容,都是一些二进制字符。你可能会问,test.txt是一个空文件,为什么会有内容?这是因为二进制对象里面还保存一些元数据。
如果想看该文件原始的文本内容,要用git cat-file命令。
$ git cat-file -p e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
因为原始文件是空文件,所以上面的命令什么也看不到。现在向test.txt写入一些内容。
$ echo 'hello world' > test.txt
因为文件内容已经改变,需要将它再次保存成 Git 对象。
$ git hash-object -w test.txt3b18e512dba79e4c8300dd08aeb37f8e728b8dad
上面代码可以看到,随着内容改变,test.txt的哈希值已经变了。同时,新文件.git/objects/3b/18e512dba79e4c8300dd08aeb37f8e728b8dad也已经生成了。现在可以看到文件内容了。
$ git cat-file -p 3b18e512dba79e4c8300dd08aeb37f8e728b8dadhello world
三、暂存区
文件保存成二进制对象以后,还需要通知 Git 哪些文件发生了变动。所有变动的文件,Git 都记录在一个区域,叫做"暂存区"(英文叫做 index 或者 stage)。等到变动告一段落,再统一把暂存区里面的文件写入正式的版本历史。
git update-index命令用于在暂存区记录一个发生变动的文件。
$ git update-index --add --cacheinfo 100644 \3b18e512dba79e4c8300dd08aeb37f8e728b8dad test.txt
上面命令向暂存区写入文件名test.txt、二进制对象名(哈希值)和文件权限。
git ls-files命令可以显示暂存区当前的内容。
$ git ls-files --stage100644 3b18e512dba79e4c8300dd08aeb37f8e728b8dad 0 test.txt
上面代码表示,暂存区现在只有一个文件test.txt,以及它的二进制对象名和权限。知道了二进制对象名,就可以在.git/objects子目录里面读出这个文件的内容。
git status命令会产生更可读的结果。
$ git status要提交的变更: 新文件:test.txt
上面代码表示,暂存区里面只有一个新文件test.txt,等待写入历史。
四、git add 命令
上面两步(保存对象和更新暂存区),如果每个文件都做一遍,那是很麻烦的。Git 提供了git add命令简化操作。
$ git add --all
上面命令相当于,对当前项目所有变动的文件,执行前面的两步操作。
五、commit 的概念
暂存区保留本次变动的文件信息,等到修改了差不多了,就要把这些信息写入历史,这就相当于生成了当前项目的一个快照(snapshot)。
项目的历史就是由不同时点的快照构成。Git 可以将项目恢复到任意一个快照。快照在 Git 里面有一个专门名词,叫做 commit,生成快照又称为完成一次提交。
下文所有提到"快照"的地方,指的就是 commit。
六、完成提交
首先,设置一下用户名和 Email,保存快照的时候,会记录是谁提交的。
$ git config user.name "用户名"$ git config user.email "Email 地址"
接下来,要保存当前的目录结构。前面保存对象的时候,只是保存单个文件,并没有记录文件之间的目录关系(哪个文件在哪里)。
git write-tree命令用来将当前的目录结构,生成一个 Git 对象。
$ git write-treec3b8bb102afeca86037d5b5dd89ceeb0090eae9d
上面代码中,目录结构也是作为二进制对象保存的,也保存在.git/objects目录里面,对象名就是哈希值。
让我们看一下这个文件的内容。
$ git cat-file -p c3b8bb102afeca86037d5b5dd89ceeb0090eae9d100644 blob 3b18e512dba79e4c8300dd08aeb37f8e728b8dad test.txt
可以看到,当前的目录里面只有一个test.txt文件。
所谓快照,就是保存当前的目录结构,以及每个文件对应的二进制对象。上一个操作,目录结构已经保存好了,现在需要将这个目录结构与一些元数据一起写入版本历史。
git commit-tree命令用于将目录树对象写入版本历史。
$ echo "first commit" | git commit-tree c3b8bb102afeca86037d5b5dd89ceeb0090eae9dc9053865e9dff393fd2f7a92a18f9bd7f2caa7fa
上面代码中,提交的时候需要有提交说明,echo "first commit"就是给出提交说明。然后,git commit-tree命令将元数据和目录树,一起生成一个 Git 对象。现在,看一下这个对象的内容。
$ git cat-file -p c9053865e9dff393fd2f7a92a18f9bd7f2caa7fatree c3b8bb102afeca86037d5b5dd89ceeb0090eae9dauthor mike 1538889134 +0800committer mike 1538889134 +0800first commit
上面代码中,输出结果的第一行是本次快照对应的目录树对象(tree),第二行和第三行是作者和提交人信息,最后是提交说明。
git log命令也可以用来查看某个快照信息。
$ git log --stat c9053865e9dff393fd2f7a92a18f9bd7f2caa7facommit c9053865e9dff393fd2f7a92a18f9bd7f2caa7faAuthor: mikeDate: Sun Oct 7 13:12:14 2018 +0800 first commit test.txt | 1 + 1 file changed, 1 insertion(+)
七、git commit 命令
Git 提供了git commit命令,简化提交操作。保存进暂存区以后,只要git commit一个命令,就同时提交目录结构和说明,生成快照。
$ git commit -m "first commit"
此外,还有两个命令也很有用。
git checkout命令用于切换到某个快照。
$ git checkout c9053865e9dff393fd2f7a92a18f9bd7f2caa7fa
git show命令用于展示某个快照的所有代码变动。
$ git show c9053865e9dff393fd2f7a92a18f9bd7f2caa7fa
八、branch 的概念
到了这一步,还没完。如果这时用git log命令查看整个版本历史,你看不到新生成的快照。
$ git log
上面命令没有任何输出,这是为什么呢?快照明明已经写入历史了。
原来git log命令只显示当前分支的变动,虽然我们前面已经提交了快照,但是还没有记录这个快照属于哪个分支。
所谓分支(branch)就是指向某个快照的指针,分支名就是指针名。哈希值是无法记忆的,分支使得用户可以为快照起别名。而且,分支会自动更新,如果当前分支有新的快照,指针就会自动指向它。比如,master 分支就是有一个叫做 master 指针,它指向的快照就是 master 分支的当前快照。
用户可以对任意快照新建指针。比如,新建一个 fix-typo 分支,就是创建一个叫做 fix-typo 的指针,指向某个快照。所以,Git 新建分支特别容易,成本极低。
Git 有一个特殊指针HEAD, 总是指向当前分支的最近一次快照。另外,Git 还提供简写方式,HEAD^指向 HEAD的前一个快照(父节点),HEAD~6则是HEAD之前的第6个快照。
每一个分支指针都是一个文本文件,保存在.git/refs/heads/目录,该文件的内容就是它所指向的快照的二进制对象名(哈希值)。
九、更新分支
下面演示更新分支是怎么回事。首先,修改一下test.txt。
$ echo "hello world again" > test.txt
然后,保存二进制对象。
$ git hash-object -w test.txtc90c5155ccd6661aed956510f5bd57828eec9ddb
接着,将这个对象写入暂存区,并保存目录结构。
$ git update-index test.txt$ git write-tree1552fd52bc14497c11313aa91547255c95728f37
最后,提交目录结构,生成一个快照。
$ echo "second commit" | git commit-tree 1552fd52bc14497c11313aa91547255c95728f37 -p c9053865e9dff393fd2f7a92a18f9bd7f2caa7fa785f188674ef3c6ddc5b516307884e1d551f53ca
上面代码中,git commit-tree的-p参数用来指定父节点,也就是本次快照所基于的快照。
现在,我们把本次快照的哈希值,写入.git/refs/heads/master文件,这样就使得master指针指向这个快照。
$ echo 785f188674ef3c6ddc5b516307884e1d551f53ca > .git/refs/heads/master
现在,git log就可以看到两个快照了。
$ git logcommit 785f188674ef3c6ddc5b516307884e1d551f53ca (HEAD -> master)Author: mikeDate: Sun Oct 7 13:38:00 2018 +0800 second commitcommit c9053865e9dff393fd2f7a92a18f9bd7f2caa7faAuthor: mikeDate: Sun Oct 7 13:12:14 2018 +0800 first commit
git log的运行过程是这样的:
查找HEAD指针对应的分支,本例是master
找到master指针指向的快照,本例是785f188674ef3c6ddc5b516307884e1d551f53ca
找到父节点(前一个快照)c9053865e9dff393fd2f7a92a18f9bd7f2caa7fa
以此类推,显示当前分支的所有快照
最后,补充一点。前面说过,分支指针是动态的。原因在于,下面三个命令会自动改写分支指针。
git commit:当前分支指针移向新创建的快照。
git pull:当前分支与远程分支合并后,指针指向新创建的快照。
git reset [commit_sha]:当前分支指针重置为指定快照。
-
Windows 10下利用脚本创建多个目录
2021-01-16 13:27:18打开Ubuntu子系统终端窗口,创建脚本文件并进入vi编辑模式: vi test.sh 在vi编辑模式下,输入以下内容: #!/bin/csh ## Making directories from 001, 002, to 010 @ num = 1 while($num <= 10) set cnum = `...环境准备
操作系统:Windows 10,Ubuntu子系统(安装方法参照Ubuntu子系统安装流程)
具体操作
打开Ubuntu子系统终端窗口,创建脚本文件并进入vi编辑模式:
vi test.sh
在vi编辑模式下,输入以下内容:
#!/bin/csh ## Making directories from 001, 002, to 010 @ num = 1 while($num <= 10) set cnum = `printf '%3.3d\n' $num` if(! -d $cnum) mkdir -p $cnum @ num++ end
为创建的脚本文件添加可执行权限:
chmod +x test.sh
运行脚本:
./test.sh ls
输出结果:
-
若依JAVA开源框架自动生成代码步骤记录-创建子module以及导入子module相关问题
2020-07-09 21:32:30目录创建大分类创建功能表生成代码创建module并导入生成的代码修改自己module的pom.xml和ruoyi-admin下的pom.xml运行效果 创建大分类 进入系统管理—》菜单管理,新添一个大分类 创建功能表 在数据库创建自己的功能... -
创建一个组并设置
2019-05-16 18:26:35使用户zhangsan能够在/nsddir1/目录下创建/删除子目录 使用户zhangsan不能够在/nsddir1/目录下创建/删除子目录 使用户zhangsan能够修改/nsddir1/readme.txt文件,调整/nsddir1/目录的权限,使任何用户都不能进入该... -
执行shell脚本进入指定目录
2020-01-16 08:47:07在linux环境下,常有通过shell脚本进入指定目录的操作,例如有一段脚本chdir.sh: ... 这是因为shell在执行脚本时,会创建一个子shell,并在子shell中逐个执行脚本中的指令; 而子shell中从父s... -
编写shell进入指定的目录
2018-09-24 09:21:04在linux环境下,常有通过shell脚本进入指定目录的操作,例如有一段脚本chdir.sh: [plain] view plain copy #!/bin/sh cd /home/user/Downloads ... 这是因为shell在执行脚本时,会创建一个子shell,并在子shell中... -
Linux--shell进入某个目录
2019-12-30 09:50:45在linux环境下,我们经常会...sh ./test1.sh 执行之后并不会进入soft目录, 这是因为shell在执行脚本时,会创建一个子shell,并在子shell中逐个执行脚本中的指令; 而子shell中从父shell中继承了环境变量,但是执行... -
shell脚本无法进入指定目录
2017-02-09 00:18:04之前写一个脚本“run”,想进入一个目录,一直没有成功,今天网上查看了一下,原来这是因为shell在执行脚本时,会创建一个子shell,并在子shell中逐个执行脚本中的指令; 而子shell中从父shell中继承了环境变量,... -
创建远程SVN仓库并将本地已有项目上传到创建好的远程仓库
2020-08-21 19:14:391.cd进入服务器目录 目的:在/home/server/svn/repo/app目录下创建一个仓库DmsClient 2.创建仓库 输入指令svnadmin create /home/server/svn/repo/app/DmsClient,回车之后没有返回异常则说明仓库DmsClient已经创建... -
创建文件路径,创建文件后,并追加写入数据?
2010-01-13 22:35:27child.exists()) {// 如果子目录不存在 则创建目录 child.mkdir(); nextChild = false;// 并标识进入当前目录 } } return testFile(in, child, k, nextChild);// 递归 } else if ... -
10 linux011子进程创建和多进程调度开销分析
2020-06-03 22:53:031 子进程创建的主要过程 (1) 执行int 80h指令进入系统调用fork(); (2) fork() [1] 为子进程搜索唯一进程号(PID)和空闲的进程管理结构体(PCB,包含TSS); [2] 继承父进程管理结构体部分属性,共享父进程下的全局... -
学号 2018-2019-20175212 实验一 《Java开发环境的熟悉》
2019-03-25 20:31:00学号 2018-2019-20175212 实验一 《Java开发环境的熟悉》 一、实验内容及步骤 1.使用JDK编译、运行简单的Java程序 mkdir 20175212exp1...mkdir src , mkdir bin , cd src 创建子目录并进入 atom Hello.java 使用... -
6.2Linux-目录文件管理命令
2020-02-01 17:45:32总目录:https://www.jianshu.com/p/e406a9bc93a9 Linux - 子目录:https://www.jianshu.com/p/f366101bdc1b mkdir:创建目录 cd:切换目录 例子:创建data目录并进入data目录 mkdir /data ... -
Git 和 Maven 的子模块简单实践
2018-12-18 14:48:20当一个产品或者项目由大量独立模块组成时,想要从 Git 挨个下载下来导入 IDE 查看并不容易,此时可以结合使用 Git 和 Maven 的子模块来处理这种场景。...打开 Git Bash,创建一个空目录并进入: $ mkdir erp-su... -
GDI+图像程序设计(PDF 含详细目录& 源码 -电子工业出版社)
2018-12-11 16:04:0811.7 打印图形 11.8 打印对话框 11.9 自定义页面设置 11.10 打印多个页面 11.11 页边打印——注意事项 11.12 进入细节——自定义控制和打印控制器 总结 第12章 开发GDI+ Web应用程序 12.1 创建第一个ASP.NET Web应用... -
ubuntu下使用CMake创建C++项目
2018-07-10 20:27:26本篇博客主要介绍如何在Ubuntu下使用CMake创建C++项目,下面是详细步骤... 2、进入根目录,并创建如下子文件夹。 3、在根目录下创建CMakeLists.txt,并输入如下代码。 gedit CMakeLists.txt 代码: CMAK... -
创建Git本地仓库
2018-10-23 22:04:00一、获取Git仓库 安装好Git后即可创建Git本地仓库,开始项目的版本... 使用Git对现有的项目进行管理,只需进入该项目目录并输入: $ git init 以上命令将在该项目目录下创建一个.git的子目录,包含该G... -
Ubuntu下使用CMake创建第一个C++项目
2019-06-21 11:20:44本篇博客主要介绍如何在Ubuntu下使用CMake创建C++项目,下面是详细步骤: 1、通过mkdir创建项目根目录。 mkdir test ... 2、进入根目录,并创建如下子文件夹。 3、在根目录下创建CMak... -
创建VUE项目框架
2017-10-17 19:56:39使用git工具 在项目文件夹目录下使用gitbash 执行命令 cnpm i vue –save 生成以下文件 执行命令 vue init webpack-...并生成如下文件 ...Cd进入项目子目录demo 执行 cnpm run dev 看到此图,构建项 -
创建虚拟sdcard.img + 读取sdcard卡中的文件路径有效
2016-08-26 20:16:34进入DOC环境后,怎么进入子目录 假如要进入c:\windows\system32\下,而当前正在A:下的话,用以下方式进入: 先输入C:再enter 然后:cd windows再enter 然后:cd system32再按enter 这样就进入了目标目录 通过Android的...
-
iptables 企业级防火墙配置(四表五链)
-
mysql5.7.zip
-
如何解决机器学习中数据不平衡问题
-
imx_v2016.03_4.1.15_2.0.0_ga.zip
-
vim-haml:Haml,Sass和SCSS的Vim运行时文件-源码
-
Linux文件空间大小查询
-
android布局!如何才能通过一线互联网公司面试?满满干货指导
-
android平板!面试一路绿灯Offer拿到手软,吊打面试官系列!
-
oracle11g漏洞整改方案.docx
-
贪吃蛇_2021年2月25日老师付版本.rar
-
Mogrt教程 简单粗暴的PR动态图形模板Mogrt替换logo方式
-
企业级云管理平台的架构实现与落地实践、趋势分析
-
2月第3周小红书品牌机构创作者榜单
-
MySQL 高可用(DRBD + heartbeat)
-
氧化物杂质对氟锆酸盐玻璃物理性质的影响
-
歌声合成从入门到精通
-
20210225
-
c语言描述:数据结构【四.栈与队列】(链栈的使用)
-
Liunx 优化思路与实操步骤
-
MySQL 高可用工具 heartbeat 实战部署详解