多多练习。。。
stat
查看文件的属性状态信息。
1 | File: ‘game.sql’ |
时间属性
Access time:最后访问时间,查看文件的内容时,这个时间会改变,使用cat命令查看文件时,可以看出Access time已经变了。
Modify time:最后修改时间,修改文件内容,文件的修改时间会改变,访问时间和状态改变时间也发生变化。
Change time:状态改变时间,修改文件内容,移动文件,或者改变文件属性(权限)等,文件的change time会发生改变。
touch
创建空文件,或者改变文件/文件夹的时间戳属性。
创建空文件
创建一个或多个文件
1 | touch a.txt |
修改时间
修改access时间
修改文件访问时间:
1
2
3将当前时间设置为该文件或目录的访问和修改时间。
touch -a a.txt #没有a.txt会创建一个
touch -c a.txt #有a.txt就修改access时间,没有也不会创建修改目录访问时间:
1
2将当前时间设置为该文件或目录的访问和修改时间。
touch -m /root/
更改modify时间
1
2touch -m devops.txt # 修改文件modify时间
touch -m /dir/ # 修改目录modify时间
将access和modify时间设置为特定的日期和时间
日期和时间格式
1 | {CCYY}MMDDhhmm.ss |
CC
– 年份的前两位数字YY
– 年份的后两位数字MM
– 月份 (01-12)DD
– 天 (01-31)hh
– 小时 (00-23)mm
– 分钟 (00-59)
修改
1 | touch -c -t 202510191820 a.txt # -c 选项没有也不创建新文件 |
使用参考文件设置时间戳(-r)
在 touch
命令中,我们可以使用参考文件来设置文件或目录的时间戳。假设我想在 devops.txt
文件上设置与文件 sysadm-20.txt
文件相同的时间戳,touch
命令中使用 -r
选项可以轻松实现。
1 | touch -r {参考文件} 真正文件 |
在符号链接文件上更改访问和修改时间
默认情况下,每当我们尝试使用 touch
命令更改符号链接文件的时间戳时,它只会更改原始文件的时间戳。如果你想更改符号链接文件的时间戳,则可以使用 touch
命令中的 -h
选项来实现。
1 | touch -h {符号链接文件} |
mkdir
make directory。
参数:-p 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立
好那些尚不存在的目录,即一次可以建立多个目录。
1 | mkdir –p test/test1 # 递归建立多个目录 |
rmdir
删除空目录。
参数:-p 当子目录被删除后如果父目录也变成空目录的话,就连带父目录一起删除。
rm
rm -r -i dirname
这条命令在删除文件夹的时候,会对每个文件询问是否要删除。
参数:
-r 删除目录及其下面的所有目录/文件
-i 删除线询问
-f 即使文件权限只读(写保护),也直接删除
man
真男人手册!哈哈哈
Man 帮助页通过数字标识符来分成不同类型的内容: man man
- 一般用户命令
- 系统调用命令(如open、write之类的)
- 库函数(如printf、scanf之类的)
- 特殊的文件和驱动程序
- 文件格式(比如passwd,就会说明这个文件中各个字段的含义)
- 游戏和屏保(由各个游戏自己定义)
- 杂项(比如environ这种全局变量在这里就有说明)
- 系统管理命令和守护进程(这些命令只能由root使用,如ifconfig)
cp
copy。
文件 -> 文件
1 | cp sourcefile destfile |
同时拷贝多个文件 -> 文件夹
1 | cp file_1.txt file_2.txt file_3.txt /home/ahoj/test |
文件夹 -> 文件夹
1 | cp -r srcDir /dest/dir/ # -r 参数,全称 “recursive” |
只拷贝新文件
1 | cp -r -u -v srcDir /dest/dir |
创建文件的硬链接,而不是拷贝它们
创建“快捷方式”或者链接到文件,而不是拷贝它们。要做到这一点,可以使用 -l 选项。
1 | cp -l file_4.txt /home/aaa/office |
创建文件的符号链接
1 | cp -s /home/pungki/Documents/file_6.txt file_6.txt |
交互模式
-i 选项,拷贝前会问你。
强制拷贝
用了 -f 选项会强制进行拷贝操作。如果目标文件不能打开,可以用 -f 试试。
mv
move,move!
移动文件
1 | mv srcFile /root/Desktop/ |
移动目录
1 | mv srcDir/ /root/destDir/ |
重命名文件或目录
move 到相同的文件夹下即可。
更多参数
- -v 打印详细信息
- -i 移动前问你
- -u 只在源文件比目标文件新时才执行更新
- -n 不会允许覆盖任何已存在的文件
- -b 复制时创建备份(避免如果移动错了文件而目标文件已经被新的文件覆盖了)
- -f 无条件覆盖已经存在的文件
cat
输出行号
1 | -n 对所有输出都有行号 |
不输出多行空行
1 | cat -s test.cpp # 不输出多行空行 |
more
-n 对输出的所有行编号
q 退出more
more
是一个老式的、基础的终端分页阅读器,它可以用于打开指定的文件并进行交互式阅读。如果文件的内容太长,在一屏以内无法完整显示,就会逐页显示文件内容。使用回车键或者空格键可以滚动浏览文件的内容,但有一个限制,就是只能够单向滚动。也就是说只能按顺序往下翻页,而不能进行回看。
在有些系统里more是可以按b向前看的,有些more不可以配合管道,有些more阔以。在我的电脑上就都阔以。
less
less 可以打开一个比较大的文件,less 打开大文件效率很高,尤其是几个 G 的文件。
less 打开文件的时候,只把一小部分数据加载到内存中,而其他编辑器都是直接把整个文件都加载。(延时加载/懒加载)
搜索
向下搜索
输入斜杠(/)之后接着输入需要搜索的内容,按 n 键可以跳转到下一个匹配的字符串,如果需要跳转到上一个匹配的字符串,可以按 N 键。
向上搜索
输入问号(?)之后接着输入需要搜索的内容。
-i 忽略搜索时的大小写
-N 显示每行的行号
用默认编辑器打开
按 v
键,就会将正在阅读的文件在默认编辑器(我的是用vim打开)中打开,然后就可以对文件进行各种编辑操作了。
head
-n<行数> 显示的行数
tail
-f 循环读取
-n<行数> 显示行数
date
注意哟:
时间:注意闰秒的问题,最好还是用有符号数来表示,因为要涉及到时间的运算。
C 语言中有一组这样的数字:
1 | include <stdint.h> |
使用:
1 | ➜ ~ date +%F |
参数
%H : 小时(00..23)
%M : 分钟(00..59)
%S : 秒(00..61)
%X : 相当于 %H:%M:%S %d : 日 (01..31)
%m : 月份 (01..12)
%Y : 完整年份 (0000..9999) %F : 相当于 %Y-%m-%d
设置时间
1 | date -s # 设置当前时间,只有root权限才能设置,其他只能查看。 |
时间戳
时间->时间戳:date +%s
时间戳->时间:date -d@1508749502
Unix时间戳(英文为Unix epoch, Unix time, POSIX time 或 Unix timestamp)是从1970年1月1日(UTC/GMT的
午夜)开始所经过的秒数,不考虑闰秒。
cal
日历。
-3 显示系统前一个月,当前月,下一个月的月历
-j 显示在当年中的第几天(一年日期按天算,从1月1号算起,默认显示当前月在一年中的天数)
-y 显示当前年份的日历
find
常用选项:-name
1 | find -name 1.txt > ~/result.txt |
grep
在文件中搜索字符串,将找到的行打印出来。
语法:grep [选项] 搜寻字符串 文件
我常用:ps aux | grep test
-i :忽略大小写的不同,所以大小写视为相同
-n :顺便输出行号
-v :反向选择,亦即显示出没有 ‘搜寻字符串’ 内容的那一行
zip & unzip
将目录或文件压缩成zip格式。
选项:-r 递归处理,将指定目录下的所有文件和子目录一并处理。
1 | 将test2目录压缩:zip test2.zip test2/* 解压到tmp目录:unzip test2.zip -d /tmp |
tar
参数:
1 | -c :建立一个压缩文件的参数指令(create 的意思); |
bc
bc命令可以很方便的进行浮点运算。
1 | ➜ ~ bc |
uname
uname用来获取电脑和操作系统的相关信息。name可显示linux主机所用的操作系统的版本、硬件的名称等基本信息。
1 | ➜ ~ uname -r |
更多学习资料:
在 Linux 下 9 个有用的 touch 命令示例
UNIX 高手的 10 个习惯
教你如何比谷歌搜索更快速有效地利用 man
cp 命令两个高效的用法
Linux cp 命令的15个示例 - 创建文件和目录的副本
tar 命令使用介绍