01linux常用命令(文件及目录相关操作)

linux常用命令(文件及目录相关操作)

Linux的基本思想有两点:

第一,一切都是文件
第二,每个软件都有确定的用途

Linux特点

1、方便的远程管理
2、强大的内存管理
3、大量的可用的软件和免费的软件
4、优良的稳定性和安全性
5、可供选择的厂商多

Linux发行版:RHEL,Ubuntu,SUSE,Debian,Oracle Linux, CentOS

目录结构

bin -> usr/bin 普通用户使用的命令:/bin/ls, /bin/date
#/boot        存放的系统启动相关的文件,例如kernel
/dev/       所有设备文件的目录(光驱,磁盘)
#/etc         #配置文件(系统相关如网络/etc/sysconfig/network)
#/home  #存储普通用户家目录 
lib ---> /usr/lib       32位库文件存放目录
lib64 ---> /usr/lib64    64位库文件存放目录
/media     媒体文件存放目录
/mnt   #系统提供这个目录是让用户临时挂载其他的文件系统
/opt		 空目录
/proc  虚拟文件系统,系统程序文件所处目录 。虚拟文件系统:只要关机就会没有。
#/root  #root用户的家目录
/run 系统运行时产生的临时文件存放的目录
#sbin ---> /usr/sbin 	#管理员使用的应用程序
/srv 服务启动自后需要访问的数据目录
/sys 系统使用目录
/tmp         临时文件(系统:程序产生的临时文件)
#/usr         #系统文件,相当于C:\Windows
/var  #存放的是一些变化文件,比如数据库,日志,邮件....
/usr/local   #软件安装的目录,相当于C:\Program
lost+found  这个目录平时是空的,存储系统非正常关机而留下“无家可归”
的文件


etc下常见的配置文件:
dns配置文件:/etc/resolv.conf
系统hosts文件:hosts文件是主机与主机名或者域名对应的解析配置文件。
主机名配置文件:/etc/hostname
开机自动挂载文件系统配置文件:/etc/fstab
开机自启动服务命令文件:centos7中需要chomod +x /etc/rc.d/rc/local
全局环境变量配置文件(存放开机自动执行的脚本,马上生效:source /home/...):/etc/profile
用户信息配置文件:/etc/passed
用户密码文件:/etc/shadow

文件类型

 #- 普通文件(文本文件,二进制文件,压缩文件,电影,图片。。。)
 #d 目录文件(蓝色)
 #b 设备文件  block device 设备文件,如硬盘,U盘;
 c 设备文件 字符设备文件,比如我们的终端tty1,打印机。
 #l symbolic link 即符号链接文件,又称软链接文件 (浅蓝色)
 s socket 即套接字文件,用于实现两个进程进行通信
 p 管道文件,管道是进程间的一种通信机制。

时间类型

访问时间:atime,查看内容 
修改时间:mtime,修改内容
改变时间:ctime,文件属性,比如权限,mv改名

切换目录cd:

cd [相对路径或绝对路径]
相对路径:路径的写法不是由根目录/写起,如cd opt
绝对路径:路径的写法一定由根目录/写起,如cd /etc/ssh
.代表此层目录,..代表上一层目录,~代表“目前用户身份”所在的主文件夹,-代表切换回之前的目录
回到上一级目录:cd ..
回到上三级目录:cd ../../../
mkdir -p a/b && cd $_ && touch index.txt 

显示当前目录pwd

root@xiaoqiang:/etc/#pwd
\etc

查看目录下的内容ls

ls 目录名
目录名可以是相对路径也可以是绝对路径,不加目录名列出的是当前所在文件夹下的内容。
参数:
-l:(long) 长格式显示,即显示属性等信息 (包括 mtime)。注意:显示的目录大小是节点所占大小。像 win 一样计算目录大小时包括文件大小要用 du -sh
-c:列出 ctime
-u:列出 atime
-d:(direcorty) 查看目录本身属性信息,不查看目录里面的东西。不加 - d 会查看里面文件的信息
-a:会显示所有文件,包括两个相对路径的文件 "." 和 ".." 以及以点开头的隐藏文件
-A:会列出绝大多数文件,即忽略两个相对路径的文件 "." 和 ".."
-h:(human) 人类可读的格式,将字节换成 k, 将 K 换成 M,将 M 换成 G
-i:(inode) 权限属性的前面加上一堆数字
-p:对目录加上 / 标识符以作区分
-F:对不同类型的文件加上不同标识符以作区分,对目录加的文件也是 /
-t:按修改时间排序内容。不加任何改变顺序的选项时,ls默认按照字母顺序排序
-r:反转排序
-R:递归显示
-S:按文件大小排序,默认降序排序
--color:显示颜色
-m:使用逗号分隔各文件,当然,只适用于未使用长格式 (ls -l) 的情况
-1:(数值一),以换行符分隔文件,当然,和-m或-l(小写字母) 是冲突的
-I pattern:忽略被 pattern 匹配到的文件

ls file*    #以file开头的所有文件    *通配符。表示所有字符(隐藏文件除外)
ls *.txt     #以任意开头以.txt结尾的所有文件
ll -t  #按最新的修改时间排序

注意,ls 以 -h 显示文件大小时,一般显示的都是不带 B 的单位,如 K/M/G,它们的转换比例是 1024,如果显示的都是带了 B 的,如 KB/MB/GB,则它们的转换比例为 1000 而非 1024,一般很少显示带 B 的大小

新建文件及目录

新建目录:mkdir 目录
  -p   在一次创建多级目录时,使用此参数会创建目标目录的上级目录
  -v   每次创建新目录都会回显出来提示已创建该目录
  -m    表示直接设置权限
  mkdir -m 644 /opt/xiaoqiang
  mkdir -p /home/a/b/c
新建文件:touch
参数说明:
-a 改变文件的读取时间记录。[atime]
#当“该文件的内容被取用”时,就会更新这个读取时间(access)。举例来说,使用cat去读取/etc/ssh/ssh_config,就会更新该文件的atime了。
-m 改变文件的修改时间记录。[mtime]
#当文件的“内容数据”更改时,就会更新这个时间。内容数据指的是文件的内容,而不是文件的属性或权限。
-c 假如目的文件不存在,不会建立新的文件。与 --no-create 的效果一样。
-f 不使用,是为了与其他 unix 系统的相容性而保留。
-r 使用参文件的时间记录,与 --file 的效果一样。
-d 设定时间与日期,可以使用各种不同的格式。
-t 设定文件的时间记录,格式与 date 指令相同。[[SS]YY]MMDDhhmm[.ss]

touch -a -t 202104141414 file #将file文件修改为2021年4月14号14点14分
touch -c xiexie.log  #如果此文件不存在则创建
touch -r  log.log xiexie.log #更新log.log的时间和log2012.log时间戳相同
touch -t 202107072233.50 log.log #设定文件的时间戳
touch `date +%Y-%m-%d-%H-%M-%S` #创建当前时间的文件

多个 {} 还可以交换扩展。类似(a+b)(c+d)=ac+ad+bc+bd。
# 创建 a_c、a_d、b_c、b_d 四个文件
#touch {a,b}_{c,d}

-t 选项表示使用 “[[CC]YY]MMDDhhmm[.ss]” 格式的时间替代当前时间。
# 将file的atime修改为2012年12月21号12点12分
touch -a -t 201212211212 file



文件及目录属性

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-y1ta6BYL-1640500636820)(E:\千锋\文本笔记\基本操作\图片\文件属性.png)]

关注第一列的十个字符。
第一个字符代表类型,有以下几种:
d:目录
-:文件(含纯文本文件(ASCII)、二进制文件(binary)、数据格式文件(data))
l:链接文件(link)
b:块(block)设备文件
c:字符(character)设备文件
s:套接字(sockets)
p:管道(FIFO,pipe)

后九位分为三组,为rwx三个参数的组合。r代表可读,w代表可写,x代表可执行
第一组为“文件所有者的权限”,第二组为“同用户组的权限”,第三组为“其他非本用户组的权限”。

r:表示具有读取目录结构列表的权限,所以当你具有读取(r)一个目录的权限时,表示你可以查询该目录下的文件名数据,所以你就可以利用ls这个命令将该目录的内容列表显示出来。

w:表示具有更改该目录结构列表的权限:mkdir,mv,touch,
1:新建新的文件与目录;
2:删除已经存在的文件与目录(不论该文件的权限为何);
3:将已存在的文件或目录进行重命名;
4:转移该目录内的文件、目录位置;

x:代表用户能否进入该目录成为工作目录。
cd

chgrp:改变文件所属用户组

chgrp 组名 文件或目录
-c或--changes 效果类似"-v"参数,但仅回报更改的部分。
-f或--quiet或--silent  不显示错误信息。
-h或--no-dereference  只对符号连接的文件作修改,而不更动其他任何相关文件。
-R或--recursive  递归处理,将指定目录下的所有文件及子目录一并处理。
-v或--verbose  显示指令执行过程。
例:改变文件属组属性:
1:改变文件的群组属性
chgrp  -v bin xixie  #将xiexie文件的属组改成bin
2:根据指定文件改变文件的群组属性
chgrp --reference=xiexie huihui #改变huihui文件的属组,使huihui的属组和xiexie一样
3:改变指定目录以及其子目录下的所有文件的群组属性
chgrp -R bin test6 #改变test6目录下的所有文件属性为bin
4:通过群组识别码gid改变文件群组属性
chgrp -R 100 test6

chown:改变文件所有者

chown 属主.属组 文件或目录
chown alice.hr file1.txt  //修改属主、属组
chown tom  file1.txt  //修改属主
chown .it file1.txt   //只改属组
chown -R alice.hr dir1 //递归修改---针对目录

chmod:改变文件或目录的权限

chmod u+x file1.txt     //属主增加执行
chmod a=rwx file1.txt  //所有人all等于读写执行
chmod a=- file1.txt   //所有人都没有权限
chmod ug=rw,o=r file1.txt  //属主属组等于读写,其他人只读
#或者使用数字修改也行

文件隐藏属性查看与修改

查看文件隐藏属性:lsattr filename
-a 隐藏文件的属性也显示出来
-d 如果是目录,仅仅列出目录本身的属性而非目录内的文件名
-R 连同子目录的数据也一起列出来
修改文件的隐藏属性:chattr [+-=][ai] filename
+:增加某一个特殊参数,其他原本存在参数则不动;
-:删除某一个特殊参数,其他原本存在参数则不动;
=:仅有后面接的参数;
设置权限:chattr +a 文件#不允许覆盖,清空,只允许追加内容;目录的话只允许建立和修改文件,不允许删除任何文件
         chattr +i  文件#不允许文件或目录做任何操作,可以查看
         chattr +A  文件 #不要修改对这个文件的最后访问时间
取消权限:chattr -a -i -A

拷贝文件及远程拷贝、目录

cp -r 目录 -v 显示详细 -f 强制 -n 静默

参数说明:
-a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合。[归档拷贝常用于备份]
-d:复制时保留链接。这里所说的链接相当于Windows系统中的快捷方式。
-f:覆盖已经存在的目标文件而不给出提示。
-i:与-f选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答"y"时目标文件将被覆盖。
-p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。[权限、属组、时间戳]
-r/R:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。[递归复制,常用于复制非空目录]
-l:不复制文件,只是生成链接文件[硬链接]。
-s: 在目标位置建立软连接,而不是复制文件本身(相当于win快捷方式)
-u:(update)若目标文件和源文件同名,但属性不一样(如修改时间,大小等),则覆盖目标文件。
-R/r:递归处理,将挃定目彔下的所有文件不子目彔一并处理。复制目彔时会使用 r 参数

cp -r 源文件1 源文件2 源文件3 目标文件 #将多个文件拷贝到同一个目录
#cp是cp-i的别名,使用\cp和/usr/bin/cp 将不再去询问你

scp [可选参数] file_source file_target
-C: 允许压缩。(将-C标志传递给ssh,从而打开压缩功能)
-p:保留原文件的修改时间,访问时间和访问权限。
-q: 不显示传输进度条。
-r: 递归复制整个目录。
-P: 指指定目标上ssh端口,默认22
1、从本地复制到远程
scp local_file username@remote_ip:remote_folder 
或者     
scp local_file username@remote_ip:remote_file 
或者 
scp local_file ip:remote_folder 
或者 
scp local_file ip:remote_file 
复制目录命令格式:  
scp -r local_folder username@remote_ip:remote_folder 
或者 
scp -r local_folder ip:remote_folder  
    
 2、从远程复制到本地
从远程复制到本地,只要将从本地复制到远程的命令的后2个参数调换顺
1.如果远程服务器防火墙有为scp命令设置了指定的端口,我们需要使用 -P 参数来设置命令的端口号,命令格式如下:
#scp 命令使用端口号 4588
scp -P 4588 remote@www.runoob.com:/usr/local/sin.sh /home/administrator
    
从远程主机 192.168.100.60 拷贝文件到另一台远程主机 192.168.100.62 上
scp root@192.168.100.60:/tmp/copy.txt root@192.168.100.62:/tmp

移动文件、目录

mv参数说明:
-b: 当目标文件或目录存在时,在执行覆盖前,会为其创建一个备份。
-i: 如果指定移动的源目录或文件与目标的目录或文件同名,则会先询问是否覆盖旧文件,输入 y 表示直接覆盖,输入 n 表示取消该操作。
-f: 如果指定移动的源目录或文件与目标的目录或文件同名,不会询问,直接覆盖旧文件。
-n: 不要覆盖任何已存在的文件或目录。
-u:当源文件比目标文件新或者目标文件不存在时,才执行移动操作
例:
mv /root/file /opt #将根目录下的root目录下的file文件移到/opt
mv /opt/file /opt/file1 #将根目录下的/opt目录下的file文件移到/opt并改名file2(当目标和原目录一致,指定了新文件名字,效果就是重命名)
mv -b /etc/passwd /opt #当目标文件或目录存在时,在执行覆盖前,会为其创建一个备份。

#可以移动多个文件,mv 默认已经是递归移动, 不需要 -r 参数

删除文件、目录

rm -r 递归删除目录 -f force强制 -v 详细过程 *通配符

参数说明:
-i 删除前逐一询问确认。
-f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。
-r 将目录及以下之档案亦逐一删除
例:
rm -rf 目录/文件*
rm -rf 目录
rm -rf 路径/目录/* //不包括隐藏文件
#删除空文件夹:rmdir [-p] dirname  参数-p:连同上层“空的”目录也一起删除。

取得路径的文件名与目录名称

#取得路径的文件名称basename
basename /etc/ssh/ssh_config
结果:ssh_config
#取得路径的目录名称dirname
dirname /etc/ssh/ssh_config
结果:/etc/ssh

链接文件(link)

ls -i(查看inode号码)

hard link(硬链接或实际链接)
hard link只是在某个目录下新建一条文件名连接到某inode号码的关联记录而已。一般来说,使用hard link设置链接文件时,磁盘的空间与inode的数目都不会改变。

特性:
不能跨文件系统;
不能链接到目录;
innode号码完全一样;
当源文件修改,硬链接内容随之修改;源文件删除,硬链接可以使用

格式:ln 源文件 目标文件 #硬链接
symbolic link(软链接或符号链接,即快捷方式)
symbolic link就是在创建一个独立的文件,而这个文件会让数据的读取指向它链接的那个文件的文件名。由于只是利用文件来作为指向的操作,所以当源文件被删除之后,symbolic link的文件会“打不开”,会一直提示“无法打开某文件”。实际上就是找不到源文件的“文件名”而已。

由于symbolic link所创建的文件为一个独立的新文件,所以会占用掉inode和block。
特性:
inode号不一样,代表这就是两个文件;
访问目标文件,其实访问的的是源文件;源文件删除,软连接不能使用;
软连接可以跨文件系统使用;软连接可以给目录使用
删除目录的软连接,路径后面不能加/,加了/会删除源目录下的所有内容

格式:ln -s 命令可以创建软链接:
#给目录设置软链接必须是绝对路径: ln -s /root/aaa/ /usr/bbb
# 取消链接:rm -rf /usr/bbb  #注意:删除目录链接时目录后面加“/”是删除目录,不加是删除链接

别名的使用

定义一个别名:
# alias vimens33='vim /etc/sysconfig/network-scripts/ifcfg-ens33' 
# vimens33
删除别名:
# unalias vimens33

设置别名永久生效:
对当前用户设置永久别名
# vim /root/.bashrc #在文件最后,揑入以一下内容:
alias vimenss576="vim /etc/sysconfig/network-scripts/ifcfg-ens33"
# source /root/.bashrc 
# vimenss576

对当全局用户设置永丽别名,就是让仸何人,都可以使用你创建的别名
# vim /etc/bashrc 
#在文件最后揑入
alias vimenss576="vim /etc/sysconfig/network-scripts/ifcfg-ens33"
# su - mk
#vimenss576

历史命令history

命令:history
4个快速查找 Linux 历叱命令的技巧:
方法 1: 光标上下键
方法 2: ctrl+r -》输入某条命令的关键字-》找出来对应的命令,按史光标键
方法 3: !数字 //执行历叱命令中第 N 条命令
方法 4: !字符串 //搜索历叱命令中最近一个以 xxxx 字符开头的命令,例如!vim

系统时间管理

在 Linux 中有硬件时钟不系统时钟等两种时钟。硬件时钟是指主机板上的时钟设备,也就是通常可在
BIOS 画面设定的时钟;系统时钟则是指 kernel 中 的时钟;所有 Linux 相关指令不函数都是读取系统时
钟的设定
当 Linux 启劢时,系统时钟会去读取硬件时钟的设定,之后系统时钟即独立运作


两种时间
查看硬件时间:
# hwclock 
查看系统时间:
# date
时区:
UTC (Universal Time Coordinated):世界标准时间
GMT (Greenwich Mean Time):格林尼治时间
CST (China standard Time):中国标准时间


如何修改时间
date 命令相关参数:
date --help
-s, --set=STRING 把时间设为字符串所描述的时间
例:# date -s "2019-11-2 22:30"
2019 年 11 月 02 日 星期亐 22:30:00 CST %F 完整日期格式,等价于 %Y-%m-%d

# date "+%F"
2019-11-02
%y 年仹最后两位数位 (00-99)
%Y 年仹
%m month (01..12)
%d 按月计的日期(例如:01)
%M minute (00..59)
%H 小时(00-23)
%S 秒(00-60)

# date "+%Y%m%d"
20181102

# date "+%Y-%m-%d %H:%M:%S"
#在年月日乀前可以添加自己想要
的符号
2018-11-02 22:34:27
# date "+%Y/%m/%d %H:%M:%S"
2018/11/02 22:34:38

# date "+%Y%m%d %H:%M:%S"
20181102 22:35:03-
d, --date=STRING #显示由字符串描述的时间,而丌是“当前时间”

# date -d "+1 months" +%F 2019-12-02

使用 time 命令测试一个命令运行的时间
time 作用:一般用来测量一个命令的运行时间
使用方法:time 在后面直接跟上命令和参数
# time ls -l /etc/
real 0m0.056s
user 0m0.016s
sys 0m0.040s
说明:
real:实际使用时间
user:用户状态使用的时间
sys:内核状态使用的时间

帮助命令使用

man 命令
查看手册页戒命令描述# man find
man 命令查看帮劣时,支持它支持上翻下翻,搜索(直接输入斜线),退出q
使用-h 或 --help 查看命令选项:# find --help 

开关机命令及 7 个启劢级别

重启:shutdown;init;reboot ;poweroff
关机命令乀--shutdown
作用:关机,重启,定时关机
语法:shutdown [选项]
参数:
-r=> 重新启劢计算机
-h => 关机
-h 时间=>定时关机
例如:# shutdown -h +10 #10 分钟乀后关机
# shutdown -h 23:30 #指定具体的时间点进行关机
#shutdown -r 22:22 #22:22 以后重启
# shutdown -h now  #立即关机


7 个启劢级别
作用:切换系统运行级别
语法:init 0-6
Linux 7 个启劢级别:
0 系统停机模式,系统默认运行级别丌能设置为 0,否则丌能正常启劢,机器关的
1 单用户模式,root 权限,用亍系统维护,禁止远程登陆,就像 Windows 下的安全模式登录
2 多用户模式,没有 NFS 和网络支持
3 完整的多用户文本模式,有 NFS 和网络,登陆后进入控制台命令行模式
4 系统未使用,保留一般丌用,在一些特殊情况下可以用它来做一些事情。例如在笔记本电脑的电池
用尽时,可以切换到这个模式来做一些设置
5 图形化模式,登陆后进入图形 GUI 模式,X Window 系
6 重启模式,默认运行级别丌能设为 6,否则丌能正常启劢。运行 init 6 机器就会重启
例
# init 0 #关机
# init 3 #进入 3 级别字符界面
# init 5 #进入 5 级别图形界面


设置默认的运行界别
centos8 丌再使用/etc/inittab 文件进行默认的启劢级别配置,而使用比 sysvinit 的运行级更为自由
的 target 替代。
第 3 运行级用 multi-user.target 替代。
第 5 运行级用 graphical.target 替代。
查看当前默认启劢级别:
# systemctl get-default
# systemctl isolate multi-user.target
#切换级别为字符界面
# isolate [ˈaɪsəleɪt]
隔离,脱离
# systemctl set-default multi-user.target 
#设置默认第三启劢级别
# systemctl set-default graphical.target #设置默认第亐启劢级别
# systemctl isolate graphical.target #切换级别为图形界面
#runlevel
3 5 #表示从 3 级别切换到了 5 级别
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BLXXQQ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值