美文网首页
Linux Basic Command

Linux Basic Command

作者: UNNAM3D | 来源:发表于2018-09-29 22:09 被阅读121次

UpDate 2018-09-29 1538230612
Author unnam3d
Mail indv.zhang@foxmail.com
Tip Please feel free to contact me via mail above for any confusion or suggestions

command list:

writting order: function, description, option, example, tricks

touch -c,--no-create -a -m -t 

rm -i -f -r 

cp -a -R,-r,--recursive -i,--interactive -f,--force -p -d -P,--no-dereference -L,--dereference

mv -i -f -t

install -d -m -t

cat -n,--number -E,--show-ends -T,--show-tabs -v,--show-nonprinting -A,--show-all

more&less

head -n

tail -n -f

cut -d -f

sort -n -r -t -k -u -f,--ignore-case

uniq -d -D -c

wc -l -w -c -m -L

tr -d

tee


touch

  • function:
    change file timestamps

  • description:
    主要目的用于改变文件的时间戳,只是在文件不存在的情况下会自动创建文件;

  • option:
    -c, --no-create, do not create any files - 改变文件的时间戳,文件不存在的情况下不再创建文件;
    -a, change only the access time - 只改变文件的访问时间戳;
    -m, change only the modification time - 只改变文件的修改时间戳;
    -t STAMP, use [[CC]YY]MMDDhhmm[.ss] instead of current time - 指定时间为修改后的时间戳;

  • example:

    • no option
      $touch file
      explanation: 文件 file 若不存在,自动创建文件 file,时间戳为均当前时间;文件 file 若存在,时间戳均自动更新为当前时间;

    • -c
      $touch -c file
      explanation: 文件 file 若不存在,则不再创建文件 file; 文件 file 若存在,时间戳均自动更新为当前时间;

    • -a
      $touch -a file
      explanation: 文件 file 若不存在,则创建文件 file;文件 file 若存在,则修改文件 file 的访问时间戳为当前时间,同时 file 的改变时间戳也将一并更新为当前时间;

    • -m
      $touch -m file
      explanation: 文件 file 若不存在,则创建文件 file;文件 file 若存在,则修改文件 file 的修改时间戳为当前时间,同时 file 的改变时间戳也将一并更新为当前时间;

    • -t -m
      $touch -m -t 201804281556.27 file
      explanation: 文件 file 若不存在,则创建文件 file;文件 file 若存在,则修改文件 file 的修改时间戳为指定时间2018年4月28日15点56分27秒,但同时 file 的改变时间戳将更新为当前时间;

  • tricks:
    touch 可以改变文件的访问时间戳、修改时间戳,但没有 option 指定改变文件的改变时间戳,这是因为 touch 对文件的操作,已经使得文件产生了改变,文件的改变时间戳自然已经改变;
    touch -t 用于改变文件的访问时间戳和修改时间戳为指定时间时,文件的改变时间戳将更新为当前时间,这是因为改变时间戳表示文件的元数据(metadata, 即文件的属性信息)变更时间,touch 对文件时间戳的更改属于此类,因此改变时间戳将自动更新为当前时间;


rm

  • function:
    delete files or directory

  • option:
    -i - 删除文件时提示是否删除文件
    -f - 删除文件时使能 不提示是否删除文件 的要求
    -r - 删除目录,且递归删除该目录下的所有文件

  • example:

    • no option
      #rm file
      explanation: root 用户将收到是否删除文件的确认信息,输入 y 确认,输入 n 否认;
      $rm file
      explanation: 普通用户将直接删除文件,无确认信息出现;

    • -i
      $rm -i file
      explanation: 普通用户删除文件时,出现是否删除文件的确认信息;

    • -f
      #rm -f file
      explanation: root 用户将不会收到是否删除文件的确认信息,直接删除;
      $rm -f file
      explanation: 普通用户将直接删除文件,无确认信息出现;

    • -r
      $rm -r file/
      explanation: 删除 file 目录,同时递归删除 file 目录下的所有文件;

  • tricks:
    redhat,centos这些Linux发行版中,root用户的 rm 命令是 rm -i 命令的别名,每次都要提示root用户是否确认删除,这是为了防止root用户误操作,普通用户的 rm 命令为原始的,没有误操作的顾虑;
    -f 的功能可以覆盖掉 -i 的功能;
    命令的别名可以使用 \ 符号将别名的功能取消掉,例如root用户的 rm 将提示确认信息,但 \rm 将不提示;


cp

  • function
    copy files and directories

  • description
    对于copy来讲,通常最后一个是 DEST,此前的所有文件都是 SRC,这就意味着copy不允许一个SRC到多个DEST,也不允许多个SRC多个DEST,
    只允许多个SRC到一个DEST。而多个文件是不能复制到一个文件的,那么多个SRC对应到一个DEST其实可以理解为多个文件复制到一个目录。
    总的来说,cp可以实现:一个文件到一个文件,多个文件到一个目录。

  • option
    -a, --archive same as -dR --preserve=<u>all</u> - 保留文件所有原来的属性,归档复制,常用于备份;
    -R, -r, --recursive copy directories recursively - 递归复制一个目录及其目录内的所有文件到目标目录下;
    -i, --interactive prompt before overwrite - 覆盖文件的时候进行交互式的询问;
    -f, --force - 不问缘由,强制执行复制;
    -p - 保留文件的属主属组权限及时间戳;
    -d same as --no-dereference --preserve=<u>links</u> - 若来源文件为链接文件,则复制链接文件属性而非档案本身;
    -P, --no-dereference 保持链接,如果文件是链接,那就把文件复制为链接;
    -L, --dereference 总是追踪符号链接,如果文件是链接,那就复制链接指向的文件;

  • example

    • 一个文件到一个目录
      #cp /etc/passwd /tmp/
      将 /etc/passwd 文件复制到目录 /tmp/ 下,文件名不变仍是 passwd;即,如果目标是一个目录并且存在,这就意味着将源文件放在目标目录下并保持源文件名不变。
    • 多个文件到一个目录
      #cp /etc/{passwd,inittab,rc.d/rc.sysinit} /tmp/
    • 一个目录到一个目录
      #cp -r /etc/init.d/ /tmp/
      cp命令默认不复制目录,只复制文件,要复制目录,就要使用option -r,如果不使用就会出现cp: omiting directory `/etc/init.d/` 的提示
      #cp -r /etc/init.d /tmp/hello
      如果hello不存在,就把init.d复制过去并重命名为hello
      如果hello存在,把init.d复制到hello下并保持原来的名字
    • 一个文件到一个文件
      #cp /etc/passwd /tmp/hello
      如果目标hello不存在,这就意味着把passwd复制到tmp下并重命名为hello
      如果目标hello存在,则提示我们是否覆盖掉这个文件,这就意味着把原来的hello删掉,并把passwd复制到tmp下并重命名为hello
    • 多个文件到一个文件
      不能被执行,会出现cp: target `/tmp/hello` is not a directory的提示
    • 一个目录到一个文件
      #cp -r /etc/init.d /tmp/hello
      会出现提示信息cp: overwrite `/tmp/hello`?,输入yes或者y,然后查看一下hello,就创建了一个链接文件,而且该链接文件指向该目录下一个不存在的文件,所有这是个错误文件;

mv

  • function
    move (rename) files
  • option
    -i - 如果目标存在,会提示覆盖
    -f - 如果目标存在,会强制覆盖
    -t - 该参数后跟DEST的路径位置
  • examples
    • 一个文件移动到指定目录
      $mv /tmp/root.inittab /var/tmp/
      将root.inittab移动到 /var/tmp/ 目录下并保留原来的名称
      $mv /tmp/root.inittab /var/tmp/abc (abc不存在)
      将root.inittab移动到 /var/tmp/ 目录下并重命名为 abc
      $mv /tmp/root.inittab /var/tmp/abc (abc存在,且为文件)
      将root.inittab移动到 /var/tmp/ 目录下并重命名为 abc 原文件abc被覆盖掉
      $mv /tmp/root.inittab /var/tmp/abc (abc存在,且为目录)
      将root.inittab移动到 /var/tmp/abc 目录下并保留原来的名称
    • 一个目录移动到指定目录
      $mv /tmp/hello/ /var/tmp/
      将hello/移动到 /var/tmp/ 目录下并保留原来的名称 hello/
      $mv /tmp/hello/ /var/tmp/abc (abc不存在)
      移动hello目录到 /var/tmp/ 下面并重命名为目录 abc
      $mv /tmp/hello/ /var/tmp/abc (abc 存在,且为文件)
      会出现提示信息:mv: cannot overwrite non-directory /var/tmp/abc with directory /tmp/hello/
      $mv /tmp/hello/ /var/tmp/abc (abc存在,是个目录)
      那就是把 hello/ 移动到 /var/tmp/abc/ 下面并保留原来的名称 hello/
    • 重命名
      $mv abc mn
      把当前目录下的abc剪切到当前目录下并且叫mn,即实现了重命名的功能,重命名不关心是文件还是目录,只要在同目录下,就是重命名。
    • 多个源一个目标
      $mv file1 file2 dir1 dir2 dest
      $mv -t dest file1 file2 dir1 dir2
      $mv file1 file2 -t dest dir1 dir2
      如果dest是目录,则将file1 file2 dir1 dir2移动到dest目录下,如果dest是文件,则提示dest为非目录,且操作无法执行。
  • tricks
    无论copy还是move,默认情况下,只有最后一个是目标,此前的都是源。

install

  • function
    copy files and set attributes
  • description
    install 只是针对文件的操作,可以复制文件,创建目录,在制作rpm包的时候比较常用。
  • option
    -d - 创建目录
    -m, --mode=MODE set permission mode(as in chmod), instead of rwxr-xr-x - install执行后的文件默认权限为rwxr-xr-x,这一选项可以更换文件的权限。
    -t - 指定目录路径
  • example
    $install -d /tmp/{install.1,install.2}
    创建了两个目录 install.1 和 install.2
    $install /etc/passwd /var/tmp/install.file1
    复制文件 passwd 到 /var/tmp/install.file1,复制过来的文件install.file1的权限为rwxr-xr-x,这是install的默认权限,可以使用-m来指定权限。
    $install /etc/rc.d/ /var/tmp/
    会提示install:omitting directory /etc/rc.d/,因为install不对目录进行操作。

cat

  • function
    concatenate files and print on the standard output
  • description
    常用option为-n, -E,可以实现连接并显示,会将用户给的文件参数一个一个连接起来并显示,比如$cat /etc/issue /etc/fstab这个命令就可以把/etc/issue的所有内容打印到屏幕上之后,马上换下一行就把/etc/fstab所有的内容打印到屏幕上,这就叫连接并显示。
  • option
    -n, --number - number all output lines 可以显示行号
    -E, --show-ends - display $ at end of each line 显示行尾
    -T, --show-tabs - display TAB characters as ^I
    -v, --show-nonprinting - use ^ and M- notation, except for LFD and TAB 可以显示其他的非打印字符,比方说回车符,行首控制符等等;
    -A, --show-all - equivalent to -vET 显示所有字符
  • examples
    $cat -n /etc/issue
    在显示/etc/issue内容的时候,将内容的行进行编号显示
    $cat -E /etc/issue
    在显示/etc/issue内容的时候,在行尾显示$作为终止符
  • tricks
    对Linux而言,文本文件的行结束符是美元符号,而Windows的行结束符是和回车(\n,即换行符)一起;所以把Linux中的文件放到Windows中打开,会通通显示一行,就是因为Linux中的文件没有换行符做结束符号;
    cat 是从首行到行末这样遍历显示的,但如果我们把cat倒过来写,用tac进行查看文件,文本的内容就是从行末到首行来遍历显示的;
    我们标准输出到屏幕上的内容可以使用Shift+PgUp/PgDn组合快捷键来进行查看;

more&less

  • description
    都可以用来查看文件
  • tricks
    空格键 向后翻一屏
    B 向前翻一屏
    回车 一行一行向后翻
    K more不支持,less一行一行向前翻
    / more不支持,less搜索
    q 退出
    more 默认情况下只支持向后翻,不支持向前翻;用户翻页到文件尾部就直接退出了,不会让你向前翻了(缺点)
    man其实就是使用less来进行文档的查看的,所以man里能用的less里都可以用

head

  • function
    output the first part of files
  • description
    查看文件的前n行,默认n=10
  • option
    -n - 显示的行数
  • examples
    $head -2 /etc/inittab
    直接显示文件/etc/inittab的前两行内容

tail

  • function
    output the last part of files
  • description
    查看文件的后n行,默认n=10
  • option
    -n - 显示的行数
    -f, --follow - output appended data as the file grows, 也就是输出文件中即时更新的内容
  • examples
    tail -5 /etc/inittab
    直接显示文件/etc/inittab的后五行内容
    tail -f /tmp/inittab
    显示完文件尾部之后不会退出,还是一直等待该文件追加进来的后续内容;
  • tricks
    tail -f 这条指令可以用在查看实时日志中去,这样就不会遗漏掉任何一条写入的日志,对于日志的分析起到了很好的辅助作用

cut

  • function
    remove sections from each line of files

  • option
    -d - 指定字段分隔符,默认是一个空格
    -f filed, 指定要显示的字段
    -f 1 显示第一个字段
    -f 1,3 显示第一个和第三个字段
    -f 1-3 显示第一个到第三个字段

  • examples
    cut -d: -f1 /etc/passwd
    直接在标准输出上显示/etc/passwd文件中以:为分隔符的第一个字段

  • tricks
    用于数据库,关系型数据库,表,行与列,二维表的时候就很舒服


sort

  • function
    sort lines of text files
  • description
    用于实现文本排序,sort的排序结果不影响源文件,仅仅是对于输出显示的内容进行处理,此外,sort的默认排序是根据升序进行的,根据一个字符在ASCII码中的次序升序后向后进行排序的,而不是按照数值大小
  • option
    -n - 数值排序,按照数值的大小进行排序
    -r - 逆序排序,也就是降序排序
    -t - 字段分隔符
    -k - 指定以哪个字段为关键字进行排序
    -u - 排序后相同的行只显示一次
    -f,--ignore-case - 忽略/不区分字符大小写
  • examples
    sort -t: -k3 -nr /etc/passwd
    在对文件/etc/passwd进行排序输出的时候,由于文件中的分隔符为:,因此这里使用-t:来指定字段分隔符,我们打算按照第三个字段的用户UID进行数值上的降序排序,而不是ASCII码的次序排序,因此这里又使用了-k3指定第三个字段,以及-nr指定数值上的降序排序

uniq

  • function
    report or omit repeated lines
  • description
    报告或者忽略重复的行,但uniq只忽略相邻一模一样的行,如果两个行不相邻,即使一模一样也不会忽略掉。
  • option
    -d,--repeated - 只显示重复的行
    -D - 显示所有重复的行
    -c - 它会把重复的行显示出来并打印出重复了几次,即显示文件中行重复的次数
  • examples
    uniq -d test.txt
    显示在终端的内容会自动忽略不重复的行,且重复的行只显示一行
    uniq -D test.txt
    显示在终端的内容会自动忽略不重复的行,且重复的行有几行就显示几行
    uniq -c test.txt
    显示在终端的内容会显示所有行,但重复的行只显示一行,且行的左端会显示该行的重复次数

wc

  • function
    print newline, word, and byte counts for each file

  • description
    wc可以统计一个文件中一共有多少行,有多少个单词,以及有多少个字符(空白也是字符,空白行当中只要有空格键,那就算是字符。)

  • option
    -l - 只显示行
    -w - 只显示单词数
    -c - 只显示字节数
    -m - 只显示字符数
    -L - 最长的一行包含多少个字符

  • example
    $wc /etc/fstab
    将会显示/etc/fstab的行数、单词数、字符数(字节数)
    $wc -l /etc/fstab
    只会显示/etc/fstab的行数
    $wc -w /etc/fstab
    只会显示/etc/fstab的单词数
    $wc -c /etc/fstab
    只会显示/etc/fstab的字节数
    $wc -m /etc/fstab
    只会显示/etc/fstab的字符数
    $wc -L /etc/fstab
    只会显示/etc/fstab中最长的一行包含的字符数

    效果如下:
    $wc /etc/fstab
    8 48 608 /etc/fstab
    $wc -l /etc/fstab
    8 /etc/fstab
    $wc -w /etc/fstab
    48 /etc/fstab
    $wc -c /etc/fstab
    608 /etc/fstab
    $wc -m /etc/fstab
    608 /etc/fstab
    $wc -L /etc/fstab
    75 /etc/fstab


tr

  • function
    translate or delete characters

  • description
    转换或删除字符

  • option
    -d - 删除出现在字符集中的所有字符

  • examples
    $tr 'ab' 'AB'
    这个命令运行之后会自动把你标准输入的内容里的字符'ab'全都转换为'AB',而且,其转换机制是逐个字符比较,并不是把'ab'作为整体转换为'AB',出现单个字符'a'和'b'都可以对应的转换为字符'A'和'B'
    $tr 'ab' 'AB' < /etc/passwd
    这个命令是把文件/etc/passwd作为输入,然后将文件的内容打印出来,只是在打印的过程中,会自动将字符'A'转换为'a',将字符'B'转换为'b',但,文件本身的内容不进行改变。
    $tr 'a-z' 'A-Z' < /etc/passwd' 这个命令是将文件中的小写字符全部转换为大写字符$tr -d 'ab'
    这个命令运行之后会自动把你标准输入的内容理的字符'ab'全都删除掉。

    效果如下:
    $tr 'ab' 'AB'
    something
    something
    angelbaby
    AngleBABy
    ^c
    $tr -d 'ab'
    something
    something
    angelbaby
    ngely
    ^c


tee

  • function

    read from standard input and write to standard output and files

  • description

    一个输入,两个输出。从标准输入读取数据并且发送至标准输出和文件。它就可以实现将数据既保存在文件中一份,又输出在屏幕上一份。

  • examples

    $ echo "Hello, World." | tee /tmp/hello.out
    Hello, World.
    $ cat /tmp/hello.out
    Hello, World.
    

    这样就实现了既将内容打印到屏幕上,又将内容保存在了文件hello.out中去。


update log

  1. 2018-09-29 首次发布 包含命令:touch, rm, cp, mv, install, cat, more&less, head, tail, cut, sort, uniq, wc, tr
  2. 2018-10-06 添加命令:tee

相关文章

网友评论

      本文标题:Linux Basic Command

      本文链接:https://www.haomeiwen.com/subject/rwxioftx.html