Linux 目录和文件的操作

使用三层交换实现不同网段、不同 VLAN 互通

整理常用的linux命令,关于目录和文件的操作,用于巩固记忆,以备不时之需。


[root@localhost ~]#

root:当前用户

localhost:主机名

~:当前所在位置

符号#:管理员

符号$:普通用户


命令字 [选项] [参数]

1.命令字:命令名称,使用命令字能唯一确定一条命令。

2.选项:调节命令的具体功能,决定这条命令如何执行。

  • 短格式选项:-字母

  • 长格式选项:--单词

一般情况下,”-“字母,”–“单词,有例外。

3.参数:命令字处理对象,通常是文件名、目录、用户等内容。

4.辅助操作

Tab:自动补齐

:强制换行

|:管道符

Ctrl + u:清空光标前所有内容

Ctrl + k:清空光标后所有内容

Ctrl + l:清屏,同clear

Ctrl + c:中断,取消编辑

Ctrl + d:登出,同exit


帮助手册

linux命令数量繁多,具体选项也各不相同,不可能全部记住,学会使用帮助手册可以大大提升效率。

–help 选项:ls --help

man 手册页:man ls

操作类型 操作键 功能
移动 ↑、↓ 上、下
翻页 Page Down 向下翻动一整页内容
^ Page Up 向上翻动一整页内容
退出 q或Q 退出手册阅读环境
查找 /-v 查找 “-v” 选项的帮助信息
^ n 看下一个匹配项
^ N 向上一个匹配项

Linux 系统目录结构

[root@localhost ~]# ls /  bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var  

/binbinBinary的缩写, 这个目录存放着最经常使用的命令。

/boot:这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。

/devdevDevice的缩写, 该目录下存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。

/etc:这个目录用来存放所有的系统管理所需要的配置文件和子目录。

/home:用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。

/lib:这个目录里存放着系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。

/medialinux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。

/mnt:系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。

/opt:这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。

/proc:这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:

echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all  

/root:该目录为系统管理员,也称作超级权限者的用户主目录。

/run:是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有/var/run目录,应该让它指向run

/sbins就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。

/srv:该目录存放一些服务启动之后需要提取的数据。

/sys:这是linux 2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统sysfs

  • sysfs文件系统集成了下面3种文件系统的信息:针对进程信息的proc文件系统、针对设备的devfs文件系统以及针对伪终端的devpts文件系统。

  • 该文件系统是内核设备树的一个直观反映。

  • 当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。

/tmp:这个目录是用来存放一些临时文件的。

/usr:这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录。

  • /usr/bin:系统用户使用的应用程序。

  • /usr/sbin:超级用户使用的比较高级的管理程序和系统守护程序。

  • /usr/src:内核源代码默认的放置目录。

/var:这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。

参考链接:Linux 系统目录结构 | 菜鸟教程


pwd

  • 显示出完整的当前活动目录名称
[root@localhost ~]# pwd  /root  

cd

  • 切换目录

..:上一级目录,当前目录的父目录
.:当前目录
~:用户家目录

[root@localhost etc]# pwd  /etc  [root@localhost etc]# cd ~  [root@localhost ~]# pwd  /root  [root@localhost ~]# cd -  /etc  [root@localhost etc]# pwd  /etc  [root@localhost etc]# cd ..  [root@localhost /]# pwd  /  

cd -:返回到上次所在的目录


ls

  • 显示目录内容

-l:以长格式显示文件和目录的列表,包括权限、大小等详细信息。
-a:显示所有子目录和文件信息,包括”.”和”..”。
-A:和-a类似,但不包括”.”和”..”。
-d:显示目录本身属性。
-h:以人性化方式显示出目录和文件的大小,显示KBMB等单位。要和-l一起使用。默认单位为B字节。
-R:递归显示目录及其子目录的所有内容。

[root@localhost ~]# ls  anaconda-ks.cfg  [root@localhost ~]# ls -l  total 4  -rw-------. 1 root root 1241 Aug 16 17:16 anaconda-ks.cfg  [root@localhost ~]# ls -a  .  ..  anaconda-ks.cfg  .bash_logout  .bash_profile  .bashrc  .cshrc  .tcshrc  [root@localhost ~]# ls -A  anaconda-ks.cfg  .bash_logout  .bash_profile  .bashrc  .cshrc  .tcshrc  [root@localhost ~]# ls -ld  dr-xr-x---. 2 root root 114 Aug 16 17:16 .  [root@localhost ~]# ls -lh  total 4.0K  -rw-------. 1 root root 1.3K Aug 16 17:16 anaconda-ks.cfg  
[root@localhost ~]# ls -R /  /:  bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var    /boot:  config-3.10.0-693.el7.x86_64  initramfs-0-rescue-ba010ae4b2944c52b216ec6259f230c0.img  symvers-3.10.0-693.el7.x86_64.gz  efi                           initramfs-3.10.0-693.el7.x86_64.img                      System.map-3.10.0-693.el7.x86_64  grub                          initramfs-3.10.0-693.el7.x86_64kdump.img                 vmlinuz-0-rescue-ba010ae4b2944c52b216ec6259f230c0  grub2                         initrd-plymouth.img                                      vmlinuz-3.10.0-693.el7.x86_64    /boot/efi:  EFI    /boot/efi/EFI:  centos    //太长省略不写,一般没有人"ls -R /"这么写,这里纯粹写着玩的,看一下效果。  
  • 颜色对应的文件类型

黑色:数据文件
蓝色:目录(文件夹)
天蓝色:软链接文件(快捷方式)
绿色:可执行文件
红色:压缩包

若是用不同的远程终端连接可能颜色会有所差别,这里以图形化安装后的终端显示颜色为准。

  • 匹配符号

?:匹配一个字符
*:匹配多个字符

[root@localhost test]# ls  temp1.txt  temp2.txt  test1.txt  test2.txt  [root@localhost test]# ls test?.txt  test1.txt  test2.txt  [root@localhost test]# ls t*  temp1.txt  temp2.txt  test1.txt  test2.txt  

alias

  • 给命令起一个别名,常用于简化操作。
[root@localhost ~]# alias  alias cp='cp -i'  alias egrep='egrep --color=auto'  alias fgrep='fgrep --color=auto'  alias grep='grep --color=auto'  alias l.='ls -d .* --color=auto'  alias ll='ls -l --color=auto'  alias ls='ls --color=auto'  alias mv='mv -i'  alias rm='rm -i'  alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'  
[root@localhost ~]# alias lh='ls -lh --color=auto'  [root@localhost ~]# lh  total 4.0K  -rw-------. 1 root root 1.3K Aug 16 17:16 anaconda-ks.cfg  

du

  • 统计目录及文件空间占用情况

-a:统计所有的文件
-h:友好显示,默认单位KB
-s:统计总大小

[root@localhost ~]# du -ah /root/  4.0K    /root/.bash_logout  4.0K    /root/.bash_profile  4.0K    /root/.bashrc  4.0K    /root/.cshrc  4.0K    /root/.tcshrc  4.0K    /root/anaconda-ks.cfg  24K     /root/  [root@localhost ~]# du -sh /root/  24K     /root/  

mkdir

  • 创建新的目录

-p:嵌套创建多层目录

[root@localhost ~]# mkdir test1  [root@localhost ~]# ls  anaconda-ks.cfg  test1  [root@localhost ~]# mkdir test2 test3  [root@localhost ~]# ls  anaconda-ks.cfg  test1  test2  test3  [root@localhost ~]# mkdir -p test4/test5  [root@localhost ~]# ls  anaconda-ks.cfg  test1  test2  test3  test4  [root@localhost ~]# ls test4/  test5  

touch

  • 创建空文件或修改时间标记
[root@localhost ~]# touch test.txt  [root@localhost ~]# ll  total 4  -rw-------. 1 root root 1241 Aug 16 17:16 anaconda-ks.cfg  -rw-r--r--. 1 root root    0 Aug 16 18:33 test.txt  [root@localhost ~]# touch test1.txt test2.txt  [root@localhost ~]# ll  total 4  -rw-------. 1 root root 1241 Aug 16 17:16 anaconda-ks.cfg  -rw-r--r--. 1 root root    0 Aug 16 18:33 test1.txt  -rw-r--r--. 1 root root    0 Aug 16 18:33 test2.txt  -rw-r--r--. 1 root root    0 Aug 16 18:33 test.txt  [root@localhost ~]# touch test.txt  [root@localhost ~]# ll  total 4  -rw-------. 1 root root 1241 Aug 16 17:16 anaconda-ks.cfg  -rw-r--r--. 1 root root    0 Aug 16 18:33 test1.txt  -rw-r--r--. 1 root root    0 Aug 16 18:33 test2.txt  -rw-r--r--. 1 root root    0 Aug 16 18:34 test.txt  

cp

  • 复制文件或目录

-f:覆盖目标同名文件或目录时不提醒,强制复制。
-i:覆盖目标同名文件或目录时提醒确认。
-p:复制时保留源文件权限、属主及时间标记等属性不变。
-r:复制目录时必须使用,递归复制所有文件及子目录。

[root@localhost ~]# mkdir test1 test2  [root@localhost ~]# touch temp.txt  [root@localhost ~]# ll  total 4  -rw-------. 1 root root 1241 Aug 16 17:16 anaconda-ks.cfg  -rw-r--r--. 1 root root    0 Aug 17 10:24 temp.txt  drwxr-xr-x. 2 root root    6 Aug 17 10:24 test1  drwxr-xr-x. 2 root root    6 Aug 17 10:24 test2  
[root@localhost ~]# cp temp.txt test1/  [root@localhost ~]# ll test1/temp.txt  -rw-r--r--. 1 root root 0 Aug 17 10:26 test1/temp.txt  [root@localhost ~]# cp -f temp.txt test1/  cp: overwrite ‘test1/temp.txt’? y  [root@localhost ~]# ll test1/temp.txt  -rw-r--r--. 1 root root 0 Aug 17 10:30 test1/temp.txt  [root@localhost ~]# cp -p temp.txt test1/  cp: overwrite ‘test1/temp.txt’? y  [root@localhost ~]# ll test1/temp.txt  -rw-r--r--. 1 root root 0 Aug 17 10:24 test1/temp.txt  [root@localhost ~]# cp -r test2/ test1/  [root@localhost ~]# ll test1/  total 0  -rw-r--r--. 1 root root 0 Aug 17 10:24 temp.txt  drwxr-xr-x. 2 root root 6 Aug 17 10:33 test2  

参数-i默认是加上的,可在别名中查看,所以即使加上-f也不能强制覆盖。

  • 加反斜杠cp执行cp命令时不走alias
[root@localhost ~]# cp -f temp.txt test1/  [root@localhost ~]# ll test1/temp.txt  -rw-r--r--. 1 root root 0 Aug 17 10:39 test1/temp.txt  

rm

  • 删除文件或目录

-f:删除时不提醒,强制删除。
-i:删除时提醒确认。
-r:删除目录时必须使用,递归删除整个目录树。

[root@localhost ~]# rm temp.txt  rm: remove regular empty file ‘temp.txt’? y  [root@localhost ~]# rm -rf test*  [root@localhost ~]# ls  anaconda-ks.cfg  

参数-i默认是加上的,可在别名中查看。还有就是谨慎使用rm -rf


mv

  • 移动文件或目录、改名
[root@localhost ~]# mkdir test  [root@localhost ~]# touch test1.txt  [root@localhost ~]# ls  anaconda-ks.cfg  test  test1.txt  [root@localhost ~]# mv test1.txt test  [root@localhost ~]# cd test/  [root@localhost test]# ls  test1.txt  [root@localhost test]# mv test1.txt test2.txt  [root@localhost test]# ls  test2.txt  

which

  • 查找用户所执行的命令文件存放的目录,搜索范围由PATH决定。
[root@localhost ~]# echo $PATH  /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin  [root@localhost ~]# which ls  alias ls='ls --color=auto'          /usr/bin/ls  

find

  • 查找文件或目录

find [查找范围] [查找条件表达式]

-name:按名称查,可使用*?通配符。
-size:按大小查,大于用+,小于用-,单位有kBk小写)、MBGB
-user:按属主查。
-type:按类型查,f普通文件、d目录、b块设备文件、c字符设备文件。块设备指成块读取数据的设备(硬盘、内存等),字符设备指按单个字符读取数据的设备(键盘、鼠标等)。

  • 同时使用多个查找条件时,使用逻辑运算符,-a表示and,要同时满足,-o表示or,满足一个即可。
[root@localhost ~]# find /boot/ -name "vmlinuz*" -a -size +1024k  /boot/vmlinuz-3.10.0-693.el7.x86_64  /boot/vmlinuz-0-rescue-ba010ae4b2944c52b216ec6259f230c0  [root@localhost ~]# find /boot/ -name "vmlinuz*" -o -size +10M  /boot/vmlinuz-3.10.0-693.el7.x86_64  /boot/initramfs-0-rescue-ba010ae4b2944c52b216ec6259f230c0.img  /boot/vmlinuz-0-rescue-ba010ae4b2944c52b216ec6259f230c0  /boot/initramfs-3.10.0-693.el7.x86_64.img  /boot/initramfs-3.10.0-693.el7.x86_64kdump.img  

cat

  • 显示并连接文件的内容
[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33  TYPE="Ethernet"  PROXY_METHOD="none"  BROWSER_ONLY="no"  BOOTPROTO="dhcp"  DEFROUTE="yes"  IPV4_FAILURE_FATAL="no"  IPV6INIT="yes"  IPV6_AUTOCONF="yes"  IPV6_DEFROUTE="yes"  IPV6_FAILURE_FATAL="no"  IPV6_ADDR_GEN_MODE="stable-privacy"  NAME="ens33"  UU  DEVICE="ens33"  ONBOOT="yes"  
[root@localhost ~]# cat /etc/redhat-release /proc/version  CentOS Linux release 7.4.1708 (Core)  Linux version 3.10.0-693.el7.x86_64 ([email protected]) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC) ) #1 SMP Tue Aug 22 21:09:27 UTC 2017  

more

  • 分页查看文件的内容,左下角显示百分比(看到最后会自动退出)

Enter:下一行
空格:下一页
b:上一页
q:退出

[root@localhost ~]# yum install httpd -y  [root@localhost ~]# more /etc/httpd/conf/httpd.conf  #  # This is the main Apache HTTP server configuration file.  It contains the  # configuration directives that give the server its instructions.  //省略  

less

  • 类似more,但功能更多,左下角显示文件名(看到最后不会退出)

Enter:下一行
空格、Page Down:下一页
b、Page Up:上一页
q:退出
/:查找/后面跟的内容
n:查找下一个
N:查找上一个

[root@localhost ~]# less /etc/httpd/conf/httpd.conf  

head

  • 查看开头部分内容,默认10行。

-n:显示n

[root@localhost ~]# head -2 /etc/passwd  root:x:0:0:root:/root:/bin/bash  bin:x:1:1:bin:/bin:/sbin/nologin  

tail

  • 查看末尾部分内容,默认10行。

-n:显示n
-f:跟踪尾部内容的动态更新,一般用来监控日志。

[root@localhost ~]# tail -2 /etc/passwd  chrony:x:998:996::/var/lib/chrony:/sbin/nologin  apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin  

wc

  • 默认统计文件内容中行数、单词个数、字节大小信息

-l:统计行数
-w:统计单词数
-c:统计字节数

[root@localhost ~]# wc /etc/hosts    2  10 158 /etc/hosts  [root@localhost ~]# wc -l /etc/hosts  2 /etc/hosts  [root@localhost ~]# wc -w /etc/hosts  10 /etc/hosts  [root@localhost ~]# wc -c /etc/hosts  158 /etc/hosts  
[root@localhost ~]# find /etc/ -name "*.conf" | wc -l  102  

grep

  • 检索、过滤文件内容

-i:忽略大小写
-v:反转查找
^..:表示以..为开头
..$:表示以..为结尾
^$:表示空行

[root@localhost ~]# grep "bin/bash" /etc/passwd  root:x:0:0:root:/root:/bin/bash  
[root@localhost ~]# grep -v "#" 文件 | grep -v "^$"  [root@localhost ~]# cat 文件 | grep -v "#" | grep -v "^$"  

gzip & gunzip

  • gzip:压缩、解压缩格式为.gz压缩包
  • 不保留源文件

-9:提高压缩的比率
-d:解压

[root@localhost ~]# ls -lh  total 16K  -rw-------. 1 root root 1.3K Aug 16 17:16 anaconda-ks.cfg  -rw-r--r--. 1 root root  12K Aug 17 13:37 test.txt  
[root@localhost ~]# gzip test.txt  [root@localhost ~]# ls -lh  total 12K  -rw-------. 1 root root 1.3K Aug 16 17:16 anaconda-ks.cfg  -rw-r--r--. 1 root root 4.5K Aug 17 13:37 test.txt.gz  [root@localhost ~]# gzip -d test.txt.gz  [root@localhost ~]# ls -lh  total 16K  -rw-------. 1 root root 1.3K Aug 16 17:16 anaconda-ks.cfg  -rw-r--r--. 1 root root  12K Aug 17 13:37 test.txt  
  • gunzip:解压缩格式为.gz压缩包,和gzip -d一样。

bzip2 & bunzip2

  • bzip2:压缩、解压缩格式为.bz2压缩包,类似gzip,但压缩效率比gzip好。
  • 不保留源文件
[root@localhost ~]# bzip2 test.txt  [root@localhost ~]# ls -lh  total 12K  -rw-------. 1 root root 1.3K Aug 16 17:16 anaconda-ks.cfg  -rw-r--r--. 1 root root 4.3K Aug 17 13:37 test.txt.bz2  [root@localhost ~]# bzip2 -d test.txt.bz2  [root@localhost ~]# ls -lh  total 16K  -rw-------. 1 root root 1.3K Aug 16 17:16 anaconda-ks.cfg  -rw-r--r--. 1 root root  12K Aug 17 13:37 test.txt  
  • bunzip2:解压缩格式为.bz2压缩包,和bzip2 -d一样。

tar

  • 归档和释放工具
  • 保留源文件

-z:调用gzip程序进行压缩或解压。
-j:调用bzip2程序进行压缩或解压。
-c:创建.tar格式的包文件。
-x:解开.tar格式的包文件。
-v:输出详细信息。
-f:表示使用归档文件。
-C:解压时指定释放的目标文件夹。
-t:列表查看包内的文件。
-p:打包时保留文件及目录权限。
-P:打包时保留文件及目录的绝对路径。

[root@localhost ~]# mkdir test  [root@localhost ~]# cd test/  [root@localhost test]# touch test1.txt test2.txt test3.txt  [root@localhost test]# ls  test1.txt  test2.txt  test3.txt  
[root@localhost ~]# tar -zcvf test.tar.gz test/  test/  test/test1.txt  test/test2.txt  test/test3.txt  [root@localhost ~]# ls  anaconda-ks.cfg  test  test.tar.gz  [root@localhost ~]# tar -zxvf test.tar.gz -C /opt/  test/  test/test1.txt  test/test2.txt  test/test3.txt  [root@localhost ~]# ls -R /opt/  /opt/:  test    /opt/test:  test1.txt  test2.txt  test3.txt  
[root@localhost ~]# tar -jcvf test.tar.bz2 test/  test/  test/test1.txt  test/test2.txt  test/test3.txt  [root@localhost ~]# ls  anaconda-ks.cfg  test  test.tar.bz2  [root@localhost ~]# tar -jxvf test.tar.bz2 -C /opt/  test/  test/test1.txt  test/test2.txt  test/test3.txt  [root@localhost ~]# ls -R /opt/  /opt/:  test    /opt/test:  test1.txt  test2.txt  test3.txt  

echo

>:重定向(会覆盖)
>>:追加(不会覆盖)

[root@localhost ~]# echo "this is test file1" > test.txt  [root@localhost ~]# cat test.txt  this is test file1  [root@localhost ~]# echo "this is test file2" > test.txt  [root@localhost ~]# cat test.txt  this is test file2  [root@localhost ~]# echo "this is test file3" >> test.txt  [root@localhost ~]# cat test.txt  this is test file2  this is test file3  

ln

  • 在文件之间建立连接

-s:创建软链接(快捷方式)

  • ls -i:查看文件节点序列号
[root@localhost ~]# ls -i test.txt  33574994 test.txt  
[root@localhost ~]# ll  total 16  -rw-------. 1 root root  1241 Aug 16 17:16 anaconda-ks.cfg  -rw-r--r--. 1 root root 11753 Aug 17 13:37 test.txt  
  • 创建软链接(快捷方式,源文件删除影响访问)
[root@localhost ~]# ln -s test.txt stest.txt  [root@localhost ~]# ll  total 16  -rw-------. 1 root root  1241 Aug 16 17:16 anaconda-ks.cfg  lrwxrwxrwx. 1 root root     8 Aug 17 13:52 stest.txt -> test.txt  -rw-r--r--. 1 root root 11753 Aug 17 13:37 test.txt  
  • 创建硬链接(创建别名,源文件删除不影响访问)
[root@localhost ~]# ln test.txt htest.txt  [root@localhost ~]# ll  total 28  -rw-------. 1 root root  1241 Aug 16 17:16 anaconda-ks.cfg  -rw-r--r--. 2 root root 11753 Aug 17 13:37 htest.txt  lrwxrwxrwx. 1 root root     8 Aug 17 13:52 stest.txt -> test.txt  -rw-r--r--. 2 root root 11753 Aug 17 13:37 test.txt  

history

-c:清除历史记录

[root@localhost ~]# history      1  ls      2  ls -l      3  history  [root@localhost ~]# history -c  [root@localhost ~]# history      1  history  

vi & vim

  • 很重要,内容较多,单独写了一篇,点此查看详情。

最后

还是那句话,linux命令数量繁多,具体选项也各不相同,不可能全部记住,学会使用帮助手册可以大大提升效率。

本站所发布的一切资源仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如果侵犯你的利益,请发送邮箱到 [email protected],我们会很快的为您处理。
超哥软件库 » Linux 目录和文件的操作