linux命令学习
GNU: GNU is not Unix
GPL: General Public License
GUI: Graphic User Interface
CLI: Command Line Interface
login:
用户名: 用户ID
认证机制: Authentication 密码
授权: Authorization 拥有的权限
审计: Audition 日志记录
Windows PE 可移植的执行文件 Portable Execute File
Linux ELF 可执行的链接文件 Execute Link File
Linux 基本原则:
1.由目的单一的小程序组成,组合小程序完成复杂任务
2.一切皆文件
3.尽量避免与用户交互
4.配置文件保存为纯文本格式
命令格式: 命令 选项 参数
Linux严格区分大小写
Linux常用命令:
su
用户切换 switch user su [-l] USERNAME 切换到指定用户名处。若由root切换到其他用户,不用输入密码,反之要输入密码才能进入root用户
ls
列出指定路径下的文件目录 list ls,其选项有
ls 列出目录下的文件
-l 列出目录下文件的详细信息(不包含隐藏文件)。
-a (all) 列出目录下所有文件,包含隐藏文件,默认情况下列出的是不包含隐藏文件的
-h (human) 列出文件详细信息时,文件大小以易读方式现象
-i (index node) 列出文件索引号。
-r ()逆序显示文件(默认情况下,是以文件名字母Ascii排序方式顺序显示)
-R(Recursive) 递归调用
-d (directory) 显示目录信息
date 获取系统时间
OS系统时间分为系统时间和硬件时间
date获取的是系统时间 clock 显示系统时间
硬件时间: 硬件时钟是存储在CMOS里的时钟,关机后该时钟依然运行,主板的电池为它供电。
硬件时钟依照主板 石英晶体振荡器 频率工作,在启动系统后,系统从该时钟读取时间信息,之后独立运行。
当调整 系统时钟 或与internet同步后,不会改变硬件时钟,下次启动又会变成硬件时钟的时间。
date 显示系统时钟 (也可以不带引号)
-d 显示指定的时间 比如 date -d “1 day ago” +“%Y--%m--%d”
-s 设置时间(修改系统时钟) date -s “2015-11-13 10:26:50”
-r 文件名 显示文件最后一次修改时间
%a 简写星期 %A不简写
%b 简写月份 %B不简写
%y 简写年份 %Y不简写
%d 日 %D %x 显示时间格式 mm/day/year
%m 月 %M 分钟
%T 显示时间,24小时制(hh:mm:ss)
%p 显示AM或PM
%W 一年的第几个星期(00~53,星期一为第一天)
%j 一年的第几天(001~366)
%c 日期和时间(Tue Nov 20 14:12:58 2012)
hwclock 显示硬件时间
hwclock -w 将系统时间同步到硬件中
hwclock -s 将硬件时间同步到系统中
man [number] 命令 用于帮助查找 参数表示第几个章节
whatis 命令 描述一个命令执行什么功能
type 命令 显示命令的类型
file 文件名 列出文件辨识结果
参数
-b 列出文件辨识结果,不显示文件名
-c 详细列出文件辨识结果,便于排错分析文件执行过程
-f 列出文件名中文件的详细类型
-F 指定文件名后面的分隔字符,默认为':'
-L 查看软链接对应的文件类型
tree 文件 显示目录文件树形结构
hash 查看系统缓存内容
printenv 打印系统环境变量
mkdir 创建目录
mkdir /mnt/x/usb 创建目录usb,前提是x目录必须存在,否则创建usb不能成功
mkdir -p /mnt/x/y/z 创建目录z,如果x,y目录不存在,先创建x,y,在创建z。(parent)
mkdir -pv /mnt/x/y/z 显示创建过程的详细信息,便于排错
rmdir 目录名 只能删除空目录,目录非空,删除不了
touch 真是目的不是创建文件,而是修改文件的时间戳。在文件不存在是,默认创建这个文件
-a 或--time=atime或--time=access或--time=use 只更改存取时间。touch -a a.c ll a.c
-m 或--time=mtime或--time=modify 只更改变动时间。
-c 或--no-create 不建立任何文档。touch -c a.c
-t 使用指定的日期时间,而非现在的时间。touch -t [YYMMMMHHMM.SS] a.c b.c
-r 把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同。
touch -r a.c b.c 更新b.c的时间戳,与a.c的相同
type command 显示命令类型
tree directory 显示磁盘目录结构
tree--- 当前目录下的所有内容显示
tree -L num 当前目录下指定深度为num的目录
tree -d 显示目录名称而非内容
tree -f 在每个文件或目录之前,显示完整的相对路径名称
hash 查看内存内容及命中次数
printenv 打印环境变量
mkdir 创建目录
-p (parent)mkdir -p /mnt/test/{a,c}_{b,d} 创建目录a_b,a_d,c_b,c_d
-v 显示创建过程的详细信息
rmdir 删除空目录,非空目录不能删除
stat 查看文件的详细的状态、准确的修改时间等(三个时间戳都可以看到)
cp (copy)文件拷贝
cp file1 file2 file3 注:拷贝时可以有多个源文件,但只能有一个目的文件。而且当有多个源文件时,目的文件要是一个目录
cp file1 file2 file2可以是一个目录,将file1拷贝到目录file2处。file2也可以为一个文件,将file1的内容拷贝到名为file2的文件中
cp默认情况下只能复制文件,不能复制目录。如果源文件是目录,可加入选项-r,实现目录的拷贝。
cp -r 源文件目录的 文件复制
-a 保持原有所有属性进行拷贝,多由于文件存档
-P保留原有文件mode,ownership, timestamp
-i interactive 含有交互式命令的拷贝
注意:cp 默认拷贝是文件。若拷贝一个目录时,目录中是一个link类型的文件,拷贝时拷贝的是文件,不是链接。为了保持原有链接特性,可选用选线参数-l, -P,-d,保存链接属性
cp -L 则拷贝链接所指向的文件
mv move 用于移动文件 类似于剪切后粘贴到目的地
mv src dest 可以多个源,但只能有一个目的。若dest是目录,可以将多个源移动到目录dest下;
若dest是文件,只能有一个源文件,dest文件存在,将源文件移动到目录文件下,文件命名为dest。
dest不存在,创建dest
源是目录,dest是文件,错误提示:不能将目录移动到文件
rm 删除文件或目录(-r选项)
install copy files and set attributes 复制文件并设置属性,不能复制目录(cp -r 可以复制目录)
install src dest 复制文件,将src 拷贝到dest中。源文件没有执行权限,install拷贝后,dest有执行权限
install 和cp的区别
基本上,在Makefile里会用到install,其他地方会用cp命令。
它们完成同样的任务——拷贝文件,它们之间的区别主要如下:
1、最重要的一点,如果目标文件存在,cp会先清空文件后往里写入新文件,而install则会先删除掉原先的文件然后写入新文件。这是因为往正在 使用的文件中写入内容可能会导致一些问题,比如说写入正在执行的文件可能会失败,比如说往已经在持续写入的文件句柄中写入新文件会产生错误的文件。而使用 install先删除后写入(会生成新的文件句柄)的方式去安装就能避免这些问题了;
2、install命令会恰当地处理文件权限的问题。比如说,install -c会把目标文件的权限设置为rwxr-xr-x;
3、install命令可以打印出更多更合适的debug信息,还会自动处理SElinux上下文的问题。
du disk usage 磁盘使用空间情况
df 磁盘被文件占用空间大小
执行一条命令,若不带路径,则说明该路径在环境变量PATH中(可以使用printenv查看PATH路径),否则1.将路径加到PATH中,2.执行路径带命令3.命令有误