Linux基础命令整理

来源:互联网 发布:香港崇光sogo mac 编辑:程序博客网 时间:2024/05/20 05:11

在Linux学习过程中对一些基础命令的整理,方便自己以后的查询:


常用按键组合

按键 作用 Ctrl+c 终止当前程序 Ctrl+d 键盘输入结束或退出终端 Ctrl+s 暂停当前程序,暂停后按下任意键恢复运行 Ctrl+z 将当前程序放到后台运行,恢复到前台为命令fg Ctrl+a 将光标移至输入行头,相当于Home键 Ctrl+e 将光标移至输入行末,相当于End键 Ctrl+k 删除从光标所在位置到行末 Alt+Backspace 向前删除一个单词 Shift+PgUp 将终端显示向上滚动 Shift+PgDn 将终端显示向下滚动 Tab 自动补全

用户管理

命令 功能 Ctrl+Alt+F1~6 切换terminal Ctrl+Alt+F7 切换回图形界面 who am i 查看用户 who mom likes 查看用户 whoami 只显示当前用户名

who+命令其它常用参数:

参数 说明 -a 打印能打印的全部 -d 打印死掉的进程 -m 同am i,mom likes -q 打印当前登录用户数及用户名 -u 打印当前登录用户登录信息 -r 打印运行等级

su&sudo:

su 可以切换到用户user,执行时需要输入目标用户的密码

sudo 可以以特权级别运行cmd命令,需要当前用户属于sudo组,且需要输入当前用户密码

su - 命令也是切换用户,同时环境变量也会跟着改变成目标用户的环境变量

命令 功能 sudo adduser 创建用户 su -l 切换用户 groups 查看user所在用户组

“cat /etc/group | sort”命令:

这里 cat 命令用于读取指定文件的内容并打印到终端输出,| sort 表示将读取的文本进行一个字典排序再输出,也可以过滤掉不想要的内容,
cat /etc/group | grep -E “想要的内容”

sudo权限:

sudo ls 查看当前用户是否有sudo权限赋予sudo权限$ su root # 此处需要输入root用户密码$ groups$ sudo usermod -G sudo$ groups

删除用户:

sudo deluser lilei –remove-home


Shell 常用通配符

字符 含义 * 匹配 0 或多个字符 ? 匹配任意一个字符 [list] 匹配 list 中的任意单一字符 [!list] 匹配 除list 中的任意单一字符以外的字符 [c1-c2] 匹配 c1-c2 中的任意单一字符 如:[0-9] [a-z] {string1,string2,…} 匹配 string1 或 string2 (或更多)其一字符串 {c1..c2} 匹配 c1-c2 中全部字符 如{1..10}

Manual pages

man command 获取命令的manual pages说明

man num command 获取命令的区段说明

num 命令 1 一般命令 2 系统调用 3 库函数,涵盖了C标准函数库 4 特殊文件(通常是/dev中的设备)和驱动程序 5 文件格式和约定 6 游戏和屏保 7 杂项 8 系统管理命令和守护进程

文件及文件权限

*Linux里面一切皆文件

命令 功能 ls -l 较长格式列出文件 touch 创建文件 mkdir 创建文件夹 mkdir -p father/son/grandson 创建多级目录

变更文件所有者

$ cd /home/$ ls$ sudo chown$ cp /home/

修改文件权限
方法1:加减赋值
方法2:二进制权限表达


目录结构

安装tree包

sudo apt-get updatesudo apt-get install treetree 查看当前目录tree / 查看所有目录

路径

使用 cd 命令可以切换目录,在 Linux 里面使用 . 表示当前目录,.. 表示上一级目录。
以 . 开头的文件都是隐藏文件,所以这两个目录必然也是隐藏的,你可以使用 ls -a 命令查看隐藏文件。
- 表示上一次所在目录,~ 通常表示当前用户的”home”目录。使用 pwd 命令可以获取当前所在路径(绝对路径)。


文件目录操作

命令 功能 cp 复制文件到某目录 cp -r/-R 复制目录1到目录2 rm 删除文件 rm -f 强制删除文件 rm -r/-R 删除目录 mv 移动文件到目录 mv 重命名文件(批量操作rename,需用到正则表达式) cat 打印文件内容 cat -n 增加行数并打印 tac 逆行序打印 nl file 增加行数信息并打印 more 分页显示 less 分页显示屏可修改 head/tail 看头/尾10行 head/tail -n 看头/尾num行 tail -f 实时监控

-b : 指定添加行号的方式,主要有两种:
-b a:表示无论是否为空行,同样列出行号(“cat -n”就是这种方式)
-b t:只列出非空行的编号并列出(默认为这种方式)
-n : 设置行号的样式,主要有三种:
-n ln:在行号字段最左端显
-n rn:在行号字段最右边显示,且不加 0
-n rz:在行号字段最右边显示,且加 0
-w : 行号字段占用的位数(默认为 6 位)


环境变量

PATH=$PATH: path设置,使用绝对路径

全局修改PATH

$echo "PATH=$PATH:" >> .zshrc小心啊,教程用的是zshell,而很多用的bashell$zsh/bash 切换到zshell或bashellbash下命令此处没有深究,实际用的时候注意
变量修改方式 说明 ${变量名#匹配字串} 从头向后开始匹配,删除符合匹配字串的最短数据 ${变量名##匹配字串} 从头向后开始匹配,删除符合匹配字串的最长数据 ${变量名%匹配字串} 从尾向前开始匹配,删除符合匹配字串的最短数据 ${变量名%%匹配字串} 从尾向前开始匹配,删除符合匹配字串的最长数据 ${变量名/旧的字串/新的字串} 将符合旧字串的第一个字串替换为新的字串 ${变量名//旧的字串/新的字串} 将符合旧字串的全部字串替换为新的字串 unset 删除变量 source zshrc 环境变量立即生效 . ./.zshrc 环境变量立即生效

文件搜索

命令 功能 whereis 简单查找 locate / 某一目录下关键词查找 which 只从PATH环境变量指定的路径去找 find 异常强大的查找命令

文件打包&解压

$ zip () () zip打包前()代表可加指令,如-r打包全部内容,-q不打印过程,-o输出文件名,-1~9表示压缩级别,-e创建加密压缩包,-l表示转换为windows换行形式后()代表可加指令,如-x排除开不打包部分e.g. $zip -r -9 -q -o linux_test.zip /home/lizhangfan -x ~/*.zip

path一定要用绝对路径

$ unzip () () zip解压前()可加-q安静模式,-O表示解压到指定编码后()加-d 解压到指定目录unzip -l 只查看不解压

安装rar与unrar

$ sudo apt-get update$ sudo apt-get install rar unrar
$ rar a rar打包$ rar d 从rar中删除某文件$ rar l 只查看不解压(rar命令参数没有-)$ unrar x rar解压$ tar -cf tar打包路径(tar只打包不压缩,打包后还可被部分压缩方式继续压缩)$ tar -xf -C 解包到已存在目录$ tar -tf 只查看不解包$ tar -czf 创建tar.gz压缩包$ tar -xzf 创建tar.gz压缩包(对于tar.gz参数为-z,tar.xz参数为-J,tar.bz2为-j)$ du -h 查看包大小(加了-h才会以M等单位显示)

文件系统操作

命令 功能 df -h 查看磁盘目录容量 du -h 查看目录容量 du -h -d ~ 查看n+1及目录的信息

磁盘管理

暂无


帮助命令

$ type 查看命令是内建命令还是外部命令$ help 查看内建命令(bash下)$ --help 查看外部命令(bash下)$ man 查看命令(详细)$ info 查看命令(bash下)(非常详细)

任务计划

打开cron

$ sudo service rsyslog start$ sudo cron -f &

使用crontab

$ crontab -e 打开crontab,选择基本的vim格式是分,时,日,月,周(0/7都是星期日)+ 指令 代表任何时刻, ,代表离散的分隔时段 -一段时间范围 /n每隔n个时间单位e.g. /1 echo "hello wolrd" //每隔一分钟打印一次hello world
$ crontab -l 显示添加了哪些任务$ ps aux | grep cron 查看cron$ pgrep cron 查看cron$ sudo tail -f /var/log/syslog 查看日志情况$ crontab -r 删除任务

命令顺序执行控制

顺序执行:把几条命令用;连起来

e.g.  sudo apt-get update;sudo apt-get install some-tool;some-tool //应用程序安装及使用

选择执行:which 条件 &&/|| 命令

e.g.   which cowsay>/dev/null && cowsay -f head-in ohch~

如果前面装了cowsay就执行后面的命令

e.g.    which cowsay>/dev/null || echo "cowsay has not been install, please run 'sudo apt-get install cowsay' to install"

如果没装就打印信息

连接使用:    e.g.         which cowsay>/dev/null && echo "exist" || echo "not exist"

管道:前一命令 | 后一命令 前一命令作为后一命令的输入流

e.g.     ls -al /etc | less

常结合命令如cut,grep,wc,sort,uniq,tr,join,paste,col等


文本处理

tr 命令可以用来删除一段文本信息中的某些文字。或者将其进行转换。

$ tr [option] SET1 [SET2]

[option]
-d:删除和set1匹配的字符,注意不是全词匹配也不是按字符顺序匹配
-s:去除set1指定的在输入文本中连续并重复的字符

col 命令可以将Tab换成对等数量的空格键,或反转这个操作。

$ col [option]

[option]:
-x 将Tab转换为空格
-h 将空格转换为Tab(默认选项)

join命令可以将两个文件中包含相同内容的那一行合并在一起。

$ join [option] file1 file2

[option]:
-t 指定分隔符,默认为空格
-i 忽略大小写的差异
-1 指明第一个文件要用哪个字段来对比,,默认对比第一个字段
-2 指明第二个文件要用哪个字段来对比,,默认对比第一个字段

paste这个命令与join 命令类似,它是在不对比数据的情况下,简单地将多个文件合并一起,以Tab隔开。

$ paste [option] file...

[option]:
-d 指定合并的分隔符,默认为Tab
-s 不合并到一行,每个文件为一行


数据重定向

对于>或>>操作,它们分别是将标准输出导向一个文件或追加到一个文件中。这就是重定向,将原本输出到标准输出的数据重定向到一个文件中,因为标准输出(/dev/stdout)本身也是一个文件,我们将命令输出导向另一个文件自然也是没有任何问题的。


正则表达式

以下内容来自实验楼:

一个正则表达式通常被称为一个模式(pattern),为用来描述或者匹配一系列符合某个句法规则的字符串。
选择
|竖直分隔符表示选择,例如”boy|girl”可以匹配”boy”或者”girl”
数量限定
数量限定除了我们举例用的*,还有+加号,?问号,如果在一个模式中不加数量限定符则表示出现一次且仅出现一次:
+表示前面的字符必须出现至少一次(1次或多次),例如,”goo+gle”,可以匹配”gooogle”,”goooogle”等;
?表示前面的字符最多出现一次(0次或1次),例如,”colou?r”,可以匹配”color”或者”colour”;
*星号代表前面的字符可以不出现,也可以出现一次或者多次(0次、或1次、或多次),例如,“0*42”可以匹配42、042、0042、00042等。
范围和优先级
()圆括号可以用来定义模式字符串的范围和优先级,这可以简单的理解为是否将括号内的模式串作为一个整体。例如,”gr(a|e)y”等价于”gray|grey”,(这里体现了优先级,竖直分隔符用于选择a或者e而不是gra和ey),”(grand)?father”匹配father和grandfather(这里体验了范围,?将圆括号内容作为一个整体匹配)。
语法(部分)
正则表达式有多种不同的风格,下面列举一些常用的作为 PCRE 子集的适用于perl和python编程语言及grep或egrep的正则表达式匹配规则:(由于markdown表格解析的问题,下面的竖直分隔符用全角字符代替,实际使用时请换回半角字符)
PCRE(Perl Compatible Regular Expressions中文含义:perl语言兼容正则表达式)是一个用 C 语言编写的正则表达式函数库,由菲利普.海泽(Philip Hazel)编写。PCRE是一个轻量级的函数库,比Boost 之类的正则表达式库小得多。PCRE 十分易用,同时功能也很强大,性能超过了 POSIX 正则表达式库和一些经典的正则表达式库。

字符 描述 \ 将下一个字符标记为一个特殊字符、或一个原义字符。例如,“n”匹配字符“n”。“\n”匹配一个换行符。序列“\”匹配“\”而“(”则匹配“(”。 ^ 匹配输入字符串的开始位置。 $ 匹配输入字符串的结束位置。 {n} n是一个非负整数。匹配确定的n次。例如,“o{2}”不能匹配“Bob”中的“o”,但是能匹配“food”中的两个o。 {n,} n是一个非负整数。至少匹配n次。例如,“o{2,}”不能匹配“Bob”中的“o”,但能匹配“foooood”中的所有o。“o{1,}”等价于“o+”。“o{0,}”则等价于“o*”。 {n,m} m和n均为非负整数,其中n<=m。最少匹配n次且最多匹配m次。例如,“o{1,3}”将匹配“fooooood”中的前三个o。“o{0,1}”等价于“o?”。请注意在逗号和两个数之间不能有空格。 * 匹配前面的子表达式零次或多次。例如,zo*能匹配“z”、“zo”以及“zoo”。*等价于{0,}。 + 匹配前面的子表达式一次或多次。例如,“zo+”能匹配“zo”以及“zoo”,但不能匹配“z”。+等价于{1,}。 ? 匹配前面的子表达式零次或一次。例如,“do(es)?”可以匹配“do”或“does”中的“do”。?等价于{0,1}。 ? 当该字符紧跟在任何一个其他限制符(*,+,?,{n},{n,},{n,m})后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。例如,对于字符串“oooo”,“o+?”将匹配单个“o”,而“o+”将匹配所有“o”。 . 匹配除“\n”之外的任何单个字符。要匹配包括“\n”在内的任何字符,请使用像“(.|\n)”的模式。 (pattern) 匹配pattern并获取这一匹配的子字符串。该子字符串用于向后引用。要匹配圆括号字符,请使用“(”或“)”。 x|y 匹配x或y。例如,“z|food”能匹配“z”或“food”。“(z|f)ood”则匹配“zood”或“food”。 [xyz] 字符集合(character class)。匹配所包含的任意一个字符。例如,“[abc]”可以匹配“plain”中的“a”。其中特殊字符仅有反斜线\保持特殊含义,用于转义字符。其它特殊字符如星号、加号、各种括号等均作为普通字符。脱字符^如果出现在首位则表示负值字符集合;如果出现在字符串中间就仅作为普通字符。连字符 - 如果出现在字符串中间表示字符范围描述;如果如果出现在首位则仅作为普通字符。 [^xyz] 排除型(negate)字符集合。匹配未列出的任意字符。例如,“[^abc]”可以匹配“plain”中的“plin”。 [a-z] 字符范围。匹配指定范围内的任意字符。例如,“[a-z]”可以匹配“a”到“z”范围内的任意小写字母字符。 [^a-z] 排除型的字符范围。匹配任何不在指定范围内的任意字符。例如,“[^a-z]”可以匹配任何不在“a”到“z”范围内的任意字符。

优先级
优先级为从上到下从左到右,依次降低:

运算符 说明 \ 转义符 (), (?:), (?=), [] 括号和中括号 *、+、?、{n}、{n,}、{n,m} 限定符 ^、$、\任何元字符 定位点和序列 | 选择

常见的使用正则表达式的命令有grep命令,sed和awk等。


软件下载

apt-get命令:

工具 说明 install 其后加上软件包名,用于安装一个软件包 update 从软件源镜像服务器上下载/更新用于更新本地软件源的软件包列表 upgrade 升级本地可更新的全部软件包,但存在依赖问题时将不会升级,通常会在更新之前执行一次update dist-upgrade 解决依赖关系并升级(存在一定危险性) remove 移除已安装的软件包,包括与被移除软件包有依赖关系的软件包,但不包含软件包的配置文件 autoremove 移除之前被其他软件包依赖,但现在不再被使用的软件包 purge 与remove相同,但会完全移除软件包,包含其配置文件 clean 移除下载到本地的已经安装的软件包,默认保存在/var/cache/apt/archives/ autoclean 移除已安装的软件的旧版本软件包

下面是一些apt-get常用的参数:

参数 说明 -y 自动回应是否安装软件包的选项,在一些自动化安装脚本中使用这个参数将十分有用 -s 模拟安装 -q 静默安装方式,指定多个q或者-q=#,#表示数字,用于设定静默级别,这在你不想要在安装软件包时屏幕输出过多时很有用 -f 修复损坏的依赖关系 -d 只下载不安装 –reinstall 重新安装已经安装但可能存在问题的软件包 –install-suggests 同时安装APT给出的建议安装的软件包

安装软件包

$ apt-get install <软件包名>

重新安装

$ sudo apt-get --reinstall install <软件名>

软件升级
更新软件源

$ sudo apt-get update

升级没有依赖问题的软件包

$ sudo apt-get upgrade

升级并解决依赖关系

$ sudo apt-get dist-upgrade

卸载软件

sudo apt-get remove <软件名>

或者,你可以执行
不保留配置文件的移除

$ sudo apt-get purge w3m或者 sudo apt-get --purge remove

移除不再需要的被依赖的软件包

$ sudo apt-get autoremove

软件搜索

sudo apt-cache search softname1 softname2 softname3……

以deb形式打包的软件包,就需要使用dpkg命令来安装。

dpkg常用参数介绍:

参数 说明 -i 安装指定deb包 -R 后面加上目录名,用于安装该目录下的所有deb安装包 -r remove,移除某个已安装的软件包 -I 显示deb包文件的信息 -s 显示已安装软件的信息 -S 搜索已安装的软件包 -L 显示已安装软件包的目录信息

使用dpkg安装deb软件包

$ sudo dpkg -I ***.deb

使用dpkg -L查看deb包目录信息

$ sudo dpkg -L emacs

进程

命令后加&可后台运行ctrl+z 停止任务丢到后台jobs 查看后台任务fg [jobnumber] 把任务拿回前台运作bg [jobnumber]  把停止的任务后台运作kill -signal [jobsnumber] 杀进程

进程管理

top 动态查看当前进程ps 静态查看当前进程

关于参数值怎么看有很多要点,这里不做讨论。


日志系统

暂不讨论


其他命令

$ vimtutor vim学习
原创粉丝点击