ck1987 发表于 2018-5-19 08:05:07

linux Cp .md

  # Linux Ls命令
  
  **Ls命令**是linux下最常用的命令。ls命令就是list的缩写缺省下ls用来打印出当前目录的清单如果ls指定其他目录那么就会显示指定目录里的文件及文件夹清单。
  通过ls命令不仅可以查看linux文件夹包含的文件而且可以查看文件权限(包括目录、文件夹、文件权限)查看目录信息等等。
  ## 命令语法
  >ls(选项)(参数)
  

  ## 选项
  - `-a:`显示所有档案及目录(ls内定将档案名或目录名称为“.”的视为影藏,不会列出);
  - `-A:`显示除影藏文件“.”和“..”以外的所有文件列表;
  - `-C:`多列显示输出结果。这是默认选项;
  - `-l:`与“-C”选项功能相反,所有输出信息用单列格式输出,不输出为多列;
  - `-F:`在每个输出项后追加文件的类型标识符; `具体含义:“*”表示具有可执行权限的普通文件,“/”表示目录,“@”表示符号链接,“|”表示命令管道FIFO,“=”表示sockets套接字。当文件为普通文件时,不输出任何标识符;`
  - `-b:`将文件中的不可输出的字符以反斜线“”加字符编码的方式输出;
  - `-c:`与“-lt”选项连用时,按照文件状态时间排序输出目录内容,排序的依据是文件的索引节点中的ctime字段。与“-l”选项连用时,则排序的一句是文件的状态改变时间;
  - `-d:`仅显示目录名,而不显示目录下的内容列表。显示符号链接文件本身,而不显示其所指向的目录列表;
  - `-f:`此参数的效果和同时指定“aU”参数相同,并关闭“lst”参数的效果;
  - `-i:`显示文件索引节点号(inode)。一个索引节点代表一个文件;
  - `--file-type:`与“-F”选项的功能相同,但是不显示“*”;
  - `-k:`以KB(千字节)为单位显示文件大小;
  - `-l:`以长格式显示目录下的内容列表。输出的信息从左到右依次包括文件名,文件类型、权限模式、硬连接数、所有者、组、文件大小和文件的最后修改时间等;
  - `-m:`用“,”号区隔每个文件和目录的名称;
  - `-n:`以用户识别码和群组识别码替代其名称;
  - `-r:`以文件名反序排列并输出目录内容列表;
  - `-s:`显示文件和目录的大小,以区块为单位;
  - `-t:`用文件和目录的更改时间排序;
  - `-L:`如果遇到性质为符号链接的文件或目录,直接列出该链接所指向的原始文件或目录;
  - `-R:`递归处理,将指定目录下的所有文件及子目录一并处理;
  - `--full-time:`列出完整的日期与时间;
  - `--color[=WHEN]:`使用不同的颜色高亮显示不同类型的。
  ## 参数
  >目录:指定要显示列表的目录,也可以是具体的文件。
  

  ## 实例
  ### 1. 显示当前目录下的文件和目录(隐藏文件除外)。
  #### ls
  ```css
  # ls
  ssh_host_ecdsa_key.pubssh_host_ed25519_key.pub ssh_host_rsa_key.pub
  ```
  说明:不带参数运行ls会只列出文件或者目录,看不到其他信息输出。
  ### 2. 显示当前目录下包括影藏文件在内的所有文件列表
  #### ls -a
  ```css
  # ls -a
  .            .bash_logout   .cshrc                  ssh_host_rsa_key.pub
  ..             .bash_profilessh_host_ecdsa_key.pub    .tcshrc
  .bash_history.bashrc      ssh_host_ed25519_key.pub
  ```
  ### 3. 输出长格式列表
  #### ls -l
  ```css
  # ls -l
  总用量 12
  -rw-r--r--. 1 root root 162 7月29 14:37 ssh_host_ecdsa_key.pub
  -rw-r--r--. 1 root root82 7月29 14:37 ssh_host_ed25519_key.pub
  -rw-r--r--. 1 root root 382 7月29 14:37 ssh_host_rsa_key.pub
  ```
  这里是如何读取输出 :
  - **第1列** 第一个字母**d**意味着内容是目录或者文件。如果是'-'(**减号**),这意味着它的内容是文件。当它是l(**小写l字符**),意味这内容是链接文件。下面的9个字符是关于文件权限。**前3个rwx**字符是文件的拥有者的权限,**第二组3rwx**是文件的所有组的权限,**最后的rwx**是对其他人访问文件的权限。
  - **第2列** 这行告诉我们有多少链接指向这个文件。
  - **第3列** 这行告诉我们谁是这个文件/文件夹的所有者。
  - **第4列** 这行告诉我们谁是这个文件/文件夹的所有组。
  - **第5列** 这行告诉我们这个文件/文件夹的以字节为单位的大小。 目录的大小总是4096字节。
  - **第6列** 这告诉我们文件最后的修改时间。
  - **第7列** 这告诉我们文件名或者目录名
  ### 4. 显示文件大小
  #### ls -lh
  ```css
  # ls -l
  总用量 4
  -rw-r-----. 1 root root 1786 7月29 16:11 sudo.conf
  # ls -lh
  总用量 4.0K
  -rw-r-----. 1 root root 1.8K 7月29 16:11 sudo.conf
  # ls -l --si
  总用量 4.1k
  -rw-r-----. 1 root root 1.8k 7月29 16:11 sudo.conf
  ```
  说明:参数是**--si**。这个参数和-h参数类似,但是**-si以1000为单位,而-h以1024为单位**。
  ### 5. 排序文件大小
  #### ls /etc/ -lhS
  ```css
  # ls /etc/ -lhS
  总用量 1.2M
  -rw-r--r--.1 root root 655K 6月   7 2013 services
  -rw-r--r--.1 root root25K 8月   6 2015 dnsmasq.conf
  -rw-r--r--.1 root root18K 7月25 16:11 ld.so.cache
  -rw-r--r--.1 root root12K 7月25 16:11 aliases.db
  -rw-r--r--.1 root root 7.0K 7月25 16:03 kdump.conf
  -rw-------.1 tsstss6.9K 11月 21 2015 tcsd.conf
  ```
  说明:在我们可以显示文件大小之后,我们希望以文件大小排序。我们可以使用-S参数来这么做。这列表会从大到小排序。
  ### 6. 测量大小
  ls可以通过使用**-block-size=SIZE**改单位大小。这里的SIZE是:
  >- M = MegabyteG = GigabyteT = Terabyte P = Petabyte E = Exabyte Z = Zettabyte Y = Yottabyte
  

  比如,我们希望使用MB作为单位大小。所以语法就会像这样:
  #### ls /etc/ -lhS --block-size=M
  ```css
  # ls /etc/ -lhS --block-size=M
  总用量 2M
  -rw-r--r--.1 root root 1M 6月   7 2013 services
  -rw-r--r--.1 root root 1M 8月   6 2015 dnsmasq.conf
  -rw-r--r--.1 root root 1M 7月25 16:11 ld.so.cache
  -rw-r--r--.1 root root 1M 7月25 16:11 aliases.db
  -rw-r--r--.1 root root 1M 7月25 16:03 kdump.conf
  -rw-------.1 tsstss1M 11月 21 2015 tcsd.conf
  ```
  ### 7. 如果我们希望只列出目录,我们可以使用**-d**选项。
  #### ls -d */
  ```css
  # ls -d */
  test/test1/
  ```
  ### 8. 不打印所有者信息、 不打印组信息
  #### $ ls -g ls -G
  ```css
  # ls -lg
  总用量 4
  -rw-r-----. 1 root 1786 7月29 16:11 sudo.conf
  drwxr-xr-x. 2 root    6 7月29 16:34 test
  drwxr-xr-x. 2 root    6 7月29 16:34 test1
  # ls -lG
  总用量 4
  -rw-r-----. 1 MLibra 1786 7月29 16:11 sudo.conf
  drwxr-xr-x. 2 root      6 7月29 16:34 test
  drwxr-xr-x. 2 root      6 7月29 16:34 test1
  ```
  ### 9. 打印UID和GID
  #### $ ls -n
  ```css
  # ls -ln
  总用量 4
  -rw-r-----. 1 1000 0 1786 7月29 16:11 sudo.conf
  drwxr-xr-x. 2    0 0    6 7月29 16:34 test
  drwxr-xr-x. 2    0 0    6 7月29 16:34 test1
  ```
  ### 10. 不带颜色打印
  #### $ ls --color=never
  一些Linux发行版已经对ls命令启用彩色。这会使ls以各种颜色打印列表。如果你不想要这样,你可以使用 **--color=never** 参数。
  ```css
  # ll --color=never
  总用量 4
  -rw-r-----. 1 MLibra root 1786 7月29 16:11 sudo.conf
  drwxr-xr-x. 2 root   root    6 7月29 16:34 test
  drwxr-xr-x. 2 root   root    6 7月29 16:34 test1
  ```
  ### 11. 打印每个文件的索引号
  #### $ ls -li
  为了打印索引或者大家俗称的inode号,我们可以使用-i选项。索引号会显示在第一列。
  ```css
  # ll -i
  总用量 4
  67370528 -rw-r-----. 1 MLibra root 1786 7月29 16:11 sudo.conf
  101428631 drwxr-xr-x. 2 root   root    6 7月29 16:34 test
  10579 drwxr-xr-x. 2 root   root    6 7月29 16:34 test1
  ```
  ### 12. 增加 / (斜线) 标记目录
  #### $ ls -p
  要这么做,使用**-p选项**。
  ```css
  # ll -p
  总用量 4
  -rw-r-----. 1 MLibra root 1786 7月29 16:11 sudo.conf
  drwxr-xr-x. 2 root   root    6 7月29 16:34 test/
  drwxr-xr-x. 2 root   root    6 7月29 16:34 test1/
  ```
  ### 12. 排序时反转顺序
  #### $ ls -r
  你或许需要在列出条目时反转顺序。要这么做,你可以使用**-r**选项。
  ```css
  # ll -r
  总用量 4
  drwxr-xr-x. 2 root   root    6 7月29 16:34 test1
  drwxr-xr-x. 2 root   root    6 7月29 16:34 test
  -rw-r-----. 1 MLibra root 1786 7月29 16:11 sudo.conf
  ```
  ### 13. 递归列出子目录
  #### $ ls -R
  带**-R**参数后,你可以列出包含它子目录的目录。
  ```css
  # ll -R
  .:
  总用量 4
  -rw-r-----. 1 MLibra root 1786 7月29 16:11 sudo.conf
  drwxr-xr-x. 3 root   root   17 7月29 16:57 test
  drwxr-xr-x. 2 root   root    6 7月29 16:34 test1
  ./test:
  总用量 0
  drwxr-xr-x. 2 root root 6 7月29 16:57 test
  ./test/test:
  总用量 0
  ./test1:
  总用量 0
  ```
  ### 15. 扩展名排序
  #### $ ls -lX**或** $ ls --sort=extension
  你可以使用-X参数或者--sort=extension来通过扩展名来排序(译注:这样对于筛选不同类型的文件很有用)。
  ```css
  # ls -lX
  总用量 4
  drwxr-xr-x. 3 root   root   17 7月29 16:57 test
  drwxr-xr-x. 2 root   root    6 7月29 16:34 test1
  -rw-r-----. 1 MLibra root 1786 7月29 16:11 sudo.conf
  ```
  #### 16. 通过修改时间列出
  #### $ ls -lt
  使用-t选项会按修改时间排序,新的文件在前。
  ```css
  # ls -lt
  总用量 4
  drwxr-xr-x. 3 root   root   17 7月29 16:57 test
  drwxr-xr-x. 2 root   root    6 7月29 16:34 test1
  -rw-r-----. 1 MLibra root 1786 7月29 16:11 sudo.conf
  ```
  ### 17. 列出你的主目录
  #### $ ls ~
  要列出你的主目录,你可以用"~"(**波浪号**)来代表它。这样你就不必输入完整的目录名。让我们假设家文件名为**/home/pungki**,那么**波浪号**就对/home/pungki有意义了。
  ```css
  # ls ~
  sudo.conftesttest1
  ```
  ### 18. 列出父目录
  #### $ ls ../ 这回列出**1**层之上的目录内容。
  无论你在那个目录,你可以列出父目录而不必输入完整路径。这是个例子。
  #### $ ls ../../ 这回列出**2**层之上的目录内容。
  ### 19. 打印ls命令版本
  #### $ ls --version
  使用--version参数打印它。
  ```css
  # ls --version
  ls (GNU coreutils) 8.22
  Copyright (C) 2013 Free Software Foundation, Inc.
  许可证:GPLv3+:GNU 通用公共许可证第3 版或更新版本
  。本软件是自由软件:您可以自由修改和重新发布它。
  在法律范围内没有其他保证。
  由Richard M. Stallman 和David MacKenzie 编写。
  ```
  ### 20. 单独行列举文件。
  #### ls -1
  ```css
  # ls -1
  sudo.conf
  test
  test1
  ```
  ### 其他
  #### 列出当前目录中所有以“t”开头的目录的详细内容,可以使用如下命令:
  `命令:ls -l t*`
  #### /opt/soft 文件下面的子目录
  `命令:ls -F /opt/soft |grep /$`
  #### 列出 /opt/soft 文件下面的子目录详细情况
  `**命令**:ls -l /opt/soft | grep "^d"`
  #### 列出目前工作目录下所有名称是s 开头的档案,愈新的排愈后面,可以使用如下命令:
  `命令:ls -ltr s*`
  #### 列出目前工作目录下所有档案及目录;目录于名称后加"/", 可执行档于名称后加"*" **
  `**命令**:ls -AF`
  #### 计算当前目录下的文件数和目录数
  `ls -l * |grep "^-"|wc -l ---文件个数`
  `ls -l * |grep "^d"|wc -l    ---目录个数`
  ####在ls中列出文件的绝对路径
  `命令:ls | sed "s:^:`pwd`/:"`
  #### 列出当前目录下的所有文件(包括隐藏文件)的绝对路径, 对目录不做递归
  `命令:find $PWD -maxdepth 1 | xargs ls -ld`
  #### 递归列出当前目录下的所有文件(包括隐藏文件)的绝对路径
  `命令: find $PWD | xargs ls -ld`
  #### 指定文件时间输出格式
  `命令:ls -tl --time-style=full-iso`
  `ls -ctl --time-style=long-iso`
  #### 列出/etc/目录下以字母a开头且以字母e结尾的目录和文件。
  `ls /etc/a*e`
  #### 列出/bin/目录下以字母b开头的目录和文件,且目录名或文件名的长度为2.
  `ls /bin/l?`
  #### 分屏显示
  `ls |more`
  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  
页: [1]
查看完整版本: linux Cp .md