Bash Working with Symbolic Links exercises
1.
Create a Symbolic Link:
Write a Bash script that creates a symbolic link named "file_link" pointing to a file named "input.txt".
Code:
#!/bin/bash
# Create a symbolic link named "file_link" pointing to "input.txt"
ln -s input.txt file_link
# Check if the symbolic link was created successfully
if [ -L "file_link" ]; then
echo "Symbolic link 'file_link' created successfully."
else
echo "Failed to create symbolic link 'file_link'."
fi
Output:
file_link: command not found
Explanation:
In the exercise above,
- ln -s input.txt file_link: This command creates a symbolic link named "file_link" pointing to the file "input.txt". The -s option creates a symbolic link, and the first argument is the target file (input.txt), and the second argument is the name of the symbolic link (file_link).
- if [ -L "file_link" ]; then ... else ... fi: This construct checks if the file "file_link" is a symbolic link using the -L option in the [ ] test condition. If it is a symbolic link, it prints a success message; otherwise, it prints a failure message.
2.
Check if a Symbolic Link Exists:
Write a Bash script that checks if a symbolic link named "file_link" exists in the current directory.
Code:
#!/bin/bash
# Check if symbolic link "file_link" exists
if [ -L "file_link" ]; then
echo "Symbolic link 'file_link' exists in the current directory."
else
echo "Symbolic link 'file_link' does not exist in the current directory."
fi
Output:
Symbolic link 'file_link' exists in the current directory.
Explanation:
In the exercise above,
- [ -L "file_link" ]: This checks if there is a symbolic link named "file_link" in the current directory. The -L flag checks if the given file is a symbolic link.
- echo "Symbolic link 'file_link' exists in the current directory.": If the symbolic link exists, this line is executed, indicating that the symbolic link exists.
- echo "Symbolic link 'file_link' does not exist in the current directory.": If the symbolic link does not exist, this line is executed, indicating that the symbolic link does not exist.
3.
Remove a Symbolic Link:
Write a Bash script that removes a symbolic link named "file_link".
Code:
#!/bin/bash
# Remove the symbolic link "file_link"
rm file_link
# Check if the symbolic link was removed successfully
if [ ! -L "file_link" ]; then
echo "Symbolic link 'file_link' removed successfully."
else
echo "Failed to remove symbolic link 'file_link'."
fi
Output:
Symbolic link 'file_link' removed successfully.
Explanation:
In the exercise above,
- rm file_link: This command removes the symbolic link named "file_link".
- [ ! -L "file_link" ]: This condition checks if "file_link" is not a symbolic link anymore. If the symbolic link was successfully removed, this condition becomes true.
- echo "Symbolic link 'file_link' removed successfully.": If the symbolic link was successfully removed, this message is displayed.
- echo "Failed to remove symbolic link 'file_link'.": If the symbolic link couldn't be removed for some reason, this message is displayed.
4.
Create a Symbolic Link for a Directory:
Write a Bash script that creates a symbolic link named "dir_link" pointing to a directory named "workarea".
Code:
#!/bin/bash
# Create a symbolic link named "dir_link" pointing to "workarea"
ln -s workarea dir_link
# Check if the symbolic link was created successfully
if [ -L "dir_link" ]; then
echo "Symbolic link 'dir_link' created successfully."
else
echo "Failed to create symbolic link 'dir_link'."
fi
Output:
Symbolic link 'dir_link' created successfully.
Explanation:
In the exercise above,
- ln -s workarea dir_link: This command creates a symbolic link named "dir_link" pointing to the directory "workarea".
- [ -L "dir_link" ]: This condition checks if "dir_link" is a symbolic link. If the symbolic link was successfully created, this condition becomes true.
- echo "Symbolic link 'dir_link' created successfully.": If the symbolic link was successfully created, this message is displayed.
- echo "Failed to create symbolic link 'dir_link'.": If the symbolic link couldn't be created for some reason, this message is displayed.
5.
Check if a Symbolic Link Points to a Directory:
Write a Bash script that checks if a symbolic link named "dir_link" points to a directory.
Code:
#!/bin/bash
# Check if "dir_link" exists and is a symbolic link
if [ -L "dir_link" ]; then
# Check if the target of the symbolic link is a directory
if [ -d "dir_link" ]; then
echo "Symbolic link 'dir_link' points to a directory."
else
echo "Symbolic link 'dir_link' does not point to a directory."
fi
else
echo "Symbolic link 'dir_link' does not exist."
fi
Output:
Symbolic link 'dir_link' points to a directory.
Explanation:
In the exercise above,
- The first condition [ -L "dir_link" ] checks if "dir_link" exists and is a symbolic link.
- Inside this condition, [ -d "dir_link" ] checks if the target of the symbolic link is a directory.
- If both conditions are true, it prints "Symbolic link 'dir_link' points to a directory."
- If the first condition is true but the second one is false, it prints "Symbolic link 'dir_link' does not point to a directory."
- If the first condition is false, it prints "Symbolic link 'dir_link' does not exist."
6.
List Symbolic Links in the Current Directory:
Write a Bash script that lists all symbolic links in the current directory.
Code:
#!/bin/bash
# List all symbolic links in the current directory
for file in *; do
if [ -L "$file" ]; then
echo "$file"
fi
done
Output:
dir_link my_link
Explanation:
In the exercise above,
- This script iterates over each file in the current directory.
- For each file, it checks if it is a symbolic link using the -L flag in the if condition.
- If the file is a symbolic link, it prints the file name.
7.
Determine the Target of a Symbolic Link:
Write a Bash script that prints the target of a symbolic link named "file_link".
Code:
#!/bin/bash
# Check if the symbolic link "dir_link" exists
if [ -L "dir_link" ]; then
# Print the target of the symbolic link
target=$(readlink -f "dir_link")
echo "Target of 'dir_link': $target"
else
echo "Symbolic link 'dir_link' does not exist."
fi
Output:
Target of 'dir_link': /home/ad/workarea
Explanation:
In the exercise above,
- The script first checks if the symbolic link "dir_link" exists using the -L option.
- If the symbolic link exists, it uses the readlink -f command to get the absolute path of the target file.
- Finally, it prints out the target of the symbolic link. If the symbolic link doesn't exist, it prints a message indicating that.
8.
Create a Symbolic Link with Absolute Path:
Write a Bash script that creates a symbolic link named "link_to_file" with an absolute path pointing to a file named "input.txt".
Code:
#!/bin/bash
# Absolute path to the file
file_path="$(pwd)/input.txt"
# Create a symbolic link named "link_to_file" with an absolute path
ln -s "$file_path" link_to_file
# Check if the symbolic link was created successfully
if [ -L "link_to_file" ]; then
echo "Symbolic link 'link_to_file' created successfully."
else
echo "Failed to create symbolic link 'link_to_file'."
fi
Output:
Symbolic link 'link_to_file' created successfully.
Explanation:
In the exercise above,
- The pwd command is used to get the absolute path of the current directory.
- The absolute path to the file "input.txt" is obtained by concatenating the current directory path with the filename.
- The ln -s command is used to create a symbolic link named "link_to_file" with the absolute path of "input.txt".
- The script then checks if the symbolic link was created successfully using the -L option with an if condition.
9.
Create a Symbolic Link with Relative Path:
Write a Bash script that creates a symbolic link named "link_to_file1" with a relative path pointing to a file named "output.txt".
Code:
#!/bin/bash
# Create a symbolic link named "link_to_file1" with a relative path
ln -s output.txt link_to_file1
# Check if the symbolic link was created successfully
if [ -L "link_to_file1" ]; then
echo "Symbolic link 'link_to_file1' created successfully."
else
echo "Failed to create symbolic link 'link_to_file1'."
fi
Output:
Symbolic link 'link_to_file1' created successfully.
Explanation:
In the exercise above,
- ln -s: Creates a symbolic link. -s flag specifies that it creates a symbolic link.
- output.txt: The target file that the symbolic link will point to.
- link_to_file1: The name of the symbolic link being created.
- [ -L "link_to_file1" ]: Tests if "link_to_file1" exists and is a symbolic link.
- If the symbolic link exists, it prints "Symbolic link 'link_to_file1' created successfully."
- If the symbolic link doesn't exist, it prints "Failed to create symbolic link 'link_to_file1'."
10.
Create a Symbolic Link to a Common System Directory:
Write a Bash script that creates a symbolic link named "link_to_bin1" pointing to the "/bin" directory.
Code:
#!/bin/bash
# Create a symbolic link named "link_to_bin" pointing to the "/bin" directory
ln -s /bin link_to_bin1
# Check if the symbolic link was created successfully
if [ -L "link_to_bin1" ]; then
echo "Symbolic link 'link_to_bin1' created successfully."
else
echo "Failed to create symbolic link 'link_to_bin1'."
fi
Output:
Symbolic link 'link_to_bin1' created successfully.
Explanation:
In the exercise above,
- The ln -s command is used to create a symbolic link named "link_to_bin" with a relative path pointing to the "/bin" directory.
- The script then checks if the symbolic link was created successfully using the -L option with an if condition.
Bash Editor:
More to Come !
Do not submit any solution of the above exercises at here, if you want to contribute go to the appropriate exercise page.
- Weekly Trends and Language Statistics
- Weekly Trends and Language Statistics