Linux 学习笔记

这里记录我的 Linux 学习进程,以作纪念 ∠( :D 」∠)_

  • Change Directory:cd 命令
    cd [dir]
    dir 可以是绝对路径和相对路径
    相对路径:
    . 当前目录
    .. 上一层目录
    / 根目录(目录树的根部)
    ~ 当前用户的主文件夹(例如用户为 aaron,那么主文件夹就为 /home/aaron)
    -上一层工作目录
    举例:
cd .. #转到上一层目录
cd /    #转到根目录
cd ./mnt    #转到当前目录的 mnt 文件夹
cd ~/mnt    #转到用户主文件夹中的 mnt 文件夹
cd mnt  #等价于 cd ./mnt
cd ~aaron   #转到用户 aaron 的主文件夹

pwd 可以显示当前目录的绝对路径

  • 新建目录,删除目录
    mkdir(make directory) 新建目录
    mkdir mnt #在当前目录下新建 mnt 目录

  • rmdir(remove directory)删除一个空目录
    rmdir

  • 新建文件、删除文件和目录
    使用 rm 删除文件或目录。

rm File #删除 File
rm -r dir   #递归删除一个目录,删除非空目录时只能使用该命令

使用 touch 创建空文件

touch EmptyFile
  • 远程登录
    使用 telnet 远程登录一个主机。
    使用 ssh 远程登录一个支持加密传输的主机,自签名证书需要人工确认可信度。
telnet 127.0.0.1    #默认端口 23
ssh 127.0.0.1       #默认端口 22

ssh usrname@127.0.0.1   #带有用户名远程登录
  • 移动、复制、远程复制文件
    使用 cp 复制文件到指定目录。
    使用 mv 移动文件。
    使用 scp 复制远程主机资源。
cp ./file ./mnt/file2   #将当前目录的 file 复制到当前目录下的 mnt 子目录,并更名为 file2
mv ./file ./mnt/file2   #仅移动文件,且改名

# 远程主机 IP:192.168.100.2
# 本地主机 IP:192.168.100.254
scp ./file aaron@192.168.100.254:/home/aaron/mnt/file2  #复制远程主机当前工作目录的 file 文件到本地主机
aaron@192.168.100.254's Password:                           #此时会要求输入本地主机的用户密码
  • 简单的文件权限操作
    使用 chmod、chown、chgrp 修改文件的权限、所有者、所有组。
    使用 chattr、lsattr 修改、显示文件的隐藏权限。
    文件的权限分数:
    r:4
    w:2
    x:1
    文件的隐藏权限:
    man chattr
chmod 777 file  #修改文件权限为 -rwxrwxrwx
chmod 755 file  #修改文件权限为 -r-xr-xr-x

chattr +i file  #给 file 增加隐藏属性 i,使其不可更改
  • 磁盘操作命令
    所有的磁盘操作都要在 root 权限下才能执行。
    使用 df 查看每一个磁盘分区的文件系统、使用情况、挂载点等信息,使用 du 查看系统中每一个文件的情况。
    使用 fdisk 命令能对一块新磁盘执行一些操作,详细操作在进入 fdisk 模式后输入 m 查看简介
fdisk /dev/sdb  #这里直接输入磁盘盘标,而不是分区下标
#此刻 Linux 将等待下一步指令,输入 m 查看帮助,输入 q 不保存退出
  • 磁盘挂载与卸载
    mount 将磁盘挂载
    umount 将磁盘卸载
mount /dev/sdb1 /folder #将 sdb1 这个磁盘挂载到 /folder 这个目录下
umount /dev/sdb1    #卸载 sdb1 磁盘

如果卸载磁盘时提示 target is busy 或 device is busy 说明有进程正在占用该磁盘,可以用 fuser 来查看占用磁盘的进程,杀掉占用的进程之后再尝试,或者可以直接尝试重新启动 Linux
如果要强制卸载磁盘(谨慎,可能会损坏数据或使数据不同步),使用:
mount -fl /dev/sdb1 #强制卸载 sdb1 磁盘

  • 磁盘的格式化
    使用 mkfs(make file system) 格式化磁盘,格式化可以将磁盘的文件系统设置成想要的格式,同时格式化会清除现有数据,适用于 Linux 的文件系统有 ext2、3、4,另外可以选择的格式还有 vfat、ntfs 等
#首先保证磁盘已分区,且已卸载
mkfs -t [format] [device]

mkfs -t ntfs /dev/sdb1
  • 压缩与打包
    最常使用 tar 来打包,bzip2 来压缩
tar [-ctxjzv] [-f FILENAME]
 -c 新建打包文件
 -t 查看打包文件的文件名
 -x 解包或解压缩
 -j 通过 bzip2 来压缩包
 -v 解压/压缩处理过程中,显示被处理的文件名
 -f 后跟要处理的文件名,即打包压缩后的文件路径
 -C 如果要解压到特定路径,可以使用此参数

# 压缩 etc 文件
tar -jcv -f /root/etc.tar.bz2 /etc
# 解压 etc.tar.bz2 到特定目录
tar -jxv -f /root/etc.tar.bz2 -C /etc/etcunpzip
# 查看 etc.tar.bz2 的内容
tar -jtv -f /root/etc.tar.bz2
  • Bash Shell
    • 使用 echo 回执到控制台
#字符串有空格或其他特殊字符时使用单引号或双引号
echo “Hello,World!”
* 使用 $ 符号取变量值,在双引号括住的字符串中代表变量值,单引号中代表纯字符串
var=“hey”
echo “$var” #打印 “hey”
echo '$var' #打印 “$var”  
* 变量的声明与销毁
var=hello   # 声明一个变量
unset var   # 销毁一个变量
  • 输出重定向
    使用 >/>>/</<< 重定向标准输出流、标准输入流和标准错误输出流
cat ls /mnt > ~/catFile # 将 cat mnt 的输出数据重定向到 catFile 文件中
cat ls /mnt >> ~/catFile    # 将 cat mnt 的输出数据重定向*追加*到 catFile 文件中
  • pipe 管道命令 |
    使用 | 来让下一条命令处理上一条命令的输出
ls /etc | less  # less 读取 ls 的数据并加以处理

使用 cut 来切分一段信息

cut [-dfc]
 -d 按字符切分,和 -f 一起使用
 -f 选择切分后的信息的某一段
 -c 按区间取字符

# 现有字符串:
# /Users/aaron/.rvm/gems/ruby-2.0.0-p648/bin:/Users/aaron/.rvm/gems/ruby-2.0.0-p648@global/bin:/Users/aaron/.rvm/rubies/ruby-2.0.0-p648/
# bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Applications/Server.app/Contents/ServerRoot/usr/bin:/Applications/Server.app/Contents/
# ServerRoot/usr/sbin:/Users/aaron/.rvm/bin
# 以 :号为分隔符,取出第一段文字:
echo $PATH | cut -d ":" -f 1
# 得到字符串:
# /Users/aaron/.rvm/gems/ruby-2.0.0-p648/bin

# 同样的字符串,取出前 12 个字符
echo $PATH | cut -c -12 # 后 12 个字符则为 12-
# 得到字符串:
# /Users/aaron

使用 grep 来筛选字符串
高级用法在正则表达式一节中详细说明。

使用 sort、uniq、wc 排序

# 现有文件 sortFile,内容为:
# 10 blackdawn
# 2 aaron
# 6 yuki
# 6 yuki_liu
# 11 blackdawnx_group
# 利用第一列的数字来进行排序
cat sortFile | sort -t " " -k 1 -n  # 以空格分割每一行,以第一列来排序,由于默认是字符型排序,要用 -n 转换成数字排序
# 排序后为:
# 2 aaron
# 6 yuki
# 6 yuki_liu
# 10 blackdawn
# 11 blackdawnx_group

# 使用 uniq 合并排序后相同的项
# 使用 wc 列出文件有多少行、多少字、多少字符
  • 正则表达式
    特殊的正则表达式:
[[:alnum:]]: 代表 [0-9][a-z][A-Z]
[[:alpha:]]: 仅代表字母(大小写)
[[:digit:]]: 仅代表数字
[[:upper:]]: 大写字母
[[:lower:]]: 小写字母

grep 高级用法

# 找到的关键字用颜色突出显示
last | grep --color=auto "aaron"

# 想象有一篇文章
# 找出含有 “ooo”(连续三个 o)的一行
cat greptest | grep "ooo"
# 找出 “oo” 前有 G、g、z 三个字母的一行
cat greptest | grep "[Ggz]oo"
# 找出 “oo” 前没有 G、g、z 三个字母的一行,使用 ^ 符
cat greptest | grep "[^Ggz]oo"
# 找出开头是字母 B 的一行,也使用 ^ 符,但加在正则表达式最前方
cat greptest | grep "^B"
# 找出结尾是 . 的一行,注意 . 有特殊意义,代表任意字符,需要转义
cat greptest | grep "\.$"
# 找出 g 前面有零个或多个 g 的一行
cat greptest | grep "g*g"
# 找出 g 后面有 2-5 个 o 的一行,{ 需要转义
cat greptest | grep "go\{2,5\}"

sed 工具

sed [n1[,n2]] function
# function 可以是:
# a 新增
# c 替换
# d 删除
# i 插入
# p 打印
# s 直接替换
# funciton 一般使用单引号括住

# 在 ~/sedtest 中,第 6 行后面增加一行
cat -n sedtest | sed '6a aaron here'    # 需要在第 6 行之前增加一行可以使用 i 参数
# 将第 1-5 行的内容替换
cat sedtest | sed '1,5c >>close 1-5'
# 只将主网卡信息的 ipv4 地址显示出来,使用 ‘s/[筛选]/[替换]/g’ 来替换筛选的字符
ifconfig ens33 | grep "inet addr" | sed 's/^.*addr://g' | sed 's/ Bcast.*$//g'
  • Shell Script
    • 数组的声明与使用
# 数组声明
var[0]="Hello"
var[1]="world!"

# 数组使用
echo "${var[0]}, ${var[1]}"
> Hello, world!
  • Quota 的使用
    Quota 可以限制每个账户的磁盘使用量,且可以在即将用尽限额之前提醒用户,当用户使用超出限额时将无法继续向磁盘内写入数据
# 安装 Quota
sudo apt install quota
## 待补充

  • 部分 Linux 默认不带 SSH 安全登录功能,例如 uBuntu
    安装 SSH 使用:
Client: sudo apt-get install openssh-client
Server: sudo apt-get install openssh-server

# 启动 SSH 登陆
sudo /etc/init.d/ssh restart
  • uBuntu 默认不自带 VIM 编辑器
    安装 VIM:
sudo apt-get install vim
  • Ubuntu 默认的 sh 命令使用的是 dash shell,而不是 bash
    禁用 dash:
sudo dpkg-reconfiguration dash

然后选择 No

  • Ubuntu 14.04 及更新版本想要挂载 exFat 文件系统磁盘,需要安装:
sudo apt-get install exfat-utils

使 CentOS 7.x 支持 exFAT 格式磁盘

对于RHEL/CentOS 7(复制/粘贴):
$ rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm

官方安装说明

  • 检查Nux Dextop是否安装成功:
    $ yum repolist

如果仓库列表中有Nux Dextop就安装成功。

  • 提示
    由于Nux Dextop仓库可能会与其他第三方库有冲突,比如(Repoforge和ATrpms)。
    所以,建议默认情况下不启用Nux Dextop仓库。

打开/etc/yum.repos.d/nux-dextop.repo,将"enabled=1" 修改为 "enabled=0"。
$ sudo vi /etc/yum.repos.d/nux-dextop.repo

当需要使用Nux Dextop仓库时,显式启用仓库。
$ sudo yum --enablerepo=nux-dextop install <package-name>

安装exfat支持库文件
yum --enablerepo=nux-dextop install fuse-exfat exfat-utils


  • 给账户增加 sudo 权限
    首先更改 /etc/sudoers 文件权限为可读可写
    在 /etc/sudoers 文件里找到
root ALL=(ALL:ALL) ALL

在其下方添加

NewUserName ALL=(ALL:ALL) ALL

此时如果提示 sudoers 全局可写错误,且无法使用 sudo 命令时,就需要将 sudoers 文件权限修改为仅 root:root 可读

# 首先关闭 Linux
# 开启 Linux 同时按住 Shift 进入 GNU GRUB
# 选择 Linux Advanced
# 光标移动到 recovery mode 按下 e 键(不要回车)
# 在编辑器中找到有 Linux 字样的一行,将其中的 ro 改为 rw
# 修改完后,直接按下 Ctrl+X,再选择 root 选项,既可以 root 身份进入终端
# 此时可以将 sudoers 文件权限改为 root:root 只读模式
  • 如果使用 apt 安装软件包时提示找不到该软件,而又确信该软件一定存在时,需要更新一下软件列表:
sudo apt update
sudo apt upgrade
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,772评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,458评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,610评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,640评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,657评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,590评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,962评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,631评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,870评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,611评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,704评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,386评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,969评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,944评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,179评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,742评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,440评论 2 342

推荐阅读更多精彩内容

  • linux资料总章2.1 1.0写的不好抱歉 但是2.0已经改了很多 但是错误还是无法避免 以后资料会慢慢更新 大...
    数据革命阅读 12,130评论 2 34
  • 1,X Window是一个协议,独立于操作系统,有很多种实现,比如KDE,GNOME,FVWM等,在登录时可以自由...
    liuchangng阅读 696评论 1 1
  • Linux 系统启动过程 Linux系统的启动过程并不是大家想象中的那么复杂,其过程可以分为5个阶段: 内核的引导...
    小小少年Boy阅读 243评论 0 3
  • 基础命令 主要的命令和快捷键 Linux系统命令由三部分组成:cmd + [options]+[operation...
    485b1aca799e阅读 1,085评论 0 0
  • [toc] Linux 基本结构 分区 主分区4个 拓展分区1个不能包含数据,只做标识 逻辑分区 挂载点 /boo...
    Rayhaha阅读 406评论 3 1