1. 启动 shell

/etc/passwd 文件包含了所有系统用户账户列表以及每个用户的基本配置信息:

christine:x:501:501:Christine Bresnahan:/home/christine:/bin/bash

其中 /bin/bash 该字段指定了用户使用的 shell 程序。在前面的 /etc/passwd 样例条目中,用户 christine 使用 /bin/bash 作为自己的默认 shell 程序。这意味着当 christine 登录 Linux 系统后,bash shell会自动启动。

man 命令:

当使用 man 命令查看命令手册页的时候,这些手册页是由分页程序(pager)来显示的。可以通过点击空格键进行翻页,或是使用回车键逐行查看。另外还可以使用箭头键向前向后滚动手册页的内容,可以点击q键退出

大多数命令都可以接受 -help 或 --help 选项。

2. 文件系统

Linux 使用正斜线(/)而不是反斜线(\)在文件路径中划分目录。在 Linux 中,反斜线用来标识转义字符。

  • 绝对文件路径

    绝对文件路径总是以正斜线(/)作为起始,指明虚拟文件系统的根目录。

  • 相对文件路径

    相对文件路径允许用户指定一个基于当前位置的目标文件路径。相对文件路径不以代表根目
    录的正斜线(/)开头,而是以目录名(如果用户准备切换到当前工作目录下的一个目录)或是一个特殊字符开始。

有两个特殊字符可用于相对文件路径中:

  • 单点符(.),表示当前目录;
  • 双点符(…),表示当前目录的父目录;

3. 文件和目录列表

ls 命令输出的列表是按字母排序的(按列排序而不是按行排序)

-F 参数的 ls 命令轻松区分文件和目录

$ ls -F
Desktop/ Downloads/ Music/ Pictures/ Templates/ Videos/
Documents/ examples.desktop my_script* Public/ test_file
$

-F 参数在目录名后加了正斜线(/),在可执行文件(比如上面的my_script文件)的后面加个星号。在Linux上,隐藏文件通常是文件名以点号开始的文件,-a 参数可将其显示出来。

-R 参数是 ls 命令可用的另一个参数,叫作递归选项。它列出了当前目录下包含的子目录中的文件。

-l 参数会产生长列表格式的输出,默认显示的是文件修改时间

$ ls -l
total 48
drwxr-xr-x 2 christine christine 4096 Apr 22 20:37 Desktop
drwxr-xr-x 2 christine christine 4096 Apr 22 20:37 Documents
drwxr-xr-x 2 christine christine 4096 Apr 22 20:37 Downloads
-rw-r--r-- 1 christine christine 8980 Apr 22 13:36 examples.desktop
...

每一行都包含了关于文件(或目录)的下述信息:
 文件类型,比如目录(d)、文件(-)、字符型文件(c)或块设备(b);
 文件的权限;
 文件的硬链接总数;
 文件属主的用户名;
 文件属组的组名;
 文件的大小(以字节为单位);
 文件的上次修改时间;
 文件名或目录名。

当用户指定特定文件的名称作为过滤器时,ls 命令只会显示该文件的信息。

$ ls -l my_script
-rwxrw-r-- 1 christine christine 54 May 21 11:26 my_script
$

ls 命令能够识别标准通配符,并在过滤器中用它们进行模式匹配:

  • 问号(?)代表一个字符;
  • 星号(*)代表零个或多个字符;
  • 中括号([ ])表示一个字符位置并给出多个可能的选择;
  • 感叹号 (!) 表示将将不需要的内容排除在外;
$ ls -l my_s*t
-rw-rw-r-- 1 christine christine 0 May 21 13:25 my_scrapt
-rwxrw-r-- 1 christine christine 54 May 21 11:26 my_script
$
$ ls -l my_scr[ai]pt
-rw-rw-r-- 1 christine christine 0 May 21 13:25 my_scrapt
-rwxrw-r-- 1 christine christine 54 May 21 11:26 my_script
$
$ ls -l f[a-i]ll
-rw-rw-r-- 1 christine christine 0 May 21 13:44 fall
-rw-rw-r-- 1 christine christine 0 May 21 13:44 fell
-rw-rw-r-- 1 christine christine 0 May 21 13:44 fill
$
$ ls -l f[!a]ll
-rw-rw-r-- 1 christine christine 0 May 21 13:44 fell
-rw-rw-r-- 1 christine christine 0 May 21 13:44 fill
-rw-rw-r-- 1 christine christine 0 May 21 13:44 full
$

4. 处理文件

4.1 创建文件

   touch filename

touch 命令创建了你指定的新文件,并将你的用户名作为文件的属主。注意,文件的大小是零,因为touch命令只创建了一个空文件。

4.2 复制文件

cp source destination

当 source 和 destination 参数都是文件名时,cp 命令将源文件复制成一个新文件,并且以destination 命名。新文件就像全新的文件一样,有新的修改时间。destination 可以为目录。

cp 命令的 -R 参数威力强大。可以用它在一条命令中递归地复制整个目录的内容。

   $ ls -Fd *ScriptsScripts/$ ls -l Scripts/total 25-rwxrw-r-- 1 christine christine 929 Apr 2 08:23 file_mod.sh-rwxrw-r-- 1 christine christine 254 Jan 2 14:18 SGID_search.sh-rwxrw-r-- 1 christine christine 243 Jan 2 13:42 SUID_search.sh$$ cp -R Scripts/ Mod_Scripts$ ls -Fd *ScriptsMod_Scripts/ Scripts/$ ls -l Mod_Scriptstotal 25-rwxrw-r-- 1 christine christine 929 May 21 16:16 file_mod.sh-rwxrw-r-- 1 christine christine 254 May 21 16:16 SGID_search.sh-rwxrw-r-- 1 christine christine 243 May 21 16:16 SUID_search.sh$

在执行 cp –R 命令之前,目录 Mod_Scripts 并不存在。它是随着 cp –R 命令被创建的,整个Scripts 目录中的内容都被复制到其中。注意,在新的 Mod_Scripts 目录中,所有的文件都有对应的新日期。Mod_Scripts 目录现在已经成为了 Scripts 目录的完整副本。

ls -d 只列出目录本身的信息,不列出其中的内容。

 $ ls -Fd public/
public//$ ls -F public/
2018/      baidusitemap.xml  css/         index.html  search.xml
archives/  categories/       favicon.ico  js/         sitemap.xml
atom.xml   CNAME             fonts/       page/       tags/

4.3 链接文件

如需要在系统上维护同一文件的两份或多份副本,除了保存多份单独的物理文件副本之外,还可以采用保存一份物理文件副本和多个虚拟副本的方法。这种虚拟的副本就称为链接。链接是目录中指向文件真实位置的占位符。

在Linux中有两种不同类型的文件链接:

  • 符号链接-软链接

    符号链接就是一个实实在在的文件,它指向存放在虚拟目录结构中某个地方的另一个文件。这两个通过符号链接在一起的文件,彼此的内容并不相同

    要为一个文件创建符号链接,原始文件必须事先存在。然后可以使用ln命令以及**-s选项**来创建符号链接。

    $ ls -l data_file
    -rw-rw-r-- 1 christine christine 1092 May 21 17:27 data_file
    $
    $ ln -s data_file sl_data_file
    $
    $ ls -l *data_file
    -rw-rw-r-- 1 christine christine 1092 May 21 17:27 data_file
    lrwxrwxrwx 1 christine christine 9 May 21 17:29 sl_data_file -> data_file
    $
    

    在上面的例子中,注意符号链接的名字sl_data_file位于ln命令中的第二个参数位置上。显示在长列表中符号文件名后的->符号表明该文件是链接到文件data_file上的一个符号链接。

    符号链接sl_data_file只有9个字节,而data_file有1092个字节。这是因为sl_data_file仅仅只是指向data_file而已。它们的内容并不相同,是两个完全不同的文件。

    另一种证明链接文件是独立文件的方法是查看 inode 编号。文件或目录的inode编号是一个用于标识的唯一数字,这个数字由内核分配给文件系统中的每一个对象。要查看文件或目录的inode编号,可以给ls命令加入-i参数。

    $ ls -i *data_file
    296890 data_file 296891 sl_data_file
    $
    

  • 硬链接

    硬链接会创建独立的虚拟文件,其中包含了原始文件的信息及位置。但是它们从根本上而言是同一个文件引用硬链接文件等同于引用了源文件。要创建硬链接,原始文件也必须事先存在,只不过这次使用 ln 命令时不再需要加入额外的参数了。

    $ ls -l code_file
    -rw-rw-r-- 1 christine christine 189 May 21 17:56 code_file
    $
    $ ln code_file hl_code_file
    $
    $ ls -li *code_file
    296892 -rw-rw-r-- 2 christine christine 189 May 21 17:56
    code_file
    296892 -rw-rw-r-- 2 christine christine 189 May 21 17:56
    hl_code_file
    $
    

    带有硬链接的文件共享inode编号。这是因为它们终归是同一个文件。还要注意的是,链接计数(列表中第三项)显示这两个文件都有两个链接。另外,它们的文件大小也一模一样。

4.4 重命名文件

在Linux中,重命名文件称为移动(moving),mv命令可以将文件和目录移动到另一个位置或重新命名。

a. 可以使用mv来移动文件的位置;

b. 可以使用mv命令移动文件位置并修改文件名称;

c. 可以使用mv命令移动整个目录及其内容;

在使用 mv 的过程中,文件的时间戳和inode编号都没有改变。改变的只有位置和名称。

4.5 删除文件

bash shell中删除文件的命令是rm,-i命令参数提示你是不是要真的删除该文件。bash shell中没有回收站或垃圾箱,文件一旦删除,就无法再找回

$ rm -i fall
rm: remove regular empty file 'fall'? y
$

rm命令的另外一个特性是,如果要删除很多文件且不受提示符的打扰,可以用**-f参数强制删除。**

5. 处理目录

5.1 创建目录

在Linux中创建目录很简单,用mkdir命令即可

要想同时创建多个目录和子目录,需要加入-p参数:

$ mkdir -p New_Dir/Sub_Dir/Under_Dir
$
$ ls -R New_Dir
New_Dir:
Sub_Dir
New_Dir/Sub_Dir:
Under_Dir
New_Dir/Sub_Dir/Under_Dir:
$

5.2 删除目录

默认情况下,rmdir命令只删除空目录,要删除含有整个文件的目录,可以使用:

a、可以在整个非空目录上使用rm命令。使用**-r选项**使得命令可以向下进入目录,删除其中的文件,然后再删除目录本身

b、一口气删除目录及其所有内容的终极大法就是使用带有-r参数和-f参数的rm命令

6. 查看文件

6.1 查看文件类型

file命令能够探测文件的内部,并决定文件是什么类型

$ file my_file
my_file: ASCII text

file命令不仅能确定文件中包含的文本信息,还能确定该文本文件的字符编码,ASCII。

$ file New_Dir
New_Dir: directory

可以使用file命令作为另一种区分目录的方法

$ file sl_data_file
sl_data_file: symbolic link to 'data_file'

file命令甚至能够告诉你它链接到了哪个文件上

$ file my_script
my_script: Bourne-Again shell script, ASCII text executable

file命令对脚本文件的返回结果。尽管这个文件是ASCII text,但因为它是一个脚本文件,所以可以在系统上执行(运行)

$ file /bin/ls
/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV),
dynamically linked (uses shared libs), for GNU/Linux 2.6.24,
[...]

file命令能够确定该程序编译时所面向的平台以及需要何种类型的库。

6.2 查看整个文件

cat 命令

  • -n 参数会给所有的行加上行号

    $ cat -n test1
    1 hello
    2
    3 This is a test file.
    4
    5
    6 That we'll use to test the cat command.
    
  • -b 参数只给有文本的行加上行号

    $ cat -b test1
    1 hello
    2 This is a test file.
    3 That we'll use to test the cat command.
    

more 命令

more命令会显示文本文件的内容,但会在显示每页数据之后停下来。可以通过按空格键或回车键以逐行向前的方式浏览文本文件。浏览完之后,按q键退出

less 命令

less命令的操作和more命令基本一样,一次显示一屏的文件文本。除了支持和more命令相同的命令集,它还包括更多的选项。其中一组特性就是less命令能够识别上下键以及上下翻页键(假设你的终端配置正确)。

6.3 查看部分文件

tail 命令

tail命令会显示文件最后几行的内容(文件的“尾部”)。默认情况下,它会显示文件的末尾10行。可以向tail命令中加入**-n参数来修改所显示的行数**。

$ tail -n 2 log_file
line19
Last line - line20

-f参数是tail命令的一个突出特性。它允许你在其他进程使用该文件时查看文件的内容。tail命令会保持活动状态,并不断显示添加到文件中的内容。

head 命令

head命令,会显示文件开头那些行的内容。默认情况下,它会显示文件前10行的文本:

它也支持-n参数,这样就可以指定想要显示的内容了。这两个命令都允许你在破折号后面输入想要显示的行数(即不需要 输入 -n 参数)

$ head -5 log_file
line1
line2
line3
line4
line5

Linux shell 学习笔记(1)— 文件和目录(查看、创建、复制、软硬链接、重命名及删除操作)相关推荐

  1. Linux shell 学习笔记(5)— 文件权限(添加、修改、删除用户及创建、修改群组)

    1. Linux的安全性 Linux 安全系统的核心是用户账户.每个能进入 Linux 系统的用户都会被分配唯一的用户账户.用户对系统中各种对象的访问权限取决于他们登录系统时用的账户. 用户权限是通过 ...

  2. Linux shell 学习笔记(2)— 监测程序、磁盘空间和处理文件(ps -ef、top、kill、df、du 、grep、tar)

    1. 监测程序 1.1 检查进程 默认情况下,ps 命令只会显示运行在当前控制台下的属于当前用户的进程. $ ps PID TTY TIME CMD 3081 pts/0 00:00:00 bash ...

  3. Linux shell 学习笔记(4)— linux 环境变量(全局变量、局部变量及变量持久化)

    1. 环境变量概念及分类 bash shell 用一个叫作环境变量(environment variable)的特性来存储有关 shell 会话和工作环境的信息(这也是它们被称作环境变量的原因).这项 ...

  4. Linux shell 学习笔记(11)— 理解输入和输出(标准输入、输出、错误以及临时重定向和永久重定向)

    1. 理解输入和输出 1.1 标准文件描述符 Linux 系统将每个对象当作文件处理.这包括输入和输出进程.Linux 用文件描述符(file descriptor)来标识每个文件对象.文件描述符是一 ...

  5. Linux命令学习笔记(一)目录操作

    目录操作 在桌面建立一个名为test的文件夹 clear 清除屏幕 pwd 查看当前工作目录 cd /home 进入 '/ home' 目录' cd ~ 打开当前用户目录 cd / 根目录 cd - ...

  6. 【Linux】Linux Shell 学习笔记:什么是Linux?

    I Linux 简介 Linux系统简介 (biancheng.net) Linux和UNIX的关系及区别 (biancheng.net) Linux内核_百度百科 (baidu.com) [什么是 ...

  7. Linux shell 学习笔记(6)— vim 编辑器使用方法及技巧

    1. 检查 vim 软件包 1.1 CentOS 发行版 $ alias vi alias vi='vim' $ $ which vim /usr/bin/vim $ $ ls -l /usr/bin ...

  8. APUE 学习笔记(三) 文件和目录

    1. 文件类型 文件类型信息包含在 struct stat 里的 st_mode 成员 (1)普通文件,unix内核并不区分文本文件和二进制文件 (2)目录文件,这种文件包含了其他文件的名字以及指向这 ...

  9. Linux shell 学习笔记(8)— 使用结构化命令(if-then 语句、数值比较、字符串比较、文件比较、case 语句)

    1. 使用 if-then 语句 最基本的结构化命令就是if-then语句.if-then语句有如下格式. if command then ​ commands fi 或者 if command; t ...

最新文章

  1. 【行走的Offer收割机】记一位朋友斩获BAT技术专家Offer的面试经历
  2. 7-2 然后是几点 (C语言)
  3. Linux下使用rsync最快速删除海量文件的方法
  4. Linux Shell 脚本知识点
  5. Linux疑难杂症解决方案100篇(二十)-万字长文带你读懂正则表达式(建议收藏)
  6. iOS Application Security
  7. 【技术角度看问题之一】ARM到底是个啥?
  8. java关键字super_Java关键字(六)——super
  9. 新的特洛伊木马程序SectopRAT用以控制浏览器会话
  10. SSD 网络基本原理记录
  11. 官网USB读卡器移植(TF卡SDIO模式 + SPI-flash)
  12. 防止iOS自动识别数字为电话号码
  13. Android Studio记录一个错误:解析软件包时出现问题
  14. 清北学堂学习笔记 第一期
  15. JavaScript中getElementsByName
  16. 软件测试技术课程总结(五)软件测试流程
  17. python生成简单名片二维码(不带图片)
  18. RPF收付款核销与财务管理系统
  19. 一张纸一直对折,按顺序打印
  20. 微信测试是否被删软件,3个小妙招,教你悄无声息检测微信被删好友

热门文章

  1. restTemplate http请求报错:no suitable HttpMessageConverter found for response type and content type
  2. 2021-2027年中国医疗护理行业深度研究及发展趋势报告
  3. 2022-2028年中国顺丁橡胶行业发展模式分析及市场分析预测报告
  4. python2 安装faiss-gpu 报错 faiss/faiss/python/swigfaiss.i:241: Error: Unable to find ‘faiss/impl/platfo
  5. SpringBoot2.x 不反回空值属性
  6. Windows10快捷应用指令
  7. SpringCloud Alibaba微服务实战(二) - Nacos服务注册与restTemplate消费
  8. Pandas_transform的用法
  9. AIFramework框架Jittor特性(下)
  10. TensorFlow反向传播算法实现