赞
踩
cd:修改当前所在目录(文件夹,用来切换文件夹)
cd 切换到家目录(/home/china)
cd ~ 切换到家目录(/home/china)
cd /home/china 切换到家目录(/home/china)
cd / 切换到根目录(文件系统的最底层)
cd .. 切换到上一级目录
cd ./day1 切换到当前目录下的day1文件夹
cd - 切换到上一次所在的目录
cd /mnt/hgfs/Share 切换到共享文件夹所在的路径
路径分为两种:以/开头的和以.开头的
以/开头的路径,是绝对路径,从根目录的位置开始
以.开头的路径,是相对路径,从当前所在的目录开始
如:
cd /home/china 切换到家目录(/home/china)
cd / 切换到根目录(文件系统的最底层)
cd .. 切换到上一级目录
cd ./day1 切换到当前目录下的day1文件夹
ls:list,显示当前路径或者指定路径中所有文件的文件名
ls 显示当前目录下的文件名(不包含隐藏文件)
ls /home/china 显示指定目录下的所有文件的文件名(不包含隐藏文件)
ls -a 显示当前目录下的文件名(包含隐藏文件)
ls -a /home/china 显示指定目录下的所有文件的文件名(包含隐藏文件)
在Linux中,以.开头的文件就是隐藏文件
ls -l 显示当前目录下所有文件的详细信息,包括文件大小、权限、最后一次修改时间、文件名
如:
-rwxr-xr-x 1 china china 8632 5月 7 11:37 a.out
第一个字符:用来描述文件的类型
-:表示普通文件,包括文本文件(.txt文件)和二进制文件(可执行文件等)
d:表示目录文件,即 文件夹
c:字符设备文件
b:块设备文件
l:软链接文件
rwxr-xr-x:一共有9个字符,用来表示文件的读写以及可执行权限
这9个字符可以分成三组,每3个字符为一组
每一组包含3个权限:读权限(r)、写权限(w)、执行权限(x)
所以,这3组权限,就表示3种用户对该文件的权限
第一组,表示属主用户对该文件的权限,如:rwx 表示 可读,可写,可执行
第二组,表示组用户对该文件的权限,如:r-x 表示 可读,不可写,可执行
第三组,表示其他用户对该文件的权限,如:r-x 表示 可读,不可写,可执行
所以,如果一个文件的权限为:rwxr----,它代表的含义为:
属主用户对该文件可读可写可执行
组用户对该文件可读不可写不可执行
其他用户对该文件不可读不可写不可执行
1:代表该文件的硬链接个数为1个
china:属主用户的组名
china:属主用户的名称
8632:文件的大小,单位为字节
5月 7 11:37:该文件最后一次修改的时间
a.out:文件的名称
ls -l /mnt/hgfs/Share/day1/笔记/笔记.txt 查看指定路径下的某个文件的详细信息
ls -la 查看当前路径下所有文件的详细信息(包含隐藏文件)
ls -la /mnt/hgfs/Share 查看指定路径下所有文件的详细信息(包含隐藏文件)
touch:创建空的普通文件
touch 1.c
touch 2.c 3.c 4.c 5.txt
rm:删除文件,默认只能删除普通文件
rm 1.c
rm 2.c 3.c
rm *.c 删除所有的以.c结尾的文件
rm * 删除当前路径下所有的文件
rm -r 文件名 递归地删除文件中的内容
rm -r dir4 递归地删除目录dir4
rm -f 文件名 强制删除一个文件,不询问是否删除有写保护的文件
rm -rf dir5 强制且递归地删除一个文件,通常用来删除目录
mkdir:创建空目录
mkdir dir1
mkdir dir2 dir3 dir4
rmdir:删除空目录
rmdir dir1
rmdir dir2 dir3 dir4
rmdir * 删除当前路径下所有的空目录
chmod:修改文件的权限
chmod +x test.c 给当前路径下的test.c文件添加可执行权限(对所有用户有效)
chmod -r test.c 去除当前目录下的test.c文件的可读权限(对所有用户有效)
chmod +w test.c 给当前路径下的test.c文件添加可写权限(对所有用户有效)
chmod u+x test.c 给当前路径下的test.c文件的属主用户添加可写权限(只对属主用户有效)
chmod g-r test.c
chmod o+w test.c
chmod ug+x test.c
注意:
共享文件夹中的文件的权限不仅仅只受到Ubuntu的影响,还会受到Windows的影响
所有,共享文件夹中的某些权限是无法修改的(可读和可执行)
文件的权限是通过位域来实现的(通过bit来实现的)
用0表示没有对应的权限,1表示有对应的权限
所以,假设文件的权限为 rwxrw-r--,该文件的权限可以表示为:
111 110 100
文件权限3个为一组,即3个bit表示一组权限,所以,通常用八进制数来描述文件的权限
如:
rwx rwx rwx => 111 111 111 => 0777
rw- r-- r-- => 110 100 100 => 0644
rwx rw- r-- => 111 110 100 => 0764
通常情况下,当用来描述文件的权限时,八进制数可以省略前面的0
因此,我们可以这样来修改文件的权限:
chmod 777 test.c =》 rwx rwx rwx
chmod 764 test.c =》 rwx rw- r--
cp:拷贝文件或者目录
cp 1.c 2.c 将1.c拷贝到当前目录,并且指定新文件名为2.c
该命令通常用来备份文件
cp 1.c /home/china 将当前路径下的1.c拷贝到指定的路径下去
cp 1.c /home/china/2.c 将当前路径下的1.c拷贝到指定的路径下去,并且指定新文件名为2.c
cp -r dir3 /mmt/hgfs/Share 将当前路径下的dir3这个目录拷贝到指定的路径下去
mv:移动文件或者目录
mv 1.c 2.c 将1.c移动到当前目录下,并且修改文件名为2.c
该命令通常用来修改文件名称
mv 1.c /home/china 将1.c移动到指定的路径下去
mv 1.c /home/china/2.c 将1.c移动到指定的路径下去,并修改文件名为2.c
mv code /home/china 将当前路径下的code目录移动到指定的路径下去
clear:清屏
快捷键:Ctrl + L
sudo:以超级用户的权限去执行后面的命令
sudo touch 1.c
注意:
在使用sudo 的时候会需要输入用户的登录密码
而且在输入密码的时候不会显示输入的密码个数,没有任何的显示
密码验证通过以后,在一定的时效内是可以免密的
vi/vim:vi和vim是编辑器的名称
vim是vi的升级版,但是他们的基本功能都差不多
vi和vim是Linxu中功能非常强大的编辑器,可以用来编辑文本以及代码
通常用来编辑Linxu中的一些配置文件
vi和vim有两种工作模式:命令模式、编辑模式
在命令模式下,键盘字符的输入都会被当作一条命令来执行
如:
u:并不是在文件中输入一个u,而是执行命令撤销的操作
d:剪切
p:粘贴
y:复制
在编辑模式下,键盘字符的输入都会当作一个字符输入到文件中去
即,编辑文本
命令模式下有以下一些命令常用:
dd:剪切一行,如果不粘贴可以理解为删除一行
dnd:剪切n行,如果不粘贴可以理解为删除n行,如:d3d,从当前行开始往后剪切3行
yy:复制一行
yny:复制n行,如:y5y,从当前行开始复制5行
p:粘贴,在当前行的后面新开一行粘贴
P:粘贴,在当前行的上一行新开一行粘贴
u:撤销
i/I/o/O/a/A:从命令模式进入到编辑模式,字母不同,光标位置不同
当用vi或者vim编辑器打开一个文件时,默认处于命名模式
在编辑模式下,按Esc键可以退出编辑模式,进入命令模式
在命令模式下,输入:
:w 保存文件
:q 退出编辑器,如果修改了文件内容,会提示是否需要保存
:wq 保存并退出
:q! 强制退出,不保存
:x 保存并退出
1.文件IO(系统IO)
在Linux中一切皆文件!
假设没有操作系统,那么所有的程序都需要程序员自己设计
那么这样的话,所有操作文件的代码,也需要程序员自己去设计并实现
所以,这样的话效率很低,可移植性很差
为了避免这种情况,提供硬件设备的利用率,对硬件设备进行更好的管理和调度
就有了操作系统!
操作系统就是用来管理设备上硬件的程序,它介于底层硬件和应用程序之间
原本需要直接和硬件打交道的地方,就可以直接交给操作系统去完成
这样,开发人员在开发程序的时候,就有更多的精力投入到项目本身。提供开发效率
操作系统提供了一些操作文件的函数接口
即,操作系统帮我们实现了对文件访问的函数设计
我们只要调用这些函数就可以完成对文件的访问
由操作系统提供的访问文件的函数统称为:系统IO(文件IO)
对一个文件的操作无非分为以下几种:
打开 open
读 read
写 write
设置光标位置 lseek
关闭 close
所以,学习对文件的操作,无非就是对这几个函数进行应用
2.open
描述:
open - open and possibly create a file
打开并且有可能创建一个文件
函数原型:
int open(const char *pathname, int flags);
参数:
pathname:要打开的文件的路径名(可以用相对路径和绝对路径)
flags:打开标志,有以下标志可用
O_RDONLY:只读打开
O_WRONLY:只写打开
O_RDWR:可读可写
O_APPEND:追加打开,光标移动到文件末尾
O_CREAT:如果要打开的文件不存在,则创建该文件
O_TRUNC:截短打开,在打开文件前,先清空文件内容,即每次打开文件,都会清空文件内容
打开标志之间可以用或运算,如:
可读可写打开,如果文件不存在则创建,打开以后光标移动到文件末尾
O_RDWR|O_CREAT|O_APPEND
返回值:
open() return the new file descriptor,
or -1 if an error occurred (in which case, errno is set appropriately).
成功,返回一个新的文件描述符
文件描述符:该程序在运行期间打开的文件的序号
如:
打开的第一个文件,那么该文件的文件描述符为0
打开的第二个文件,那么该文件的文件描述符为1
打开的第三个文件,那么该文件的文件描述符为2
...
文件打开以后,对该文件的操作,都是通过文件描述符来完成的
失败,返回-1,同时errno被设置
errno:erro number,是程序在执行一些库函数的时候出错了的错误编号
根据该错误编号,就可以找到具体的错误信息
可以通过perror()这个函数来将错误码对应的错误提示文本打印出来
头文件:
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
注意:
程序在运行前,系统会为其打开3个文件:标准输入,标准输出,标准错误
所以,在程序中打开的对一个文件实际上已经是第4个文件了!
3.close
描述:
close - close a file descriptor
关闭一个文件描述符(文件)
函数原型:
int close(int fd);
参数:
fd:要关闭的文件的文件描述符
返回值:
close() returns zero on success.
On error, -1 is returned, and errno is set appropriately.
成功,返回0
失败,返回-1,同时errno被设置
头文件:
#include <unistd.h>
4.read
描述:
read - read from a file descriptor
从一个文件描述符中去读取数据
函数原型:
ssize_t read(int fd, void *buf, size_t count);
参数:
fd:指定从哪个文件中读取数据
buf:是一个指针变量,用来保存一个地址,这个地址就是存放读到的数据的地址
即,将读到的数据保存到哪个地方去
count:计数,指定一次性最多读取多少个字节的数据
返回值:
On success, the number of bytes read is returned (zero indicates end of file)
On error, -1 is returned, and errno is set appropriately.
成功,返回读到的字节数(返回0就表示读到文件末尾了,读完了)
失败,返回-1,同时errno被设置
头文件:
#include <unistd.h>
5.write
描述:
write - write to a file descriptor
往一个文件描述符中写入数据
函数原型:
ssize_t write(int fd, const void *buf, size_t count);
参数:
fd:指定要往哪个文件中写入数据
buf:是一个常量指针,指向的目标内容不能变
该指针变量用来接收一个地址,这个地址中存储的是要写入的数据
即,用来指定将哪些内容写入到文件中去
count:计数,指定一次性写入的字节数
count值不能大于实际内容的长度
返回值:
On success, the number of bytes written is returned (zero indicates nothing was written).
On error, -1 is returned, and errno is set appropriately.
成功,返回写入的字节数(返回0就表示什么都没有写进去,通常是因为要写入的数据为空)
失败,返回-1,同时errno被设置
头文件:
#include <unistd.h>
注意:
打开一个文件以后,光标位置默认在文件开头的位置
每读一个字节数据或者写入一个字节数据,光标就会自动往后移动一个字节
这样才不会重复地读或者写同一个字节的数据
6.lseek
描述:
lseek - reposition read/write file offset
重新设置读/写的文件偏移量(光标位置)
函数原型:
off_t lseek(int fd, off_t offset, int whence);
参数:
fd:文件描述符,指定设置哪个文件的文件偏移量
offset:设置要便宜的字节数
whence:指定从文件的哪个位置开始偏移,有以下几个位置可选:
SEEK_SET:从文件开头的位置开始偏移offset个字节
SEEK_CUR:从当前位置开始偏移offset个字节
SEEK_END:从文件末尾的位置开始偏移offset个字节
返回值:
lseek() returns the resulting offset location as measured in bytes from the beginning of the file.
On error, the value (off_t) -1 is returned and errno is set to indicate the error.
成功,返回光标距离文件开头的字节数(返回偏移量)
失败,返回-1,同时errno被设置
头文件:
#include <sys/types.h>
#include <unistd.h>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。