笔记 linux 学习鸟哥的linux私房菜

指令格式

command [-options] parameter1 parameter2

  1. 一行指令中第一个输入的部分绝对是“指令(command)”或“可可执行文件案(例如批次 脚本,script)”
  2. command 为指令的名称,例如变换工作目录的指令为 cd 等等;
  3. 中刮号[]并不存在于实际的指令中,而加入选项设置时,通常选项前会带 - 号,例如 -h; 有时候会使用选项的完整全名,则选项前带有 – 符号,例如 --help;
  4. parameter1 parameter2… 为依附在选项后面的参数,或者是 command 的参数;
  5. 指令, 选项, 参数等这几个咚咚中间以空格来区分,不论空几格 shell 都视为一格。所以空 格是很重要的特殊字符!;
  6. 按下[Enter]按键后,该指令就立即执行。[Enter]按键代表着一行指令的开始启动。
  7. 指令太长的时候,可以使用反斜线 (\) 来跳脱[Enter]符号,使指令连续到下一行。注 意!反斜线后就立刻接特殊字符,才能跳脱!

参数:-h 或者 --help

[Tab], [ctrl]-c, [ctrl]-d

按2次tab,按1次tab

man

man ls

指令后面的数字表示:
在这里插入图片描述
在这里插入图片描述

info

在这里插入图片描述

nano

关机

在这里插入图片描述

使用者与群组

User, Group及Others
使用者
群组
其他人

Linux 文件权限概念

ls -al
drwxr-xr-x    2 root root  4096 Apr 23 00:37 xserver-xorg-video-radeo

在这里插入图片描述

如何改变文件属性与权限

chgrp :改变文件所属群组
chown :改变文件拥有者
chmod :改变文件的权限, SUID, SGID, SBIT等等的特性

文件目录需要有x权限才能打开,光有r只能看到文件目录名字。

如果文件名之前多一个“ . ”,则代表这个文件为“隐藏文件”;

Linux文件名的限制为:单一文件或目录的最大容许文件名为 255 个英文字符或 128 个中
文字符.

在这里插入图片描述

目录树

目录树的启始点为根目录 (/, root)

绝对路径与相对路径

绝对路径:由根目录(/)开始写起的文件名或目录名称, 例如 /home/dmtsai/.bashrc;
相对路径:相对于目前路径的文件名写法。 例如 ./home/dmtsai 或 …/…/home/dmtsai/ 等
等。反正开头不是 / 就属于相对路径的写法
. :代表当前的目录,也可以使用 ./ 来表示;
… :代表上一层目录,也可以 …/ 来代表。

查看系统信息

uname -a

在不同的目录间变换、 创建与删除目录、创建与删除文件、寻找文件、查阅文件内容

目录与路径

切换root
https://www.jianshu.com/p/a69e8cb45ebf

目录相关操作

. 代表此层目录
.. 代表上一层目录
- 代表前一个工作目录
~ 代表“目前使用者身份”所在的主文件夹
~account 代表 account 这个使用者的主文件夹(account是个帐号名称)

目录操作总览

cd:变换目录
pwd:显示目前的目录
mkdir:创建一个新的目录
rmdir:删除一个空的目录

多层目录

mkdir -p test1/test2/test3/test4

创建权限为rwx–x--x的目录

mkdir -m 711 test2

删除test4这个目录(上层的不会删除)

rmdir -p test1/test2/test3/test4

全部删除操作

rm -r test1

python文件目录写法:

path1 = r'c:\BaiduYunDownload\temp\readme.txt'

path2 = r'C:\BaiduYunDownload\temp\readme.txt'

path3 = R'c:\BaiduYunDownload\temp\readme.txt'

path4 = 'c:\\BaiduYunDownload\\temp\\readme.txt'

path5 = 'c:/BaiduYunDownload/temp/readme.txt'

关于可执行文件路径的变量: $PATH
指令ls其实是/bin/ls

dx@ubuntu:/tmp$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

不同身份使用者默认的PATH不同,默认能够随意执行的指令也不同。 PATH是可以修改的。
使用绝对路径或相对路径直接指定某个指令的文件名来执行,会比搜寻PATH来的正确 指令应该要放置到正确的目录下,执行才会比较方便
本目录(.)最好不要放到PATH当中

文件与目录管理

文件与目录的检视: ls
在这里插入图片描述很多系统
ll已经等同于ls -al

复制、删除与移动: cp, rm, mv

cp
选项与参数:
-a :相当于 -dr --preserve=all 的意思,至于 dr 请参考下列说明;(常用)
-d :若来源文件为链接文件的属性(link file),则复制链接文件属性而非文件本身;
-f :为强制(force)的意思,若目标文件已经存在且无法打开,则移除后再尝试一次;
-i :若目标文件(destination)已经存在时,在覆盖时会先询问动作的进行(常用)
-l :进行硬式链接(hard link)的链接文件创建,而非复制文件本身;
-p :连同文件的属性(权限、用户、时间)一起复制过去,而非使用默认属性(备份常用);
-r :递回持续复制,用于目录的复制行为;(常用)
-s :复制成为符号链接文件 (symbolic link),亦即“捷径”文件;
-u :destination 比 source 旧才更新 destination,或 destination 不存在的情况下才复制。
--preserve=all :除了 -p 的权限相关参数外,还加入 SELinux 的属性, links, xattr 等也复制了。最后需要注意的,如果来源文件有两个以上,则最后一个目的文件一定要是“目录”才行!

复制操作
cp ~/.bashrc /tmp/bashrc
-i会有覆盖提示
cp -i ~/.bashrc /tmp/bashrc
复制文件到当前目录
cp /var/log/wtmp .
虽然是复制,信息却不同

dx@ubuntu:/tmp$ ls -l /var/log/wtmp wtmp
-rw-rw-r-- 1 root utmp 6528 Jul 28 22:00 /var/log/wtmp
-rw-rw-r-- 1 dx   dx   6528 Jul 29 07:43 wtmp

这样复制就会一样了

dx@ubuntu:/tmp$ cp -a /var/log/wtmp wtmp_2
dx@ubuntu:/tmp$ ls -l /var/log/wtmp wtmp_2
-rw-rw-r-- 1 root utmp 6528 Jul 28 22:00 /var/log/wtmp
-rw-rw-r-- 1 dx   dx   6528 Jul 28 22:00 wtmp_2

取得路径的文件名称与目录名称
basename /etc/sysconfig/network
dirname /etc/sysconfig/network

文件内容查阅

cat 由第一行开始显示文件内容
tac 从最后一行开始显示,可以看出 tac 是 cat 的倒着写!
nl 显示的时候,顺道输出行号!
more 一页一页的显示文件内容
less 与 more 类似,但是比 more 更好的是,他可以往前翻页!
head 只看头几行
tail 只看尾巴几行
od 以二进制的方式读取文件内容!

cat -n /etc/issue

nl -n /etc/issue

文件与目录的默认权限与隐藏权限

文件默认权限:umask

umask -S

文件隐藏属性

[root@study ~]# chattr [+-=][ASacdistu] 文件或目录名称
选项与参数:
+ :增加某一个特殊参数,其他原本存在参数则不动。
- :移除某一个特殊参数,其他原本存在参数则不动。
= :设置一定,且仅有后面接的参数
A :当设置了 A 这个属性时,若你有存取此文件(或目录)时,他的存取时间 atime 将不会被修改,
可避免 I/O 较慢的机器过度的存取磁盘。(目前建议使用文件系统挂载参数处理这个项目)
S :一般文件是非同步写入磁盘的(原理请参考[前一章sync](../Text/index.html#sync)的说明),如果加上 S 这个属性时,
当你进行任何文件的修改,该更动会“同步”写入磁盘中。
a :当设置 a 之后,这个文件将只能增加数据,而不能删除也不能修改数据,只有root 才能设置这属性
c :这个属性设置之后,将会自动的将此文件“压缩”,在读取的时候将会自动解压缩,
但是在储存的时候,将会先进行压缩后再储存(看来对于大文件似乎蛮有用的!)
d :当 dump 程序被执行的时候,设置 d 属性将可使该文件(或目录)不会被 dump 备份
i :这个 i 可就很厉害了!他可以让一个文件“不能被删除、改名、设置链接也无法写入或新增数据!”
对于系统安全性有相当大的助益!只有 root 能设置此属性
s :当文件设置了 s 属性时,如果这个文件被删除,他将会被完全的移除出这个硬盘空间,
所以如果误删了,完全无法救回来了喔!
u :与 s 相反的,当使用 u 来设置文件时,如果该文件被删除了,则数据内容其实还存在磁盘中,
可以使用来救援该文件喔!
注意1:属性设置常见的是 a 与 i 的设置值,而且很多设置值必须要身为 root 才能设置
注意2:xfs 文件系统仅支持 AadiS 而已

lsattr (显示文件隐藏属性)

文件特殊权限: SUID, SGID, SBIT

SUID
SUID 权限仅对二进制程序(binary program)有效;
执行者对于该程序需要具有 x 的可执行权限;
本权限仅在执行该程序的过程中有效 (run-time);
执行者将具有该程序拥有者 (owner) 的权限。
SUID对目录无效。

SGID
当 s 标志在文件拥有者的 x 项目为 SUID,那 s 在群组的 x 时则称为 Set GID
SGID 可以针对文件或目录来设置
SGID 对二进制程序有用;
程序执行者对于该程序来说,需具备 x 的权限;
执行者在执行的过程中将会获得该程序群组的支持!

SBIT
SBIT 目前只针对目录有效,对于文件已经没有效果了
当使用者对于此目录具有 w, x 权限,亦即具有写入的权限时
当使用者在该目录下创建文件或目录时,仅有自己与 root 才有权力删除该文件

查看文件类型

观察文件的类型可以使用 file 指令来观察

单一文件压缩 gzip bzip2 xz

*.Z compress 程序压缩的文件;compress 已没人用了。
*.zip zip 程序压缩的文件;
*.gz gzip 程序压缩的文件;
*.bz2 bzip2 程序压缩的文件;
*.xz xz 程序压缩的文件;
*.tar tar 程序打包的数据,并没有压缩过;
*.tar.gz tar 程序打包的文件,其中并且经过 gzip 的压缩
*.tar.bz2 tar 程序打包的文件,其中并且经过 bzip2 的压缩
*.tar.xz tar 程序打包的文件,其中并且经过 xz 的压缩

当你使用 gzip 进行压缩时,在默认的状态下原本的文件会被压缩成为 .gz 的文件名,原始文件就不再存在了压缩速度快。
gzip 可以解开 compress, zip ,gzip,*.gz
gzip [-cdtv#] 文件名
选项与参数:
-c :将压缩的数据输出到屏幕上,可通过数据流重导向来处理;
-d :解压缩的参数;
-t :可以用来检验一个压缩文件的一致性~看看文件有无错误;
-v :可以显示出原文件/压缩文件的压缩比等信息;
-# :# 为数字的意思,代表压缩等级,-1 最快,但是压缩比最差、-9 最慢,但是压缩比最好!默认是 -6

bzip2 则是为了取代gzip 并提供更佳的压缩比而来的.

打包指令 tar

*.tar tar 程序打包的数据,并没有压缩过;
*.tar.gz tar 程序打包的文件,其中并且经过 gzip 的压缩
*.tar.bz2 tar 程序打包的文件,其中并且经过 bzip2 的压缩
*.tar.xz tar 程序打包的文件,其中并且经过 xz 的压缩

tar会打包

Examples:
  tar -cf archive.tar foo bar  # Create archive.tar from files foo and bar.
  tar -tvf archive.tar         # List all files in archive.tar verbosely.
  tar -xf archive.tar          # Extract all files from archive.tar.

vim

i 插入
ESC 退回到命令行
:wq 保存退出
:q! 强制退出不存储

gedit

&和&&,|和||

& 表示任务在后台执行,如要在后台运行redis-server,则有 redis-server &

&& 表示前一条命令执行成功时,才执行后一条命令 ,如 echo '1‘ && echo ‘2’

| 表示管道,上一条命令的输出,作为下一条命令参数,如 echo ‘yes’ | wc -l

|| 表示上一条命令执行失败后,才执行下一条命令,如 cat nofile || echo “fail”

猜你喜欢

转载自blog.csdn.net/x1131230123/article/details/107661298
今日推荐