text-way to interact with PC
Command Line
Bash
Bourne-Again SHell
Unix Shell
Romans-Macbook-Pro:~ somename$
<computer-name>:<current-directory> <username>$
<computer-name>:<current-directory> <superuser>#
[me@linuxbox me]$
[me@linuxbox me]$ kdkjflajfks
bash: kdkjflajfks: command not found
команда1> команда2>
команда1 | команда2
#!/bin/bash
echo Hello World!
/ | the root directory |
/boot | Linux kernel and boot loader files |
/etc | the configuration files for the system |
/bin, /usr/bin | contain most of the programs for the system |
/sbin, /usr/sbin | programs for system administration |
/usr | variety of things that support user applications |
/var | contains files that change as the system is running (/var/log) |
/home | users keep their personal work |
/tmp | for temporary files |
$ command -options arguments
$ echo "hello world"<enter>
$ ls -la
$ cd My\ Folder\ Name
Documents != documents
[me@linuxbox me]$ pwd
/home/me
[me@linuxbox me]$ ls
Desktop Xrootenv.0 linuxcmd
GNUstep bin nedit.rpm
GUILG00.GZ hitni123.jpg nsmail
$ ls
$ ls /bin
$ ls -l
$ ls -l /etc /bin
$ ls -la ..
[me@linuxbox me]$ cd /usr/bin
[me@linuxbox bin]$ pwd
/usr/bin [me@linuxbox bin]$ ls
[ lwp-request
2to3 lwp-rget
2to3-2.6 lxterm
a2p lz
aalib-config lzcat
aconnect lzma
acpi_fakekey lzmadec
acpi_listen lzmainfo
add-apt-repository m17n-db
addpart magnifier
and many more...
[me@linuxbox me]$ file <name_of_file>
$ pwd
$ hostname
$ mkdir
$ cd
$ ls
$ rmdir
$ cp
$ mv
$ cat
$ find
$ grep
$ man
$ env
$ echo
$ exit
$ sudo
$ chmod / chown
$ man ls
$ hostname
Zeds-MacBook-Pro.local
$ pwd # Your Current Directory
/Users/zedshaw
$ ls # View Directory Contents
$ ls <directory-name>
$ ls -la
$ ls -la .
$ ls -la *.txt
$ open . # Open a file/directory
* | everything |
g* | everything that begins with character "g" |
b*.txt | begins with "b", and ends with ".txt" |
Data??? | begins with the characters "Data" followed by exactly 3 more characters |
[abc]* | begins with "a" or "b" or "c" followed by any other characters |
~/Documents/some_folder/some_other_folder/some_file.tx
. = root
.. = up
~ = home directory
[me@linuxbox me]$ cp file1 file2
[me@linuxbox me]$ cp file... directory
[me@linuxbox me]$ mv filename1 filename2
[me@linuxbox me]$ mv file... directory
[me@linuxbox me]$ rm file...
[me@linuxbox me]$ rm -r directory...
Be careful with rm!
[me@linuxbox me]$ rm -rf /
[me@linuxbox me]$ mkdir directory...
$ cp *.txt text_files
$ mv my_dir ../*.bak my_new_dir
$ rm *~
$ ls **/*.jpg > jpg-dir.txt
$ unexisted-command 2> /dev/null
$ pwd
$ cd <folder-name>
$ cd ..
$ cd ~
$ mkdir some/folder
$ mkdir -p some/folder/
$ touch test.txt
$ open test.txt
$ cat test.txt
$ mv test.txt test2.txt
$ rm test.txt
$ cp test.txt
$ alias ll='ls -la'
$ alias rmi='rm -i'
$ alias cia='. /home/sydney/env/cia.sh'
$ history
$ !! # recall the latest command
$ !1003 # recall the latest command by its number
$ !cat # recall the latest command matching a starting string
$ find . -name test.js
$ find /etc -name '*.txt'
$ find . -name '*.xml'
$ find . -not -name '*.xml' -maxdepth
$ find . -type f
$ find . -mtime -1
$ find . -mmin -15
$ find . -size -1k
Global Regular Expression Print
g/re/p
for finding text inside files
$ grep <string> <file or directory>
$ grep 'some text' file.js
$ grep something file.js
$ grep -r 'Dao[v1|v2]' src.js
$ grep -i
condition { actions }
$ awk 'END { print NR }' server.log
# Display information about command type
# (executable, built-in shell, function, alias)
$ type cp
cp is /bin/cp
# Locate a command
$ which ls
/bin/ls
# Display reference page for shell builtin
$ help -m cd
...
# Display an on-line command reference
$ man ls
...
$ ls -l
total 72
# Permissions Links Owner Group Size Modification File Name
drwxr-xr-x 2 root root 4096 Oct 5 09:31 bin
drwxr-xr-x 3 root root 4096 Oct 9 21:47 boot
drwxr-xr-x 1 root root 0 Jan 1 1970 dev
...
:type : owner : group : restofworld:
:d : rwx : r-x : r-x
$ whoami
joe
$ id -G -n
$? = from 0 to 255
zero = success
$ echo "this works fine"
this works fine
$ echo $?
0
$ hhhhhh
bash: hhhhhh: command not found
$ echo $?
127
126 = permission denied
$ printenv
# In ~/.bash_profile
export MYSQL_DIR=/usr/local/mysql/bin
PATH=$MYSQL_DIR:$PATH
$ which open
read each time when bash shell is started
$ command1 && command2 [&& command3]...
$ command1 || command2 || command3 || ...
$ command1 && command2 || command3
$ ls > my-file-list
$ ls >> my-file-list
$ sort < my-file-list
$ ls *.bak > listfile
$ ls /nosuchplace > /dev/null
ls: /nosuchplace: No such file or directory
$ ls /nosuchplace 2>/tmp/errors
$
$ sort < file_list.txt > sorted_file_list.txt
$ cat books | grep "a"
Carroll, Lewis:Through the Looking-Glass
Shakespeare, William:Hamlet
$ ls | wc -l
$ ls | xargs wc -l
$ ls -lt | head
$ du | sort -nr
$ find . -name '*.js' | xargs wc -l | sort
#!/bin/bash
$ whereis bash
#!/bin/bash
parametr1=$1
script_name=$0
echo "welcome to $script_name"
echo 'welcome to $script_name'
exit 0
user@desktop:~$ ./test1.sh param1
if
<command>
then
<commands-if-successful>
else
<commands-if-failed>
fi
#!/bin/bash
source=$1
dest=$2
if [[ "$source" -eq "$dest" ]] then
echo "some1"
exit 1
else
echo "some2"
exit 2
endif
user@desktop:~$ ./test2.sh 1 2
$ sudo <command>
[me@linuxbox me]$ su
Password:
[root@linuxbox me]# chown you some_file
[root@linuxbox me]# exit
[me@linuxbox me]$