linux 中如何在指定的目录下创建文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux 中如何在指定的目录下创建文件相关的知识,希望对你有一定的参考价值。

1、首先输入下方的代码:

#include <stdio.h>

#include <unistd.h>

#include <string.h>

#include <sys/stat.h>

int main(int argc, char *argv[])

    FILE *file;

    int opt;

    char *optstring = "a:b:c:d";

    char fname[50] ;

    while ((opt = getopt(argc, argv, optstring)) != -1)

2、然后再输入下方的代码:

   

        switch(opt)

       

           case 'a':

             strcpy(fname,optarg);

             if(mkdir(fname,0777)==-1)

               printf("fail to build directionary\\n");

            // if((file=fopen(fname,"w+"))==NULL)

            //   printf("open file error\\n");

           break;

       

   

  return 0;

3、最后这样就完成了,效果如图:

参考技术A 首先执行以下命令来检查你的X-sever工作情况:

xinit

[ X-sever 是X-Windows的精简,没有“Windows管理器”。你可以在这里执行你的X-Windows程序,只要在X-terminal窗口输入程序名即可(在程序名前面输入./或者全路径)。但是在这里你不能进行诸如调整窗口的大小和添加光标等功能。〕

你可以在X-terminal窗口中输入exit命令来关闭X-sever,或者按组合键<CTRL><ALT><BkSpace> 来关闭X-Windows服务。(后一种方法会将你的机器挂起-在这种情况下不要重新启动计算机)。

如果你的X-sever无法工作,请看下一个解决方法。

现在,从根开始登录,放入RH5.2光盘:

mount /mnt/cdrom

跳到以下目录:

cd /mnt/cdrom/kde/distribUtion/RedHat/i386/binar/

在将如长路径或者文件名时使用自动完成(按TAB键)是非常有用的。 阅读README文件:

cat readme-2rh51-rpms|more

使用“RedHat包管理器”来安装一些必要的文件包:

rpm -iv packagename

这个包文件是以.rpm作为后缀。首先安装qt库文件,然后是KDE支持文件,再是KDE库文件,最后是KDE基本文件。如果你的安装顺序错误,从属关系检查将会出现错误,安装包被停止安装(rpm将会发布一个错误信息)。没有关系,重新安装需要的文件包,并持续装下去。在安装好KDE基本文件后,你也许要为KDE安装其他的文件包(应用程序,管理,网络,游戏,图形,多媒体)-他们都不很大,所以你可以确认全部安装。最后确认你已经安装了全部的组件,输入:

rpm -ivh *.rpm

vh操作提供了一些额外的消息。你将会得到“文件包已经安装”的消息,如果还有更多的消息你可以滚动浏览,你可以使用组合键<Shift><pgup>来上翻。如果你不喜欢这种行命令形式的rpm包管理器,你可以使用GUI前台来安装相同的包,称之为glint(仅RH5.2有效)。在X-Windows终端输入“glint”即可。

现在,在你的系统中KDE已经成为你的默认X-Windows管理器。在用户目录中将会建立一个.XcLients文件:

pico .Xclients

这个文件里只包含一行内容:

/opt/kde/bin/startkde

输入此行然后保存文件(调整此行内容是必需的,以保证startkde文件的正确定位)。现在,是此文件对所有用户有效(可以执行)。

chmod a+x .Xclients

若许可被改变请检查:

ls -l .Xclients

[ 以一个点为开始的文件将不会被一般的Ls命令显示,就如Dos下的隐含文件,你必须使用他的名字或者ls -a ]

如果你生成的文件是根文件而不是用户文件,那么为正确的用户改变文件的拥有者和文件组:

chown user_name .Xclients

chgrp user_name .Xclients

现在,输入startx将会启动以KDE作为窗口管理器的X-sever。
我可以帮助你,你先设置我最佳答案后,我百度Hii教你。
参考技术B 我用的Macvim(文本编辑器),创建方法如下
mvim ~/指定目录/test.c(这个就是你的文件了,我一般创建c语言文件,所以就.C,你想创建什么文件就用什么后缀)
希望我的回答可以帮到你。
参考技术C cd 到指定目录
touch filename 创建文件

如果需要 root 权限,那么就 sudo touch filename 创建文件
参考技术D 只有有权限直接touch就可以了本回答被提问者和网友采纳

[Linux常用命令磁盘操作]

Linux

1.常用命令

# Linux中最顶级目录是根目录:/
# ~ :在linux当中指的是当前用户的家目录([用户名@主机名 当前所在的目录])
	
1.touch 文件名            # 创建文件(默认创建在当前用户文件夹下)                 
	touch /路径 文件名     	  # 指定文件夹下创建文件
2.ls                     # 查看文件夹(默认查看当前用户文件夹所有文件)      
	ls /文件名            	   # 查看指定文件夹下文件
    ls /					 # 查看/(根目录)下所有内容
    ls -l					 # 查看文件详细信息(ls -l 等价于 ll)
3.mkdir 				 # 创建文件夹(默认创建在当前用户文件夹下)
	mkdir /路径名/文件名     	     # 指定路径下创建文件夹
    mkdir -p  -v /文件名/文件名    # -p参数 递归创建文件夹  -v参数 显示递归创建过程
4.cd  					 # 绝对路径的方式切换路径(根目录开始) 切换目录默认为家目录
	cd .					 # 在任何目录下都代表当前目录(顶级除外)
    cd ..                    # 在任何目录下都代表上一级目录(顶级除外)
	cd /路径名				   # 切换到指定路径下
5.pwd                    # 查看当前路径    pwd命令查看的所有路径都是从根目录(/)开始的
6.hostnamectl set-hostname 主机名	 # 修改主机名(默认localhost 重新进入系统生效)
7.exit					 # 登出
8.mv /源路径 /移动后的路径         # 移动文件及文件夹
9.cp [参数] /源路径 /移动后路径    # 复制文件   
	cp -r 目录名 /				      # 复制目录 -r参数 递归复制
10.rm						    # 删除文件
	rm -r 目录名				      # 删除目录 -r参数 递归删除
    rm -r -f 目录名                  # -f参数 免去删除二次确认
11.echo "打印的内容"              # 打印(类似于print)
12.printenv                     # 打印出当前系统中所有变量
13. >							# 写入内容到文件 覆盖重定向(类似于文件w覆盖写模式)
	>>							# 写入内容到文件 追加重定向(类似于文件a追加写模式)
14.cat 文件名                    # 查看文件内容
15.\'.\'开头文件					 # 隐藏文件
	ls -a							# -a参数 查看隐藏文件
    ls -h 文件名					  # -h参数 格式化文件大小便于查看(必须配合-l参数使用)
16.reboot						# 重启系统
17.shutdown -h now				# 立即关机
	shutdown -h 时间				   # 指定时间后关机

2.磁盘操作

MBR分区

MBR分区
    1.最多⽀持四个主分区
    2.系统只能安装在主分区
    3.扩展分区要占⼀个主分区
    4.MBR 最⼤只⽀持 2TB,但拥有最好的兼容性

fdisk工具:

	适⽤于磁盘⼩于2TB的磁盘,分区类型MBR,主分区4或主分区3+扩展分区(逻辑分区+…),分区后需要保存后才能⽣效
lsblk /dev/磁盘名			# 查看指定磁盘设备详情    
fdisk /dev/磁盘名          # 进入操作当前磁盘(输入m查看所有命令)

a toggle a bootable flag 					#切换分区启动标记
b edit bsd disklabel 						#编辑sdb磁盘标签
c toggle the dos compatibility flag 		#切换dos兼容模式
d delete a partition 						#删除分区 保存退出要执⾏partprobe刷新分区表
l list known partition types 				#显示分区类型
m print this menu 							#显示帮助菜单
n add a new partition 						#新建分区
o create a new empty DOS partition table 	#创建新的空⽩分区表
p print the partition table 				#显示分区表的信息
q quit without saving changes 				#不保存退出
s create a new empty Sun disklabel 			#创建新的Sun磁盘标签
t change a partitions system id 			#修改分区ID,可以通过l查看id
u change display/entry units 				#修改容量单位,磁柱或扇区
v verify the partition table 				#检验分区表
w write table to disk and exit 				#保存退出
x extra functionality (experts only) 		#拓展功能

优先掌握
    fdisk创建分区
    w write table to disk and exit #保存退出
    x extra functionality (experts only) #拓展功能

fdisk创建分区

fdisk /dev/sdb
    欢迎使⽤ fdisk (util-linux 2.23.2)。
    更改将停留在内存中,直到您决定将更改写⼊磁盘。
    使⽤写⼊命令前请三思。
    Device does not contain a recognized partition table
    使⽤磁盘标识符 0x12c57921 创建新的 DOS 磁盘标签。
命令(输⼊ m 获取帮助):n
    Partition type:
     p primary (0 primary, 0 extended, 4 free)
     e extended
    Select (default p): p
    分区号 (1-4,默认 1):
    起始 扇区 (2048-41943039,默认为 2048):
    将使⽤默认值 2048
    Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+1G
    分区 1 已设置为 Linux 类型,⼤⼩设为 1 GiB
命令(输⼊ m 获取帮助):p
    磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
    Units = 扇区 of 1 * 512 = 512 bytes
    扇区⼤⼩(逻辑/物理):512 字节 / 512 字节
    I/O ⼤⼩(最⼩/最佳):512 字节 / 512 字节
    磁盘标签类型:dos
    磁盘标识符:0x12c57921
     设备 Boot Start End Blocks Id System
    /dev/sdb1 2048 2099199 1048576 83 Linux
命令(输⼊ m 获取帮助): w # 保存
[root@chenyang ~]# lsblk /dev/sdb  # 查看分区信息

磁盘分区的格式化及挂载

mkfs.xfs   : 性能强,功能完善
mkfs.ext   : 性能稍弱
mkfs.btrfs : 性能最强 新出不久

\'\'\'
磁盘必须格式化制作⽂件系统,然后挂载才能使⽤
	针对⼀块硬盘/dev/sdb
	可以不分区,直接格式化制作⽂件系统
	也可以基于mbr或者gpt分区⽅式分区完毕后,针对某⼀个分区⽐如/dev/sdb1制作⽂件系统
\'\'\'
# 1.创建分区并保存
	[root@egon ~]# fdisk /dev/sdb
    ...
    命令(输⼊ m 获取帮助): w # 保存
    
# 2.格式化文件系统
	[root@egon ~]# mkfs.xfs /dev/sdb       # /dev/sdb整体就是⼀个分区

# 3.挂载分区到文件夹上
	[root@egon ~]# mount /dev/sdb1 /opt/
				    命令   分区路径  挂载路径
				    
# 4.查看挂载详情
	[root@python mnt]# df -h
	
# 5.卸载
	umount /dev/sdb1 # 或者umount /opt
	(umount -l /dev/sdb1 # 或者umount -l /opt 强制卸载)
	

# 错误处理
    [root@python mnt]# umount /mnt 
    umount: /mnt:目标忙。
            (有些情况下通过 lsof(8) 或 fuser(1) 可以找到有关使用该设备的进程的有用信息)
	解决:
        当前所在目录为挂载目录,切换一个目录即可。
  • 创建文件(touch)
[root@localhost ~]# # 在Linux系统中创建test.txt
[root@localhost ~]# touch test.txt
  • 创建文件夹(mkdir)
[root@localhost ~]# # 创建一个文件夹
[root@localhost ~]# mkdir /root/python
[root@localhost ~]# ls /root/
anaconda-ks.cfg  python  test.txt
[root@localhost ~]# mkdir /root/python1
[root@localhost ~]# ls /root/
anaconda-ks.cfg  python  python1  test.txt
[root@localhost ~]# cd /root/python
[root@localhost python]# pwd
/root/python

# 参数:
-p : 递归创建目录
[root@localhost python]# mkdir -p /aa/bb/cc
[root@localhost python]# cd /aa/bb/cc
[root@localhost cc]# pwd
/aa/bb/cc

-v : 显示创建的过程
[root@localhost cc]# mkdir -p -v /aaa/bbb/ccc
mkdir: 已创建目录 "/aaa"
mkdir: 已创建目录 "/aaa/bbb"
mkdir: 已创建目录 "/aaa/bbb/ccc"
  • 查看文件夹下面的文件(ls)
# 查看文件需要跟对应的路径# Linux中最顶级目录是根目录:/[root@localhost ~]# # 根目录(最顶级目录):/[root@localhost ~]# # 根目录下有哪些内容[root@localhost ~]# ls / bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var# 查看文件的详细信息[root@localhost ~]# ls -l总用量 4-rw-------. 1 root root 1766 6月  10 17:15 anaconda-ks.cfgdrwxr-xr-x. 2 root root    6 6月  11 15:19 pythondrwxr-xr-x. 2 root root    6 6月  11 15:20 python1[root@localhost ~]# ll总用量 4-rw-------. 1 root root 1766 6月  10 17:15 anaconda-ks.cfgdrwxr-xr-x. 2 root root    6 6月  11 15:19 pythondrwxr-xr-x. 2 root root    6 6月  11 15:20 python1
  • 查看当前所在路径(pwd)
# 查看当前所在路径:pwd# pwd命令查看的所有路径都是从根目录(/)开始的[root@localhost ~]# pwd/root
  • 切换目录(cd)
# 切换目录:cd # 以绝对路径的方式切换路径(从根目录开始)[root@localhost ~]# cd /etc[root@localhost etc]# pwd/etc# 以相对路劲方式切换目录# . 和 .. # . : 在任何目录下都代表当前目录[root@localhost etc]# cd .[root@localhost etc]# pwd/etc# .. : 在任何目录下都代表上一级目录(顶级目录除外)[root@localhost /]# cd /etc/sysconfig/network-scripts/[root@localhost network-scripts]# pwd/etc/sysconfig/network-scripts[root@localhost network-scripts]# cd ..[root@localhost sysconfig]# pwd/etc/sysconfig# cd命令切换的默认目录为家目录(~ :在linux当中指的是当前用户的家目录)[root@localhost ~]# [用户名@主机名 当前所在的目录]## 修改主机名(重新进入系统才会生效)[root@localhost ~]# hostnamectl set-hostname python# 退出登录[test@python ~]$ exit登出
  • 移动文件(mv)
# 移动文件:mv# mv 源路径  移动后的路径[root@localhost ~]# mv /root/test.txt /[root@localhost ~]# lsanaconda-ks.cfg  python  python1[root@localhost ~]# ls /a  aa  aaa  bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  test.txt
  • 复制文件(cp)
# cp [参数] 源路径  移动后的路径# 复制文件[root@localhost ~]# cp anaconda-ks.cfg /# 递归复制参数-r : 递归复制(常用于复制目录)[root@localhost ~]# cp -r python /
  • 删除文件(rm)
# 删除文件的命令:rm[root@localhost ~]# lsanaconda-ks.cfg  python  python1[root@localhost ~]# rm anaconda-ks.cfg rm:是否删除普通文件 "anaconda-ks.cfg"?n[root@localhost ~]# lsanaconda-ks.cfg  python  python1[root@localhost ~]# rm anaconda-ks.cfg rm:是否删除普通文件 "anaconda-ks.cfg"?y[root@localhost ~]# lspython  python1# 删除目录(-r : 递归删除文件)[root@localhost ~]# lspython  python1[root@localhost ~]# rm python1rm: 无法删除"python1": 是一个目录[root@localhost ~]# rm -r python1rm:是否删除目录 "python1"?y[root@localhost ~]# lspython# -f : 免去删除提示[root@localhost ~]# lspython[root@localhost ~]# rm -r -f python/[root@localhost ~]# ls
  • 打印命令(echo)
echo "打印的内容"
  • 打印出当前系统中所有的变量
[root@localhost ~]# printenv 
  • 重定向符号(>和>>)
# > 和 >> # > : 覆盖重定向(先删除文件内容,后写入内容到文件)[root@localhost ~]# echo "Hello China" > test.txt# >> : 追加重定向(原来的内容不动,后来的内容从底部插入)[root@localhost ~]# echo "Hello World" >> test.txt
  • 查看文件内容
[root@localhost ~]# cat test.txt Hello World
  • 隐藏文件(.文件名)
# 文件名以.开头的就是隐藏文件-a : 查看隐藏文件[root@localhost ~]# ls -a.  ..  .bash_logout  .bash_profile-l : 查看文件详细信息[root@localhost ~]# ls -l总用量 4-rw-r--r--. 1 root root 24 6月  11 16:26 test.txt 文件权限       所属用户 所属组  文件的大小  创建时间  文件名称 [root@localhost ~]# # ls -l 等价于 ll[root@localhost ~]# ll总用量 4-rw-r--r--. 1 root root 24 6月  11 16:26 test.txt[root@localhost ~]# ls -l总用量 4-rw-r--r--. 1 root root 24 6月  11 16:26 test.txt-h : 以方便查看方式查看文件大小(必须配合-l参数)reboot : 重启系统shutdown -h now : 立即关机shutdown -h 2 : 

磁盘

磁盘  -> 分区 -> /lsblk 磁盘lsblk /dev/sdb 查看特定磁盘# 从分区到使用1、格式化文件系统2、挂载到对应目录(mount)
  • 磁盘分区的格式化及挂载
mkfs.xfs   : 性能强,功能完善mkfs.ext   : 性能稍弱mkfs.btrfs : 性能最强# 格式化文件系统[root@python dev]# mkfs.xfs /dev/sdb1 (格式化分区后的盘时要重命名)# 挂载分区到文件夹上[root@python dev]# mount /dev/sdb1 /mnt/                    命令    分区路径  挂载路径# 查看挂载详情[root@python mnt]# df# 错误处理[root@python mnt]# umount /mnt umount: /mnt:目标忙。        (有些情况下通过 lsof(8) 或 fuser(1) 可以         找到有关使用该设备的进程的有用信息)当前所在目录为挂载目录,切换一个目录即可。

以上是关于linux 中如何在指定的目录下创建文件的主要内容,如果未能解决你的问题,请参考以下文章

如何在linux中使用shell脚本遍历指定目录的文件,将创建时间大于指定时间的文件,复制到指定目录下。

delphi 如何在指定目录下创建文件

如何在linux中使用shell脚本遍历指定目录的文件,将创建时间大于指定时间的文件,复制到指定目录下。

linux下如何移动文件到一个不存在的目录

如何用File.createTempFile来创建一个在指定路径下的文件

linux中如何移动文件