Linux基础命令
1、Linux启动等级【 linit n 】
² 0—系统停机状态
² 1—单用户工作状态
² 2—多用户状态(没有NFS)
² 3—多用户状态(有NFS)
² 4—系统未使用,留给用户
² 5—图形界面
² 6—系统正常关闭并重新启动
命令
与文件、目录相关的命令
n ls【列出目录】
ls -L //d开头目录,-开头文件,竖着列
ls –m //横着列
ls –R //树状结构列
//…. 分页
n cd【绝对路径,和相对路径 】
.. //代表当前路径
n pwd【当前路径】
n whoami【当前用户】
n mkdir【创建目录】
-m: 对新建目录设置存取权限,也可以用chmod命令设置;
-p: 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录;若存在,不作任何处理,即不会覆盖现有文件夹。
mkdir -p ./js/login
n rmdir【删除目录,只能删除为空的目录】
n rm【删除目录或文件】
rm -r 文件名 //递归删除
rm -rf 目录名 //递推删除,无“询问”
rm -rf *.js //删除所有js文件
n touch【创建文件】
n cp【拷贝】
cp 1.txt 2.txt //将当前目录下1.txt复制一份名为2.txt
cp -r d1 d2 //将当前目录下d1目录复制一份命名为d2
n mv【移动文件】
mv 1.txt 路径 //移动文件
mv d1 路径 //移动目录
n vi【编辑文件;有两种模式,编辑模式和命令模式;默认进入命令模式】
命令模式下:
a append
dd 删除一行
dw 删除一个单词
o 向下插入一行
O 向上插入一行
i 进入插入模式
:w 存盘
:q 退出
:q! 不存盘退出
:wq 存盘退出
编辑模式:
Esc 进入命令模式
n 显示文件内容
More 3.txt 【分页列出文件】
Cat 3.txt 【正序】
tac 3.txt 【逆序】
head -n 3.txt 【前n行】
tail -n 3.txt 【后n行】
n ln【链接文件;分为软连接和硬链接】
ln 3.txt 3.link.txt
【二者是两个独立文件,但是同步更新,删除任意一个文件,不影响另一个文件】
ln -s 3.txt 3.link.txt 【相当于快捷方式,同步更新,其实是一个文件】
linux软连接和硬链接:http://blog.csdn.net/jlds123/article/details/6032146
n whereis ls【查询ls命令的相关内容,例如调用文件,帮助文档】
n echo $PATH【查看环境变量】
n find /etc -name my*【查找etc目录下的以my开头的文件】
创建挂载点:mount
mount 设备 挂载点
- 设备指的是一个具体的文件系统,可以用设备名或卷标名表示
- 挂载点必须是一个存在的目录。如果目录下原来有文件,则在文件系统挂载后,原文件暂时不能访问。直到挂载上的文件系统被卸载。
- 我们一般采用/mnt目录下的一个空目录为挂载点。
- 用户可以通过直接键入mount后回车来检查当前挂载中的文件系统
- 用户也可以通过查看/etc/mtab文件来查看当前挂载中的文件系统
sudo mount /dev/cdrom /mnt/cdr # Ubuntu的cdrom目录一般为"/dev/cdrom"
卸载挂载点:umount
umount [参数] 设备/挂载点
sudo umount /dev/cdrom sudo umount /mnt/cdr # 上述两行代码完成同样的功能
用户和组的概念
n useradd kang 【添加kang用户】
没有指定组的情况下,会添加一个和用户名同名的组。
/etc/group文件可查看 /etc/password文件可查看用户信息
n passwd kang 【为kang用户添加密码】
n userdel kang 【删除kang用户】
n groupadd student 【添加student组】
n groupdel student 【删除student组,组中如果有用户不能直接删除】
n usermod -g student kang 【将kang用户移动到student组中】
n useradd kang -g student 【新建kang用户所在组是student】
n su kang 【切换用户登录】 exit【返回】
文件权限
n -rw-r—r—
r【read】 w【write】 -【没有任何权限】 x【执行,运行】
分为三组,三个一组
第一组:文件所有者
第二组:同组其它人
第三组:其它人
n chmod【修改文件权限】
chmod +x 4.txt 【给所有用户添加可执行权限,对于4.txt】
chmod u+x 4.txt 【当拥有者】
chmod g+x 4.txt 【同组其它人】
chmod o+x 4.txt 【其它人】
n 学会 chamod 755 4.txt
111|101|101
n chown kang 4.txt 【修改文件所有者】
权限设置:chmod
chmod [-R] 权限 文件名
chmod 777 *.js #当前目录下的所有".js"文件的权限被更改为"777" chmod 777 ./css/ #当前目录下的"css"文件夹的权限被更改为"777",但其子文件夹和子文件的权限不便 chmod 777 ./css/* #当前目录下的"css"文件夹中的所有“一级文件夹和文件”的权限被更改为"777",但css文件夹的权限不变 chmod -R 777 ./css/ #当前目录下的"css"文件夹、其子文件夹、以及子文件的权限被更为"777"
管道和其他
n ls –l /etc | more
【分页显示竖状文件目录】
将上一次运行的输出结果交给下一命令执行
n cat /etc/passwd | grep student1
n grep student 4.txt【在文件4.txt中查找含有student字符的行】
n wc 【统计文件的行数和字数】
wc -l 【行数】
n ls -l | grep “^-” | wc –l【统计目录下文件数】
n wall “My Name Is Kang !”
wall `date`
Linux基础命令(2)
- Fskey servername
- scp命令
- grep 命令
- find 命令
- echo 命令
- xargs 命令
- file 命令
- cat 命令
- /dev/null
- tar 打包
- gzip 压缩
- 示例:打包和压缩
- awk 命令
- 综合示例
Fskey servername
保存登陆信息,下次登陆不必再输入密码
Fskey username@192.168.0.2
scp命令
说明
用于2个 linux 主机间复制文件
格式:
scp [可选参数] file_source file_target
示例
从“本次”复制到“远程”:
复制文件:scp local_file_path username@192.168.0.2:remote_folder_path 复制目录:scp -r local_file_path username@192.168.0.2:remote_folder_path
从 “远程” 复制到 “本地”:
复制文件:scp username@192.168.0.2:remote_folder_path local_file_path 复制目录:scp -r username@192.168.0.2:remote_folder_path local_file_path
grep 命令
grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来
示例
在文件4.txt中查找含student的行
grep student 4.tx
在所有以d开头的文件中查找含test的行
grep 'test' d*
在aa.js、bb.js、cc.js文件中查找含test的行
grep 'test' aa.js bb.js cc.js
从当前文件夹的所有子文件(包含子目录中的文件)中查找含test的行
grep 'test' . -r
示例:-E(开启正则查找)
查找含“template/”或“static/”的行
grep -E "template/|static/" test.text
查找含“template/|static/”的行
grep "template/|static/" test.text
查找含“$”的行
grep "\\$" test.text
find 命令
在指定目录下查找文件,查找的范围包含了“指定目录”的子目录。
格式
find pathname -options * -print: find命令将匹配的文件输出到标准输出 * -type: * b - 块设备文件。 * d - 目录。 * c - 字符设备文件。 * p - 管道文件。 * l - 符号链接文件。 * f - 普通文件。 * -name:按照文件名查找文件。
示例
列出当前用户目录(/home/username/)下的所有文件,下面两句命令作用相同
find $HOME -print find ~ -print
在当前目录下的所有.svn文件夹
find . -type d -name '.svn'
在当前目录下查找文件名包含ent的文件
find . -type f -name '*ent*'
echo 命令
向屏幕上打印输出;或将内容输出到某一文件中。
示例:
打印222
echo '222';
将222“输出”到log.txt,会替换到原文件里的内容。
echo '222' >log.txt;
将222“追加”到log.txt
echo '222' >>log.txt;
清空log.txt
echo >log.txt
逐行读取t.js的文件,追加到Log.txt中
while read line; do echo $line >>log.txt; done <'t.js'
xargs 命令
大多数 Linux 命令都会产生输出:文件列表、字符串列表等。
但如果要使用其他某个命令并将前一个命令的输出作为参数该怎么办?使用xargs。
示例:
在当前目录下查找“.svn”文件夹,并产出这些文件夹。“find”命令查找,然后将查找出的内容传给后面的“rm”命令
find . -type d -name ".svn" | xargs rm -rf;
file 命令
辨识文件类型,有些类似windows中的"查看->详细信息列表"
示例
列出当前目录下所有“文件”和“文件夹”的信息
file ./*;
列出当前目录下“docs”文件夹的信息
file ./docs;
cat 命令
输出,类似于echo;但其可以对输出的内容进行加工
参数:
n 或 --number 由 1 开始对所有输出的行数编号 -b 或 --number-nonblank 和 -n 相似,只不过对于空白行不编号 -s 或 --squeeze-blank 当遇到有连续两行以上的空白行,就代换为一行的空白行 v 或 --show-nonprinting
示例:
textfile的内容为:
aaa bbb ccc
把 textfile1 的档案内容加上行号后输入到 textfile2 这个档案里
cat -n textfile1 > textfile2; textfile2的内容为: 1 aaa 2 3 bbb 4 ccc
把 textfile1 的档案内容加上行号(空白行不加)之后将内容附加到 textfile2 里。
cat -n textfile1 > textfile2; textfile2的内容为: 1 aaa 2 bbb 3 ccc
把 textfile1 和 textfile2 的档案内容加上行号(空白行不加)之后将内容附加到 textfile3 里。
cat -b textfile1 textfile2 >> textfile3
此为清空/etc/test.txt档案内容,使用echo不能完全清空文件内容,文件仍有一个空行符。
cat /dev/null > /etc/test.txt
cat 也可以用来制作 image file。例如要制作软碟的 image file,将软碟放好后打
cat /dev/fd0 > OUTFILE
相反的,如果想把 image file 写到软碟,请打
cat IMG_FILE > /dev/fd0
/dev/null
把/dev/null看作"黑洞". 它非常等价于一个只写文件. 所有写入它的内容都会永远丢失. 而尝试从它那儿读取内容则什么也读不到. 然而, /dev/null对命令行和脚本都非常的有用.
示例
禁止标准输出,原本要输出的内容,现被写入到"/dev/null"中,从而不显示任何内容
cat filename >/dev/null;
带有编号的示例
- 2 # 如果"$filename"不存在,将不会有任何错误信息提示
- 3 ...
- 还有其他的编号
禁止标准输出和标准错误的输出
cat filename 2>/dev/null >/dev/null
tar 打包
所谓打包,就是把多个文件(夹)组成一个集合。linux下只能对一个文件进行压缩,所以如果想对多个文件进行压缩的话,就必须先打包。
格式: tar -参数 压缩后的文件名 需要压缩的文件
参数
- -c :建立一个压缩文件的参数指令(create 的意思);
- -x :解开一个压缩文件的参数指令!
- -t :查看 tarfile 里面的文件!
- 特别注意,c/x/t 仅能存在一个!因为不可能同时压缩与解压缩。
- -z :是否需要用 gzip 压缩?
- -j :是否需要用 bzip2 压缩?
- -v :压缩的过程中显示文件!
- -f :使用档名,请留意,f后面紧跟归档的文件名
gzip 压缩
对打包后的文件进行压缩
示例:打包和压缩
压缩
将整个 "/etc" 目录下的文件全部打包成为 "/tmp/etc.tar"
tar -cvf /tmp/etc.tar /etc; # 仅打包,不压缩 tar -zcvf /tmp/etc.tar.gz /etc; # 打包,并以 gzip 压缩 tar -jcvf /tmp/etc.tar.bz2 /etc; # 打包,并以 bzip2 压缩
解压和解包
gzip -d test.tar.gz; # 将“test.tar.gz”解压为“test.tar” tar -xf test.tar; # 将“test.tar”的包解开
上述两步骤可以合称为:
tar -zxvf .tar.gz; # 解开一个gizp压缩的包 tar -xvf .tar; # 解开一个tar包
awk 命令
awk是一种用于处理数据和生成报告的编程语言。一般的使用格式是:
awk '{pattern + action}' {filenames}
文件test.txt的内容如下,相应的分割符号为两个空格
aa2 bb3 cc4 dd ee ff gg ee hh
执行命令:awk '{print $2}' test.txt,该命令的“pattern”部分为空,就是匹配所有行,输出结果如下
bb3 ee ee
执行命令:awk '/e/ {print $2}' test.txt,该命令会匹配含有字符"e"的行,输出结果如下
ee ee
综合示例
svn st | grep -E 'template/|static/' | grep -E 'M|?' | awk '{print $2}'
上述命令的功能是,筛选出当前版本库内“template”和“static”两个目录下修改的文件,并打印出这些文件,详解:
* 第一部分:显示文件和子目录的状态 * 第二部分:筛选出含template/或static/的行 * 第三部分:筛选出含M或?的行 * 第三部分:只输出文件的地址列