LInux学习

1. Linux快捷键

date:显示当前的时间

history:显示历史打过的命令

ctrl+p:向上调用历史命令

ctrl+n:向下调用历史命令

ctrl+b:光标向左移动

ctrl+f:光标向右移动

ctrl+a:光标迅速移动到当前行的头部

ctrl+e:光标移动到行尾

Linux系统中的光标很宽,会盖住一个字符,这个字符前面的字符表示光标前面的字符,被光标盖住的字符称为光标后面的字符。

ctrl+h:删除光标前面的字符

ctrl+d:删除光标后面的字符(被光标覆盖的字符)

ctrl+u:删除光标前面所有的字符

ctrl+l:清除屏幕(相当于clear)

2. Shell基本命令

Shell即命令解释器,从本质上讲,Shell是一个程序,它在用户和操作系统之间提供了一个面向行的可交互接口。用户在命令行中输入命令,运行在后台的Shell吧命令转换成指令代码发送给操作系统。

常用的Shell有Bourne Again Shell(BASH)、TCSH Shell、Z-Shell等。

以下命令均为BASH。

xal1@xal1-virtual-machine:~$

  • xal1:表示用户名
  • @:表示在
  • xal1-virtual-machine:表示在设置虚拟机的时候设置的主机名
  • ~:表示用户主目录。用户主目录是/home下的一个子目录,而不是home目录。
xal1@xal1-virtual-machine:~$ pwd
/home/xal1
  • $:表示命令提示符,也表示当前用户为普通用户。如果提示符为#,则表示当前用户为root用户。

###Tab键:命令补全

1.按一次Tab键:在输入文件名的时候,只需要输入开头几个字符,然后按下Tab键,Shell就会自动把文件名自动补全。

2.按两次Tab键:如果以已键入字符开头的文件不止一个,那么可以连续按两次Tab,Shell会以列表形式给出所有以键入字符开头的文件。

”*“,”?“,”[]“:通配符

“*”:用于匹配文件名中任意长度长度的字符串。

## *.py 即可以列出当前目录下所有的py文件

root@xal1-virtual-machine:/bin# ls *.py
mesa-overlay-control.py

”?“:类似于”*“通配符,但是它只匹配一个字符。

## test? 用于匹配文件名以test开头而后跟一个字符的文件

xal1@xal1-virtual-machine:~/study$ ls test?
test1  test2  test3  testA  testB  testC

”[]“:用于匹配所有出现在方括号内的字符。

也可使用短线”-“来指定一个范围,所有包含在上下界之间的字符都会被匹配,数字和字母都可以。

xal1@xal1-virtual-machine:~/study$ ls test[1A]
test1  testA
xal1@xal1-virtual-machine:~/study$ ls test[1-3]
test1  test2  test3
xal1@xal1-virtual-machine:~/study$ ls test[A-C]
testA  testB  testC

pwd:显示当前目录

pwd命令会显示当前所在的位置,即工作目录。

root@xal1-virtual-machine:/# cd /usr/local/bin/
root@xal1-virtual-machine:/usr/local/bin# pwd
/usr/local/bin

cd:改变目录

$ cd /                          ##进入根目录
$ cd ..                         ##进入当前目录的上一级目录
$ cd bin/						##cd path 表示进入某个目录
$ cd ../..						##直接进入根目录
$ cd 							##回到用户自己的主目录
$ cd ~							##回到用户自己的主目录
$ cd -							##表示在临近的两个目录之间进行切换

tips:在Shell中,“/”表示根目录,“~”表示用户主目录,“…”代表当前目录的上一级目录,“.”表示当前目录。

ls:列出目录内容

## ls	用于当前目录下的所有文件和子目录
xal1@xal1-virtual-machine:/usr/bin$ cd ~
xal1@xal1-virtual-machine:~$ ls
公共的  模板  视频  图片  文档  下载  音乐  桌面  study

## ls /		查看根目录

## 默认情况下,在命令行中,目录显示为蓝色;普通文件显示为白色;可执行文件显示为草绿色;淡蓝色则表示这个文件是一个链接文件。
## ls -F	会在每个目录后加上/,在可执行文件后加*,在链接文件后加@
xal1@xal1-virtual-machine:/usr/bin$ ls -F
'['*                                   mformat@
 aa-enabled*                           migrate-pubring-from-classic-gpg*
 aa-exec*                              mimeopen*
 aconnect*                             mimetype*
 acpi_listen*                          min12xxw*
 add-apt-repository*                   minfo@

## ls -a	用于显示所有的文件
xal1@xal1-virtual-machine:~$ ls -a
.  ..  公共的  模板  视频  图片  文档  下载  音乐  桌面  .bash_history  .bash_logout  .bashrc  .cache  .config  .gnupg  .local  .mozilla  .profile  study  .sudo_as_admin_successful  .thunderbird
## 可以看到很多头部带“.”的文件,在Linux上,这些文件被称作隐含文件,在默认情况下不会显示,除非指定 -a。

## ls -ld   用于查看一个目录的属性
## ls -l	用于查看当前目录下所有文件的属性
xal1@xal1-virtual-machine:/$ cd /etc/fonts/
xal1@xal1-virtual-machine:/etc/fonts$ ls -l
总用量 12
drwxr-xr-x 2 root root 4096 81 00:32 conf.avail
drwxr-xr-x 2 root root 4096 91 15:10 conf.d
-rw-r--r-- 1 root root 2808 46 18:09 fonts.conf
##总共有九个不同的信息栏,从左到右依次是:
    ##文件的权限标志
    ##文件的硬链接个数
    ##文件所有者的用户名
    ##该用户所在的用户组组名
    ##文件的大小
    ##最后一次被修改时的日期(月)
    ##最后一次被修改时的日期(日)
    ##最后一次被修改时的时间
    ##文件名

##在ls命令后面跟上路径名可以查看改子目录中的内容
xal1@xal1-virtual-machine:/$ ls /etc/init.d/
acpid             grub-common        pulseaudio-enable-autospawn
alsa-utils        hwclock.sh         rsync
anacron           irqbalance         rsyslog
apparmor          kerneloops         saned
apport            keyboard-setup.sh  speech-dispatcher
avahi-daemon      kmod               spice-vdagent
bluetooth         network-manager    udev
console-setup.sh  open-vm-tools      ufw
cron              openvpn            unattended-upgrades
cups              plymouth           uuidd
cups-browsed      plymouth-log       whoopsie
dbus              pppd-dns           x11-common
gdm3              procps

cat和more:查看文本文件

cat

cat命令通常用于查看文本文件的内容,后跟文件名作为参数。

cat -n 用于在每一行前面显示行号。

cat命令会一次性将内容全部显示在屏幕上,有时候这会是一个致命的缺陷。

more

more命令可以一页一页的显示文件。

more命令会在最后显示一个百分比,表示已显示的内容占整个文件的比例。

按空格键下翻一页,看Enter键下翻一行,按Q键退出。

head和tail:阅读文件的开头和结尾

可以用-n 来指定显示的行数。

xal1@xal1-virtual-machine:~/study$ head -n 2 day weather
==> day <==
Monday
Tuesday

==> weather <==
rainy
sunny

xal1@xal1-virtual-machine:~/study$ tail -n 2 day weather
==> day <==
Saturday
Sunday

==> weather <==
cloudy
windy

grep:查找文件内容

为了在文件中快速的查找信息,可以使用grep。

例如,在文件day中查找包含un的信息:

xal1@xal1-virtual-machine:~/study$ grep un day
Sunday

grep有两个参数,第一个参数为被搜索的关键词,第二个参数为所搜索的文件。

grep也可以指定多个文件来搜索。

xal1@xal1-virtual-machine:~/study$ grep un day weather 
day:Sunday
weather:sunny

find:查找文件

语法:find [path…] [expression]

xal1@xal1-virtual-machine:/$ find usr/bin/ -name zip -print
usr/bin/zip
  • usr/bin/:一个文件路径,find会深入这个路径的每一个子目录去查找,如果指定的路径是“/”,那么就表示查找整个文件系统
  • -name:指定文件名称,这里是zip
  • -print:表示将结果输出到标准输出(这里指屏幕)
  • find命令会打印出文件的绝对路径

find命令还可以指定文件的类型。在Linux中,包括目录和设备都以文件的形式表现,可以使用-type 来定位特殊的文件类型。

xal1@xal1-virtual-machine:/$ find etc/ -name init.d -type d -print
etc/init.d
find: ‘etc/polkit-1/localauthority’: 权限不够
find: ‘etc/cups/ssl’: 权限不够
find: ‘etc/ssl/private’: 权限不够

-type可选用参数如下表所示:

参数含义
b块设备文件
c字符设备文件
d目录文件
f普通文件
p命令管道
l符号链接

还可以通过指定时间来指导find命令查找文件。

-atime n 用来查找最后一次使用在n天前的文件。

-mtime n 用来查找最后一次修改在n天前的文件。

用+n来表示大于n,-n用来表示小于n。

locate:更快速地定位文件

当你不记得文件名时locate是个不错的选择:

xal1@xal1-virtual-machine:/$ locate *.doc
/snap/gnome-3-34-1804/36/usr/lib/python2.7/pdb.doc

whereis:查找特定的程序

whereis命令用于查找程序文件,并提供这个文件的二进制可执行文件、源代码文件和使用手册页存放的位置。

xal1@xal1-virtual-machine:/$ whereis find
find: /usr/bin/find /usr/share/man/man1/find.1.gz /usr/share/info/find.info-2.gz /usr/share/info/find.info-1.gz /usr/share/info/find.info.gz

可用-b选项让whereis只查找这个程序的二进制文件:

xal1@xal1-virtual-machine:/$ whereis -b  find
find: /usr/bin/find

如果whereis无法找到一个文件,那么将返回一个空字符串。

用户版本信息查看

who

who命令可以查看当前系统中有哪些人登录,以及他们都在哪个工作台上。

xal1@xal1-virtual-machine:/$ who
xal1 :0           2020-09-02 18:09 (:0)
whoami

有时候可能会忘记自己是以什么身份登录到系统,特别当需要以特定身份启动某个程序时,这个命令会很有用。whoami回答“我是谁”的问题。

xal1@xal1-virtual-machine:/$ whoami
xal1
uname

用于显示当前系统的版本信息。

-a 选项会给出当前操作系统的所有有用信息。

-r选项会给出当前操作系统的内核版本信息。

xal1@xal1-virtual-machine:/$ uname -a
Linux xal1-virtual-machine 5.4.0-45-generic #49-Ubuntu SMP Wed Aug 26 13:38:52 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
xal1@xal1-virtual-machine:/$ uname -r
5.4.0-45-generic

man:寻求帮助

man命令可以很方便的获取某个命令的帮助信息。

man命令在显示手册页的时候实际调用的时less程序。可以通过方向键或J键(表示向上)、K键(表示向下)上下翻动。空格键用于向下翻页,Q键退出。

man调用手册的完整信息。

whatis和apropos

whatis

从某个程序的手册页中抽取出一行简单的介绍性文字,帮助用户理解程序的大致用途。

xal1@xal1-virtual-machine:/$ whatis find
find (1)             - search for files in a directory hierarchy
apropos

与whatis相反,apropos这个命令可以通过使用手册来反查到某个命令。如果一个用户想搜索一个文件,而又想不起来使用哪个命令时,可以求助apropos。

xal1@xal1-virtual-machine:/$ apropos search
apropos (1)          - search the manual page names and descriptions
apt-patterns (7)     - Syntax and semantics of apt search patterns
badblocks (8)        - search a device for bad blocks
bzegrep (1)          - search possibly bzip2 compressed files for a regular e...
bzfgrep (1)          - search possibly bzip2 compressed files for a regular e...
bzgrep (1)           - search possibly bzip2 compressed files for a regular e...
find (1)             - search for files in a directory hierarchy
lzegrep (1)          - search compressed files for a regular expression
lzfgrep (1)          - search compressed files for a regular expression
lzgrep (1)           - search compressed files for a regular expression
manpath (1)          - determine search path for manual pages
tracker-search (1)   - Search for content by type or across all types
xzegrep (1)          - search compressed files for a regular expression
xzfgrep (1)          - search compressed files for a regular expression
xzgrep (1)           - search compressed files for a regular expression
zegrep (1)           - search possibly compressed files for a regular expression
zfgrep (1)           - search possibly compressed files for a regular expression
zgrep (1)            - search possibly compressed files for a regular expression
zipgrep (1)          - search files in a ZIP archive for lines matching a pat...

apropos可以将包含“search”的条目一并列出,总能从中找到想要的。

3. 文件目录管理

Linux文件系统的架构

Linux系统没有盘符的概念,文件目录为树结构。下表列出了Linux系统主要目录及其内容:

目录内容
/bin构建最小系统所需要的命令(最常用的命令)
/boot内核与启动文件
/dev各种设备文件
/etc系统软件的启动和配置文件
/home用户的主目录,有多少个用户就会显示几个用户名称
/libC编译器的库
/media可移动介质的安装点
/opt可选的应用软件包(很少使用)
/proc进程的映像
/root超级用户root的主目录
/sbin和系统操作有关的命令
/tmp临时文件的存放点
/usr非系统的程序和命令,类似于windows下的program files
/var系统专用的数据和配置文件
/lost+found这个目录一般是空的,当系统非法关机后,这里就会保存一些文件碎片,可用于恢复相关信息

文件或目录颜色的一般情况

白色——普通文件

蓝色——目录

草绿色——可执行文件

红色——压缩文件

青色——链接文件,相当于Windows下的快捷方式

黄色——设备文件

  • block 块
  • char 字符
  • fifo 管道

灰色——其他文件

以上颜色并不能一概而论,仅是通常情况下。

mkdir:建立目录

mkdir dirname:创建一个目录

$ cd ~
$ madir document picture				##新建两个目录

用户也可以用绝对路径来新建目录。

$ mkdir ~/picture/temp					##在主目录下新建名为temp的目录
  • 如果主目录下存在picture目录,则该命令是合法的。
  • 如果不存在,则需要在mkdir参数加上-p选项,则可以完整的创建一个子目录结构。

touch:建立一个空文件

touch filename

就可以创建一个空文件,在Linux中,创建文件时可以不带后缀。

touch命令的另一个用途是用来更新一个文件的建立日期和时间,这个功能在自动备份和整理文件的时候非常有用,这使得程序可以决定哪些文件已经被备份或整理过了。

mv:移动和重命名

$ mv hello study/						##将hello文件移动到study目录下

$ mv study/ test/						##将study目录移动到test目录下
  • mv在移动文件时不会有任何提示,在遇到相同文件名的文件则会直接覆盖!
  • -i:为了解决上述问题,给出了-i选项,该选项会使mv命令在遇到同文件名的文件时给出提示,y表示覆盖,n表示跳过。
  • -b:解决上述问题的另一个选项是-b,在移动文件前,会在目标目录的同名文件的文件名后面加~,从而避免被覆盖。
$ mv hello hello~

在同一个文件夹下移动一个文件即是重命名。

cp:复制文件和目录

$ cp day ~/test/						##将day文件复制到test目录下

和mv命令一样,cp在复制的过程中不会有提示直接覆盖同名文件。使用-i和-b可以解决这一问题。

cp在执行命令的时候会自动跳过目录。如:

xal1@xal1-virtual-machine:~$ cp test/ study/
cp: 未指定 -r;略过目录'test/'

使用-r 选项可以将子目录连同其中的文件一起复制到另一个目录下:

xal1@xal1-virtual-machine:~$ cp test/ study/ -r
xal1@xal1-virtual-machine:~$ cd study/
xal1@xal1-virtual-machine:~/study$ tree
.
├── day
├── test
│   ├── day
│   └── hello
├── test1
├── test2
├── test3
├── testA
├── testB
├── testC
└── weather

rmdir和rm:删除目录和文件

rmdir:只能删除空目录

rm:可以一次删除一个或多个文件。可以加一下参数:

-r:rm本身并不能删除一整个目录,加上-r命令会递归地删除目录下所有的文件和子目录。

-i:这个选项会在删除文件前给出提示,回答y表示删除这个文件,n表示跳过这个文件。对于只读选项,即便不加-i选项rm命令也会对此进行提示。

-f:可以避免上述-i的交互,对这些问题自动回答y。

4. 软件包管理

简述

软件包将安装软件的一系列细节操作打包,使得软件安装变得便捷。但是软件包也不是万能的,它存在依赖性问题。

一些高级软件管理工具如APTyum可以自动搜索依赖关系并执行安装。

常用的软件安装包格式有两种:

  • RPM是Red Hat软件包管理器,被大多数Linux发行版使用
  • .deb是Debian和Ubuntu上使用的格式

dpkg:管理.deb软件包

  • -i:–install,安装,会在安装软件包之前把系统上原有的旧版本删除
  • -l:查看安装包的相关信息
  • -S:–search,查看所安装的软件向系统复制了哪些文件
  • -r:–remove,卸载已安装的软件包

rpm:管理RPM软件包

  • -i:安装
  • -v:用于显示rpm当前正在执行的工作
  • -h:通过打印一系列的#来提醒用户当前的安装进度
    • -v和-h通常和其他选项合并使用,合并时也可省略“-”,如:直接输入“-rvh”
  • -U:用户升级软件包
  • -q:查询当前系统中已经安装的软件包,需要提供软件包的名字,该命令会给出其版本信息
    • -qa:加上-a选项则可以列出当前系统上已经安装的所有软件包的信息
  • -e:卸载软件包,需要指定需要卸载的软件包的名字。若目标软件包被多个软件包依赖,则RPM会谨慎的拒绝这个要求,加上–nodeps会继续执行,但卸载后可能会出现无法预料的结果
    • –test:加上–test选项,它要求RPM模拟删除软件包的全过程,但是不会真的删除软件包。
    • -vv:加上-vv,则要求RPM输出完整的调试信息

APT:高级软件包工具

Advance Package Tool

apt-get:执行和软件包安装有关的所有操作

apt-cache:主要用于查找软件包的相关信息

下载和安装软件包

使用apt-get -h命令可以查看apt-get的完整用法:
在这里插入图片描述

查询软件包

apt-cache search:可以搜索软件包列表种特定的软件包。

  • 如果不确定软件包的名字,输入名字的一部分,则该命令会按字母顺序列出一切包含该字符的软件包。

apt-cache depends:用于列出软件包特定的依赖关系。

5. Internet上的LInux资源

表1. 常用的国外LInux资源

国外网站说明
lwn.net来自Linux和开放源代码界的新闻
http://freecode.com/最齐全的Linux/UNIX软件库
www.justlinux.com信息齐全的Linux学习网站
www.kernel.orgLinux内核的官方网站
www.linux.com提供全方位的Linux信息
www.linuxhq.com提供内核信息和补丁的汇总
www.linuxtoday.com非常完整的Linux新闻站点

表2. 常用的国内Linux资源

国内网站说明
www.chinaunix.net国内最大的Linux/UNIX技术社区网站
www.linuxeden.comLinux伊甸园,最大的中文开源资讯门户网站
www.linuxfans.org中国Linux公社,拥有自己的Linux发行版本Magic Linux
www.linuxsir.org提供Linux各种资源,包括资讯、软件、手册等
Logo

更多推荐