关于Linux
在做项目的过程中,遇到需要针对Linux板进行相关操作,自此产生了对Linux的相关学习兴趣。然而,Linux系统实在是博大而又精深,对于用了十年也不敢说精通的易操作的windows,Linux的指令系统倒是还有些让人摸不到头脑。乱麻理不清,就分段整理,本文旨在梳理Linux的常用指令,以便日后查阅及使用。
- 查看目录与文件
- 基本文件管理
- 重定向与管道
Linux的优势
- 免费
Linux的开源开发模式是免费的,用户并不需要为使用这个系统交付任何费用。 - 开源
—Linux的社区开发模式使得世界各地有数百万志愿者为Linux提供技术支持和软件更新,使的Linux对于安全漏洞可以提供更快速的反应。在企业级应用领域,更少被病毒和安全问题困扰的Linux成为众多系统管理员的首选
—相比于Windows,在实现同样的功能时,Linux所消耗的系统资源比Windows更少,同时更为稳定
—Linux上的开源软件非常丰富,能够完成日常办公中的所有任务,并且不需要为此缴纳任何费用 - 开放
用户可以订制属于自己的功能,在Linux中,没有什么是不能被修改的
Linux快捷键
Ctrl+Alt+F1~F6 进入命令行模式
Ctrl+Alt+F7 进入X窗口模式
Ctrl+Alt+t 进入伪终端,逻辑上的终端设备
Tab 补全命令行
Shell基本命令
Shell是一个程序,它在用户和操作系统之间提供了一个面向行的可交互接口。用户在命令行中输入命令,运行在后台的Shell把命令转换成指令代码发送给操作系统
浏览硬盘
cd [目录名] 进入指定目录
参数 | 功能 |
---|---|
/ | 进入根目录 |
(空) | 进入用户主目录 |
.. | 返回上级目录 |
ls 列出文件和目录
参数 | 功能 |
---|---|
-l | 列出文件的具体信息 |
P.S.
ls -l|more | 分屏显现,能在当时屏退出,但不能一页一页翻屏
ls -l|less | 能用pgup,pgdw 翻页,但不能在当时方位退出
find [option] [path…] [expression]在指定范围查找文件
参数 | 功能 |
---|---|
-name | 文件名 |
-type | 类型(f普通文件 b块设备文件 c字符设备文件 d目录文件 p命名管道 l符号链接) |
-atime | 最后一次使用在n天的文件 |
-mtime | 最后一次修改在n天前的文件 |
find ~/ -name *.c -type c -print 查找用户主目录下所有的c程序文件
find /user/bin/ -type f -atime +100 -print 查找最后一次使用在100天或100天以前的命令
locate [expression]定位文件,用于完全不记得文件放置在何目录下
查看文本文件
cat 查看文件内容
参数 | 功能 |
---|---|
-n | 在每一行前显示行号 |
more 查看文件内容,可翻页(下翻页)
相关按键 | 功能 |
---|---|
空格键 | 向下翻一页 |
Enter键 | 向下滚动一行 |
Q键 | 退出 |
head/tail 阅读文件的开头和结尾
参数 | 功能 |
---|---|
-n | 指定行数 |
less 查看文件内容,多功能浏览
相关按键 | 功能 |
---|---|
空格键 | 向下翻一页 |
B键 | 向上翻一页 |
/+字符串 | 查找指定内容 |
grep [options] PATTERN [FILE] 查找文件内容,支持正则表达式
grep un day 在day文件里查找包含un的行
gerp ‘struct list’ day 如果要搜索的关键词里含有空格,必须加单引号
文件目录管理
Linux不存在所谓的盘符,已建立的文件系统的硬盘分区被挂载在某一个目录下。
建立文件和目录
mkdir 建立目录,可以一次建立一个或几个目录
mkdir document picture 在当前目录下建立document、picture两个目录
参数 | 功能 |
---|---|
mkdir -p ~/tempx/job | 分层创建,首先创建tempx,然后创建job |
touch 建立一个空文件,或更新一个已存在文件的建立时间和日期
mv [file] [destination] 移动文件
参数 | 功能 |
---|---|
mv -i [filename] [dictionary] | 如果有同名文件,移动前询问是否覆盖 |
mv -b [filename] [dictionary] | 在移动文件前,首先在目标目录的同名文件名后加一个“~” |
mv [filename] [filename1] | 将filename的文件重命名为filename1 |
cp [file] [destination] 复制文件
-i -b参数同上
-r 将子目录连同其中的文件一起复制到另一个子目录下
rmdir rm 删除目录和文件
rmdir 删除目录,只能删除空目录
rm [destination/file]可以一次删除一个或几个文件
参数 | 功能 |
---|---|
-i | 删除前询问 |
-f | 对不加-i的只读文件自动回答y |
-r | 递归删除目录下的所有文件和子目录 |
文件和目录的权限
Linux针对三种人设置权限——用户、用户组、其他人
chown [option] … [owner] [:[group] file…] 改变文件的所有权
如果只需要更改文件的用户,可以省略参数:group;如果只要改变文件的用户组,不可省略:
示例 | 功能 |
---|---|
sudo chown lewis:root days | 将days的用户、用户组修改 |
sudo chown lewis days | 修改days的用户 |
sudo chown :root days | 修改days的用户组 |
-r | 改变一个目录及其下所有文件和子目录的所有权设置 |
chmod 改变文件权限
u 用户 g用户组 o其他 a所有
chmod u+x days
chmod a-x days
chmod ug=rw,o=r days
chmod 711 days(rwx中,r为4,w为2,x为1)
只有文件属主和root才有权修改文件权限
软连接与硬链接
ln -s days my_days 建立一个名为my_days的符号链接指向文本文件days
访问my_days就相当于访问days,删除my_days并不会影响到days,类似于快捷方式
ln days hard_days 硬链接,将两个独立文件联系在一起
这两个文件拥有相同的内容,对其中一个文件的改动会反映到另一个文件中
区别:硬链接是直接引用,符号链接是通过名称引用
输入输出重定向和管道
重定向和管道允许用户人为的改变程序获取输入和产生输出的位置
输出重定向
程序在默认情况下输出结果被称为标准输出(stdout),通常标准输出总是指向显示器
输出重定向用于把程序的输出转移到另一个地方去
ls > ~/ls_out ls的输出在用户主目录的ls_out文件中
p.s.如果文件不存在,那么重定向会试图创建这个文件;如果文件已经存在了,那么”>”会删除文件中的原有内容,用新内容代替
uname -r >> date_out 重定向符号>>将新命令产生的信息追加到指定文件的末尾
输入重定向
标准输入stdin,标准输入总是指向键盘
输入重定向<可以让一个程序从一个文件中获取输入
cat < days
cat << EOF ##j结束标志可以自由定义
立即文档明确告诉shell从键盘接受输入,直到匹配到结束符,将所有的输入一起传递给程序
$ cat << 124
> dfg
> ert
> 124
dfg
ert
管道
“|”将一条命令的输出连接到另一条命令输入
ls | grep ay
ls首先列出当前目录下所有文件名,管道|接收到这些输出将他们发送给grep命令作为输入,最后grep在这堆文件列表中查找包含字符串ay的文件名