《Linux命令速查手册》笔记

基础命令

ls

ls -R 类似于 tree,查看其下多个子目录的内容。

ls --recursive , 用法同上 , 在macos中没有这个用法。

ls -m 以逗号分割的列表显示内容

ls -a 显示所有文件,包含隐藏文件。这时候我们可以看到 . 和 …
. 代表当前目录, … 代表上一级目录,这两个隐藏文件在系统的每个文件夹中都存在,不能删除。

ls -F 显示文件的更多信息。具体会告诉你是文件还是目录或者是一些其他的文件。

ls --color 使shell使用不同的颜色显示内容
dircolors --print-database 了解系统为各种文件映射的颜色

ls -r 以相反的顺序来显示内容,默认使用 -l 是以文件和文件夹的字母顺序来显示的,添加 -r 选项之后,将以相反的顺序来显示结果。ls --reverse

ls -X: 按照文件的扩展名排序。例如将所有 .py结尾的文件分为一组, 对于.tar.gz 这样有两个扩展名的一般采用最后一个扩展名。

ls -t 或者 ls -tr 按照时间排序, 或者 ls --sort=time

ls -S 按照文件的大小进行排序

ls -h 用 K M G显示文件大小

touch

touch 将文件的时间修改为当前的时间
touch -a 只想更新访问时间 --time=access
touch -m 只想更新修改时间 --time=modify
touch -t 将文件时间修改为想要的任何时间
touch 创建新的空文件

mkdir

mkdir -p 创建新目录和任何必须的子目录
mkdir -v 查看创建的详细过程

cp

cp -v 复制文件时显示详细的执行过程
cp -i 在发生覆盖的时候给出预警
对于普通用户来说,通常不需要使用 -i 选项。
cp -R 目录和其内容都会被复制
cp -a 确保不复制符号链接的内容并且递归处理子目录

mv

mv demo ~/justtest
mv demo/ ~/justtest
demo是个软链接, 如果不加上 / 就是移动软链接,加上/demo就是移动软链家指向的目录。

rm

rm -rf 删除文件和非空的目录
rm 删除名称中带有空格的文件只要将其名称加引号即可
对于删除文件名前面带 ‘-‘的文件,1是可以在前面加”–“, 它会告诉命令:跟在后面的任何东西都不能作为选项,而是文件或者目录的名称。
2是可以使用 ./作为路径名称的一部分,rm ./-demo.py
3是尽量不要使文件或者目录名的首个字母为’-’

su

su 代表的是 switch user 切换用户,而不是 super user。
whoami 查看当前用户
su furuiyang 切换用户
su 切换用户之后,就会切换到用户在 /etc/passwd 文件中指定的shell。大多数Linux用户只使用默认的bash shell,所以我们不会看到有任何区别。
虽然这时候我们切换了用户,但是使用的仍然是上个用户的环境变量。
我们可以使用 -l 或者–login 解决
su -l furuiyang
su --login furuiyang

su 只是输入 su 的情况下相当于输入了su root,即有了 su的权限,但是非 root 的环境变量仍然存在。当使用 su - 的时候,不仅有权限,而且有了 root 的环境变量。

man

man ls 使用man来查看命令, 一般来说,man page是由编写程序的开发人员编写的。
打开 man page 之后要搜索其内容,先输入 /,后面加搜索的词语,然后在按下Enter回车键…
按Shift+n, 返回。
man -f ls 查看某个命令的简单说明

whereis

whereis 告诉我们命令的可执行程序 源文件以及man page的路径
whereis -b ls 只是想搜索二进制文件 加上 -b
where -s ls 只是想搜索源文件

whatis

whatis ls 读取命令的描述

which

which kword 找到要执行的命令的版本,也是一种快速判定系统是否存在相关命令的方法

apropos

apropos list: 查找与 list 相关的命令。
apropos -e list: 精确搜索与 list 相关

组合命令

连续运行多个命令

命令栈将所有需要运行的命令放在一行上,利用 ; 隔开,接着依次执行每个命令,只有一个命令结束(无论成功或者是失败) 才会去执行下一个命令。

可以使用&& 去连接每一个命令,只有在上一个命令执行成功之后,才会执行下一个。有一个失败,整个过程就会终止。

ping “hahahha” ||echo “hello”: || 只有当前一个命令失败的时候,才运行下一个命令。

将一个命令的输出插入到另外一个命令中

date “+%Y-%m-%d” 显示当前的日期
mkdir $(date “+%Y-%m-%d”) 创建一个以当前日期为名字的文件夹

输入流和输出流

Linux shell 有三种标准的输入\输出流: 标准输入流,标准输出流,标准错误流。每一种都有一个文件描述符,一个常见的缩写名和一个可用的默认设备。

讲一个命令的输出作为另外一个的输入

| 重定向stdout,并且将其作为第二个命令的stdin
less 让用户在终端一次查看文本文件的一页,如果我们将ls 的输出发送给less的输入,就可以分页查看结果。
虽然很多程序可以使用管道,但是vim不可。vim会接管整shell,所有输入都直接发给 vim 输出都在程序的某个位置显示。

将文件做为命令的输入

echo “hello” 重复显示在stdin中的内容
echo < hello.txt ??? 似乎不行

查看文件

cat

cat file1 file2 : 想同时查看 file1 和 file2 的内容
cat file1 file2 > file3 :将拼接的结果重定向到 一个新的文件,但是不能将文件与其自身拼接起来
cat -n file1 file2 : 拼接,并且给加上行号
tac file : 从最后一行显示到第一行

less

less file.py : 分屏查看文件 类似于 more
less -N file.py : 显示行号

head

head demo.py : 默认查看文件的前 10 行
head file1, file2 : 查看多个文件的前 10 行内容
head -n file : 查看前 n 行
head -c 或者 --bytes= : 查看指定字节数的文档
head -c 100k file1; head -c 100 file1

tail

tail file :默认查看文件的最后 10 行内容
tail file1 file2 : 同时查看两个文件
tail -n file1 :查看某个文件中的最后 n 行
tail -f --pid=PID : 查看某个文件中不断更新的最后几行, 直到 pid 对应的进程停止运行。

打印

lpstat -p : 列出所有可用的打印机
lpstat -d : 列出默认使用的打印机
lpstat -s : 查看打印机是如何连接的
lpstat -t :一次性获取打印机的所有信息

lpr file1:将文件打印到默认的打印机

权限

修改文件或者目录的用户组

当我们在 Linux 上创建一个文件时, 其用户和用户组就是自己。即用户的UID成为文件的拥有者,用户的GID成为文件的用户组。
touch demo.py # furuiyang,furuiyang 这时必须是 admins 的成员
chgrp admins demo.py # 用户组由 furuiyang 改为 admins

查找与用户组相关的数字ID:
cat /etc/group

chgrp -r demodir admins # 递归修改目录的用户组
chgrp -v demodir admins # 查看改变的过程中发生了什么
chgrp -c demodir admins # 只显示被修改过的内容

修改文件和目录的拥有者

只有 root 用户和文件的拥有者才能修改其属性。
cat /etc/passwd : 查看用户的数字ID
chown : 修改用户
chown owner:group : 同时修改用户和组

ACL 访问控制列表

Linux 认为会有三组用户会使用文件或者目录,即实际拥有者,用户组以及系统中的其他人。用户–> u; 组–> g; 其他–> o
chmod g+w demo.png : 为g 添加 w 的权限
chmod go+w demo.png :为 g和o都添加 w 的权限
chmod a=rw demo.png : 所有人都可以读写
chmod go-w demo.png :为 g和o移除w
chmod o-r demo.png : 为o移除r
chmod g=r demo.png :直接修改 g 权限为r
chmod o= demo.png : 移除 o的所有权限

数字表示法: r,w,x = 4,2,1
可以对文件执行 chmod 000 但是这样的话唯一能对其进行任何操作的就只有 root 了
chmod -R: 递归修改权限
一种情况是如果一个文件是可执行的,意味着它可以作为程序来执行,但是此时目录页必须是可执行的,才能允许其访问内部,读取它的文件和子目录。当递归修改权限的时候,因为我们已经修改了外层文件夹的 x 权限,所以不能成功完成操作。
这时我们就可以通过通配符来运行 chmod 命令,chmod -R 660 *.jpg

s权限

设置 suid 以后,用户就可以使用拥有者的权限执行这个文件。就好像是程序的拥有者在运行它一样。
ls -l /usr/bin/passwd: passwd 的拥有者是root用户,但是为了让普通用户也能运行这个命令,否则他们就不能修改自己的密码。

解开和解压tarball

要创建.tar.gz文件,使用的一组选项是 -zxvf。而当我们需要解开并且解压生成的 tarball,只需要替换其中的一个选项,即用 -x(或者–extract) 替换 -c(或者是–create)
在解压文件之前,我们最好是首先对文件进行测试。
举例,这意味着运行命令的顺序将会如下:
tar -zxtf moby.tar.gz # 检查
tar -zxvf moby.tar.gz # 解压

查找资料

Linux 为用户提供了强大的查找工具,能够快速而有效找出需要的文件。

locate

知道文件的名称,或者是名称的一部分,但是不记得放在系统的哪个位置。这就是locate命令需要解决的问题。locate命令能够在文件、程序和目录中查找与提供的搜索项匹配的内容,并把任何匹配的结果依次显示到终端界面上。
搜索结果显示比较快,因为locate并没有对系统进行实时搜索,它搜索的是每天自动更新的文件数据库。因为locate搜索的是早就已经创建好的数据库,所以搜索结果几乎能够瞬间显示出来。

更新的版本使用的是 slocate(不过locate和slocate应该是需要自己安装的)
如果我们经常使用 locate,可能会遇到以下的结果:
即找到的相关条目太多,我们最好这样使用:
locate pdf | less
即将locate搜索的结果通过管道输出至分页器less命令。

如果我们只想看前面的 x 个结果,就可以使用 -n选项
locate -n 3 pdf

更新 locate 使用的数据库

locate命令之所以快,是因为它实际上搜索的是一个包含该计算机中所有文件和目录名称的数据库。在安装locate时,就将它自动设置为扫面硬盘和更新数据库(通常是在午夜时进行)。这样设置的确很方便,但是如果我们需要查找刚刚在计算机上放置的文件,就不是很方便。

我们在任何时候都可以通过updatedb来手动更新locate使用的数据库。

grep 在文本中搜索匹配的模式

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值