常用指令
ls
- 显示当前路径下文件名
ls -l
==ll
列出文件的属性(详细信息)
ls -a
列出目录下的所有文件,包括以 . 开头的隐含文件
ls -l -a
列出目录下的所有文件的属性
ls -i
查看文件的编号
pwd
- 显示当前我所处的路径
touch 文件名
- touch命令参数可更改文档或目录的日期时间,包括存取时间和更改时间,或者新建一个不存在的文件
touch test.txt
在当前路径下创建一个普通文件test.txt
test.txt已存在,更新文件最近修改时间,更新为最新的时间
touch .youcannotseeme.txt
在文件名前添加 . ,用于创建隐藏文件
mkdir 目录名
- 在当前目录下创建一个名为目录名的目录
mkdir dir
在当前路径下创建一个目录或者文件夹dir
mkdir –p d1/d2/d3
在当前路径下,创建一串目录
cd 目录名
- 改变工作目录。将当前工作目录改变到指定的目录下
cd ..
返回直接上级目录
./code
运行code文件,使用 . 限定我们要执行的可执行程序所在位置
cd /home/litao/linux/
绝对路径
cd ../day02/
相对路径
cd ~
进入用户家目录
cd -
返回最近访问的目录
rmdir [-p] [dirName]
- 删除空目录
rmdir p 文件或目录
当子目录被删除后如果父目录也变成空目录的话,就连带父目录一起删除
rm [-f-i-r-v] [dirName/dir]
- 删除文件或者目录,可同时删除文件和目录
rm -f 文件名或目录名
强制删除
rm -r 文件名或目录名
递归删除目录及其下所有文件
rm -rf 文件名或目录名
递归强制删除文件或者目录
cp [选项] 源文件或目录 目标文件或目录
- 复制文件或目录,如果是目录需要加
-rf
cp -rf dir ../
递归强制拷贝目录dir到上级目录
mv [选项] 源文件或目录 目标文件或目录
mv test.txt mytest.txt
mv dir new
将文件mytest.txt重命名test.txt
mv dir d1/
将dir转移到目录d1中
mv d1/dir .
将dir转移到目录当前路径中
cat [选项] [文件]
- 查看目标文件的内容
cat -b 文件名
对非空输出行编号
cat -n 文件名
对输出的所有行编号
cat -s 文件名
不输出多行空行
cat < file.txt > file2.txt
从文件file.txt中提取数据,输入到文件file2.txt
tac [选项] [文件]
- 逆行序显示
tac test.txt
逆行序显示文件test.txt的内容
> 文件名
- 输出重定向
- 如果文件不存在,则创建,否则直接进行访问;从文件开始,覆盖式写入
>> 文件名
- 追加重定向
如果文件不存在,则创建,否则直接进行访问;从文件结尾,追加式写入
echo
- 打印内容到显示器
echo "hello"
打印hello到显示器
echo "hello" > text.txt
将hello保存到text.txt
more [选项] [文件]
- 与cat类似
more -n file.txt
对输出的所有行编号
less [参数] 文件
- less与more类似,但使用less可以随意浏览文件,而more仅能向前移动,却不能向后移动,而且less在查看之前不会加载整个文件
-i :忽略搜索时的大小写
-N :显示每行的行号
/字符串:向下搜索“字符串”的功能
?字符串:向上搜索“字符串”的功能
n:重复前一个搜索(与 / 或 ? 有关)
N:反向重复前一个搜索(与 / 或 ? 有关)
q:quit
tail [参数] 文件
tail -3 file.txt
查看末尾3行
head [参数] 文件
head -5 file.txt
查看前5行
xargs
- 将管道输出的结果,作为命令行参数交给后面命令
echo "-l -a -i" | xargs ls
运行ls -l -a -i
- 有一个文件共有100行内容,请取出第50行内容
方法1
head -n50 test > tmp
将前50行装入临时文件tmp
tail -n1 tmp
得到中建行
方法2head -n50 test | tail -n1
使用管道文件
date
date +%Y/%m/%d-%H:%M:%S
输出当前时间
date +%s
输出时间戳
date -d@1508749502
由时间戳得到时间
cal
cal -1
显示当前月日历
cal -3
显示前一个月日历
cal -j
显示当天是全年第几天
cal -y
显示当年的日历
find
find ~ -name file.txt
按名查找文件
which
- 在系统中找到特点指令所在路径
which ls
查找ls命令所在路径
whereis
whereis ls
查找包含ls的所有路径
alias
alias zhangsan='ls -al'
给’ls -al’取别名zhangsan
grep
- 行文本过滤,在文件中搜索字符串,将找到的行打印出来
grep '888' file.txt
输入包含888的行
grep -n '888' file.txt
顺便输出行号
grep -v '888' file.txt
反向选择,亦即显示出没有 ‘搜寻字符串’ 内容的那一行
grep -i 'aB' file.txt
不区分大小写
zip/unzip
- 将目录或文件压缩成zip格式
zip -r name.zip 要压缩的目录名
压缩
unzip name.zip
解压到当前目录
unzip name.zip -d 指定路径
解压到指定路径
tar
tar -czvf project.tgz project
压缩
tar -xzvf project.tgz
解压
tar -xzvf project.tgz -C /tmp
解压到指定路径
bc
- 进行浮点运算
echo "1+2+3+4" | bc
打印计算结果
uname
uname -a
查看体系结构
uname -r
查看内核版本
热键
[ctrl]-R
进入搜索模式,搜索相关命令
[Tab]
具有『命令补全』和『档案补齐』的功能
[Ctrl]-c
让当前的程序『停掉』
[Ctrl]-d
通常代表着:『键盘输入结束(End Of File, EOF 戒 End OfInput)』的意思;另外,他也可以用来取代exit
nano 文件名
- 以记事本方式打开编辑文件
权限
用户
- Linux下有两种用户:超级用户(root)、普通用户。
其中超级用户拥有所有权限,普通用户只能进行特定权限下的活动
身份
- 对于Linux下的任意一个文件和目录,其访问者都有如下三种,相应也拥有不同的权限
拥有者: 文件属于谁
所属组:文件属于哪一个组
other:不属于上面两者
基本权限
- 读(r/4/100): Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限
- 写(w/2/010): Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限
- 执行(x/1/001): execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限
- “—”表示不具有该项权限
文件属性
- 在Linux环境下,输入
ll
可查看该目录下的文件属性,如下
-rw-r--r-- 1 root root 1024 Oct 24 01:01 test
从左到右含义依次如下:
- 第1位
-
表示文件类型,test文件的属性是普通文件 - 第2位到第10位
rw-r--r--
,每三位分别表示三种用户身份对于的权限,test文件的拥有者具有读写权限即rw-
,test文件的所属组具有读权限r--
,test文件的其他用户具有读权限r--
1
表示连接数root root
分别表示拥有者和所属组1024
表示文件大小Oct 24 01:01
表示文件最新修改日期test
表示文件名
文件类型
d:文件夹
-:普通文件
l:软链接(类似Windows的快捷方式)
b:块设备文件(例如硬盘、光驱等)
p:管道文件
c:字符设备文件(例如屏幕等串口设备)
s:套接口文件
mkfifo f
创建管道文件f
ln -s a.out a.link
创建软连接
-rw-r--r-- 1 root root 65 Aug 15 15:31 a.c
lrwxrwxrwx 1 root root 5 Aug 15 15:32 a.link -> a.out
-rwxr-xr-x 1 root root 8352 Aug 15 15:31 a.out
drwxr-xr-x 2 root root 4096 Aug 15 15:24 d
prw-r--r-- 1 root root 0 Aug 15 15:23 f
-rw-r--r-- 1 root root 0 Aug 15 15:24 t
权限操作
su [用户名]
- 切换用户
su user1
切换到普通用户user1
su root
切换到超级用户root
chmod [参数] 权限 文件名
- 只有文件的拥有者和root才可以改变文件的权限
R -> 递归修改目录文件的权限
+:向权限范围增加权限代号所表示的权限
-:向权限范围取消权限代号所表示的权限
=:向权限范围赋予权限代号所表示的权限
- 用户符号:
u:拥有者
g:拥有者同组用
o:其它用户
a:所有用户
举例
chmod u+w a.txt
对a.txt的所有用户增加w权限
chmod o-x a.txt
对a.txt的其他用户取消x权限
chown [参数] 用户组名 文件名
chown user1 a
将a文件的拥有者更改为user1
chgrp [参数] 用户组名 文件名
chgrp users a
将a文件的所属组更改为users
file [选项] 文件或者目录
- 查看文件类型
sudo
- 临时提高权限,前提是用户需要在信用列表里
sudo -u 用户名 命令
目录权限
- 进入目录需要 x 权限
- 查看目录需要 r 权限
- 在目录中新建或者删除文件需要 w 权限
目录的可执行权限是表示你可否在目录下执行命令。
如果目录没有-x权限,则无法对目录执行任何命令,甚至无法 cd 进入目, 即使目录仍然有-r 读权限(这个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)
而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限,所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档
umask
Linux默认
一个目录被创建,起始权限是从777
一个普通文件被创建,起始权限是从666
起始权限不等于最终权限
- 权限掩码——凡是在umask中出现的权限,都不应该在最终权限里出现;超级用户默认掩码值为0022,普通用户默认为0002
- 最终权限 = 起始权限 & (`umask)
例如umask设置为244,创建一个新文件后,它的权限是多少?
普通文件起始权限是666,umask位244,带入公式最终权限 = 起始权限 & (`umask),则最终权限 = 666 & (~244) = 422 -> 100010010 -> -r—w–w-
粘滞位
删除文件与文件自身权限无关,跟文件所属目录的权限有关,因此,当用户A不是文件B无权限时,即用户A不能读写运行文件B,但由于对存放该文件的目录目录具有写权限w,因此能删除文件B,为防止这种情况,需要给目录添加粘滞位
chmod +t 目录名
- 当一个目录被设置为"粘滞位",则该目录下的文件只能由超级管理员、该目录的所有者删除和该文件的所有者删除
- 粘滞位只能给目录设置;粘滞位是谁设置谁才能取消