Author:Onceday date:2022年7月29日
Linux基础知识整理系列,不积跬步无以至千里。
本内容收集整理于《鸟哥的Linux私房菜》。
路径有相对路径和绝对路径之分,有利有弊,需要择机使用。
以下是几种特殊的目录:
.,代表此层目录
..,代表上一层目录
-,代表前一个工作目录
~,代表目前使用者身份所在的家目录
~account,代表account这个使用者的家目录
cd 目录
pwd [-P] #打印物理路径,不带有符号链接
mkdir -m 777 目录名 #使用指定的权限创建目录
mkdir -p 目录名 #可以递归建立目录
rmdir [-p] 目录名 #-p是递归删除空目录
$PATH来查看当前的可执行文件路径变量。ls 文件/目录
ls -al 文件/目录 #隐藏文件+所有信息
ls -d 目录 #查看目录本身
ls -h 文件/目录 #将文件容量以人类易读的方式展现出来
ls -R 目录 #递归列出子目录的内容
ls -S 目录 #以文件容量大小排序,而不是用文件名
cp 源文件 目标文件 #复制的数据文件权限依据执行cp命令的账户权限而定
cp -a xxx xxx #将文件的所有特性一起复制
cp -i xxx xxx #若目标文件存在,复制前则询问操作是否执行
cp -p xxx xxx #连同文件属性(权限,用户,时间)一起复制
cp -r xxx xxx #递归复制文件夹
cp -l xxx xxx #创建硬链接文件
cp -s xxx xxx #复制成为符号链接,即快捷方式
rm -f xxx #忽略不存在的文件
rm -I xxx #删除之前会询问
rm -r xxx #递归删除
rm -v xxx #显示删除的过程
mv 源文件 目标文件
mv -f #强制删除,不询问
mv -i #覆盖前询问
mv -b #为已有的文件创建备份
mv -u #目标不存在,或者较久才会执行
mv -n #不覆盖已存在文件
mv -v #显示移动的过程
basename xxxx
dirname xxxx
常用命令如下:
| 指令 | 描述 |
|---|---|
| cat | 由第一行开始显示文件的内容 |
| tac | 从最后一行开始显示,可以看出tac是cat的到写 |
| nl | 显示的时候同时输出行号,cat -n也可以 |
| more | 一页一页的显示 |
| less | 一页一页的显示,可以向前翻页 |
| head | 只看前几行 |
| tail | 只看后几行 |
| od | 以二进制的方式读取文件内容 |
cat [-v/-T/-E/-A] 文件
-v,列出一些看不出来的特殊字符-T,将[tab]键以^I显示出来-E,将结尾的换行符$显示出来-A,相当于-vET的集合cat [-b/-n] 文件
-b列出非空白行的行号,-n列出所有行的行号。
nl -b 文件
可以选取行号计算的方式:-b a计算所有行,-b t不计算空行。
nl -n 文件
列出行号的方式:
互动式文本显示,适合行数大于屏幕输出的行数。
以下是常见按键:
空格键(space):代表向下翻一页Enter:代表向下翻一行/字符串:代表在这个显示的内容中,向下查找字符串这个关键词:f:立刻显示出文件名以及目前显示的行数q:代表立刻离开more,不在显示该文件内容b或[ctrl]-b:代表往回翻页,不过这操作只对文件有用,对管道无用。互动式文本显示,一页一页的翻动:
空格键:向下翻动一页[pagedown]:向下翻动一页[pageup]:向上翻动一页/字符串:向下查找字符串的功能?字符串:向上查找字符串的功能n:重复前一个查找N:反向的重复前一个查找g:前进到这个数据的第一行G:前进到这个数据的最后一行q:离开less这个程序head [-n number] 文件
默认取前10行数据,可以指定取的行数。
如果number是负数,则表示后面abs(number)行数据不列出来。
tail [-n number] 文件
默认取后10行数据,可以指定取的行数。
如果number是正数,则表示前面abs(number)行数据不列出来。
组合利用两个命令可实现择取部分行数的数据出来显示:
onceday@onceday:~/test$ nl -b a te.c|head -n 30|tail -n 10 #取21至30行的数据
21 char a;
22 int b;
23 char c;
24 };
25
26 void test(void)
27 {
28 int *addr = 0x30;
29 *addr = 0x15252;
30 }
使用该命令可直接输出二进制文件,属于GNU组件内容。
od [-t type] 文件
类型字段由以下部分组成,可进行叠加:
如以一个字节的十六进制数输出:
od -t x1 文件
输出十六进制和ASCII对照表:
onceday@onceday:~/test$ echo onceday |od -t xCc
0000000 6f 6e 63 65 64 61 79 0a
o n c e d a y \n
0000010
可以使用设备相关的长度描述符,如:
file 文件
修改时间(modification time,mtime):
状态时间(status time,ctime):
读取时间(access time,atime):
默认情况下,ls文件显示的mtime,也就是这个文件的内容上次修改的时间。
常用以下指令:
touch 文件
touch -c 文件 #在文件不存在时,不会建立新文件。
这样会直接创建新文件,或者将旧文件的时间更新为目前时间。
touch -t [[cc]YY]MMDDhhmm[.ss]
touch -a -t [[cc]YY]MMDDhhmm[.ss]
touch -m -t [[cc]YY]MMDDhhmm[.ss]
指定时间进行修改,-a表示访问时间,-m更改修改时间。
onceday@onceday:~/test$ umask -p
umask 0002
onceday@onceday:~/test$ umask -S
u=rwx,g=rwx,o=rx
可以看到,数字代表减去的权限,符号代表掩码,即其他用户写入权限被清除,其他权限保留。
默认用户建立的文件没有可执行(x)权限:
-rw-rw-rw-
用户建立的目录,默认开发所有权限,(x)执行权限与进入目录有关,因此全开。
drwxrwxr-x
文件隐藏属性在ext4等文件系统可较好支持,但xfs等文件系统支持有限,可使用man指令查看信息。
常用形式如下:
chattr [+-=] A #存取文件时,不修改atime,降低IO使用
chattr [+-=] a #文件只能增加数据,不能删除和修改,root才能设置
chattr [+-=] d #避免dump备份
chattr [+-=] i #文件不能删除,改名,设置链接、无法写入、新增数据等,root可以设置
chattr [+-=] S #文件数据从内存同步写入磁盘
设置完这些属性,可以使用lsattr查看该属性:
lsattr -a[R] 目录文件 #R表示递归显示
1. SUID表示set UID,用于暂时获取owner的身份:
2. 典型的用途是在执行修改密码程序时,暂时获取root的权限。
SGID表示set GID,用于暂时获取该程序或目录的用户组身份:
用于二进制程序时:
用于目录时:
3.SBIT(sticky Bit)目前只针对目录有效
设置SUID、SGID、SBIT权限设置:
chmod 4777 filename
数字放在最前面,4代表SUID,2代表SGID,1代表SBIT。
chmod u=rwxs,go=x test
chmod g+s,o+t test
以上两个符号设置方式也支持。
which [-a] command
-a会显示所有的入口。
快速查找whereis,只查找系统中特定目录下的内容。
whereis -l #列出whereis会去查询的几个主要目录
只找出特殊格式的文件:
whereis -b xxx #二进制文件
whereis -m xxx #只找出在说明文件manual下的文件
whereis -s xxx #只找出源文件
whereis -u xxx #非上面三种文件
locate使用数据库来查找:
locate -i xxx #忽略大小写
locate -c xxx #只输出找到的文件数量
locate -S #输出数据库信息
locate -r xxx #按正则表达式方式查找
可使用updatedb更新locate数据库, locate指令可能未安装,因此需要手动安装。
该命令很复杂,可以man find查看具体信息。
find xxx
默认直接搜索当前目录。
find [PATH] [-mtime n]
find ~ -mtime +4
使用与使用者和用户者相关的信息查找:
find [-uid/-gid] n #账户和用户组ID,记录在/etc/passwd和/etc/group下
find [-user/-group] name #名称
find [-nouser/-nogroup] #无用户信息和组信息的文件
使用文件权限相关信息查找:
find -name filename
find -size [+-]Size #比Size大或者小的文件,c代表Bytes,k代表1KB...
find -size +1k
find -type TYPE #查找某种类型的文件,如b为设备文件
find -perm mode #查找文件权限刚好等于mode的文件
find -perm 4755 #文件权限-rwsr-xr-x
find -perm -mode #查找文件权限必须囊括mode权限的文件
find -perm /mode #查找文件权限包含任一mode的权限的文件find
找到某一个文件并执行一定操作:
find xxx -exec cat {} \;
命令的范围即-exec和\;之间,{}代表find的找到的内容。